SYMBOL INDEX (8443 symbols across 1010 files) FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/Agent.java class Agent (line 8) | public class Agent { method Agent (line 14) | public Agent(AgentRuntime runtime, AgentContext baseContext, Supplier<... method run (line 20) | public AgentResult run(AgentRequest request) throws Exception { method runStream (line 24) | public void runStream(AgentRequest request, AgentListener listener) th... method runStreamResult (line 28) | public AgentResult runStreamResult(AgentRequest request, AgentListener... method newSession (line 32) | public AgentSession newSession() { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/AgentBuilder.java class AgentBuilder (line 34) | public class AgentBuilder { method runtime (line 63) | public AgentBuilder runtime(AgentRuntime runtime) { method modelClient (line 68) | public AgentBuilder modelClient(AgentModelClient modelClient) { method toolRegistry (line 73) | public AgentBuilder toolRegistry(AgentToolRegistry toolRegistry) { method toolRegistry (line 78) | public AgentBuilder toolRegistry(List functions, List ... method subAgentRegistry (line 83) | public AgentBuilder subAgentRegistry(SubAgentRegistry subAgentRegistry) { method handoffPolicy (line 88) | public AgentBuilder handoffPolicy(HandoffPolicy handoffPolicy) { method subAgent (line 93) | public AgentBuilder subAgent(SubAgentDefinition definition) { method subAgents (line 100) | public AgentBuilder subAgents(List definitions) { method toolExecutor (line 107) | public AgentBuilder toolExecutor(ToolExecutor toolExecutor) { method codeExecutor (line 112) | public AgentBuilder codeExecutor(CodeExecutor codeExecutor) { method memorySupplier (line 117) | public AgentBuilder memorySupplier(Supplier memorySupplie... method options (line 122) | public AgentBuilder options(AgentOptions options) { method codeActOptions (line 127) | public AgentBuilder codeActOptions(CodeActOptions codeActOptions) { method traceExporter (line 132) | public AgentBuilder traceExporter(TraceExporter traceExporter) { method traceConfig (line 137) | public AgentBuilder traceConfig(TraceConfig traceConfig) { method eventPublisher (line 142) | public AgentBuilder eventPublisher(AgentEventPublisher eventPublisher) { method model (line 147) | public AgentBuilder model(String model) { method instructions (line 152) | public AgentBuilder instructions(String instructions) { method systemPrompt (line 157) | public AgentBuilder systemPrompt(String systemPrompt) { method temperature (line 162) | public AgentBuilder temperature(Double temperature) { method topP (line 167) | public AgentBuilder topP(Double topP) { method maxOutputTokens (line 172) | public AgentBuilder maxOutputTokens(Integer maxOutputTokens) { method reasoning (line 177) | public AgentBuilder reasoning(Object reasoning) { method toolChoice (line 182) | public AgentBuilder toolChoice(Object toolChoice) { method parallelToolCalls (line 187) | public AgentBuilder parallelToolCalls(Boolean parallelToolCalls) { method store (line 192) | public AgentBuilder store(Boolean store) { method user (line 197) | public AgentBuilder user(String user) { method extraBody (line 202) | public AgentBuilder extraBody(Map extraBody) { method build (line 207) | public Agent build() { method createDefaultCodeExecutor (line 264) | private CodeExecutor createDefaultCodeExecutor() { method resolveSubAgentRegistry (line 271) | private SubAgentRegistry resolveSubAgentRegistry() { method resolveToolRegistry (line 281) | private AgentToolRegistry resolveToolRegistry(AgentToolRegistry baseTo... method resolveToolNames (line 288) | private Set resolveToolNames(AgentToolRegistry registry) { method createToolUtilRegistry (line 308) | private AgentToolRegistry createToolUtilRegistry(List function... method createToolUtilExecutor (line 320) | private ToolExecutor createToolUtilExecutor(Set allowedToolNam... method instantiateClass (line 338) | private Object instantiateClass(String className, Class[] parameter... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/AgentContext.java class AgentContext (line 15) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/AgentOptions.java class AgentOptions (line 7) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/AgentRequest.java class AgentRequest (line 10) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/AgentResult.java class AgentResult (line 12) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/AgentRuntime.java type AgentRuntime (line 5) | public interface AgentRuntime { method run (line 7) | AgentResult run(AgentContext context, AgentRequest request) throws Exc... method runStream (line 9) | void runStream(AgentContext context, AgentRequest request, AgentListen... method runStreamResult (line 11) | default AgentResult runStreamResult(AgentContext context, AgentRequest... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/AgentSession.java class AgentSession (line 5) | public class AgentSession { method AgentSession (line 10) | public AgentSession(AgentRuntime runtime, AgentContext context) { method run (line 15) | public AgentResult run(String input) throws Exception { method run (line 19) | public AgentResult run(AgentRequest request) throws Exception { method runStream (line 23) | public void runStream(AgentRequest request, AgentListener listener) th... method runStreamResult (line 27) | public AgentResult runStreamResult(AgentRequest request, AgentListener... method getContext (line 31) | public AgentContext getContext() { method getRuntime (line 35) | public AgentRuntime getRuntime() { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/Agents.java class Agents (line 9) | public final class Agents { method Agents (line 11) | private Agents() { method builder (line 14) | public static AgentBuilder builder() { method react (line 18) | public static AgentBuilder react() { method codeAct (line 22) | public static AgentBuilder codeAct() { method deepResearch (line 26) | public static AgentBuilder deepResearch() { method team (line 30) | public static AgentTeamBuilder team() { method teamAgent (line 34) | public static Agent teamAgent(AgentTeamBuilder builder) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/codeact/CodeActOptions.java class CodeActOptions (line 6) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/codeact/CodeExecutionRequest.java class CodeExecutionRequest (line 9) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/codeact/CodeExecutionResult.java class CodeExecutionResult (line 6) | @Data method isSuccess (line 16) | public boolean isSuccess() { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/codeact/CodeExecutor.java type CodeExecutor (line 3) | public interface CodeExecutor { method execute (line 5) | CodeExecutionResult execute(CodeExecutionRequest request) throws Excep... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/codeact/GraalVmCodeExecutor.java class GraalVmCodeExecutor (line 29) | public class GraalVmCodeExecutor implements CodeExecutor { method GraalVmCodeExecutor (line 35) | public GraalVmCodeExecutor() { method GraalVmCodeExecutor (line 39) | public GraalVmCodeExecutor(String ignored) { method execute (line 42) | @Override method normalizeLanguage (line 64) | private String normalizeLanguage(String language) { method buildPythonPrelude (line 75) | private String buildPythonPrelude(List toolNames) { method wrapPythonCode (line 106) | private String wrapPythonCode(String code) { method escapePython (line 124) | private String escapePython(String text) { method trimError (line 128) | private String trimError(String error) { method executePythonWithGraalPy (line 135) | private CodeExecutionResult executePythonWithGraalPy(CodeExecutionRequ... method resolveValue (line 251) | private String resolveValue(Value value) { method isUndefined (line 264) | private boolean isUndefined(Value value) { method filterPolyglotWarnings (line 276) | private String filterPolyglotWarnings(String stderr) { class ToolBridge (line 307) | private static class ToolBridge { method ToolBridge (line 311) | private ToolBridge(ToolExecutor toolExecutor, String user) { method call (line 316) | @HostAccess.Export method resolveName (line 336) | private String resolveName(String name) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/codeact/NashornCodeExecutor.java class NashornCodeExecutor (line 24) | public class NashornCodeExecutor implements CodeExecutor { method execute (line 30) | @Override method normalizeLanguage (line 46) | private String normalizeLanguage(String language) { method executeJavaScript (line 57) | private CodeExecutionResult executeJavaScript(CodeExecutionRequest req... method buildPrelude (line 122) | private String buildPrelude(List toolNames) { method wrapCode (line 166) | private String wrapCode(String code) { method escapeJs (line 178) | private String escapeJs(String text) { method trimError (line 182) | private String trimError(String error) { class ToolBridge (line 189) | public static class ToolBridge { method ToolBridge (line 193) | private ToolBridge(ToolExecutor toolExecutor, String user) { method call (line 198) | public String call(String name, String arguments) throws Exception { method resolveName (line 210) | private String resolveName(String name) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/event/AgentEvent.java class AgentEvent (line 8) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/event/AgentEventPublisher.java class AgentEventPublisher (line 6) | public class AgentEventPublisher { method AgentEventPublisher (line 10) | public AgentEventPublisher() { method AgentEventPublisher (line 13) | public AgentEventPublisher(List initial) { method addListener (line 19) | public void addListener(AgentListener listener) { method publish (line 25) | public void publish(AgentEvent event) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/event/AgentEventType.java type AgentEventType (line 3) | public enum AgentEventType { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/event/AgentListener.java type AgentListener (line 3) | public interface AgentListener { method onEvent (line 5) | void onEvent(AgentEvent event); FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/Ai4jFlowGramLlmNodeRunner.java class Ai4jFlowGramLlmNodeRunner (line 22) | public class Ai4jFlowGramLlmNodeRunner implements FlowGramLlmNodeRunner { method Ai4jFlowGramLlmNodeRunner (line 30) | public Ai4jFlowGramLlmNodeRunner(AgentModelClient modelClient) { method Ai4jFlowGramLlmNodeRunner (line 34) | public Ai4jFlowGramLlmNodeRunner(ModelClientResolver modelClientResolv... method Ai4jFlowGramLlmNodeRunner (line 38) | public Ai4jFlowGramLlmNodeRunner(ModelClientResolver modelClientResolver, method Ai4jFlowGramLlmNodeRunner (line 43) | public Ai4jFlowGramLlmNodeRunner(AgentModelClient modelClient, method Ai4jFlowGramLlmNodeRunner (line 49) | public Ai4jFlowGramLlmNodeRunner(AgentModelClient modelClient, method Ai4jFlowGramLlmNodeRunner (line 56) | public Ai4jFlowGramLlmNodeRunner(AgentModelClient modelClient, method run (line 68) | @Override method buildMetrics (line 116) | private Map buildMetrics(String model, long durationMi... method tokenValue (line 165) | private Long tokenValue(Object usage, String camelName, String snakeNa... method resolveModelClient (line 173) | private AgentModelClient resolveModelClient(FlowGramNodeSchema node, M... method defaultOptions (line 183) | private static AgentOptions defaultOptions() { method safeNodeId (line 190) | private String safeNodeId(FlowGramNodeSchema node) { method valueAsString (line 194) | private static String valueAsString(Object value) { method valueAsDouble (line 198) | private static Double valueAsDouble(Object value) { method valueAsInteger (line 216) | private static Integer valueAsInteger(Object value) { method firstNonBlank (line 234) | private static String firstNonBlank(String... values) { method isBlank (line 246) | private static boolean isBlank(String value) { method mapValue (line 250) | @SuppressWarnings("unchecked") method firstNonNull (line 263) | private static Object firstNonNull(Object... values) { method propertyValue (line 275) | @SuppressWarnings("unchecked") method normalizedSource (line 295) | private static Object normalizedSource(Object source) { method normalizeTree (line 307) | @SuppressWarnings("unchecked") method invokeAccessor (line 332) | private static Object invokeAccessor(Object source, String methodName) { method fieldValue (line 356) | private static Object fieldValue(Object source, String name) { method longObject (line 373) | private static Long longObject(Object value) { type ModelClientResolver (line 387) | public interface ModelClientResolver { method resolve (line 388) | AgentModelClient resolve(FlowGramNodeSchema node, Map run(FlowGramNodeSchema node, Map i... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/FlowGramNodeExecutionContext.java class FlowGramNodeExecutionContext (line 11) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/FlowGramNodeExecutionResult.java class FlowGramNodeExecutionResult (line 10) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/FlowGramNodeExecutor.java type FlowGramNodeExecutor (line 3) | public interface FlowGramNodeExecutor { method getType (line 5) | String getType(); method execute (line 7) | FlowGramNodeExecutionResult execute(FlowGramNodeExecutionContext conte... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/FlowGramRuntimeEvent.java class FlowGramRuntimeEvent (line 8) | @Data type Type (line 21) | public enum Type { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/FlowGramRuntimeListener.java type FlowGramRuntimeListener (line 3) | public interface FlowGramRuntimeListener { method onEvent (line 5) | void onEvent(FlowGramRuntimeEvent event); FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/FlowGramRuntimeService.java class FlowGramRuntimeService (line 33) | public class FlowGramRuntimeService implements AutoCloseable { method FlowGramRuntimeService (line 55) | public FlowGramRuntimeService(FlowGramLlmNodeRunner llmNodeRunner) { method FlowGramRuntimeService (line 59) | public FlowGramRuntimeService(FlowGramLlmNodeRunner llmNodeRunner, Exe... method FlowGramRuntimeService (line 63) | private FlowGramRuntimeService(FlowGramLlmNodeRunner llmNodeRunner, method registerNodeExecutor (line 71) | public FlowGramRuntimeService registerNodeExecutor(FlowGramNodeExecuto... method registerListener (line 79) | public FlowGramRuntimeService registerListener(FlowGramRuntimeListener... method runTask (line 87) | public FlowGramTaskRunOutput runTask(FlowGramTaskRunInput input) { method validateTask (line 101) | public FlowGramTaskValidateOutput validateTask(FlowGramTaskRunInput in... method getTaskReport (line 109) | public FlowGramTaskReportOutput getTaskReport(String taskId) { method getTaskResult (line 114) | public FlowGramTaskResultOutput getTaskResult(String taskId) { method cancelTask (line 119) | public FlowGramTaskCancelOutput cancelTask(String taskId) { method close (line 132) | @Override method executeTask (line 139) | private void executeTask(TaskRecord record, FlowGramNodeSchema startNo... method executeFromNode (line 166) | private Map executeFromNode(TaskRecord record, method executeNode (line 195) | private Map executeNode(TaskRecord record, method publishTaskEvent (line 245) | private void publishTaskEvent(TaskRecord record, method publishNodeEvent (line 261) | private void publishNodeEvent(TaskRecord record, method publishEvent (line 279) | private void publishEvent(FlowGramRuntimeEvent event) { method executeStartNode (line 295) | private Map executeStartNode(TaskRecord record, FlowGr... method executeEndNode (line 303) | private Map executeEndNode(TaskRecord record, method executeLlmNode (line 318) | private Map executeLlmNode(TaskRecord record, method executeConditionNode (line 334) | private Map executeConditionNode(TaskRecord record, method executeLoopNode (line 348) | private Map executeLoopNode(TaskRecord record, method executeCustomNode (line 402) | private Map executeCustomNode(TaskRecord record, method selectNextEdges (line 422) | private List selectNextEdges(TaskRecord record, method resolveConditionBranch (line 450) | private String resolveConditionBranch(TaskRecord record, method conditionMatches (line 486) | private boolean conditionMatches(Map rule, method evaluateConditionOperand (line 508) | private Object evaluateConditionOperand(Object operand, method compareCondition (line 525) | private boolean compareCondition(Object left, String operator, Object ... method resolveInputs (line 573) | private Map resolveInputs(TaskRecord record, method evaluateValue (line 586) | private Object evaluateValue(Object value, TaskRecord record, Map validateInternal(FlowGramTaskRunInput input) { method parseSchema (line 759) | private FlowGramWorkflowSchema parseSchema(FlowGramTaskRunInput input) { method parseSchema (line 768) | private FlowGramWorkflowSchema parseSchema(FlowGramTaskRunInput input,... method validateGraph (line 786) | private void validateGraph(String graphName, method validateNodeDefinitions (line 839) | private void validateNodeDefinitions(List nodes, method validateRequiredInputBindings (line 855) | private void validateRequiredInputBindings(FlowGramNodeSchema node, Li... method validateOutputRefs (line 872) | private void validateOutputRefs(FlowGramNodeSchema node, method validateRefValue (line 884) | private void validateRefValue(FlowGramNodeSchema node, method collectNodes (line 905) | private void collectNodes(List nodes, method findSingleStart (line 928) | private FlowGramNodeSchema findSingleStart(Iterable applyObjectDefaults(Map sc... method validateObjectSchema (line 995) | private void validateObjectSchema(String label, Map sc... method collectObjectSchemaErrors (line 1003) | private void collectObjectSchemaErrors(String label, method collectPropertyErrors (line 1031) | private void collectPropertyErrors(String label, method matchesType (line 1066) | private boolean matchesType(String type, Object value) { method propertyDefault (line 1092) | private Object propertyDefault(Map objectSchema, Strin... method schemaMap (line 1098) | private Map schemaMap(FlowGramNodeSchema node, String ... method dataValue (line 1102) | private Object dataValue(FlowGramNodeSchema node, String key) { method safeMap (line 1106) | private static Map safeMap(Map value) { method copyMap (line 1117) | private static Map copyMap(Map value) { method copyValue (line 1128) | @SuppressWarnings("unchecked") method mapValue (line 1148) | @SuppressWarnings("unchecked") method objectList (line 1161) | @SuppressWarnings("unchecked") method stringList (line 1169) | @SuppressWarnings("unchecked") method normalizeType (line 1183) | private static String normalizeType(String value) { method normalizeOperator (line 1187) | private static String normalizeOperator(String value) { method safeNodeId (line 1199) | private static String safeNodeId(FlowGramNodeSchema node) { method safeMessage (line 1203) | private static String safeMessage(Throwable throwable) { method firstNonNull (line 1210) | private static Object firstNonNull(Object... values) { method firstNonBlank (line 1222) | private static String firstNonBlank(String... values) { method valuesEqual (line 1234) | private static boolean valuesEqual(Object left, Object right) { method truthy (line 1238) | private static boolean truthy(Object value) { method valueAsString (line 1260) | private static String valueAsString(Object value) { method valueAsDouble (line 1264) | private static Double valueAsDouble(Object value) { method valueAsInteger (line 1282) | private static Integer valueAsInteger(Object value) { method isBlank (line 1300) | private static boolean isBlank(String value) { method actualType (line 1304) | private static String actualType(Object value) { method resolveInputValue (line 1329) | private static Object resolveInputValue(Map inputs, St... class ParsedTask (line 1333) | private static final class ParsedTask { method ParsedTask (line 1338) | private ParsedTask(FlowGramWorkflowSchema schema, class GraphSegment (line 1347) | private static final class GraphSegment { method GraphSegment (line 1352) | private GraphSegment(Map nodes, method root (line 1360) | private static GraphSegment root(FlowGramWorkflowSchema schema) { method loop (line 1364) | private static GraphSegment loop(FlowGramNodeSchema node) { method getNode (line 1368) | private FlowGramNodeSchema getNode(String nodeId) { method outgoing (line 1372) | private List outgoing(String nodeId) { method entryNodeIds (line 1377) | private List entryNodeIds() { method isEmpty (line 1401) | private boolean isEmpty() { method isTerminalResultGraph (line 1405) | private boolean isTerminalResultGraph() { method indexNodes (line 1409) | private static Map indexNodes(List> indexOutgoing(L... class TaskRecord (line 1443) | private static final class TaskRecord { method TaskRecord (line 1464) | private TaskRecord(String taskId, method updateNode (line 1479) | private void updateNode(String nodeId, String status, String error, ... method recordNodeInputs (line 1501) | private void recordNodeInputs(String nodeId, Map inp... method recordNodeOutputs (line 1505) | private void recordNodeOutputs(String nodeId, Map ou... method updateWorkflow (line 1509) | private void updateWorkflow(String status, boolean terminated, Strin... method toReport (line 1525) | private FlowGramTaskReportOutput toReport() { method toResult (line 1549) | private FlowGramTaskResultOutput toResult() { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/model/FlowGramEdgeSchema.java class FlowGramEdgeSchema (line 8) | @Data method sourcePortKey (line 21) | public String sourcePortKey() { method firstNonBlank (line 25) | private String firstNonBlank(String... values) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/model/FlowGramNodeSchema.java class FlowGramNodeSchema (line 11) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/model/FlowGramTaskCancelOutput.java class FlowGramTaskCancelOutput (line 8) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/model/FlowGramTaskReportOutput.java class FlowGramTaskReportOutput (line 10) | @Data class WorkflowStatus (line 21) | @Data class NodeStatus (line 33) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/model/FlowGramTaskResultOutput.java class FlowGramTaskResultOutput (line 10) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/model/FlowGramTaskRunInput.java class FlowGramTaskRunInput (line 10) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/model/FlowGramTaskRunOutput.java class FlowGramTaskRunOutput (line 8) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/model/FlowGramTaskValidateOutput.java class FlowGramTaskValidateOutput (line 10) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/flowgram/model/FlowGramWorkflowSchema.java class FlowGramWorkflowSchema (line 10) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/memory/AgentMemory.java type AgentMemory (line 5) | public interface AgentMemory { method addUserInput (line 7) | void addUserInput(Object input); method addOutputItems (line 9) | void addOutputItems(List items); method addToolOutput (line 11) | void addToolOutput(String callId, String output); method getItems (line 13) | List getItems(); method getSummary (line 15) | String getSummary(); method clear (line 17) | void clear(); FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/memory/InMemoryAgentMemory.java class InMemoryAgentMemory (line 9) | public class InMemoryAgentMemory implements AgentMemory { method InMemoryAgentMemory (line 15) | public InMemoryAgentMemory() { method InMemoryAgentMemory (line 18) | public InMemoryAgentMemory(MemoryCompressor compressor) { method setCompressor (line 22) | public void setCompressor(MemoryCompressor compressor) { method addUserInput (line 26) | @Override method addOutputItems (line 39) | @Override method addToolOutput (line 48) | @Override method getItems (line 57) | @Override method getSummary (line 68) | @Override method setSummary (line 73) | public void setSummary(String summary) { method snapshot (line 77) | public MemorySnapshot snapshot() { method restore (line 81) | public void restore(MemorySnapshot snapshot) { method clear (line 89) | @Override method maybeCompress (line 95) | private void maybeCompress() { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/memory/JdbcAgentMemory.java class JdbcAgentMemory (line 16) | public class JdbcAgentMemory implements AgentMemory { method JdbcAgentMemory (line 30) | public JdbcAgentMemory(JdbcAgentMemoryConfig config) { method JdbcAgentMemory (line 49) | public JdbcAgentMemory(String jdbcUrl, String sessionId) { method JdbcAgentMemory (line 56) | public JdbcAgentMemory(String jdbcUrl, String username, String passwor... method JdbcAgentMemory (line 65) | public JdbcAgentMemory(DataSource dataSource, String sessionId) { method setCompressor (line 72) | public void setCompressor(MemoryCompressor compressor) { method setSummary (line 79) | public synchronized void setSummary(String summary) { method snapshot (line 85) | public synchronized MemorySnapshot snapshot() { method restore (line 90) | public synchronized void restore(MemorySnapshot snapshot) { method addUserInput (line 97) | @Override method addOutputItems (line 112) | @Override method addToolOutput (line 123) | @Override method getItems (line 134) | @Override method getSummary (line 147) | @Override method clear (line 152) | @Override method initializeSchema (line 157) | private void initializeSchema() { method loadSnapshot (line 174) | private MemorySnapshot loadSnapshot() { method replaceSnapshot (line 208) | private void replaceSnapshot(MemorySnapshot snapshot) { method applyCompressor (line 256) | private MemorySnapshot applyCompressor(MemorySnapshot snapshot) { method copyItems (line 265) | private List copyItems(List items) { method openConnection (line 269) | private Connection openConnection() throws Exception { method validIdentifier (line 279) | private String validIdentifier(String value) { method requiredText (line 287) | private String requiredText(String value, String fieldName) { method trimToNull (line 295) | private String trimToNull(String value) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/memory/JdbcAgentMemoryConfig.java class JdbcAgentMemoryConfig (line 10) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/memory/MemoryCompressor.java type MemoryCompressor (line 3) | public interface MemoryCompressor { method compress (line 5) | MemorySnapshot compress(MemorySnapshot snapshot); FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/memory/MemorySnapshot.java class MemorySnapshot (line 11) | @Data method from (line 21) | public static MemorySnapshot from(List items, String summary) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/memory/WindowedMemoryCompressor.java class WindowedMemoryCompressor (line 7) | public class WindowedMemoryCompressor implements MemoryCompressor { method WindowedMemoryCompressor (line 11) | public WindowedMemoryCompressor(int maxItems) { method compress (line 18) | @Override FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/model/AgentModelClient.java type AgentModelClient (line 7) | public interface AgentModelClient { method create (line 9) | AgentModelResult create(AgentPrompt prompt) throws Exception; method createStream (line 11) | AgentModelResult createStream(AgentPrompt prompt, AgentModelStreamList... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/model/AgentModelResult.java class AgentModelResult (line 11) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/model/AgentModelStreamListener.java type AgentModelStreamListener (line 5) | public interface AgentModelStreamListener { method onReasoningDelta (line 7) | default void onReasoningDelta(String delta) { method onDeltaText (line 10) | default void onDeltaText(String delta) { method onToolCall (line 13) | default void onToolCall(AgentToolCall call) { method onEvent (line 16) | default void onEvent(Object event) { method onComplete (line 19) | default void onComplete(AgentModelResult result) { method onError (line 22) | default void onError(Throwable t) { method onRetry (line 25) | default void onRetry(String message, int attempt, int maxAttempts, Thr... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/model/AgentPrompt.java class AgentPrompt (line 12) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/model/ChatModelClient.java class ChatModelClient (line 21) | public class ChatModelClient implements AgentModelClient { method ChatModelClient (line 29) | public ChatModelClient(IChatService chatService) { method ChatModelClient (line 33) | public ChatModelClient(IChatService chatService, String baseUrl, Strin... method create (line 39) | @Override method createStream (line 46) | @Override method cancelActiveStream (line 77) | public static void cancelActiveStream(Thread thread) { method throwIfInterrupted (line 87) | private void throwIfInterrupted(SseListener sseListener) throws Interr... method toChatCompletion (line 95) | private ChatCompletion toChatCompletion(AgentPrompt prompt, boolean st... method convertTools (line 148) | private List convertTools(List tools) { method convertToMessage (line 161) | private ChatMessage convertToMessage(Object item) { method convertMessageToolCalls (line 203) | private List convertMessageToolCalls(Object value) { method buildMessageFromContent (line 238) | private ChatMessage buildMessageFromContent(String role, Object conten... method extractImageUrl (line 293) | private String extractImageUrl(Object imageUrl) { method valueAsString (line 308) | private String valueAsString(Object value) { method toModelResult (line 312) | private AgentModelResult toModelResult(ChatCompletionResponse response) { class StreamingSseListener (line 351) | private final class StreamingSseListener extends SseListener { method StreamingSseListener (line 355) | private StreamingSseListener(AgentModelStreamListener listener) { method error (line 359) | @Override method send (line 366) | @Override method retry (line 382) | @Override method toResult (line 393) | private AgentModelResult toResult() { method buildAssistantMemoryItems (line 417) | private List buildAssistantMemoryItems(String outputText, List... method convertToolCalls (line 432) | private List convertToolCalls(List toolCalls) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/model/ResponsesModelClient.java class ResponsesModelClient (line 17) | public class ResponsesModelClient implements AgentModelClient { method ResponsesModelClient (line 26) | public ResponsesModelClient(IResponsesService responsesService) { method ResponsesModelClient (line 30) | public ResponsesModelClient(IResponsesService responsesService, String... method create (line 36) | @Override method createStream (line 43) | @Override method cancelActiveStream (line 99) | public static void cancelActiveStream(Thread thread) { method throwIfInterrupted (line 109) | private void throwIfInterrupted(ResponseSseListener sseListener) throw... method toResponseRequest (line 117) | private ResponseRequest toResponseRequest(AgentPrompt prompt, boolean ... method toModelResult (line 152) | private AgentModelResult toModelResult(Response response) { method buildItems (line 166) | private List buildItems(AgentPrompt prompt) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/runtime/AgentToolExecutionScope.java class AgentToolExecutionScope (line 5) | public final class AgentToolExecutionScope { type EventEmitter (line 7) | public interface EventEmitter { method emit (line 9) | void emit(AgentEventType type, String message, Object payload); type ScopeCallable (line 12) | public interface ScopeCallable { method call (line 14) | T call() throws Exception; method AgentToolExecutionScope (line 19) | private AgentToolExecutionScope() { method runWithEmitter (line 22) | public static T runWithEmitter(EventEmitter emitter, ScopeCallable... method emit (line 43) | public static void emit(AgentEventType type, String message, Object pa... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/runtime/BaseAgentRuntime.java class BaseAgentRuntime (line 31) | public abstract class BaseAgentRuntime implements io.github.lnyocly.ai4j... method runtimeName (line 33) | protected String runtimeName() { method runtimeInstructions (line 37) | protected String runtimeInstructions() { method run (line 41) | @Override method runStream (line 46) | @Override method runStreamResult (line 51) | @Override method runInternal (line 56) | protected AgentResult runInternal(AgentContext context, AgentRequest r... method throwIfInterrupted (line 157) | private void throwIfInterrupted() throws InterruptedException { method normalizeToolCalls (line 163) | private List normalizeToolCalls(List cal... method buildPrompt (line 189) | protected AgentPrompt buildPrompt(AgentContext context, AgentMemory me... method executeModel (line 218) | protected AgentModelResult executeModel(AgentContext context, AgentPro... method retryPayload (line 284) | private Map retryPayload(int attempt, int maxAttempts,... method executeTool (line 294) | protected String executeTool(AgentContext context, AgentToolCall call)... method executeTool (line 298) | protected String executeTool(AgentContext context, method buildToolErrorOutput (line 326) | protected String buildToolErrorOutput(AgentToolCall call, Exception er... method buildToolValidationErrorOutput (line 338) | protected String buildToolValidationErrorOutput(AgentToolCall call, St... method safeToolErrorMessage (line 342) | private String safeToolErrorMessage(Exception error) { method trimToNull (line 349) | private String trimToNull(String value) { method executeToolCallsSequential (line 357) | private List executeToolCallsSequential(AgentContext context, method executeToolCallsInParallel (line 368) | private List executeToolCallsInParallel(AgentContext context, method waitForFuture (line 388) | private String waitForFuture(Future future) throws Exception { method publish (line 403) | protected void publish(AgentContext context, AgentListener listener, A... method mergeText (line 419) | private String mergeText(String base, String extra) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/runtime/CodeActRuntime.java class CodeActRuntime (line 27) | public class CodeActRuntime extends BaseAgentRuntime { method runtimeName (line 31) | @Override method run (line 36) | @Override method runStream (line 41) | @Override method runInternal (line 46) | protected AgentResult runInternal(AgentContext context, AgentRequest r... method buildPrompt (line 178) | @Override method runtimeInstructions (line 197) | private String runtimeInstructions(AgentContext context) { method hasTool (line 245) | private boolean hasTool(List tools, String name) { method buildToolGuide (line 259) | private String buildToolGuide(List tools) { method extractToolNames (line 281) | private List extractToolNames(List tools) { method parseMessage (line 297) | private CodeActMessage parseMessage(String output) { method extractJson (line 318) | private String extractJson(String text) { method valueAsString (line 354) | private String valueAsString(Object value) { method buildToolOutput (line 358) | private String buildToolOutput(CodeExecutionResult result) { method resolveDirectOutput (line 375) | private String resolveDirectOutput(CodeExecutionResult result) { method resolveFallbackOutput (line 393) | private String resolveFallbackOutput(CodeExecutionResult result, Strin... method mergeText (line 409) | private String mergeText(String base, String extra) { class CodeActMessage (line 419) | private static class CodeActMessage { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/runtime/DeepResearchRuntime.java class DeepResearchRuntime (line 9) | public class DeepResearchRuntime extends BaseAgentRuntime { method DeepResearchRuntime (line 13) | public DeepResearchRuntime() { method DeepResearchRuntime (line 17) | public DeepResearchRuntime(Planner planner) { method runtimeName (line 21) | @Override method runtimeInstructions (line 26) | @Override method run (line 31) | @Override method runStream (line 37) | @Override method preparePlan (line 43) | private void preparePlan(AgentContext context, AgentRequest request) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/runtime/Planner.java type Planner (line 6) | public interface Planner { method plan (line 8) | List plan(String goal); method simple (line 10) | static Planner simple() { class SimplePlanner (line 14) | class SimplePlanner implements Planner { method plan (line 15) | @Override FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/runtime/ReActRuntime.java class ReActRuntime (line 3) | public class ReActRuntime extends BaseAgentRuntime { method runtimeName (line 5) | @Override method runtimeInstructions (line 10) | @Override FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/subagent/HandoffContext.java class HandoffContext (line 3) | public final class HandoffContext { method HandoffContext (line 7) | private HandoffContext() { method currentDepth (line 10) | public static int currentDepth() { method runWithDepth (line 15) | public static T runWithDepth(int depth, HandoffCallable callabl... type HandoffCallable (line 29) | public interface HandoffCallable { method call (line 30) | T call() throws Exception; FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/subagent/HandoffFailureAction.java type HandoffFailureAction (line 3) | public enum HandoffFailureAction { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/subagent/HandoffInputFilter.java type HandoffInputFilter (line 5) | public interface HandoffInputFilter { method filter (line 7) | AgentToolCall filter(AgentToolCall call) throws Exception; FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/subagent/HandoffPolicy.java class HandoffPolicy (line 8) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/subagent/StaticSubAgentRegistry.java class StaticSubAgentRegistry (line 20) | public class StaticSubAgentRegistry implements SubAgentRegistry { method StaticSubAgentRegistry (line 24) | public StaticSubAgentRegistry(List definitions) { method getTools (line 40) | @Override method supports (line 52) | @Override method getDefinition (line 57) | @Override method execute (line 63) | @Override method resolveInput (line 82) | private String resolveInput(String arguments) { method trimToNull (line 105) | private String trimToNull(String value) { class RuntimeSubAgent (line 113) | private static class RuntimeSubAgent { method RuntimeSubAgent (line 122) | private RuntimeSubAgent(String name, String toolName, Agent agent, S... method invoke (line 130) | private AgentResult invoke(String input) throws Exception { method from (line 141) | private static RuntimeSubAgent from(SubAgentDefinition definition) { method toDefinition (line 167) | private SubAgentDefinition toDefinition() { method createTool (line 177) | private static Tool createTool(String toolName, String description) { method normalizeToolName (line 199) | private static String normalizeToolName(String raw) { method trimToNull (line 213) | private static String trimToNull(String value) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/subagent/SubAgentDefinition.java class SubAgentDefinition (line 7) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/subagent/SubAgentRegistry.java type SubAgentRegistry (line 7) | public interface SubAgentRegistry { method getTools (line 9) | List getTools(); method supports (line 11) | boolean supports(String toolName); method getDefinition (line 13) | default SubAgentDefinition getDefinition(String toolName) { method execute (line 17) | String execute(AgentToolCall call) throws Exception; FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/subagent/SubAgentSessionMode.java type SubAgentSessionMode (line 3) | public enum SubAgentSessionMode { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/subagent/SubAgentToolExecutor.java class SubAgentToolExecutor (line 26) | public class SubAgentToolExecutor implements ToolExecutor { method newThread (line 30) | @Override method SubAgentToolExecutor (line 44) | public SubAgentToolExecutor(SubAgentRegistry subAgentRegistry, ToolExe... method SubAgentToolExecutor (line 48) | public SubAgentToolExecutor(SubAgentRegistry subAgentRegistry, ToolExe... method execute (line 56) | @Override method executeSubAgent (line 71) | private String executeSubAgent(AgentToolCall call, String toolName) th... method executeWithoutPolicy (line 127) | private String executeWithoutPolicy(AgentToolCall call, String toolNam... method applyInputFilter (line 179) | private AgentToolCall applyInputFilter(AgentToolCall call) throws Exce... method executeOnce (line 188) | private String executeOnce(AgentToolCall call, int depth, String toolN... method onDenied (line 211) | private String onDenied(AgentToolCall call, method onError (line 268) | private String onError(AgentToolCall call, method denyReason (line 329) | private String denyReason(String toolName, int nextDepth) { method toSafeSet (line 342) | private Set toSafeSet(Set source) { method emitHandoffEvent (line 349) | private void emitHandoffEvent(AgentEventType type, Map... method buildHandoffPayload (line 357) | private Map buildHandoffPayload(String handoffId, method resolveSubAgentName (line 388) | private String resolveSubAgentName(SubAgentDefinition definition, Stri... method resolveHandoffId (line 393) | private String resolveHandoffId(AgentToolCall call) { method extractResultOutput (line 398) | private String extractResultOutput(String raw) { method safeMessage (line 412) | private String safeMessage(Throwable throwable) { method firstNonBlank (line 427) | private String firstNonBlank(String... values) { method trimToNull (line 440) | private String trimToNull(String value) { method isBlank (line 448) | private boolean isBlank(String value) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeam.java class AgentTeam (line 26) | public class AgentTeam implements AgentTeamControl { method AgentTeam (line 54) | AgentTeam(AgentTeamBuilder builder) { method builder (line 115) | public static AgentTeamBuilder builder() { method getTeamId (line 119) | public String getTeamId() { method snapshotState (line 123) | public AgentTeamState snapshotState() { method loadPersistedState (line 139) | public AgentTeamState loadPersistedState() { method restoreState (line 148) | public void restoreState(AgentTeamState state) { method clearPersistedState (line 169) | public boolean clearPersistedState() { method registerMember (line 188) | @Override method unregisterMember (line 204) | @Override method listMembers (line 230) | @Override method listMessages (line 235) | @Override method listMessagesFor (line 243) | @Override method publishMessage (line 255) | @Override method sendMessage (line 260) | @Override method broadcastMessage (line 269) | @Override method listTaskStates (line 276) | @Override method claimTask (line 290) | @Override method releaseTask (line 306) | @Override method reassignTask (line 322) | @Override method heartbeatTask (line 340) | @Override method run (line 356) | public AgentTeamResult run(String objective) throws Exception { method run (line 360) | public AgentTeamResult run(AgentRequest request) throws Exception { method ensurePlanApproved (line 426) | private void ensurePlanApproved(String objective, AgentTeamPlan plan, ... method dispatchTasks (line 439) | private DispatchOutcome dispatchTasks(String objective, AgentTeamTaskB... method executeRound (line 510) | private List executeRound(String objective, method waitForFuture (line 545) | private AgentTeamMemberResult waitForFuture(Future snapshotMembers() { method currentBoard (line 749) | private AgentTeamTaskBoard currentBoard() { method snapshotMemberViews (line 755) | private List snapshotMemberViews() { method rememberTaskStates (line 765) | private void rememberTaskStates(List taskStates) { method currentObjective (line 776) | private String currentObjective() { method resolveMessageBus (line 782) | private AgentTeamMessageBus resolveMessageBus(AgentTeamBuilder builder) { method resolveStateStore (line 796) | private AgentTeamStateStore resolveStateStore(AgentTeamBuilder builder) { method persistState (line 806) | private void persistState() { method isSameTeam (line 813) | private boolean isSameTeam(AgentTeamState state) { method copyTaskStates (line 817) | private List copyTaskStates(List copyMessages(List mes... method resolveMemberView (line 839) | private AgentTeamMember resolveMemberView(String memberId) { method fireTaskStateChanged (line 849) | private void fireTaskStateChanged(AgentTeamTaskState state, AgentTeamM... method validateKnownMemberId (line 859) | private void validateKnownMemberId(String memberId, boolean allowReser... method isReservedMember (line 873) | private boolean isReservedMember(String memberId) { method fireBeforePlan (line 878) | private void fireBeforePlan(String objective, List me... method fireAfterPlan (line 888) | private void fireAfterPlan(String objective, AgentTeamPlan plan) { method fireBeforeTask (line 898) | private void fireBeforeTask(String objective, AgentTeamTask task, Agen... method fireAfterTask (line 908) | private void fireAfterTask(String objective, AgentTeamMemberResult res... method fireAfterSynthesis (line 918) | private void fireAfterSynthesis(String objective, AgentResult synthesi... method normalize (line 930) | private String normalize(String raw) { method safe (line 945) | private String safe(String value) { method firstNonBlank (line 949) | private String firstNonBlank(String... values) { method safeShort (line 961) | private String safeShort(String value) { method toText (line 972) | private String toText(Object value) { class RuntimeMember (line 982) | private static class RuntimeMember { method RuntimeMember (line 988) | private RuntimeMember(String id, String name, String description, Ag... method from (line 995) | private static RuntimeMember from(AgentTeamMember member) { method toPublicMember (line 1010) | private AgentTeamMember toPublicMember() { class PreparedDispatch (line 1020) | private static class PreparedDispatch { method PreparedDispatch (line 1025) | private PreparedDispatch(String taskId, AgentTeamTask task, RuntimeM... class DispatchOutcome (line 1032) | private static class DispatchOutcome { method DispatchOutcome (line 1036) | private DispatchOutcome(List results, int rou... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamAgentRuntime.java class AgentTeamAgentRuntime (line 14) | public class AgentTeamAgentRuntime implements AgentRuntime { method AgentTeamAgentRuntime (line 18) | public AgentTeamAgentRuntime(AgentTeamBuilder template) { method run (line 25) | @Override method runStream (line 32) | @Override method prepareTeam (line 56) | private AgentTeam prepareTeam(AgentListener listener) { method copyBuilder (line 62) | private AgentTeamBuilder copyBuilder(AgentTeamBuilder source) { method toAgentResult (line 84) | private AgentResult toAgentResult(AgentTeamResult result) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamBuilder.java class AgentTeamBuilder (line 13) | public class AgentTeamBuilder { method builder (line 29) | public static AgentTeamBuilder builder() { method getLeadAgent (line 33) | public Agent getLeadAgent() { method getPlannerAgent (line 37) | public Agent getPlannerAgent() { method getSynthesizerAgent (line 41) | public Agent getSynthesizerAgent() { method getPlanner (line 45) | public AgentTeamPlanner getPlanner() { method getSynthesizer (line 49) | public AgentTeamSynthesizer getSynthesizer() { method getMembers (line 53) | public List getMembers() { method getOptions (line 57) | public AgentTeamOptions getOptions() { method getMessageBus (line 61) | public AgentTeamMessageBus getMessageBus() { method getStateStore (line 65) | public AgentTeamStateStore getStateStore() { method getTeamId (line 69) | public String getTeamId() { method getStorageDirectory (line 73) | public Path getStorageDirectory() { method getPlanApproval (line 77) | public AgentTeamPlanApproval getPlanApproval() { method getHooks (line 81) | public List getHooks() { method leadAgent (line 85) | public AgentTeamBuilder leadAgent(Agent leadAgent) { method plannerAgent (line 90) | public AgentTeamBuilder plannerAgent(Agent plannerAgent) { method synthesizerAgent (line 95) | public AgentTeamBuilder synthesizerAgent(Agent synthesizerAgent) { method planner (line 100) | public AgentTeamBuilder planner(AgentTeamPlanner planner) { method synthesizer (line 105) | public AgentTeamBuilder synthesizer(AgentTeamSynthesizer synthesizer) { method member (line 110) | public AgentTeamBuilder member(AgentTeamMember member) { method members (line 117) | public AgentTeamBuilder members(List members) { method options (line 124) | public AgentTeamBuilder options(AgentTeamOptions options) { method messageBus (line 129) | public AgentTeamBuilder messageBus(AgentTeamMessageBus messageBus) { method stateStore (line 134) | public AgentTeamBuilder stateStore(AgentTeamStateStore stateStore) { method teamId (line 139) | public AgentTeamBuilder teamId(String teamId) { method storageDirectory (line 144) | public AgentTeamBuilder storageDirectory(Path storageDirectory) { method planApproval (line 149) | public AgentTeamBuilder planApproval(AgentTeamPlanApproval planApprova... method hook (line 154) | public AgentTeamBuilder hook(AgentTeamHook hook) { method hooks (line 161) | public AgentTeamBuilder hooks(List hooks) { method build (line 168) | public AgentTeam build() { method buildAgent (line 172) | public Agent buildAgent() { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamControl.java type AgentTeamControl (line 5) | public interface AgentTeamControl { method registerMember (line 7) | void registerMember(AgentTeamMember member); method unregisterMember (line 9) | boolean unregisterMember(String memberId); method listMembers (line 11) | List listMembers(); method listMessages (line 13) | List listMessages(); method listMessagesFor (line 15) | List listMessagesFor(String memberId, int limit); method publishMessage (line 17) | void publishMessage(AgentTeamMessage message); method sendMessage (line 19) | void sendMessage(String fromMemberId, String toMemberId, String type, ... method broadcastMessage (line 21) | void broadcastMessage(String fromMemberId, String type, String taskId,... method listTaskStates (line 23) | List listTaskStates(); method claimTask (line 25) | boolean claimTask(String taskId, String memberId); method releaseTask (line 27) | boolean releaseTask(String taskId, String memberId, String reason); method reassignTask (line 29) | boolean reassignTask(String taskId, String fromMemberId, String toMemb... method heartbeatTask (line 31) | boolean heartbeatTask(String taskId, String memberId); FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamEventHook.java class AgentTeamEventHook (line 12) | public class AgentTeamEventHook implements AgentTeamHook { method AgentTeamEventHook (line 16) | public AgentTeamEventHook() { method AgentTeamEventHook (line 20) | public AgentTeamEventHook(AgentListener listener) { method afterPlan (line 24) | @Override method beforeTask (line 46) | @Override method afterTask (line 63) | @Override method onTaskStateChanged (line 86) | @Override method onMessage (line 108) | @Override method buildTaskPayload (line 126) | private Map buildTaskPayload(AgentTeamTask task, method buildTaskSummary (line 165) | private String buildTaskSummary(AgentTeamTask task, String status) { method normalizeStatus (line 169) | private String normalizeStatus(AgentTeamTaskStatus status) { method resolvePercent (line 173) | private int resolvePercent(String status, Integer statePercent) { method emit (line 193) | private void emit(AgentEventType type, String message, Map member... method afterPlan (line 12) | default void afterPlan(String objective, AgentTeamPlan plan) { method beforeTask (line 15) | default void beforeTask(String objective, AgentTeamTask task, AgentTea... method afterTask (line 18) | default void afterTask(String objective, AgentTeamMemberResult result) { method onTaskStateChanged (line 21) | default void onTaskStateChanged(String objective, method afterSynthesis (line 27) | default void afterSynthesis(String objective, AgentResult result) { method onMessage (line 30) | default void onMessage(AgentTeamMessage message) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamMember.java class AgentTeamMember (line 7) | @Data method resolveId (line 19) | public String resolveId() { method normalize (line 31) | private String normalize(String raw) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamMemberResult.java class AgentTeamMemberResult (line 7) | @Data method isSuccess (line 29) | public boolean isSuccess() { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamMemberSnapshot.java class AgentTeamMemberSnapshot (line 6) | @Data method from (line 16) | public static AgentTeamMemberSnapshot from(AgentTeamMember member) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamMessage.java class AgentTeamMessage (line 6) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamMessageBus.java type AgentTeamMessageBus (line 5) | public interface AgentTeamMessageBus { method publish (line 7) | void publish(AgentTeamMessage message); method snapshot (line 9) | List snapshot(); method historyFor (line 11) | List historyFor(String memberId, int limit); method clear (line 13) | void clear(); method restore (line 15) | void restore(List messages); FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamOptions.java class AgentTeamOptions (line 6) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamPlan.java class AgentTeamPlan (line 8) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamPlanApproval.java type AgentTeamPlanApproval (line 5) | public interface AgentTeamPlanApproval { method approve (line 7) | boolean approve(String objective, FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamPlanParser.java class AgentTeamPlanParser (line 11) | final class AgentTeamPlanParser { method AgentTeamPlanParser (line 13) | private AgentTeamPlanParser() { method parseTasks (line 16) | static List parseTasks(String rawText) { method parseFromJson (line 33) | private static List parseFromJson(String text) { method firstArray (line 66) | private static JSONArray firstArray(JSONObject obj, String... keys) { method parseArray (line 79) | private static List parseArray(JSONArray array) { method parseTask (line 96) | private static AgentTeamTask parseTask(JSONObject obj) { method parseDependencies (line 117) | private static List parseDependencies(Object raw) { method firstValue (line 147) | private static Object firstValue(JSONObject obj, String... keys) { method firstString (line 159) | private static String firstString(JSONObject obj, String... keys) { method extractJson (line 170) | private static String extractJson(String text) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamPlanner.java type AgentTeamPlanner (line 5) | public interface AgentTeamPlanner { method plan (line 7) | AgentTeamPlan plan(String objective, List members, Ag... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamResult.java class AgentTeamResult (line 9) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamState.java class AgentTeamState (line 8) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamStateStore.java type AgentTeamStateStore (line 5) | public interface AgentTeamStateStore { method save (line 7) | void save(AgentTeamState state); method load (line 9) | AgentTeamState load(String teamId); method list (line 11) | List list(); method delete (line 13) | boolean delete(String teamId); FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamSynthesizer.java type AgentTeamSynthesizer (line 7) | public interface AgentTeamSynthesizer { method synthesize (line 9) | AgentResult synthesize(String objective, FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamTask.java class AgentTeamTask (line 8) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamTaskBoard.java class AgentTeamTaskBoard (line 11) | public class AgentTeamTaskBoard { method AgentTeamTaskBoard (line 19) | public AgentTeamTaskBoard(List tasks) { method initialize (line 23) | private void initialize(List tasks) { method normalizedTasks (line 60) | public synchronized List normalizedTasks() { method nextReadyTasks (line 71) | public synchronized List nextReadyTasks(int maxCou... method getTaskState (line 89) | public synchronized AgentTeamTaskState getTaskState(String taskId) { method claimTask (line 97) | public synchronized boolean claimTask(String taskId, String memberId) { method releaseTask (line 126) | public synchronized boolean releaseTask(String taskId, String memberId... method reassignTask (line 155) | public synchronized boolean reassignTask(String taskId, String fromMem... method heartbeatTask (line 182) | public synchronized boolean heartbeatTask(String taskId, String member... method recoverTimedOutClaims (line 206) | public synchronized int recoverTimedOutClaims(long timeoutMillis, Stri... method markInProgress (line 242) | public synchronized void markInProgress(String taskId, String claimedB... method markCompleted (line 246) | public synchronized void markCompleted(String taskId, String output, l... method markFailed (line 271) | public synchronized void markFailed(String taskId, String error, long ... method markStalledAsBlocked (line 295) | public synchronized void markStalledAsBlocked(String reason) { method hasWorkRemaining (line 312) | public synchronized boolean hasWorkRemaining() { method hasFailed (line 323) | public synchronized boolean hasFailed() { method snapshot (line 332) | public synchronized List snapshot() { method size (line 343) | public synchronized int size() { method refreshStatuses (line 347) | private void refreshStatuses() { method resolveTaskKey (line 432) | private String resolveTaskKey(String taskId) { method normalizeDependencies (line 450) | private List normalizeDependencies(List dependencies) { method normalizeId (line 464) | private String normalizeId(String raw) { method normalizeMemberId (line 479) | private String normalizeMemberId(String memberId) { method isSameMember (line 487) | private boolean isSameMember(String currentClaimedBy, String expectedM... method copy (line 496) | private AgentTeamTaskState copy(AgentTeamTaskState state) { method percentOf (line 503) | private int percentOf(AgentTeamTaskState state) { method selectUpdatedAt (line 508) | private long selectUpdatedAt(AgentTeamTaskState state) { method trimToNull (line 515) | private String trimToNull(String value) { method firstNonBlank (line 523) | private String firstNonBlank(String... values) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamTaskState.java class AgentTeamTaskState (line 6) | @Data method isTerminal (line 40) | public boolean isTerminal() { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/AgentTeamTaskStatus.java type AgentTeamTaskStatus (line 3) | public enum AgentTeamTaskStatus { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/FileAgentTeamMessageBus.java class FileAgentTeamMessageBus (line 14) | public class FileAgentTeamMessageBus implements AgentTeamMessageBus { method FileAgentTeamMessageBus (line 19) | public FileAgentTeamMessageBus(Path file) { method publish (line 27) | @Override method snapshot (line 36) | @Override method historyFor (line 44) | @Override method clear (line 67) | @Override method restore (line 73) | @Override method loadExistingMessages (line 82) | private void loadExistingMessages() { method append (line 102) | private void append(AgentTeamMessage message) { method rewriteAll (line 115) | private void rewriteAll() { method ensureParent (line 133) | private void ensureParent() throws IOException { method copyMessages (line 140) | private List copyMessages(List sou... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/FileAgentTeamStateStore.java class FileAgentTeamStateStore (line 14) | public class FileAgentTeamStateStore implements AgentTeamStateStore { method FileAgentTeamStateStore (line 18) | public FileAgentTeamStateStore(Path directory) { method save (line 25) | @Override method load (line 42) | @Override method list (line 62) | @Override method delete (line 98) | @Override method ensureDirectory (line 110) | private void ensureDirectory() throws IOException { method fileOf (line 114) | private Path fileOf(String teamId) { method isBlank (line 118) | private boolean isBlank(String value) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/InMemoryAgentTeamMessageBus.java class InMemoryAgentTeamMessageBus (line 7) | public class InMemoryAgentTeamMessageBus implements AgentTeamMessageBus { method publish (line 11) | @Override method snapshot (line 19) | @Override method historyFor (line 27) | @Override method clear (line 50) | @Override method restore (line 55) | @Override FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/InMemoryAgentTeamStateStore.java class InMemoryAgentTeamStateStore (line 10) | public class InMemoryAgentTeamStateStore implements AgentTeamStateStore { method save (line 14) | @Override method load (line 22) | @Override method list (line 28) | @Override method delete (line 48) | @Override method copy (line 53) | private AgentTeamState copy(AgentTeamState state) { method copyMembers (line 64) | private List copyMembers(List copyTaskStates(List copyMessages(List mes... method isBlank (line 97) | private boolean isBlank(String value) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/team/LlmAgentTeamPlanner.java class LlmAgentTeamPlanner (line 11) | public class LlmAgentTeamPlanner implements AgentTeamPlanner { method LlmAgentTeamPlanner (line 15) | public LlmAgentTeamPlanner(Agent plannerAgent) { method plan (line 22) | @Override method buildPlannerPrompt (line 43) | private String buildPlannerPrompt(String objective, List fallbackTasks(String objective, List buildTools() { method createSendMessageTool (line 62) | private Tool createSendMessageTool() { method createBroadcastTool (line 74) | private Tool createBroadcastTool() { method createListTasksTool (line 85) | private Tool createListTasksTool() { method createClaimTaskTool (line 93) | private Tool createClaimTaskTool() { method createReleaseTaskTool (line 102) | private Tool createReleaseTaskTool() { method createReassignTaskTool (line 112) | private Tool createReassignTaskTool() { method createHeartbeatTaskTool (line 122) | private Tool createHeartbeatTaskTool() { method createTool (line 131) | private Tool createTool(String name, method stringProperty (line 151) | private Tool.Function.Property stringProperty(String description) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/tool/AgentToolCall.java class AgentToolCall (line 8) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/tool/AgentToolCallSanitizer.java class AgentToolCallSanitizer (line 9) | public final class AgentToolCallSanitizer { method AgentToolCallSanitizer (line 11) | private AgentToolCallSanitizer() { method retainExecutableCalls (line 14) | public static List retainExecutableCalls(List getTools(); FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/tool/AgentToolResult.java class AgentToolResult (line 8) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/tool/CompositeToolRegistry.java class CompositeToolRegistry (line 7) | public class CompositeToolRegistry implements AgentToolRegistry { method CompositeToolRegistry (line 11) | public CompositeToolRegistry(List registries) { method CompositeToolRegistry (line 19) | public CompositeToolRegistry(AgentToolRegistry first, AgentToolRegistr... method getTools (line 30) | @Override FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/tool/StaticToolRegistry.java class StaticToolRegistry (line 7) | public class StaticToolRegistry implements AgentToolRegistry { method StaticToolRegistry (line 11) | public StaticToolRegistry(List tools) { method getTools (line 19) | @Override method empty (line 24) | public static StaticToolRegistry empty() { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/tool/ToolExecutor.java type ToolExecutor (line 3) | public interface ToolExecutor { method execute (line 5) | String execute(AgentToolCall call) throws Exception; FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/tool/ToolUtilExecutor.java class ToolUtilExecutor (line 9) | public class ToolUtilExecutor implements ToolExecutor { method ToolUtilExecutor (line 13) | public ToolUtilExecutor() { method ToolUtilExecutor (line 17) | public ToolUtilExecutor(Set allowedToolNames) { method execute (line 25) | @Override FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/tool/ToolUtilRegistry.java class ToolUtilRegistry (line 9) | public class ToolUtilRegistry implements AgentToolRegistry { method ToolUtilRegistry (line 14) | public ToolUtilRegistry(List functionList, List mcpSer... method getTools (line 19) | @Override FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/AbstractOpenTelemetryTraceExporter.java class AbstractOpenTelemetryTraceExporter (line 14) | abstract class AbstractOpenTelemetryTraceExporter implements TraceExport... method AbstractOpenTelemetryTraceExporter (line 22) | protected AbstractOpenTelemetryTraceExporter(OpenTelemetry openTelemet... method AbstractOpenTelemetryTraceExporter (line 26) | protected AbstractOpenTelemetryTraceExporter(Tracer tracer) { method export (line 33) | @Override method customizeSpan (line 46) | protected void customizeSpan(Span span, TraceSpan traceSpan) { method flushReadySpans (line 49) | private void flushReadySpans(String traceId) { method emitSpan (line 72) | private void emitSpan(TraceSpan traceSpan, Span parentSpan) { method cleanupIfTraceComplete (line 89) | private void cleanupIfTraceComplete(String traceId) { method hasPendingTrace (line 104) | private boolean hasPendingTrace(String traceId) { method sameTrace (line 113) | private boolean sameTrace(String left, String right) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/AgentFlowTraceBridge.java class AgentFlowTraceBridge (line 21) | public class AgentFlowTraceBridge implements AgentFlowTraceListener { method AgentFlowTraceBridge (line 27) | public AgentFlowTraceBridge(TraceExporter exporter) { method AgentFlowTraceBridge (line 31) | public AgentFlowTraceBridge(TraceExporter exporter, TraceConfig config) { method onStart (line 39) | @Override method onEvent (line 56) | @Override method onComplete (line 73) | @Override method onError (line 89) | @Override method span (line 98) | private TraceSpan span(AgentFlowTraceContext context) { method removeSpan (line 105) | private TraceSpan removeSpan(AgentFlowTraceContext context) { method spanName (line 112) | private String spanName(AgentFlowTraceContext context) { method startAttributes (line 117) | private Map startAttributes(AgentFlowTraceContext cont... method applyRequest (line 136) | private void applyRequest(Map attributes, Object reque... method applyChatEvent (line 162) | private void applyChatEvent(TraceSpan span, AgentFlowChatEvent event) { method applyWorkflowEvent (line 185) | private void applyWorkflowEvent(TraceSpan span, AgentFlowWorkflowEvent... method applyChatResponse (line 208) | private void applyChatResponse(TraceSpan span, AgentFlowChatResponse r... method applyWorkflowResponse (line 222) | private void applyWorkflowResponse(TraceSpan span, AgentFlowWorkflowRe... method applyUsage (line 237) | private void applyUsage(TraceSpan span, AgentFlowUsage usage) { method finishSpan (line 257) | private void finishSpan(TraceSpan span, TraceSpanStatus status, String... method addSpanEvent (line 273) | private void addSpanEvent(TraceSpan span, String name, Map target, String key, Obje... method singletonAttribute (line 307) | private Map singletonAttribute(String key, Object valu... method safeValue (line 315) | private Object safeValue(Object value) { method safeText (line 330) | private String safeText(String value) { method isBlank (line 335) | private boolean isBlank(String value) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/AgentTraceListener.java class AgentTraceListener (line 22) | public class AgentTraceListener implements AgentListener { method AgentTraceListener (line 35) | public AgentTraceListener(TraceExporter exporter) { method AgentTraceListener (line 39) | public AgentTraceListener(TraceExporter exporter, TraceConfig config) { method onEvent (line 44) | @Override method onStepStart (line 107) | private void onStepStart(AgentEvent event) { method onStepEnd (line 120) | private void onStepEnd(AgentEvent event) { method onModelRequest (line 133) | private void onModelRequest(AgentEvent event) { method onModelResponse (line 167) | private void onModelResponse(AgentEvent event) { method onModelRetry (line 192) | private void onModelRetry(AgentEvent event) { method onModelReasoning (line 197) | private void onModelReasoning(AgentEvent event) { method onToolCall (line 206) | private void onToolCall(AgentEvent event) { method onToolResult (line 243) | private void onToolResult(AgentEvent event) { method onFinalOutput (line 278) | private void onFinalOutput(AgentEvent event) { method onError (line 285) | private void onError(AgentEvent event) { method onHandoffStart (line 290) | private void onHandoffStart(AgentEvent event) { method onHandoffEnd (line 301) | private void onHandoffEnd(AgentEvent event) { method onTeamTaskCreated (line 318) | private void onTeamTaskCreated(AgentEvent event) { method onTeamTaskUpdated (line 329) | private void onTeamTaskUpdated(AgentEvent event) { method onTeamMessage (line 352) | private void onTeamMessage(AgentEvent event) { method onMemoryCompress (line 359) | private void onMemoryCompress(AgentEvent event) { method startSpan (line 365) | private TraceSpan startSpan(String name, TraceSpanType type, String pa... method resolveModelSpan (line 381) | private TraceSpan resolveModelSpan(Integer step) { method resolveHandoffParent (line 388) | private TraceSpan resolveHandoffParent(AgentEvent event, Map choices) { method putAttribute (line 563) | private void putAttribute(TraceSpan span, String key, Object value) { method mergeAttributes (line 578) | private void mergeAttributes(TraceSpan span, Map attri... method addSpanEvent (line 590) | private void addSpanEvent(TraceSpan span, String name, Map attributesFromEvent(AgentEvent event) { method payloadMap (line 637) | @SuppressWarnings("unchecked") method safeAttributes (line 645) | private Map safeAttributes(Map source) { method singletonAttribute (line 656) | private Map singletonAttribute(String key, Object valu... method stringValue (line 664) | private String stringValue(Map payload, String key) { method resolveStatus (line 672) | private TraceSpanStatus resolveStatus(Map payload, Str... method isTerminalStatus (line 690) | private boolean isTerminalStatus(String status) { method firstNonBlank (line 702) | private String firstNonBlank(String... values) { method firstNonNull (line 714) | private Object firstNonNull(Object... values) { method sum (line 726) | private Long sum(Long left, Long right) { method sum (line 736) | private Double sum(Double left, Double right) { method longValue (line 746) | private long longValue(Object value) { method finishSpan (line 760) | private void finishSpan(TraceSpan span, TraceSpanStatus status, String... method keyForStep (line 781) | private String keyForStep(Integer step, String toolName) { method reset (line 788) | private void reset() { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/CompositeTraceExporter.java class CompositeTraceExporter (line 7) | public class CompositeTraceExporter implements TraceExporter { method CompositeTraceExporter (line 11) | public CompositeTraceExporter(TraceExporter... exporters) { method CompositeTraceExporter (line 15) | public CompositeTraceExporter(List exporters) { method export (line 27) | @Override FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/ConsoleTraceExporter.java class ConsoleTraceExporter (line 5) | public class ConsoleTraceExporter implements TraceExporter { method export (line 7) | @Override FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/InMemoryTraceExporter.java class InMemoryTraceExporter (line 7) | public class InMemoryTraceExporter implements TraceExporter { method export (line 11) | @Override method getSpans (line 18) | public synchronized List getSpans() { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/JsonlTraceExporter.java class JsonlTraceExporter (line 13) | public class JsonlTraceExporter implements TraceExporter, AutoCloseable { method JsonlTraceExporter (line 18) | public JsonlTraceExporter(String path) { method JsonlTraceExporter (line 22) | public JsonlTraceExporter(File file) { method JsonlTraceExporter (line 26) | public JsonlTraceExporter(Writer writer) { method JsonlTraceExporter (line 30) | private JsonlTraceExporter(Writer writer, boolean ownsWriter) { method export (line 38) | @Override method close (line 52) | @Override method createWriter (line 61) | private static Writer createWriter(File file) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/LangfuseTraceExporter.java class LangfuseTraceExporter (line 11) | public class LangfuseTraceExporter extends AbstractOpenTelemetryTraceExp... method LangfuseTraceExporter (line 16) | public LangfuseTraceExporter(OpenTelemetry openTelemetry) { method LangfuseTraceExporter (line 20) | public LangfuseTraceExporter(OpenTelemetry openTelemetry, String envir... method LangfuseTraceExporter (line 26) | public LangfuseTraceExporter(Tracer tracer) { method LangfuseTraceExporter (line 30) | public LangfuseTraceExporter(Tracer tracer, String environment, String... method customizeSpan (line 36) | @Override class LangfuseSpanAttributes (line 44) | static final class LangfuseSpanAttributes { method LangfuseSpanAttributes (line 46) | private LangfuseSpanAttributes() { method project (line 49) | static Map project(TraceSpan traceSpan, String envir... method applyModelAttributes (line 77) | private static void applyModelAttributes(Map project... method applyGenericObservation (line 139) | private static void applyGenericObservation(Map proj... method metadataAttributes (line 163) | private static Map metadataAttributes(Map pick(Map attribut... method firstNonNull (line 203) | private static Object firstNonNull(Object... values) { method stringValue (line 215) | private static String stringValue(Map attributes, St... method putIfPresent (line 223) | private static void putIfPresent(Map target, String ... method observationType (line 229) | private static String observationType(TraceSpanType type) { method observationLevel (line 250) | private static String observationLevel(TraceSpanStatus status) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/OpenTelemetryTraceExporter.java class OpenTelemetryTraceExporter (line 6) | public class OpenTelemetryTraceExporter extends AbstractOpenTelemetryTra... method OpenTelemetryTraceExporter (line 8) | public OpenTelemetryTraceExporter(OpenTelemetry openTelemetry) { method OpenTelemetryTraceExporter (line 12) | public OpenTelemetryTraceExporter(Tracer tracer) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/OpenTelemetryTraceSupport.java class OpenTelemetryTraceSupport (line 10) | final class OpenTelemetryTraceSupport { method OpenTelemetryTraceSupport (line 12) | private OpenTelemetryTraceSupport() { method applyCommonAttributes (line 15) | static void applyCommonAttributes(Span span, TraceSpan traceSpan) { method setAttribute (line 62) | static void setAttribute(Span span, String key, Object value) { method safeSegment (line 89) | static String safeSegment(String value) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/TraceConfig.java class TraceConfig (line 6) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/TraceExporter.java type TraceExporter (line 3) | public interface TraceExporter { method export (line 5) | void export(TraceSpan span); FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/TraceMasker.java type TraceMasker (line 3) | public interface TraceMasker { method mask (line 5) | String mask(String value); FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/TraceMetrics.java class TraceMetrics (line 8) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/TracePricing.java class TracePricing (line 8) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/TracePricingResolver.java type TracePricingResolver (line 3) | public interface TracePricingResolver { method resolve (line 5) | TracePricing resolve(String model); FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/TraceSpan.java class TraceSpan (line 9) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/TraceSpanEvent.java class TraceSpanEvent (line 10) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/TraceSpanStatus.java type TraceSpanStatus (line 3) | public enum TraceSpanStatus { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/trace/TraceSpanType.java type TraceSpanType (line 3) | public enum TraceSpanType { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/util/AgentInputItem.java class AgentInputItem (line 10) | public final class AgentInputItem { method AgentInputItem (line 12) | private AgentInputItem() { method inputText (line 15) | public static Map inputText(String text) { method inputImageUrl (line 22) | public static Map inputImageUrl(String url) { method userMessage (line 31) | public static Map userMessage(String text) { method userMessage (line 35) | public static Map userMessage(String text, String... i... method systemMessage (line 39) | public static Map systemMessage(String text) { method message (line 43) | public static Map message(String role, String text) { method message (line 53) | public static Map message(String role, String text, St... method functionCallOutput (line 72) | public static Map functionCallOutput(String callId, St... method assistantToolCallsMessage (line 80) | public static Map assistantToolCallsMessage(String tex... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/util/ResponseUtil.java class ResponseUtil (line 11) | public final class ResponseUtil { method ResponseUtil (line 13) | private ResponseUtil() { method extractOutputText (line 16) | public static String extractOutputText(Response response) { method extractToolCalls (line 37) | public static List extractToolCalls(Response response) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/workflow/AgentNode.java type AgentNode (line 7) | public interface AgentNode { method execute (line 9) | AgentResult execute(WorkflowContext context, AgentRequest request) thr... method executeStream (line 11) | default void executeStream(WorkflowContext context, AgentRequest reque... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/workflow/AgentWorkflow.java type AgentWorkflow (line 8) | public interface AgentWorkflow { method run (line 10) | AgentResult run(AgentSession session, AgentRequest request) throws Exc... method runStream (line 12) | void runStream(AgentSession session, AgentRequest request, AgentListen... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/workflow/RuntimeAgentNode.java class RuntimeAgentNode (line 8) | public class RuntimeAgentNode implements AgentNode, WorkflowResultAware { method RuntimeAgentNode (line 13) | public RuntimeAgentNode(AgentSession session) { method execute (line 17) | @Override method executeStream (line 23) | @Override method getLastResult (line 28) | @Override FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/workflow/SequentialWorkflow.java class SequentialWorkflow (line 11) | public class SequentialWorkflow implements AgentWorkflow { method addNode (line 15) | public SequentialWorkflow addNode(AgentNode node) { method getNodes (line 22) | public List getNodes() { method run (line 26) | @Override method runStream (line 32) | @Override method executeNodes (line 38) | private AgentResult executeNodes(WorkflowContext context, AgentRequest... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/workflow/StateCondition.java type StateCondition (line 6) | public interface StateCondition { method matches (line 8) | boolean matches(WorkflowContext context, AgentRequest request, AgentRe... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/workflow/StateGraphWorkflow.java class StateGraphWorkflow (line 13) | public class StateGraphWorkflow implements AgentWorkflow { method addNode (line 21) | public StateGraphWorkflow addNode(String nodeId, AgentNode node) { method start (line 29) | public StateGraphWorkflow start(String nodeId) { method maxSteps (line 34) | public StateGraphWorkflow maxSteps(int maxSteps) { method addTransition (line 41) | public StateGraphWorkflow addTransition(String from, String to) { method addTransition (line 45) | public StateGraphWorkflow addTransition(String from, String to, StateC... method addEdge (line 54) | public StateGraphWorkflow addEdge(String from, String to) { method addConditionalEdges (line 58) | public StateGraphWorkflow addConditionalEdges(String from, StateRouter... method addConditionalEdges (line 62) | public StateGraphWorkflow addConditionalEdges(String from, StateRouter... method run (line 74) | @Override method runStream (line 80) | @Override method executeGraph (line 86) | private AgentResult executeGraph(WorkflowContext context, AgentRequest... method resolveNext (line 128) | private String resolveNext(String currentNodeId, WorkflowContext conte... class ConditionalEdges (line 156) | private static class ConditionalEdges { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/workflow/StateRouter.java type StateRouter (line 6) | public interface StateRouter { method route (line 8) | String route(WorkflowContext context, AgentRequest request, AgentResul... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/workflow/StateTransition.java class StateTransition (line 8) | @Data FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/workflow/WorkflowAgent.java class WorkflowAgent (line 8) | public class WorkflowAgent { method WorkflowAgent (line 13) | public WorkflowAgent(AgentWorkflow workflow, AgentSession session) { method run (line 18) | public AgentResult run(AgentRequest request) throws Exception { method runStream (line 22) | public void runStream(AgentRequest request, AgentListener listener) th... FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/workflow/WorkflowContext.java class WorkflowContext (line 14) | @Data method put (line 25) | public void put(String key, Object value) { method get (line 29) | public Object get(String key) { method createResultEvent (line 33) | public AgentEvent createResultEvent(AgentResult result) { FILE: ai4j-agent/src/main/java/io/github/lnyocly/ai4j/agent/workflow/WorkflowResultAware.java type WorkflowResultAware (line 5) | public interface WorkflowResultAware { method getLastResult (line 7) | AgentResult getLastResult(); FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/AgentFlowTraceBridgeTest.java class AgentFlowTraceBridgeTest (line 20) | public class AgentFlowTraceBridgeTest { method test_bridge_exports_agentflow_chat_span (line 22) | @Test method test_bridge_exports_error_span (line 79) | @Test FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/AgentMemoryTest.java class AgentMemoryTest (line 10) | public class AgentMemoryTest { method test_windowed_compression (line 12) | @Test FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/AgentRuntimeTest.java class AgentRuntimeTest (line 28) | public class AgentRuntimeTest { method test_tool_loop_and_output (line 30) | @Test method test_stream_run_publishes_reasoning_and_text_before_tool_call (line 57) | @Test method test_invalid_tool_call_is_reported_without_execution (line 124) | @Test method test_stream_run_publishes_model_retry_event (line 170) | @Test method test_zero_max_steps_means_unlimited (line 213) | @Test method resultWithText (line 236) | private AgentModelResult resultWithText(String text) { method resultWithToolCall (line 244) | private AgentModelResult resultWithToolCall(String callId, String name... class QueueModelClient (line 257) | private static class QueueModelClient implements AgentModelClient { method QueueModelClient (line 260) | private QueueModelClient(Deque queue) { method create (line 264) | @Override method createStream (line 269) | @Override class CountingToolExecutor (line 275) | private static class CountingToolExecutor implements ToolExecutor { method execute (line 278) | @Override FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/AgentTeamAgentAdapterTest.java class AgentTeamAgentAdapterTest (line 29) | public class AgentTeamAgentAdapterTest { method shouldBuildTeamAsStandardAgentAndRun (line 31) | @Test method shouldEmitTeamTaskEventsWhenRunningStream (line 62) | @Test method shouldPreserveTeamPersistenceSettingsWhenBuildingStandardAgent (line 103) | @Test method firstEvent (line 156) | private static AgentEvent firstEvent(List events, AgentEve... method newAgent (line 168) | private static Agent newAgent(String model, AgentModelClient client) { method textResult (line 175) | private static AgentModelResult textResult(String text) { class ScriptedModelClient (line 183) | private static class ScriptedModelClient implements AgentModelClient { method enqueue (line 186) | private void enqueue(AgentModelResult result) { method create (line 190) | @Override method createStream (line 195) | @Override FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/AgentTeamPersistenceTest.java class AgentTeamPersistenceTest (line 28) | public class AgentTeamPersistenceTest { method shouldPersistAndRestoreTeamStateFromStorageDirectory (line 33) | @Test method buildTeam (line 68) | private AgentTeam buildTeam(Path root, String teamId) { method newAgent (line 98) | private Agent newAgent(String model, AgentModelClient client) { method textResult (line 105) | private AgentModelResult textResult(String text) { class ScriptedModelClient (line 113) | private static class ScriptedModelClient implements AgentModelClient { method enqueue (line 116) | private void enqueue(AgentModelResult result) { method create (line 120) | @Override method createStream (line 125) | @Override FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/AgentTeamProjectDeliveryExampleTest.java class AgentTeamProjectDeliveryExampleTest (line 40) | public class AgentTeamProjectDeliveryExampleTest { method test_project_delivery_team_example (line 42) | @Test method projectPlanner (line 122) | private static AgentTeamPlanner projectPlanner() { method projectSynthesizer (line 160) | private static AgentTeamSynthesizer projectSynthesizer() { method member (line 185) | private static AgentTeamMember member(String id, method hasMessage (line 197) | private static boolean hasMessage(List messages, method equals (line 217) | private static boolean equals(String left, String right) { method safe (line 224) | private static String safe(String value) { method textResult (line 228) | private static AgentModelResult textResult(String text) { method toolCallResult (line 236) | private static AgentModelResult toolCallResult(List cal... method toolCall (line 244) | private static AgentToolCall toolCall(String name, String arguments) { method printResult (line 253) | private static void printResult(AgentTeamResult result) { class ScriptedModelClient (line 282) | private static class ScriptedModelClient implements AgentModelClient { method enqueue (line 285) | void enqueue(AgentModelResult result) { method create (line 289) | @Override method createStream (line 294) | @Override FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/AgentTeamTaskBoardTest.java class AgentTeamTaskBoardTest (line 14) | public class AgentTeamTaskBoardTest { method test_claim_release_reassign_and_dependency_flow (line 16) | @Test method test_recover_timed_out_claims (line 59) | @Test FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/AgentTeamTest.java class AgentTeamTest (line 30) | public class AgentTeamTest { method test_team_plan_delegate_synthesize (line 32) | @Test method test_team_parallel_dispatch (line 72) | @Test method test_team_planner_fallback_broadcast (line 100) | @Test method test_team_dependency_and_message_bus (line 135) | @Test method test_team_plan_approval_rejected (line 167) | @Test method test_team_dynamic_member_registration_and_hooks (line 194) | @Test method test_team_message_controls_direct_and_broadcast (line 252) | @Test method test_team_list_task_states_after_run (line 271) | @Test method test_team_member_tools_can_message_and_heartbeat (line 296) | @Test method test_team_single_lead_agent_defaults_planner_and_synthesizer (line 348) | @Test method newAgent (line 370) | private static Agent newAgent(String model, AgentModelClient client) { method textResult (line 377) | private static AgentModelResult textResult(String text) { method toolCallResult (line 385) | private static AgentModelResult toolCallResult(List cal... method toolCall (line 393) | private static AgentToolCall toolCall(String name, String arguments) { method hasToolNamed (line 402) | private static boolean hasToolNamed(List tools, String name) { class ScriptedModelClient (line 418) | private static class ScriptedModelClient implements AgentModelClient { method enqueue (line 422) | private void enqueue(AgentModelResult result) { method create (line 426) | @Override method createStream (line 432) | @Override class ConcurrentModelClient (line 438) | private static class ConcurrentModelClient implements AgentModelClient { method ConcurrentModelClient (line 444) | private ConcurrentModelClient(long sleepMs, String output) { method create (line 449) | @Override method createStream (line 463) | @Override FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/AgentTeamUsageTest.java class AgentTeamUsageTest (line 26) | public class AgentTeamUsageTest extends ZhipuAgentTestSupport { method test_team_with_deterministic_plan_and_real_members (line 28) | @Test method test_team_dynamic_member_and_message_bus (line 93) | @Test method createRoleAgent (line 145) | private Agent createRoleAgent(String systemPrompt, String instructions) { method runTeamWithRetry (line 156) | private AgentTeamResult runTeamWithRetry(AgentTeam team, String object... method allTasksCompleted (line 167) | private boolean allTasksCompleted(List states) { method describeTaskStates (line 179) | private String describeTaskStates(List states) { FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/AgentTraceListenerTest.java class AgentTraceListenerTest (line 22) | public class AgentTraceListenerTest { method test_trace_listener_collects_spans (line 24) | @Test method test_trace_listener_captures_reasoning_handoff_team_and_memory_events (line 57) | @Test method test_trace_listener_captures_model_usage_cost_and_duration_metrics (line 106) | @Test method findSpan (line 151) | private TraceSpan findSpan(List spans, TraceSpanType type) { method retryPayload (line 160) | private Map retryPayload() { method handoffPayload (line 168) | private Map handoffPayload(String status, String error) { method teamPayload (line 179) | private Map teamPayload(String status, String error) { method messagePayload (line 188) | private Map messagePayload() { method compactPayload (line 195) | private Map compactPayload() { method modelResponsePayload (line 202) | private Map modelResponsePayload() { method event (line 217) | private AgentEvent event(AgentEventType type, Integer step, String mes... FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/AgentTraceUsageTest.java class AgentTraceUsageTest (line 17) | public class AgentTraceUsageTest extends ZhipuAgentTestSupport { method test_trace_for_react_runtime_with_real_model (line 19) | @Test method test_trace_mask_and_truncate_config (line 44) | @Test FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/AgentWorkflowTest.java class AgentWorkflowTest (line 12) | public class AgentWorkflowTest { method test_sequential_workflow_passes_output (line 14) | @Test class StaticNode (line 24) | private static class StaticNode implements AgentNode { method StaticNode (line 27) | private StaticNode(String output) { method execute (line 31) | @Override class EchoNode (line 37) | private static class EchoNode implements AgentNode { method execute (line 38) | @Override FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/AgentWorkflowUsageTest.java class AgentWorkflowUsageTest (line 17) | public class AgentWorkflowUsageTest extends ZhipuAgentTestSupport { method test_sequential_workflow_with_real_agents (line 19) | @Test method test_state_graph_workflow_with_router (line 49) | @Test FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/ChatModelClientTest.java class ChatModelClientTest (line 31) | public class ChatModelClientTest { method test_stream_preserves_reasoning_text_and_tool_calls (line 33) | @Test method test_stream_preserves_invalid_coding_tool_calls_for_runtime_validation (line 66) | @Test method test_stream_aggregates_minimax_style_fragmented_tool_calls (line 82) | @Test method test_stream_propagates_stream_execution_options (line 101) | @Test method test_stream_surfaces_http_error_payload_when_sse_failure_has_no_throwable (line 126) | @Test method test_create_stores_assistant_tool_calls_in_memory_items (line 147) | @Test method test_create_rehydrates_assistant_tool_calls_before_tool_output (line 173) | @Test class FakeChatService (line 209) | private static class FakeChatService implements IChatService { method chatCompletion (line 212) | @Override method chatCompletion (line 217) | @Override method chatCompletionStream (line 222) | @Override method chatCompletionStream (line 235) | @Override class FakeInvalidBashChatService (line 241) | private static class FakeInvalidBashChatService implements IChatService { method chatCompletion (line 242) | @Override method chatCompletion (line 247) | @Override method chatCompletionStream (line 252) | @Override method chatCompletionStream (line 262) | @Override class FakeStreamingErrorChatService (line 268) | private static class FakeStreamingErrorChatService implements IChatSer... method chatCompletion (line 269) | @Override method chatCompletion (line 274) | @Override method chatCompletionStream (line 279) | @Override method chatCompletionStream (line 295) | @Override class CapturingChatService (line 301) | private static class CapturingChatService implements IChatService { method chatCompletion (line 305) | @Override method chatCompletion (line 311) | @Override method chatCompletionStream (line 317) | @Override method chatCompletionStream (line 322) | @Override method response (line 327) | private ChatCompletionResponse response() { class FakeFragmentedMiniMaxChatService (line 339) | private static class FakeFragmentedMiniMaxChatService implements IChat... method chatCompletion (line 340) | @Override method chatCompletion (line 345) | @Override method chatCompletionStream (line 350) | @Override method chatCompletionStream (line 362) | @Override FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/CodeActAgentUsageTest.java class CodeActAgentUsageTest (line 20) | public class CodeActAgentUsageTest extends ZhipuAgentTestSupport { method test_codeact_basic_js_execution (line 22) | @Test method test_codeact_react_finalize_flow_without_external_tool (line 46) | @Test method isNashornAvailable (line 71) | private boolean isNashornAvailable() { method runWithRetry (line 76) | private AgentResult runWithRetry(Agent agent, AgentRequest request, in... method isRetryable (line 91) | private boolean isRetryable(Throwable throwable) { FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/CodeActPythonExecutorTest.java class CodeActPythonExecutorTest (line 13) | public class CodeActPythonExecutorTest { method test_python_executor_with_tool (line 15) | @Test method isGraalPyAvailable (line 38) | private boolean isGraalPyAvailable() { FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/CodeActRuntimeTest.java class CodeActRuntimeTest (line 32) | public class CodeActRuntimeTest { method init (line 36) | @Before method test_codeact_with_tool (line 70) | @Test method buildEventPublisher (line 97) | private AgentEventPublisher buildEventPublisher() { method logToolCall (line 103) | private void logToolCall(AgentEvent event) { FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/CodeActRuntimeWithTraceTest.java class CodeActRuntimeWithTraceTest (line 32) | public class CodeActRuntimeWithTraceTest { method init (line 36) | @Before method test_codeact_with_trace (line 71) | @Test method isNashornAvailable (line 98) | private boolean isNashornAvailable() { FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/DoubaoAgentTeamBestPracticeTest.java class DoubaoAgentTeamBestPracticeTest (line 45) | public class DoubaoAgentTeamBestPracticeTest { method init (line 53) | @Before method test_doubao_agent_team_best_practice (line 85) | @Test FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/DoubaoAgentWorkflowTest.java class DoubaoAgentWorkflowTest (line 29) | public class DoubaoAgentWorkflowTest { method init (line 33) | @Before method test_doubao_agent_workflow (line 65) | @Test FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/DoubaoProjectTeamAgentTeamsTest.java class DoubaoProjectTeamAgentTeamsTest (line 37) | public class DoubaoProjectTeamAgentTeamsTest { method init (line 46) | @Before method test_project_delivery_team_with_doubao (line 77) | @Test method createRoleAgent (line 174) | private Agent createRoleAgent(String systemPrompt, String instructions) { FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/FileAgentTeamStateStoreTest.java class FileAgentTeamStateStoreTest (line 16) | public class FileAgentTeamStateStoreTest { method shouldSaveLoadListAndDeleteState (line 21) | @Test method shouldPersistMailboxAcrossInstances (line 49) | @Test FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/HandoffPolicyTest.java class HandoffPolicyTest (line 21) | public class HandoffPolicyTest { method testAllowedToolsPolicyDeniesUnexpectedSubagent (line 23) | @Test method testDenyCanFallbackToPrimaryExecutor (line 51) | @Test method testRetryRecoversTransientSubagentFailure (line 69) | @Test method testTimeoutCanFallbackToPrimaryExecutor (line 104) | @Test method testInputFilterCanRewriteDelegatedArguments (line 144) | @Test method testNestedHandoffBlockedByMaxDepth (line 188) | @Test method staticOutputAgent (line 231) | private Agent staticOutputAgent(String output) { method queueModelClient (line 238) | private QueueModelClient queueModelClient(io.github.lnyocly.ai4j.agent... method textResult (line 242) | private io.github.lnyocly.ai4j.agent.model.AgentModelResult textResult... method toolCallResult (line 250) | private io.github.lnyocly.ai4j.agent.model.AgentModelResult toolCallRe... class QueueModelClient (line 262) | private static class QueueModelClient implements io.github.lnyocly.ai4... method QueueModelClient (line 265) | private QueueModelClient(List states) { method describeTaskStates (line 264) | private String describeTaskStates(List states) { method printResult (line 290) | private void printResult(AgentTeamResult result) { method callWithProviderGuard (line 325) | private T callWithProviderGuard(ThrowingSupplier supplier) thro... method skipIfProviderUnavailable (line 334) | private void skipIfProviderUnavailable(Throwable throwable) { method isProviderUnavailable (line 340) | private boolean isProviderUnavailable(Throwable throwable) { method extractRootMessage (line 364) | private String extractRootMessage(Throwable throwable) { method readValue (line 374) | private String readValue(String envKey, String propertyKey) { method safe (line 382) | private String safe(String value) { method isBlank (line 386) | private boolean isBlank(String value) { type ThrowingSupplier (line 390) | @FunctionalInterface method get (line 392) | T get() throws Exception; FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/NashornCodeExecutorTest.java class NashornCodeExecutorTest (line 15) | public class NashornCodeExecutorTest { method test_nashorn_executor_with_tool_alias (line 17) | @Test method test_nashorn_parses_json_tool_result (line 39) | @Test method test_nashorn_uses_return_value_when_codeact_result_not_set (line 60) | @Test method test_nashorn_rejects_python_language (line 74) | @Test method isNashornAvailable (line 86) | private boolean isNashornAvailable() { FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/ReActAgentUsageTest.java class ReActAgentUsageTest (line 17) | public class ReActAgentUsageTest extends ZhipuAgentTestSupport { method test_react_agent_basic_run_with_real_model (line 19) | @Test method test_react_agent_parallel_tool_calls_and_event_lifecycle (line 37) | @Test FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/ResponsesModelClientTest.java class ResponsesModelClientTest (line 15) | public class ResponsesModelClientTest { method test_stream_propagates_stream_execution_options (line 17) | @Test class CapturingResponsesService (line 42) | private static final class CapturingResponsesService implements IRespo... method create (line 45) | @Override method create (line 50) | @Override method createStream (line 55) | @Override method createStream (line 60) | @Override method retrieve (line 65) | @Override method retrieve (line 70) | @Override method delete (line 75) | @Override method delete (line 80) | @Override FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/StateGraphWorkflowTest.java class StateGraphWorkflowTest (line 33) | public class StateGraphWorkflowTest { method init (line 37) | @Before method test_branching_route (line 72) | @Test method test_loop_route (line 87) | @Test method test_state_graph_with_agents (line 109) | @Test class StaticNode (line 163) | private static class StaticNode implements AgentNode { method StaticNode (line 166) | private StaticNode(String output) { method execute (line 170) | @Override class CounterNode (line 176) | private static class CounterNode implements AgentNode { method CounterNode (line 179) | private CounterNode(AtomicInteger counter) { method execute (line 183) | @Override class NamedNode (line 191) | private static class NamedNode implements AgentNode { method NamedNode (line 195) | private NamedNode(String name, AgentNode delegate) { method execute (line 200) | @Override class RoutingAgentNode (line 214) | private static class RoutingAgentNode implements AgentNode { method RoutingAgentNode (line 217) | private RoutingAgentNode(AgentSession session) { method execute (line 221) | @Override class RuntimeAgentNode (line 237) | private static class RuntimeAgentNode implements AgentNode { method RuntimeAgentNode (line 240) | private RuntimeAgentNode(AgentSession session) { method execute (line 244) | @Override class FormatAgentNode (line 250) | private static class FormatAgentNode implements AgentNode { method FormatAgentNode (line 253) | private FormatAgentNode(AgentSession session) { method execute (line 257) | @Override FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/SubAgentParallelFallbackTest.java class SubAgentParallelFallbackTest (line 29) | public class SubAgentParallelFallbackTest { method test_parallel_subagents_with_fallback_policy (line 31) | @Test method toResultMap (line 93) | private static Map toResultMap(List t... method textResult (line 104) | private static AgentModelResult textResult(String text) { method toolCallsResult (line 112) | private static AgentModelResult toolCallsResult(List ca... class ScriptedModelClient (line 119) | private static class ScriptedModelClient implements AgentModelClient { method enqueue (line 122) | private void enqueue(AgentModelResult result) { method create (line 126) | @Override method createStream (line 131) | @Override class TimedSubAgentModelClient (line 137) | private static class TimedSubAgentModelClient implements AgentModelCli... method TimedSubAgentModelClient (line 143) | private TimedSubAgentModelClient(ConcurrencyTracker tracker, long sl... method create (line 150) | @Override method createStream (line 168) | @Override class ConcurrencyTracker (line 174) | private static class ConcurrencyTracker { FILE: ai4j-agent/src/test/java/io/github/lnyocly/agent/SubAgentRuntimeTest.java class SubAgentRuntimeTest (line 32) | public class SubAgentRuntimeTest { method testSubagentToolDelegationAndExposure (line 34) | @Test method testParallelSubagentExecutionForCodexStyleDelegation (line 72) | @Test method testSubagentHandoffEventsArePublished (line 120) | @Test method testTeamSubagentPublishesTeamTaskEventsToParent (line 177) | @Test method firstEvent (line 249) | private static AgentEvent firstEvent(List events, AgentEve... method firstEventByStatus (line 261) | private static AgentEvent firstEventByStatus(List events, ... method hasTool (line 279) | private static boolean hasTool(List tools, String name) { method resultWithText (line 294) | private static AgentModelResult resultWithText(String text) { method resultWithToolCall (line 302) | private static AgentModelResult resultWithToolCall(String callId, Stri... method resultWithToolCalls (line 313) | private static AgentModelResult resultWithToolCalls(List T callWithProviderGuard(ThrowingSupplier supplier) th... method skipIfProviderUnavailable (line 81) | protected void skipIfProviderUnavailable(Throwable throwable) { method isProviderUnavailable (line 88) | private boolean isProviderUnavailable(Throwable throwable) { method extractRootMessage (line 113) | private String extractRootMessage(Throwable throwable) { type ThrowingSupplier (line 124) | @FunctionalInterface method get (line 126) | T get() throws Exception; FILE: ai4j-agent/src/test/java/io/github/lnyocly/ai4j/agent/flowgram/FlowGramRuntimeServiceTest.java class FlowGramRuntimeServiceTest (line 31) | public class FlowGramRuntimeServiceTest { method shouldValidateWorkflowShape (line 33) | @Test method shouldRunSimpleStartLlmEndWorkflow (line 55) | @Test method shouldRouteConditionBranch (line 90) | @Test method shouldAggregateLoopOutputs (line 120) | @Test method shouldCancelTask (line 155) | @Test method shouldExposeWorkflowFailureReasonInResultAndReport (line 186) | @Test method shouldPublishRuntimeListenerEventsForSuccessfulTask (line 222) | @Test method shouldRunAi4jBackedLlmNodeRunner (line 275) | @Test method awaitResult (line 310) | private static FlowGramTaskResultOutput awaitResult(FlowGramRuntimeSer... method waitForProcessing (line 322) | private static void waitForProcessing(FlowGramRuntimeService service, ... method awaitEvent (line 333) | private static void awaitEvent(List events, Flow... method snapshot (line 346) | private static List snapshot(List startData() { method startNumberData (line 380) | private static Map startNumberData() { method startCitiesData (line 384) | private static Map startCitiesData() { method llmData (line 388) | private static Map llmData(Map promptV... method endData (line 403) | private static Map endData(Map resultV... method endArrayData (line 410) | private static Map endArrayData(Map re... method conditionData (line 417) | private static Map conditionData() { method loopData (line 428) | private static Map loopData() { method stringSchema (line 437) | private static Map stringSchema() { method numberSchema (line 441) | private static Map numberSchema() { method objectSchema (line 445) | private static Map objectSchema(List required,... method property (line 459) | private static Map property(String name, Map required(String... names) { method ref (line 467) | private static Map ref(String... path) { method constant (line 471) | private static Map constant(Object content) { method mapOf (line 475) | private static Map mapOf(Object... keyValues) { class EchoRunner (line 483) | private static final class EchoRunner implements FlowGramLlmNodeRunner { method run (line 484) | @Override class SlowRunner (line 490) | private static final class SlowRunner implements FlowGramLlmNodeRunner { method run (line 491) | @Override class FailingRunner (line 500) | private static final class FailingRunner implements FlowGramLlmNodeRun... method run (line 501) | @Override FILE: ai4j-agent/src/test/java/io/github/lnyocly/ai4j/agent/memory/JdbcAgentMemoryTest.java class JdbcAgentMemoryTest (line 15) | public class JdbcAgentMemoryTest { method shouldPersistAgentMemoryAcrossInstances (line 17) | @Test method shouldIncludeSummaryInMergedItems (line 40) | @Test method shouldSupportSnapshotRestoreAndClear (line 57) | @Test method jdbcUrl (line 79) | private String jdbcUrl(String suffix) { FILE: ai4j-agent/src/test/java/io/github/lnyocly/ai4j/agent/model/ChatModelClientTest.java class ChatModelClientTest (line 14) | public class ChatModelClientTest { method createShouldEnableToolCallPassThroughForAgentTools (line 16) | @Test method testTool (line 51) | private Tool testTool(String name) { FILE: ai4j-agent/src/test/java/io/github/lnyocly/ai4j/agent/trace/LangfuseTraceExporterTest.java class LangfuseTraceExporterTest (line 9) | public class LangfuseTraceExporterTest { method test_langfuse_projection_for_model_span (line 11) | @Test FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/Ai4jCli.java class Ai4jCli (line 23) | public class Ai4jCli { method Ai4jCli (line 28) | public Ai4jCli() { method Ai4jCli (line 32) | Ai4jCli(CodingCliAgentFactory agentFactory, Path currentDirectory) { method run (line 37) | public int run(String[] args, InputStream in, OutputStream out, Output... method run (line 41) | int run(String[] args, method printHelp (line 89) | private void printHelp(TerminalIO terminal) { method asTuiArguments (line 111) | private List asTuiArguments(List arguments) { method createTerminal (line 121) | private TerminalIO createTerminal(InputStream in, OutputStream out, Ou... method closeQuietly (line 131) | private void closeQuietly(TerminalIO terminal) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/Ai4jCliMain.java class Ai4jCliMain (line 3) | public final class Ai4jCliMain { method Ai4jCliMain (line 5) | private Ai4jCliMain() { method main (line 8) | public static void main(String[] args) { method configureLogging (line 16) | private static void configureLogging(String[] args) { method hasVerboseFlag (line 25) | private static boolean hasVerboseFlag(String[] args) { method setIfAbsent (line 37) | private static void setIfAbsent(String key, String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/ApprovalMode.java type ApprovalMode (line 5) | public enum ApprovalMode { method ApprovalMode (line 12) | ApprovalMode(String value) { method getValue (line 16) | public String getValue() { method parse (line 20) | public static ApprovalMode parse(String raw) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/CliProtocol.java type CliProtocol (line 7) | public enum CliProtocol { method CliProtocol (line 13) | CliProtocol(String value) { method getValue (line 17) | public String getValue() { method parse (line 21) | public static CliProtocol parse(String value) { method resolveConfigured (line 31) | public static CliProtocol resolveConfigured(String value, PlatformType... method defaultProtocol (line 39) | public static CliProtocol defaultProtocol(PlatformType provider, Strin... method normalize (line 53) | private static String normalize(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/CliUiMode.java type CliUiMode (line 3) | public enum CliUiMode { method CliUiMode (line 9) | CliUiMode(String value) { method getValue (line 13) | public String getValue() { method parse (line 17) | public static CliUiMode parse(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/SlashCommandController.java class SlashCommandController (line 27) | public final class SlashCommandController implements Completer { method run (line 30) | @Override method get (line 140) | @Override method get (line 147) | @Override method get (line 154) | @Override method get (line 161) | @Override method get (line 168) | @Override method get (line 175) | @Override method get (line 182) | @Override method SlashCommandController (line 190) | public SlashCommandController(CustomCommandRegistry customCommandRegis... method setSessionManager (line 195) | public void setSessionManager(CodingSessionManager sessionManager) { method setProcessCandidateSupplier (line 199) | public void setProcessCandidateSupplier(Supplier> profile... method setModelCandidateSupplier (line 225) | public void setModelCandidateSupplier(Supplier> mcpSe... method setSkillCandidateSupplier (line 251) | public void setSkillCandidateSupplier(Supplier> skillCand... method setAgentCandidateSupplier (line 264) | public void setAgentCandidateSupplier(Supplier> agentCand... method setTeamCandidateSupplier (line 277) | public void setTeamCandidateSupplier(Supplier> teamCandid... method setStatusRefresh (line 290) | public void setStatusRefresh(Runnable statusRefresh) { method configure (line 294) | public void configure(LineReader lineReader) { method complete (line 395) | @Override method suggest (line 403) | List suggest(String line, int cursor) { method exactCommandArgumentCandidates (line 472) | private List exactCommandArgumentCandidates(String command) { method openSlashMenu (line 516) | boolean openSlashMenu(LineReader lineReader) { method openCommandPalette (line 538) | private boolean openCommandPalette(LineReader lineReader) { method acceptLine (line 557) | private boolean acceptLine(LineReader lineReader) { method shouldExecuteRawInputOnEnter (line 580) | private boolean shouldExecuteRawInputOnEnter(String line) { method resolveSlashMenuAction (line 596) | SlashMenuAction resolveSlashMenuAction(String line, int cursor) { method resolveAcceptLineAction (line 607) | EnterAction resolveAcceptLineAction(String line) { method getPaletteSnapshot (line 611) | public PaletteSnapshot getPaletteSnapshot() { method movePaletteSelection (line 617) | void movePaletteSelection(int delta) { method acceptSlashSelection (line 629) | boolean acceptSlashSelection(LineReader lineReader, boolean alwaysAcce... method applySelectedValue (line 660) | private String applySelectedValue(String current, int cursor, String s... method shouldContinuePaletteAfterAccept (line 675) | private boolean shouldContinuePaletteAfterAccept(String replacement, P... method commandRequiresArgument (line 689) | private boolean commandRequiresArgument(String command) { method isExecutableRootCommand (line 701) | private boolean isExecutableRootCommand(String value) { method bindWidget (line 713) | private void bindWidget(LineReader lineReader, String widgetName, Stri... method bind (line 723) | private void bind(LineReader lineReader, String keymapName, Reference ... method wrapWidget (line 737) | private void wrapWidget(LineReader lineReader, String widgetName, Widg... method delegateAndRefreshSlashPalette (line 753) | private boolean delegateAndRefreshSlashPalette(LineReader lineReader, ... method delegateWidget (line 761) | private boolean delegateWidget(LineReader lineReader, String widgetNam... method navigateSlashPalette (line 772) | private boolean navigateSlashPalette(LineReader lineReader, int delta,... method refreshSlashPaletteIfNeeded (line 782) | private void refreshSlashPaletteIfNeeded(LineReader lineReader) { method syncSlashPalette (line 795) | private void syncSlashPalette(LineReader lineReader) { method updatePalette (line 813) | private void updatePalette(String query, List candidates) { method resolveSelectedIndex (line 836) | private int resolveSelectedIndex(List items, Stri... method clearPalette (line 857) | private void clearPalette() { method getSelectedPaletteItem (line 863) | private PaletteItemSnapshot getSelectedPaletteItem() { method refreshStatusAndDisplay (line 872) | private void refreshStatusAndDisplay(LineReader lineReader) { method notifyStatusRefresh (line 881) | private void notifyStatusRefresh() { method rootCandidates (line 888) | private List rootCandidates(String partial) { method prefixCandidates (line 898) | private List prefixCandidates(String prefix, List customCommandCandidates(String partial) { method themeCandidates (line 942) | private List themeCandidates(String partial) { method streamCandidates (line 956) | private List streamCandidates(String partial) { method experimentalCandidates (line 975) | private List experimentalCandidates(List tokens, bo... method experimentalFeatureCandidates (line 994) | private List experimentalFeatureCandidates(String partial) { method describeExperimentalFeature (line 1013) | private String describeExperimentalFeature(String feature) { method experimentalToggleCandidates (line 1023) | private List experimentalToggleCandidates(String partial) { method teamCandidates (line 1042) | private List teamCandidates(List tokens, boolean en... method teamActionCandidates (line 1082) | private List teamActionCandidates(String partial) { method teamIdCandidates (line 1093) | private List teamIdCandidates(String partial) { method teamMessageLimitCandidates (line 1117) | private List teamMessageLimitCandidates(String partial) { method describeTeamAction (line 1136) | private String describeTeamAction(String action) { method skillCandidates (line 1152) | private List skillCandidates(String partial) { method agentCandidates (line 1176) | private List agentCandidates(String partial) { method mcpCandidates (line 1200) | private List mcpCandidates(List tokens, boolean end... method mcpActionCandidates (line 1226) | private List mcpActionCandidates(String partial) { method describeMcpAction (line 1237) | private String describeMcpAction(String action) { method mcpAddCandidates (line 1265) | private List mcpAddCandidates(List tokens, boolean ... method mcpAddOptionCandidates (line 1287) | private List mcpAddOptionCandidates(String partial) { method mcpTransportCandidates (line 1301) | private List mcpTransportCandidates(String partial) { method mcpServerNameCandidates (line 1320) | private List mcpServerNameCandidates(String action, String ... method describeMcpServerAction (line 1344) | private String describeMcpServerAction(String action, String serverNam... method providerCandidates (line 1366) | private List providerCandidates(List tokens, boolea... method isExactProviderAction (line 1397) | private boolean isExactProviderAction(String value) { method providerActionCandidates (line 1409) | private List providerActionCandidates(String partial) { method providerNameCandidates (line 1420) | private List providerNameCandidates(String action, String p... method describeProviderProfileAction (line 1450) | private String describeProviderProfileAction(String action, String pro... method providerDefaultCandidates (line 1463) | private List providerDefaultCandidates(String partial) { method providerMutationCandidates (line 1501) | private List providerMutationCandidates(String action, List... method providerMutationOptionCandidates (line 1539) | private List providerMutationOptionCandidates(String partia... method describeProviderMutationOption (line 1556) | private String describeProviderMutationOption(String option) { method isProviderMutationOption (line 1584) | private boolean isProviderMutationOption(String value) { method providerMutationValueCandidates (line 1596) | private List providerMutationValueCandidates(String option,... method providerTypeCandidates (line 1606) | private List providerTypeCandidates(String partial) { method providerProtocolCandidates (line 1625) | private List providerProtocolCandidates(String partial) { method addProviderProtocolCandidate (line 1632) | private void addProviderProtocolCandidate(List candidates, ... method modelCandidates (line 1647) | private List modelCandidates(String partial) { method sessionCandidates (line 1682) | private List sessionCandidates(String partial) { method processCandidates (line 1709) | private List processCandidates(List tokens, boolean... method processSubcommandCandidates (line 1744) | private List processSubcommandCandidates(String partial) { method processIdCandidates (line 1761) | private List processIdCandidates(ProcessCommandSpec command... method processLimitCandidates (line 1783) | private List processLimitCandidates(ProcessCommandSpec comm... method findProcessCommandSpec (line 1803) | private ProcessCommandSpec findProcessCommandSpec(String value) { method commandCandidate (line 1815) | private Candidate commandCandidate(String value, method tokenFragment (line 1824) | private String tokenFragment(List tokens, boolean endsWithSpac... method splitTokens (line 1834) | private List splitTokens(String value) { method matches (line 1845) | private boolean matches(String candidate, String partial) { method firstNonBlank (line 1857) | private String firstNonBlank(String... values) { method isBlank (line 1869) | private boolean isBlank(String value) { method sameText (line 1873) | private boolean sameText(String left, String right) { class SlashCommandSpec (line 1880) | private static final class SlashCommandSpec { method SlashCommandSpec (line 1886) | private SlashCommandSpec(String command, String description, boolean... class ProcessCompletionCandidate (line 1893) | public static final class ProcessCompletionCandidate { method ProcessCompletionCandidate (line 1898) | public ProcessCompletionCandidate(String processId, String descripti... method getProcessId (line 1903) | public String getProcessId() { method getDescription (line 1907) | public String getDescription() { class ModelCompletionCandidate (line 1912) | public static final class ModelCompletionCandidate { method ModelCompletionCandidate (line 1917) | public ModelCompletionCandidate(String model, String description) { method getModel (line 1922) | public String getModel() { method getDescription (line 1926) | public String getDescription() { class ProcessCommandSpec (line 1931) | private static final class ProcessCommandSpec { method ProcessCommandSpec (line 1938) | private ProcessCommandSpec(String name, String description, boolean ... class PaletteSnapshot (line 1946) | public static final class PaletteSnapshot { method PaletteSnapshot (line 1953) | private PaletteSnapshot(boolean open, String query, int selectedInde... method closed (line 1962) | public static PaletteSnapshot closed() { method isOpen (line 1966) | public boolean isOpen() { method getQuery (line 1970) | public String getQuery() { method getSelectedIndex (line 1974) | public int getSelectedIndex() { method getItems (line 1978) | public List getItems() { method withSelectedIndex (line 1982) | PaletteSnapshot withSelectedIndex(int selectedIndex) { method copy (line 1986) | PaletteSnapshot copy() { method selectedValue (line 1990) | String selectedValue() { class PaletteItemSnapshot (line 1998) | public static final class PaletteItemSnapshot { method PaletteItemSnapshot (line 2005) | private PaletteItemSnapshot(String value, String display, String des... method getValue (line 2012) | public String getValue() { method getDisplay (line 2016) | public String getDisplay() { method getDescription (line 2020) | public String getDescription() { method getGroup (line 2024) | public String getGroup() { type SlashMenuAction (line 2029) | enum SlashMenuAction { type EnterAction (line 2035) | enum EnterAction { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/acp/AcpCodingCliAgentFactory.java class AcpCodingCliAgentFactory (line 14) | final class AcpCodingCliAgentFactory extends DefaultCodingCliAgentFactory { method AcpCodingCliAgentFactory (line 19) | AcpCodingCliAgentFactory(AcpToolApprovalDecorator.PermissionGateway pe... method prepareMcpRuntime (line 25) | @Override method createToolExecutorDecorator (line 39) | @Override FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/acp/AcpCommand.java class AcpCommand (line 13) | public class AcpCommand { method AcpCommand (line 20) | public AcpCommand(Map env, Properties properties, Path... method run (line 26) | public int run(List args, InputStream in, OutputStream out, Ou... method printHelp (line 44) | private void printHelp(OutputStream err) { method writeLine (line 57) | private void writeLine(OutputStream stream, String line) { method safeMessage (line 65) | private String safeMessage(Throwable throwable) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/acp/AcpJsonRpcServer.java class AcpJsonRpcServer (line 69) | public class AcpJsonRpcServer implements Closeable { type AgentFactoryProvider (line 71) | interface AgentFactoryProvider { method create (line 73) | CodingCliAgentFactory create(CodeCommandOptions options, method AcpJsonRpcServer (line 101) | public AcpJsonRpcServer(InputStream inputStream, method AcpJsonRpcServer (line 115) | AcpJsonRpcServer(InputStream inputStream, method run (line 127) | public int run() { method handleMessage (line 157) | private void handleMessage(final JSONObject message) { method handleRequest (line 183) | private void handleRequest(Object id, String method, JSONObject params) { method handleNotification (line 229) | private void handleNotification(String method, JSONObject params) { method buildInitializeResponse (line 241) | private Map buildInitializeResponse(JSONObject params) { method sendResponse (line 271) | private void sendResponse(Object id, Map result) { method sendError (line 279) | private void sendError(Object id, int code, String message) { method sendNotification (line 290) | private void sendNotification(String method, Map param... method sendRequest (line 298) | private void sendRequest(String id, String method, Map... method writeMessage (line 307) | private void writeMessage(Map payload) { method sendSessionUpdate (line 314) | private void sendSessionUpdate(String sessionId, Map u... method sendAvailableCommandsUpdate (line 321) | private void sendAvailableCommandsUpdate(String sessionId) { method requireSession (line 331) | private SessionHandle requireSession(String sessionId) { method logError (line 339) | private void logError(String message) { method createSession (line 346) | private SessionHandle createSession(JSONObject params, boolean loadExi... method promptSession (line 376) | private void promptSession(final Object requestId, JSONObject params) ... method setSessionMode (line 396) | private Map setSessionMode(JSONObject params) throws E... method setSessionConfigOption (line 404) | private Map setSessionConfigOption(JSONObject params) ... method cancelSession (line 418) | private void cancelSession(JSONObject params) { method listSessions (line 435) | private List> listSessions(JSONObject params) thro... method requestPermission (line 451) | private AcpToolApprovalDecorator.PermissionDecision requestPermission(... method buildPermissionToolCall (line 478) | private Map buildPermissionToolCall(String toolName, method buildPermissionOptions (line 489) | private List> buildPermissionOptions() { method buildCancelledPermissionResponse (line 498) | private JSONObject buildCancelledPermissionResponse() { method logMcpWarnings (line 508) | private void logMcpWarnings(CliMcpRuntimeManager runtimeManager) { method resolveMcpConfig (line 517) | private CliResolvedMcpConfig resolveMcpConfig(JSONArray mcpServers) { method resolveSessionOptions (line 553) | private CodeCommandOptions resolveSessionOptions(String workspace, Str... method createSessionManager (line 570) | private CodingSessionManager createSessionManager(CodeCommandOptions o... method flattenPrompt (line 585) | private String flattenPrompt(JSONArray blocks) { method appendBlock (line 608) | private void appendBlock(StringBuilder builder, String text) { method normalizeType (line 618) | private String normalizeType(String type) { method mapToolKind (line 622) | private String mapToolKind(String toolName) { method validateDefinition (line 633) | private String validateDefinition(CliMcpServerDefinition definition) { method normalizeTransportType (line 650) | private String normalizeTransportType(String type, String command) { method toStringList (line 659) | private List toStringList(JSONArray values) { method toStringMap (line 673) | private Map toStringMap(JSONObject object) { method newMap (line 687) | private Map newMap(Object... values) { method requestIdKey (line 701) | private String requestIdKey(Object id) { method requiredString (line 705) | private String requiredString(JSONObject params, String key) { method requiredArray (line 713) | private JSONArray requiredArray(JSONObject params, String key) { method requireAbsolutePath (line 721) | private String requireAbsolutePath(String path) { method trimToNull (line 733) | private String trimToNull(String value) { method isBlank (line 737) | private boolean isBlank(String value) { method firstNonBlank (line 741) | private String firstNonBlank(String... values) { method clip (line 753) | private String clip(String value, int maxChars) { method clipPreserveNewlines (line 764) | private String clipPreserveNewlines(String value, int maxChars) { method safeMessage (line 774) | private String safeMessage(Throwable throwable) { method textContent (line 790) | private Map textContent(String text) { method toolCallTextContent (line 797) | private List> toolCallTextContent(String text) { method parseJsonOrText (line 807) | private Object parseJsonOrText(String value) { method toStructuredSessionUpdate (line 818) | private Map toStructuredSessionUpdate(SessionEvent eve... method payloadText (line 856) | private String payloadText(SessionEvent event, String key, String defa... method payloadValue (line 864) | private Object payloadValue(SessionEvent event, String key) { method buildTaskRawInput (line 871) | private Map buildTaskRawInput(SessionEvent event) { method buildTaskRawOutput (line 890) | private Map buildTaskRawOutput(SessionEvent event) { method buildTaskUpdateText (line 910) | private String buildTaskUpdateText(SessionEvent event) { method extractTaskPrimaryText (line 943) | private String extractTaskPrimaryText(SessionEvent event) { method isTeamTaskEvent (line 951) | private boolean isTeamTaskEvent(SessionEvent event) { method mapTaskStatusValue (line 969) | private String mapTaskStatusValue(String status) { method toTeamMessageAcpUpdate (line 987) | private Map toTeamMessageAcpUpdate(SessionEvent event) { method formatTeamMessageText (line 1024) | private String formatTeamMessageText(String messageType, String fromMe... method formatTeamMessageRoute (line 1043) | private String formatTeamMessageRoute(String fromMemberId, String toMe... method awaitPendingWork (line 1050) | private void awaitPendingWork() { method close (line 1065) | @Override class SessionHandle (line 1081) | private final class SessionHandle implements Closeable { method SessionHandle (line 1098) | private SessionHandle(CodeCommandOptions options, method getSession (line 1123) | private ManagedCodingSession getSession() { method buildSessionOpenResult (line 1127) | private Map buildSessionOpenResult() { method buildModes (line 1136) | private synchronized Map buildModes() { method buildConfigOptions (line 1154) | private synchronized List> buildConfigOptions() { method setConfigOption (line 1177) | private synchronized List> setConfigOption(Strin... method setMode (line 1190) | private synchronized void setMode(String modeId) throws Exception { method startPrompt (line 1194) | private void startPrompt(Runnable runnable) { method beginPrompt (line 1198) | private synchronized HeadlessCodingSessionRuntime.PromptControl begi... method runPrompt (line 1206) | private HeadlessCodingSessionRuntime.PromptResult runPrompt(String i... method runSlashCommand (line 1217) | private HeadlessCodingSessionRuntime.PromptResult runSlashCommand(St... method cancel (line 1249) | private void cancel() { method replayHistory (line 1256) | private void replayHistory() throws IOException { method sendAvailableCommandsUpdate (line 1269) | private void sendAvailableCommandsUpdate() { method appendSimpleEvent (line 1273) | private void appendSimpleEvent(SessionEventType type, String turnId,... method persistSessionIfConfigured (line 1289) | private void persistSessionIfConfigured() { method buildSlashCommandContext (line 1299) | private AcpSlashCommandSupport.Context buildSlashCommandContext() { method executeProvidersCommand (line 1330) | private synchronized String executeProvidersCommand() { method executeProviderCommand (line 1334) | private synchronized String executeProviderCommand(String argument) ... method executeModelCommand (line 1366) | private synchronized String executeModelCommand(String argument) thr... method executeExperimentalCommand (line 1375) | private synchronized String executeExperimentalCommand(String argume... method applyModeChange (line 1400) | private void applyModeChange(String rawModeId, boolean emitUpdates) ... method applyModelChange (line 1413) | private void applyModelChange(String rawValue, method switchToProviderProfile (line 1443) | private synchronized String switchToProviderProfile(String profileNa... method saveCurrentProviderProfile (line 1462) | private synchronized String saveCurrentProviderProfile(String profil... method addProviderProfile (line 1483) | private synchronized String addProviderProfile(String rawArguments) ... method editProviderProfile (line 1525) | private synchronized String editProviderProfile(String rawArguments)... method removeProviderProfile (line 1586) | private synchronized String removeProviderProfile(String profileName... method setDefaultProviderProfile (line 1607) | private synchronized String setDefaultProviderProfile(String profile... method renderProvidersOutput (line 1626) | private String renderProvidersOutput() { method renderCurrentProviderOutput (line 1656) | private String renderCurrentProviderOutput() { method renderModelOutput (line 1682) | private String renderModelOutput() { method renderExperimentalOutput (line 1703) | private String renderExperimentalOutput() { method renderExperimentalState (line 1719) | private String renderExperimentalState(Boolean configuredValue, bool... method normalizeExperimentalFeature (line 1724) | private String normalizeExperimentalFeature(String raw) { method parseExperimentalToggle (line 1742) | private Boolean parseExperimentalToggle(String raw) { method buildModeOptionValues (line 1756) | private List> buildModeOptionValues() { method buildModelOptionValues (line 1771) | private List> buildModelOptionValues() { method addProfileModelOptionValue (line 1798) | private void addProfileModelOptionValue(LinkedHashMap toHistoryUpdate(SessionEvent event) { method payloadText (line 2334) | private String payloadText(SessionEvent event, String key, String de... method payloadJsonText (line 2342) | private Object payloadJsonText(SessionEvent event, String key) { method registerTaskEventBridge (line 2346) | private CodingTaskSessionEventBridge registerTaskEventBridge() { method mapTaskStatus (line 2366) | private String mapTaskStatus(String status) { method close (line 2387) | @Override class ProviderProfileMutation (line 2405) | private final class ProviderProfileMutation { method ProviderProfileMutation (line 2416) | private ProviderProfileMutation(String profileName) { method hasAnyFieldChanges (line 2420) | private boolean hasAnyFieldChanges() { class AcpTurnObserver (line 2433) | private final class AcpTurnObserver extends HeadlessTurnObserver.Adapt... method AcpTurnObserver (line 2437) | private AcpTurnObserver(String sessionId) { method onTurnStarted (line 2441) | @Override method onReasoningDelta (line 2449) | @Override method onAssistantDelta (line 2457) | @Override method onToolCall (line 2465) | @Override method onToolResult (line 2480) | @Override method onTurnError (line 2496) | @Override method onSessionEvent (line 2504) | @Override FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/acp/AcpSlashCommandSupport.java class AcpSlashCommandSupport (line 39) | final class AcpSlashCommandSupport { method AcpSlashCommandSupport (line 67) | private AcpSlashCommandSupport() { method availableCommands (line 70) | static List> availableCommands() { method supports (line 86) | static boolean supports(String input) { method execute (line 90) | static ExecutionResult execute(Context context, String input) throws E... method executeRuntimeCommand (line 160) | private static String executeRuntimeCommand(Context context, method parse (line 181) | private static ParsedCommand parse(String input) { method findSpec (line 199) | private static CommandSpec findSpec(String name) { method renderHelp (line 211) | private static String renderHelp() { method renderStatus (line 224) | private static String renderStatus(Context context) { method renderSession (line 251) | private static String renderSession(Context context) { method renderSkills (line 281) | private static String renderSkills(Context context, String argument) { method renderAgents (line 321) | private static String renderAgents(Context context, String argument) { method renderMcp (line 363) | private static String renderMcp(Context context) { method renderSessions (line 392) | private static String renderSessions(Context context) throws Exception { method renderHistory (line 423) | private static String renderHistory(Context context, String targetSess... method renderTree (line 444) | private static String renderTree(Context context, String rootArgument)... method renderEvents (line 457) | private static String renderEvents(Context context, String limitArgume... method renderCompacts (line 481) | private static String renderCompacts(Context context, String limitArgu... method renderCheckpoint (line 499) | private static String renderCheckpoint(Context context) { method renderTeam (line 508) | private static String renderTeam(Context context, String argument) thr... method resolveWorkspaceRoot (line 538) | private static java.nio.file.Path resolveWorkspaceRoot(Context context) { method renderProcesses (line 549) | private static String renderProcesses(Context context) { method renderProcess (line 571) | private static String renderProcess(Context context, String rawArgumen... method snapshot (line 598) | private static CodingSessionSnapshot snapshot(ManagedCodingSession ses... method mergeCurrentSession (line 602) | private static List mergeCurrentSession(List<... method resolveTargetDescriptor (line 617) | private static CodingSessionDescriptor resolveTargetDescriptor(List resolveHistory(List renderTreeLines(List lines, method renderTreeLabel (line 740) | private static String renderTreeLabel(CodingSessionDescriptor session,... method buildCompactLines (line 751) | private static List buildCompactLines(List event... method renderProcessStatusOutput (line 790) | private static String renderProcessStatusOutput(BashProcessInfo proces... method renderProcessDetailsOutput (line 799) | private static String renderProcessDetailsOutput(BashProcessInfo proce... method appendProcessSummary (line 808) | private static void appendProcessSummary(StringBuilder builder, BashPr... method findSkill (line 824) | private static CodingSkillDescriptor findSkill(List payload, String ... method payloadBoolean (line 960) | private static boolean payloadBoolean(Map payload, Str... method payloadString (line 971) | private static String payloadString(Map payload, Strin... method formatTimestamp (line 979) | private static String formatTimestamp(long epochMs) { method clip (line 988) | private static String clip(String value, int maxChars) { method firstNonBlank (line 999) | private static String firstNonBlank(String... values) { method trimToNull (line 1011) | private static String trimToNull(String value) { method isBlank (line 1019) | private static boolean isBlank(String value) { method splitWhitespace (line 1023) | private static List splitWhitespace(String value) { class Context (line 1030) | static final class Context { method Context (line 1038) | Context(ManagedCodingSession session, method Context (line 1046) | Context(ManagedCodingSession session, type RuntimeCommandHandler (line 1061) | interface RuntimeCommandHandler { method executeProviders (line 1063) | String executeProviders() throws Exception; method executeProvider (line 1065) | String executeProvider(String argument) throws Exception; method executeModel (line 1067) | String executeModel(String argument) throws Exception; method executeExperimental (line 1069) | String executeExperimental(String argument) throws Exception; class ExecutionResult (line 1072) | static final class ExecutionResult { method ExecutionResult (line 1075) | private ExecutionResult(String output) { method of (line 1079) | static ExecutionResult of(String output) { method getOutput (line 1083) | String getOutput() { class CommandSpec (line 1088) | private static final class CommandSpec { method CommandSpec (line 1093) | private CommandSpec(String name, String description, String inputHin... class ParsedCommand (line 1100) | private static final class ParsedCommand { method ParsedCommand (line 1104) | private ParsedCommand(String name, String argument) { type RuntimeCommand (line 1110) | private enum RuntimeCommand { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/acp/AcpToolApprovalDecorator.java class AcpToolApprovalDecorator (line 15) | public class AcpToolApprovalDecorator implements ToolExecutorDecorator { type PermissionGateway (line 17) | public interface PermissionGateway { method requestApproval (line 19) | PermissionDecision requestApproval(String toolName, class PermissionDecision (line 24) | public static final class PermissionDecision { method PermissionDecision (line 29) | public PermissionDecision(boolean approved, String optionId) { method isApproved (line 34) | public boolean isApproved() { method getOptionId (line 38) | public String getOptionId() { method AcpToolApprovalDecorator (line 46) | public AcpToolApprovalDecorator(ApprovalMode approvalMode, PermissionG... method decorate (line 51) | @Override method requiresApproval (line 67) | private boolean requiresApproval(String toolName, AgentToolCall call) { method requestApproval (line 85) | private void requestApproval(String toolName, AgentToolCall call) thro... method buildRawInput (line 95) | private Map buildRawInput(String toolName, AgentToolCa... method buildApprovalRejectedMessage (line 103) | private String buildApprovalRejectedMessage(String toolName, AgentTool... method parseArguments (line 108) | private JSONObject parseArguments(String rawArguments) { method firstNonBlank (line 120) | private String firstNonBlank(String... values) { method isBlank (line 132) | private boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/agent/CliCodingAgentRegistry.java class CliCodingAgentRegistry (line 26) | public class CliCodingAgentRegistry { method CliCodingAgentRegistry (line 31) | public CliCodingAgentRegistry(Path workspaceRoot, List configu... method loadRegistry (line 40) | public CodingAgentDefinitionRegistry loadRegistry() { method listDefinitions (line 44) | public List listDefinitions() { method listRoots (line 54) | public List listRoots() { method loadDirectory (line 74) | private void loadDirectory(Path directory, List... method loadDefinition (line 92) | private CodingAgentDefinition loadDefinition(Path file) { method parse (line 136) | private ParsedDefinition parse(String raw) { method parseAllowedTools (line 172) | private Set parseAllowedTools(String raw) { method parseEnum (line 202) | private > E parseEnum(String raw, Class type, E d... method parseBoolean (line 215) | private boolean parseBoolean(String raw, boolean defaultValue) { method mergeDefinition (line 229) | private void mergeDefinition(List ordered, Codi... method sameKey (line 251) | private boolean sameKey(String left, String right) { method workspaceAgentsDirectory (line 256) | private Path workspaceAgentsDirectory() { method homeAgentsDirectory (line 260) | private Path homeAgentsDirectory() { method hasSupportedExtension (line 267) | private boolean hasSupportedExtension(Path file) { method defaultName (line 275) | private String defaultName(Path file) { method defaultToolName (line 284) | private String defaultToolName(String name) { method normalizeToolSegment (line 292) | private String normalizeToolSegment(String value) { method normalizeKey (line 323) | private String normalizeKey(String value) { method normalizeToken (line 331) | private String normalizeToken(String value) { method stripQuotes (line 338) | private String stripQuotes(String value) { method firstNonBlank (line 349) | private String firstNonBlank(String... values) { method trimToNull (line 362) | private String trimToNull(String value) { method isBlank (line 370) | private boolean isBlank(String value) { class ParsedDefinition (line 374) | private static final class ParsedDefinition { method ParsedDefinition (line 378) | private ParsedDefinition(List metadata, String body) { method meta (line 383) | private String meta(String key) { class MetadataEntry (line 397) | private static final class MetadataEntry { method MetadataEntry (line 401) | private MetadataEntry(String key, String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/command/CodeCommand.java class CodeCommand (line 34) | public class CodeCommand { type InteractiveBackend (line 36) | private enum InteractiveBackend { method CodeCommand (line 48) | public CodeCommand(CodingCliAgentFactory agentFactory, method CodeCommand (line 55) | public CodeCommand(CodingCliAgentFactory agentFactory, method run (line 67) | public int run(List args, TerminalIO terminal) { method printHelp (line 149) | private void printHelp(TerminalIO terminal) { method printMcpStartupWarnings (line 246) | private void printMcpStartupWarnings(TerminalIO terminal, CliMcpRuntim... method safeMessage (line 260) | private String safeMessage(Throwable throwable) { method safeMessage (line 265) | private String safeMessage(String value) { method stackTraceOf (line 269) | private String stackTraceOf(Throwable throwable) { method createSessionManager (line 277) | private CodingSessionManager createSessionManager(CodeCommandOptions o... method resolveInteractiveBackend (line 292) | private InteractiveBackend resolveInteractiveBackend(CodeCommandOption... method closeQuietly (line 316) | private void closeQuietly(TerminalIO terminal) { method firstNonBlank (line 326) | private String firstNonBlank(String... values) { method isBlank (line 338) | private boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/command/CodeCommandOptions.java class CodeCommandOptions (line 8) | public final class CodeCommandOptions { method CodeCommandOptions (line 54) | public CodeCommandOptions(boolean help, method CodeCommandOptions (line 108) | public CodeCommandOptions(boolean help, method CodeCommandOptions (line 172) | public CodeCommandOptions(boolean help, method CodeCommandOptions (line 239) | private CodeCommandOptions(boolean help, method isHelp (line 307) | public boolean isHelp() { method getUiMode (line 311) | public CliUiMode getUiMode() { method getProvider (line 315) | public PlatformType getProvider() { method getProtocol (line 319) | public CliProtocol getProtocol() { method getModel (line 323) | public String getModel() { method getApiKey (line 327) | public String getApiKey() { method getBaseUrl (line 331) | public String getBaseUrl() { method getWorkspace (line 335) | public String getWorkspace() { method getWorkspaceDescription (line 339) | public String getWorkspaceDescription() { method getSystemPrompt (line 343) | public String getSystemPrompt() { method getInstructions (line 347) | public String getInstructions() { method getPrompt (line 351) | public String getPrompt() { method getMaxSteps (line 355) | public int getMaxSteps() { method getTemperature (line 359) | public Double getTemperature() { method getTopP (line 363) | public Double getTopP() { method getMaxOutputTokens (line 367) | public Integer getMaxOutputTokens() { method getParallelToolCalls (line 371) | public Boolean getParallelToolCalls() { method isAllowOutsideWorkspace (line 375) | public boolean isAllowOutsideWorkspace() { method getSessionId (line 379) | public String getSessionId() { method getResumeSessionId (line 383) | public String getResumeSessionId() { method getForkSessionId (line 387) | public String getForkSessionId() { method getSessionStoreDir (line 391) | public String getSessionStoreDir() { method getTheme (line 395) | public String getTheme() { method getApprovalMode (line 399) | public ApprovalMode getApprovalMode() { method isNoSession (line 403) | public boolean isNoSession() { method isAutoSaveSession (line 407) | public boolean isAutoSaveSession() { method isAutoCompact (line 411) | public boolean isAutoCompact() { method getCompactContextWindowTokens (line 415) | public int getCompactContextWindowTokens() { method getCompactReserveTokens (line 419) | public int getCompactReserveTokens() { method getCompactKeepRecentTokens (line 423) | public int getCompactKeepRecentTokens() { method getCompactSummaryMaxOutputTokens (line 427) | public int getCompactSummaryMaxOutputTokens() { method isStream (line 431) | public boolean isStream() { method isVerbose (line 435) | public boolean isVerbose() { method withRuntime (line 439) | public CodeCommandOptions withRuntime(PlatformType provider, method withStream (line 459) | public CodeCommandOptions withStream(boolean stream) { method withApprovalMode (line 475) | public CodeCommandOptions withApprovalMode(ApprovalMode approvalMode) { method withSessionContext (line 491) | public CodeCommandOptions withSessionContext(String workspace, method copy (line 510) | private CodeCommandOptions copy(PlatformType provider, FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/command/CodeCommandOptionsParser.java class CodeCommandOptionsParser (line 18) | public class CodeCommandOptionsParser { method parse (line 20) | public CodeCommandOptions parse(List args, method resolveUiMode (line 343) | private CliUiMode resolveUiMode(Map values, method envValue (line 355) | private String envValue(Map env, String name) { method propertyValue (line 359) | private String propertyValue(Properties properties, String name) { method normalizeOptionName (line 363) | private String normalizeOptionName(String option) { method parseInteger (line 370) | private int parseInteger(String value, String name) { method parseIntegerOrNull (line 378) | private Integer parseIntegerOrNull(String value, String name) { method parseDoubleOrNull (line 385) | private Double parseDoubleOrNull(String value, String name) { method parseBooleanOrDefault (line 396) | private Boolean parseBooleanOrDefault(String value, boolean defaultVal... method parseBoolean (line 403) | private boolean parseBoolean(String value) { method firstNonBlank (line 413) | private String firstNonBlank(String... values) { method isBlank (line 425) | private boolean isBlank(String value) { method trimToNull (line 429) | private String trimToNull(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/command/CustomCommandRegistry.java class CustomCommandRegistry (line 15) | public class CustomCommandRegistry { method CustomCommandRegistry (line 19) | public CustomCommandRegistry(Path workspaceRoot) { method list (line 23) | public List list() { method find (line 32) | public CustomCommandTemplate find(String name) { method loadDirectory (line 44) | private void loadDirectory(Path directory, Map variables) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/config/CliWorkspaceConfig.java class CliWorkspaceConfig (line 6) | public class CliWorkspaceConfig { method CliWorkspaceConfig (line 16) | public CliWorkspaceConfig() { method CliWorkspaceConfig (line 19) | public CliWorkspaceConfig(String activeProfile, method builder (line 35) | public static Builder builder() { method toBuilder (line 39) | public Builder toBuilder() { method getActiveProfile (line 50) | public String getActiveProfile() { method setActiveProfile (line 54) | public void setActiveProfile(String activeProfile) { method getModelOverride (line 58) | public String getModelOverride() { method setModelOverride (line 62) | public void setModelOverride(String modelOverride) { method getExperimentalSubagentsEnabled (line 66) | public Boolean getExperimentalSubagentsEnabled() { method setExperimentalSubagentsEnabled (line 70) | public void setExperimentalSubagentsEnabled(Boolean experimentalSubage... method getExperimentalAgentTeamsEnabled (line 74) | public Boolean getExperimentalAgentTeamsEnabled() { method setExperimentalAgentTeamsEnabled (line 78) | public void setExperimentalAgentTeamsEnabled(Boolean experimentalAgent... method getEnabledMcpServers (line 82) | public List getEnabledMcpServers() { method setEnabledMcpServers (line 86) | public void setEnabledMcpServers(List enabledMcpServers) { method getSkillDirectories (line 90) | public List getSkillDirectories() { method setSkillDirectories (line 94) | public void setSkillDirectories(List skillDirectories) { method getAgentDirectories (line 98) | public List getAgentDirectories() { method setAgentDirectories (line 102) | public void setAgentDirectories(List agentDirectories) { method copy (line 106) | private List copy(List values) { class Builder (line 110) | public static final class Builder { method Builder (line 120) | private Builder() { method activeProfile (line 123) | public Builder activeProfile(String activeProfile) { method modelOverride (line 128) | public Builder modelOverride(String modelOverride) { method experimentalSubagentsEnabled (line 133) | public Builder experimentalSubagentsEnabled(Boolean experimentalSuba... method experimentalAgentTeamsEnabled (line 138) | public Builder experimentalAgentTeamsEnabled(Boolean experimentalAge... method enabledMcpServers (line 143) | public Builder enabledMcpServers(List enabledMcpServers) { method skillDirectories (line 148) | public Builder skillDirectories(List skillDirectories) { method agentDirectories (line 153) | public Builder agentDirectories(List agentDirectories) { method build (line 158) | public CliWorkspaceConfig build() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/factory/CodingCliAgentFactory.java type CodingCliAgentFactory (line 13) | public interface CodingCliAgentFactory { method prepare (line 15) | PreparedCodingAgent prepare(CodeCommandOptions options) throws Exception; method prepare (line 17) | default PreparedCodingAgent prepare(CodeCommandOptions options, Termin... method prepare (line 21) | default PreparedCodingAgent prepare(CodeCommandOptions options, method prepare (line 27) | default PreparedCodingAgent prepare(CodeCommandOptions options, class PreparedCodingAgent (line 34) | final class PreparedCodingAgent { method PreparedCodingAgent (line 40) | public PreparedCodingAgent(CodingAgent agent, CliProtocol protocol) { method PreparedCodingAgent (line 44) | public PreparedCodingAgent(CodingAgent agent, method getAgent (line 52) | public CodingAgent getAgent() { method getProtocol (line 56) | public CliProtocol getProtocol() { method getMcpRuntimeManager (line 60) | public CliMcpRuntimeManager getMcpRuntimeManager() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/factory/CodingCliTuiFactory.java type CodingCliTuiFactory (line 9) | public interface CodingCliTuiFactory { method create (line 11) | CodingCliTuiSupport create(CodeCommandOptions options, FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/factory/DefaultCodingCliAgentFactory.java class DefaultCodingCliAgentFactory (line 69) | public class DefaultCodingCliAgentFactory implements CodingCliAgentFacto... method prepare (line 78) | @Override method prepare (line 83) | @Override method prepare (line 88) | @Override method prepare (line 95) | @Override method resolveProtocol (line 107) | CliProtocol resolveProtocol(CodeCommandOptions options) { method createModelClient (line 118) | protected AgentModelClient createModelClient(CodeCommandOptions option... method createConfiguration (line 136) | private Configuration createConfiguration(CodeCommandOptions options) { method prepareMcpRuntime (line 143) | protected CliMcpRuntimeManager prepareMcpRuntime(CodeCommandOptions op... method buildAgent (line 162) | private CodingAgent buildAgent(CodeCommandOptions options, method createToolExecutorDecorator (line 194) | protected ToolExecutorDecorator createToolExecutorDecorator(CodeComman... method buildWorkspaceContext (line 200) | WorkspaceContext buildWorkspaceContext(CodeCommandOptions options) { method buildWorkspaceContext (line 205) | WorkspaceContext buildWorkspaceContext(CodeCommandOptions options, Cli... method loadWorkspaceConfig (line 215) | private CliWorkspaceConfig loadWorkspaceConfig(String workspace) { method loadDefinitionRegistry (line 219) | CodingAgentDefinitionRegistry loadDefinitionRegistry(CodeCommandOption... method loadDefinitionRegistry (line 224) | CodingAgentDefinitionRegistry loadDefinitionRegistry(CodeCommandOption... method buildCodingOptions (line 240) | private CodingAgentOptions buildCodingOptions(CodeCommandOptions options, method buildAgentOptions (line 253) | private AgentOptions buildAgentOptions(CodeCommandOptions options) { method buildStreamExecutionOptions (line 261) | private StreamExecutionOptions buildStreamExecutionOptions() { method attachMcpRuntime (line 269) | private void attachMcpRuntime(io.github.lnyocly.ai4j.coding.CodingAgen... method attachExperimentalAgents (line 280) | private void attachExperimentalAgents(io.github.lnyocly.ai4j.coding.Co... method buildBackgroundWorkerSubAgent (line 298) | private SubAgentDefinition buildBackgroundWorkerSubAgent(CodeCommandOp... method buildDeliveryTeamSubAgent (line 321) | private SubAgentDefinition buildDeliveryTeamSubAgent(CodeCommandOption... method resolveExperimentalTeamStorageDirectory (line 439) | private Path resolveExperimentalTeamStorageDirectory(WorkspaceContext ... method teamMember (line 446) | private AgentTeamMember teamMember(String id, method buildExperimentalCodingAgent (line 470) | private Agent buildExperimentalCodingAgent(AgentModelClient modelClient, method renderDeliveryTeamSummary (line 493) | private String renderDeliveryTeamSummary(String objective, List mcpServers) { method builder (line 19) | public static Builder builder() { method toBuilder (line 23) | public Builder toBuilder() { method getMcpServers (line 27) | public Map getMcpServers() { method setMcpServers (line 31) | public void setMcpServers(Map mcpServe... class Builder (line 37) | public static final class Builder { method Builder (line 41) | private Builder() { method mcpServers (line 44) | public Builder mcpServers(Map mcpSer... method build (line 51) | public CliMcpConfig build() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/mcp/CliMcpConfigManager.java class CliMcpConfigManager (line 22) | public class CliMcpConfigManager { method CliMcpConfigManager (line 26) | public CliMcpConfigManager(Path workspaceRoot) { method loadGlobalConfig (line 32) | public CliMcpConfig loadGlobalConfig() { method saveGlobalConfig (line 44) | public CliMcpConfig saveGlobalConfig(CliMcpConfig config) throws IOExc... method loadWorkspaceConfig (line 56) | public CliWorkspaceConfig loadWorkspaceConfig() { method saveWorkspaceConfig (line 65) | public CliWorkspaceConfig saveWorkspaceConfig(CliWorkspaceConfig confi... method resolve (line 74) | public CliResolvedMcpConfig resolve(Collection pausedServerNam... method globalMcpPath (line 131) | public Path globalMcpPath() { method workspaceConfigPath (line 136) | public Path workspaceConfigPath() { method loadConfig (line 140) | private T loadConfig(Path path, Class type) { method persistNormalizedGlobalConfig (line 151) | private void persistNormalizedGlobalConfig(CliMcpConfig config) { method normalize (line 163) | private boolean normalize(CliMcpConfig config) { method normalize (line 196) | private void normalize(CliWorkspaceConfig config) { method normalize (line 207) | private CliMcpServerDefinition normalize(CliMcpServerDefinition defini... method validate (line 220) | private String validate(CliMcpServerDefinition definition) { method normalizeTransportType (line 237) | private String normalizeTransportType(String rawType, String command) { method toOrderedSet (line 249) | private Set toOrderedSet(Collection values) { method normalizeNames (line 263) | private List normalizeNames(List values) { method normalizeMap (line 277) | private Map normalizeMap(Map values) { method normalizeName (line 292) | private String normalizeName(String value) { method normalizeValue (line 296) | private String normalizeValue(String value) { method isBlank (line 300) | private boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/mcp/CliMcpConnectionHandle.java class CliMcpConnectionHandle (line 9) | public final class CliMcpConnectionHandle { method CliMcpConnectionHandle (line 17) | CliMcpConnectionHandle(CliResolvedMcpServer server) { method getServerName (line 21) | String getServerName() { method getTransportType (line 25) | String getTransportType() { method getServer (line 29) | CliResolvedMcpServer getServer() { method getClientSession (line 33) | CliMcpRuntimeManager.ClientSession getClientSession() { method setClientSession (line 37) | void setClientSession(CliMcpRuntimeManager.ClientSession clientSession) { method getState (line 41) | String getState() { method setState (line 45) | void setState(String state) { method getErrorSummary (line 49) | String getErrorSummary() { method setErrorSummary (line 53) | void setErrorSummary(String errorSummary) { method getTools (line 57) | List getTools() { method setTools (line 61) | void setTools(List tools) { method toStatusSnapshot (line 69) | CliMcpStatusSnapshot toStatusSnapshot() { method closeQuietly (line 81) | void closeQuietly() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/mcp/CliMcpRuntimeManager.java class CliMcpRuntimeManager (line 28) | public final class CliMcpRuntimeManager implements AutoCloseable { method initialize (line 51) | public static CliMcpRuntimeManager initialize(Path workspaceRoot, Coll... method initialize (line 56) | public static CliMcpRuntimeManager initialize(CliResolvedMcpConfig res... method CliMcpRuntimeManager (line 65) | CliMcpRuntimeManager(CliResolvedMcpConfig resolvedConfig) { method CliMcpRuntimeManager (line 69) | CliMcpRuntimeManager(CliResolvedMcpConfig resolvedConfig, ClientFactor... method start (line 76) | public void start() { method getToolRegistry (line 138) | public AgentToolRegistry getToolRegistry() { method getToolExecutor (line 142) | public ToolExecutor getToolExecutor() { method getStatuses (line 146) | public List getStatuses() { method buildStartupWarnings (line 150) | public List buildStartupWarnings() { method hasStatuses (line 173) | public boolean hasStatuses() { method findServerNameByToolName (line 177) | public String findServerNameByToolName(String toolName) { method close (line 185) | @Override method rebuildToolView (line 201) | private void rebuildToolView() { method validateToolNames (line 231) | private void validateToolNames(CliResolvedMcpServer server, method convertTools (line 257) | private List convertTools(List toolDefinition... method convertInputSchema (line 278) | private Tool.Function.Parameter convertInputSchema(Map... method convertProperty (line 310) | private Tool.Function.Property convertProperty(Map raw... method parseArguments (line 331) | private Object parseArguments(String rawArguments) { method normalizeToolName (line 342) | private String normalizeToolName(String value) { method asString (line 346) | private String asString(Object value) { method safeMessage (line 350) | private String safeMessage(Throwable throwable) { method firstNonBlank (line 366) | private String firstNonBlank(String... values) { method hasRelevantConfiguration (line 378) | private static boolean hasRelevantConfiguration(CliResolvedMcpConfig r... method isBlank (line 388) | private static boolean isBlank(String value) { type ClientFactory (line 392) | interface ClientFactory { method create (line 394) | ClientSession create(CliResolvedMcpServer server) throws Exception; type ClientSession (line 397) | interface ClientSession extends AutoCloseable { method connect (line 399) | void connect() throws Exception; method listTools (line 401) | List listTools() throws Exception; method callTool (line 403) | String callTool(String toolName, Object arguments) throws Exception; method close (line 405) | @Override class DefaultClientFactory (line 409) | private static final class DefaultClientFactory implements ClientFacto... method create (line 411) | @Override class McpClientSessionAdapter (line 432) | private static final class McpClientSessionAdapter implements ClientSe... method McpClientSessionAdapter (line 436) | private McpClientSessionAdapter(McpClient delegate) { method connect (line 440) | @Override method listTools (line 445) | @Override method callTool (line 450) | @Override method close (line 455) | @Override FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/mcp/CliMcpServerDefinition.java class CliMcpServerDefinition (line 8) | public class CliMcpServerDefinition { method CliMcpServerDefinition (line 18) | public CliMcpServerDefinition() { method CliMcpServerDefinition (line 21) | public CliMcpServerDefinition(String type, method builder (line 37) | public static Builder builder() { method toBuilder (line 41) | public Builder toBuilder() { method getType (line 52) | public String getType() { method setType (line 56) | public void setType(String type) { method getUrl (line 60) | public String getUrl() { method setUrl (line 64) | public void setUrl(String url) { method getCommand (line 68) | public String getCommand() { method setCommand (line 72) | public void setCommand(String command) { method getArgs (line 76) | public List getArgs() { method setArgs (line 80) | public void setArgs(List args) { method getEnv (line 84) | public Map getEnv() { method setEnv (line 88) | public void setEnv(Map env) { method getCwd (line 92) | public String getCwd() { method setCwd (line 96) | public void setCwd(String cwd) { method getHeaders (line 100) | public Map getHeaders() { method setHeaders (line 104) | public void setHeaders(Map headers) { method copyList (line 108) | private List copyList(List values) { method copyMap (line 112) | private Map copyMap(Map values) { class Builder (line 116) | public static final class Builder { method Builder (line 126) | private Builder() { method type (line 129) | public Builder type(String type) { method url (line 134) | public Builder url(String url) { method command (line 139) | public Builder command(String command) { method args (line 144) | public Builder args(List args) { method env (line 149) | public Builder env(Map env) { method cwd (line 154) | public Builder cwd(String cwd) { method headers (line 159) | public Builder headers(Map headers) { method build (line 164) | public CliMcpServerDefinition build() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/mcp/CliMcpStatusSnapshot.java class CliMcpStatusSnapshot (line 3) | public final class CliMcpStatusSnapshot { method CliMcpStatusSnapshot (line 13) | public CliMcpStatusSnapshot(String serverName, method getServerName (line 29) | public String getServerName() { method getTransportType (line 33) | public String getTransportType() { method getState (line 37) | public String getState() { method getToolCount (line 41) | public int getToolCount() { method getErrorSummary (line 45) | public String getErrorSummary() { method isWorkspaceEnabled (line 49) | public boolean isWorkspaceEnabled() { method isSessionPaused (line 53) | public boolean isSessionPaused() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/mcp/CliResolvedMcpConfig.java class CliResolvedMcpConfig (line 9) | public final class CliResolvedMcpConfig { method CliResolvedMcpConfig (line 16) | public CliResolvedMcpConfig(Map servers, method getServers (line 34) | public Map getServers() { method getEnabledServerNames (line 38) | public List getEnabledServerNames() { method getPausedServerNames (line 42) | public List getPausedServerNames() { method getUnknownEnabledServerNames (line 46) | public List getUnknownEnabledServerNames() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/mcp/CliResolvedMcpServer.java class CliResolvedMcpServer (line 3) | public final class CliResolvedMcpServer { method CliResolvedMcpServer (line 13) | public CliResolvedMcpServer(String name, method getName (line 29) | public String getName() { method getTransportType (line 33) | public String getTransportType() { method isWorkspaceEnabled (line 37) | public boolean isWorkspaceEnabled() { method isSessionPaused (line 41) | public boolean isSessionPaused() { method isActive (line 45) | public boolean isActive() { method getValidationError (line 49) | public String getValidationError() { method getDefinition (line 53) | public CliMcpServerDefinition getDefinition() { method isValid (line 57) | public boolean isValid() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/provider/CliProviderConfigManager.java class CliProviderConfigManager (line 23) | public class CliProviderConfigManager { method CliProviderConfigManager (line 27) | public CliProviderConfigManager(Path workspaceRoot) { method loadProvidersConfig (line 33) | public CliProvidersConfig loadProvidersConfig() { method saveProvidersConfig (line 45) | public CliProvidersConfig saveProvidersConfig(CliProvidersConfig confi... method loadWorkspaceConfig (line 57) | public CliWorkspaceConfig loadWorkspaceConfig() { method saveWorkspaceConfig (line 66) | public CliWorkspaceConfig saveWorkspaceConfig(CliWorkspaceConfig confi... method listProfileNames (line 75) | public List listProfileNames() { method getProfile (line 85) | public CliProviderProfile getProfile(String name) { method resolve (line 92) | public CliResolvedProviderConfig resolve(String providerOverride, method globalProvidersPath (line 171) | public Path globalProvidersPath() { method workspaceConfigPath (line 176) | public Path workspaceConfigPath() { method loadConfig (line 180) | private T loadConfig(Path path, Class type) { method resolveProfile (line 191) | private CliProviderProfile resolveProfile(CliProvidersConfig config, S... method alignProfileWithProvider (line 198) | private CliProviderProfile alignProfileWithProvider(CliProviderProfile... method resolveProvider (line 209) | private PlatformType resolveProvider(String raw) { method providerApiKeyEnv (line 221) | private String providerApiKeyEnv(Map env, PlatformType... method envValue (line 229) | private String envValue(Map env, String name) { method propertyValue (line 233) | private String propertyValue(Properties properties, String name) { method persistNormalizedProvidersConfig (line 237) | private void persistNormalizedProvidersConfig(CliProvidersConfig confi... method normalize (line 249) | private boolean normalize(CliProvidersConfig config) { method normalize (line 285) | private void normalize(CliWorkspaceConfig config) { method normalize (line 296) | private boolean normalize(CliProviderProfile profile) { method normalizeProtocol (line 329) | private String normalizeProtocol(String value, String providerValue, S... method normalizeName (line 345) | private String normalizeName(String value) { method normalizeValue (line 349) | private String normalizeValue(String value) { method resolveProviderOrNull (line 353) | private PlatformType resolveProviderOrNull(String raw) { method firstNonBlank (line 365) | private String firstNonBlank(String... values) { method isBlank (line 377) | private boolean isBlank(String value) { method equalsValue (line 381) | private boolean equalsValue(String left, String right) { method normalizeNames (line 388) | private List normalizeNames(List values) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/provider/CliProviderProfile.java class CliProviderProfile (line 3) | public class CliProviderProfile { method CliProviderProfile (line 11) | public CliProviderProfile() { method CliProviderProfile (line 14) | public CliProviderProfile(String provider, String protocol, String mod... method builder (line 22) | public static Builder builder() { method toBuilder (line 26) | public Builder toBuilder() { method getProvider (line 35) | public String getProvider() { method setProvider (line 39) | public void setProvider(String provider) { method getProtocol (line 43) | public String getProtocol() { method setProtocol (line 47) | public void setProtocol(String protocol) { method getModel (line 51) | public String getModel() { method setModel (line 55) | public void setModel(String model) { method getBaseUrl (line 59) | public String getBaseUrl() { method setBaseUrl (line 63) | public void setBaseUrl(String baseUrl) { method getApiKey (line 67) | public String getApiKey() { method setApiKey (line 71) | public void setApiKey(String apiKey) { class Builder (line 75) | public static final class Builder { method Builder (line 83) | private Builder() { method provider (line 86) | public Builder provider(String provider) { method protocol (line 91) | public Builder protocol(String protocol) { method model (line 96) | public Builder model(String model) { method baseUrl (line 101) | public Builder baseUrl(String baseUrl) { method apiKey (line 106) | public Builder apiKey(String apiKey) { method build (line 111) | public CliProviderProfile build() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/provider/CliProvidersConfig.java class CliProvidersConfig (line 6) | public class CliProvidersConfig { method CliProvidersConfig (line 11) | public CliProvidersConfig() { method CliProvidersConfig (line 14) | public CliProvidersConfig(String defaultProfile, Map getProfiles() { method setProfiles (line 43) | public void setProfiles(Map profiles) { class Builder (line 49) | public static final class Builder { method Builder (line 54) | private Builder() { method defaultProfile (line 57) | public Builder defaultProfile(String defaultProfile) { method profiles (line 62) | public Builder profiles(Map profiles) { method build (line 69) | public CliProvidersConfig build() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/provider/CliResolvedProviderConfig.java class CliResolvedProviderConfig (line 6) | public final class CliResolvedProviderConfig { method CliResolvedProviderConfig (line 18) | public CliResolvedProviderConfig(String activeProfile, method getActiveProfile (line 38) | public String getActiveProfile() { method getDefaultProfile (line 42) | public String getDefaultProfile() { method getEffectiveProfile (line 46) | public String getEffectiveProfile() { method getModelOverride (line 50) | public String getModelOverride() { method getProvider (line 54) | public PlatformType getProvider() { method getProtocol (line 58) | public CliProtocol getProtocol() { method getModel (line 62) | public String getModel() { method getApiKey (line 66) | public String getApiKey() { method getBaseUrl (line 70) | public String getBaseUrl() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/render/AssistantTranscriptRenderer.java class AssistantTranscriptRenderer (line 7) | public final class AssistantTranscriptRenderer { method render (line 9) | public List render(String markdown) { method plainLines (line 37) | public List plainLines(String markdown) { method styleBlock (line 49) | public String styleBlock(String markdown, CliThemeStyler themeStyler) { method rowCount (line 73) | public int rowCount(String markdown, int terminalWidth) { method splitLines (line 92) | private List splitLines(String markdown) { method trimBlankEdges (line 105) | private List trimBlankEdges(List rawLines) { method trimBlankEdgeLines (line 127) | private List trimBlankEdgeLines(List rawLines) { method isCodeFenceLine (line 149) | private boolean isCodeFenceLine(String rawLine) { method codeFenceLanguage (line 153) | private String codeFenceLanguage(String rawLine) { method formatCodeContentLine (line 161) | private String formatCodeContentLine(String rawLine) { method isBlank (line 168) | private boolean isBlank(String value) { class Line (line 172) | public static final class Line { method Line (line 178) | private Line(String text, boolean code, String language) { method text (line 184) | public static Line text(String text) { method code (line 188) | public static Line code(String text, String language) { method text (line 192) | public String text() { method code (line 196) | public boolean code() { method language (line 200) | public String language() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/render/CliAnsi.java class CliAnsi (line 3) | public final class CliAnsi { method CliAnsi (line 8) | private CliAnsi() { method warning (line 11) | public static String warning(String value, boolean ansi) { method colorize (line 15) | static String colorize(String value, String foreground, boolean ansi, ... method style (line 19) | static String style(String value, String foreground, String background... method appendColorCode (line 39) | private static void appendColorCode(StringBuilder codes, String prefix... method parseHex (line 52) | private static int[] parseHex(String hexColor) { method isBlank (line 67) | private static boolean isBlank(String value) { method isEmpty (line 71) | private static boolean isEmpty(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/render/CliDisplayWidth.java class CliDisplayWidth (line 6) | public final class CliDisplayWidth { method CliDisplayWidth (line 10) | private CliDisplayWidth() { method clip (line 13) | public static String clip(String value, int maxWidth) { method displayWidth (line 30) | public static int displayWidth(String text) { method sliceByColumns (line 41) | public static String sliceByColumns(String text, int width) { method wrapAnsi (line 59) | public static WrappedAnsi wrapAnsi(String ansiText, int terminalWidth,... method charWidth (line 114) | private static int charWidth(char ch) { method retreatBreak (line 119) | private static int retreatBreak(AttributedString attributed, int start... method startsWithLineHeadForbidden (line 143) | private static boolean startsWithLineHeadForbidden(String text) { class WrappedAnsi (line 150) | public static final class WrappedAnsi { method WrappedAnsi (line 154) | public WrappedAnsi(String text, int endColumn) { method text (line 159) | public String text() { method endColumn (line 163) | public int endColumn() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/render/CliThemeStyler.java class CliThemeStyler (line 11) | public final class CliThemeStyler { method CliThemeStyler (line 47) | public CliThemeStyler(TuiTheme theme, boolean ansi) { method updateTheme (line 52) | public void updateTheme(TuiTheme theme) { method styleTranscriptLine (line 56) | public String styleTranscriptLine(String line) { method styleTranscriptLine (line 60) | public String styleTranscriptLine(String line, TranscriptStyleState st... method buildPrimaryStatusLine (line 93) | public String buildPrimaryStatusLine(String statusLabel, boolean spinn... method buildCompactStatusLine (line 107) | public String buildCompactStatusLine(String statusLabel, method buildSessionLine (line 136) | public String buildSessionLine(String sessionId, String model, String ... method buildHintLine (line 145) | public String buildHintLine(String hint) { method styleAssistantFragment (line 150) | public String styleAssistantFragment(String text) { method styleReasoningFragment (line 154) | public String styleReasoningFragment(String text) { method styleMutedFragment (line 158) | public String styleMutedFragment(String text) { method styleTranscriptCodeLine (line 162) | public String styleTranscriptCodeLine(String line, String language) { method styleCodeFenceHeader (line 166) | private String styleCodeFenceHeader(String line) { method styleCodeBlockLine (line 170) | private String styleCodeBlockLine(String line, String language) { method styleMarkdownHeadingLine (line 179) | private String styleMarkdownHeadingLine(String line) { method styleMarkdownQuoteLine (line 186) | private String styleMarkdownQuoteLine(String line) { method styleInlineMarkdown (line 190) | private String styleInlineMarkdown(String line, String baseColor, bool... method highlightCodeBody (line 228) | private String highlightCodeBody(String body, String language) { method highlightGenericCode (line 255) | private String highlightGenericCode(String code, method highlightJson (line 347) | private String highlightJson(String code) { method highlightXml (line 399) | private String highlightXml(String code) { method highlightXmlTag (line 430) | private String highlightXmlTag(String tag) { method flushPlain (line 467) | private void flushPlain(StringBuilder styled, StringBuilder plain) { method isCodeBlockHeaderLine (line 475) | private boolean isCodeBlockHeaderLine(String line) { method isCodeBlockLine (line 481) | private boolean isCodeBlockLine(String line) { method codeBlockLanguage (line 487) | private String codeBlockLanguage(String line) { method styleCodeTextFragment (line 497) | private String styleCodeTextFragment(String text) { method styleCodeKeywordFragment (line 501) | private String styleCodeKeywordFragment(String text, boolean bold) { method styleCodeStringFragment (line 505) | private String styleCodeStringFragment(String text) { method styleCodeCommentFragment (line 509) | private String styleCodeCommentFragment(String text) { method styleCodeNumberFragment (line 513) | private String styleCodeNumberFragment(String text, boolean bold) { method consumeQuoted (line 517) | private int consumeQuoted(String text, int start, char quote) { method consumeIdentifier (line 533) | private int consumeIdentifier(String text, int start) { method consumeXmlIdentifier (line 545) | private int consumeXmlIdentifier(String text, int start) { method consumeNumber (line 557) | private int consumeNumber(String text, int start) { method consumeVariable (line 574) | private int consumeVariable(String text, int start) { method skipWhitespace (line 585) | private int skipWhitespace(String text, int start) { method isIdentifierStart (line 593) | private boolean isIdentifierStart(char ch) { method isCodePunctuation (line 597) | private boolean isCodePunctuation(char ch) { method isMarkdownHeadingLine (line 601) | private boolean isMarkdownHeadingLine(String line) { method isMarkdownQuoteLine (line 612) | private boolean isMarkdownQuoteLine(String line) { method isSingleMarkerToggle (line 616) | private boolean isSingleMarkerToggle(String text, int index, char mark... method normalizeLanguage (line 626) | private String normalizeLanguage(String language) { method appendStyledMarkdownSegment (line 658) | private void appendStyledMarkdownSegment(StringBuilder builder, method stripMarkdownLinks (line 673) | private String stripMarkdownLinks(String text) { method stripInlineMarkdown (line 701) | private String stripInlineMarkdown(String text) { method transcriptBulletColor (line 711) | private String transcriptBulletColor(String line) { method statusColor (line 741) | private String statusColor(String statusLabel) { method brand (line 770) | private String brand() { method accent (line 774) | private String accent() { method success (line 778) | private String success() { method warning (line 782) | private String warning() { method danger (line 786) | private String danger() { method text (line 790) | private String text() { method muted (line 794) | private String muted() { method codeBackground (line 798) | private String codeBackground() { method codeText (line 802) | private String codeText() { method codeKeyword (line 806) | private String codeKeyword() { method codeString (line 810) | private String codeString() { method codeComment (line 814) | private String codeComment() { method codeNumber (line 818) | private String codeNumber() { method firstNonBlank (line 822) | private String firstNonBlank(String... values) { method isBlank (line 834) | private boolean isBlank(String value) { class TranscriptStyleState (line 838) | public static final class TranscriptStyleState { method enterCodeBlock (line 843) | public void enterCodeBlock(String language) { method exitCodeBlock (line 848) | public void exitCodeBlock() { method reset (line 853) | public void reset() { method getCodeBlockLanguage (line 857) | public String getCodeBlockLanguage() { method isInsideCodeBlock (line 861) | public boolean isInsideCodeBlock() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/render/CodexStyleBlockFormatter.java class CodexStyleBlockFormatter (line 11) | public final class CodexStyleBlockFormatter { method CodexStyleBlockFormatter (line 21) | public CodexStyleBlockFormatter(int maxWidth, int maxToolPreviewLines) { method formatAssistant (line 26) | public List formatAssistant(String text) { method isCodeFenceLine (line 47) | public boolean isCodeFenceLine(String rawLine) { method formatCodeFenceOpen (line 55) | public String formatCodeFenceOpen(String rawLine) { method formatCodeFenceClose (line 59) | public String formatCodeFenceClose() { method formatCodeContentLine (line 63) | public String formatCodeContentLine(String rawLine) { method codeFenceLanguage (line 70) | public String codeFenceLanguage(String rawLine) { method formatTool (line 82) | public List formatTool(TuiAssistantToolView toolView) { method formatRunningStatus (line 113) | public String formatRunningStatus(TuiAssistantToolView toolView) { method formatCompact (line 124) | public List formatCompact(CodingSessionCompactResult result) { method formatError (line 152) | public List formatError(String message) { method formatInfoBlock (line 159) | public List formatInfoBlock(String title, List rawLine... method formatOutput (line 185) | public List formatOutput(String text) { method formatToolPrimaryLines (line 197) | private List formatToolPrimaryLines(String toolName, String ti... method parseOutputBlock (line 216) | private ParsedInfoBlock parseOutputBlock(List rawLines) { method isStructuredOutputTitle (line 246) | private boolean isStructuredOutputTitle(String rawTitle) { method normalizeBlockTitle (line 271) | private String normalizeBlockTitle(String rawTitle) { method normalizeInfoLine (line 282) | private String normalizeInfoLine(String rawLine) { method resolveToolPrimaryPrefix (line 293) | private String resolveToolPrimaryPrefix(String toolName, String title,... method normalizeToolPrimaryLabel (line 320) | private String normalizeToolPrimaryLabel(String title) { method normalizeToolPreviewLines (line 346) | private List normalizeToolPreviewLines(String toolName, String... method stripPreviewLabel (line 372) | private String stripPreviewLabel(String previewLine) { method wrapPrefixedText (line 399) | private List wrapPrefixedText(String firstPrefix, String conti... method findWrapIndex (line 426) | private int findWrapIndex(String text, int width) { method splitLines (line 440) | private List splitLines(String text) { method trimBlankEdges (line 452) | private List trimBlankEdges(List rawLines) { method stripLeadingBullet (line 474) | private String stripLeadingBullet(String text) { method clip (line 488) | private String clip(String value, int maxChars) { method safeTrimToNull (line 499) | private String safeTrimToNull(String value) { method firstNonBlank (line 503) | private String firstNonBlank(String... values) { method isBlank (line 515) | private boolean isBlank(String value) { class ParsedInfoBlock (line 519) | private static final class ParsedInfoBlock { method ParsedInfoBlock (line 523) | private ParsedInfoBlock(String title, List bodyLines) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/render/PatchSummaryFormatter.java class PatchSummaryFormatter (line 11) | public final class PatchSummaryFormatter { method PatchSummaryFormatter (line 20) | private PatchSummaryFormatter() { method summarizePatchRequest (line 23) | public static List summarizePatchRequest(String patch, int max... method summarizePatchResult (line 42) | public static List summarizePatchResult(JSONObject output, int... method formatPatchFileChange (line 71) | public static String formatPatchFileChange(JSONObject change) { method summarizePatchDirective (line 98) | private static String summarizePatchDirective(String line) { method firstNonBlank (line 123) | private static String firstNonBlank(String... values) { method safeTrimToNull (line 135) | private static String safeTrimToNull(String value) { method isBlank (line 139) | private static boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/render/TranscriptPrinter.java class TranscriptPrinter (line 10) | public final class TranscriptPrinter { method TranscriptPrinter (line 15) | public TranscriptPrinter(TerminalIO terminal) { method printBlock (line 19) | public synchronized void printBlock(List rawLines) { method beginStreamingBlock (line 36) | public synchronized void beginStreamingBlock() { method printSectionBreak (line 40) | public synchronized void printSectionBreak() { method resetPrintedBlock (line 48) | public synchronized void resetPrintedBlock() { method trimBlankEdges (line 52) | private List trimBlankEdges(List rawLines) { method separateFromPreviousBlockIfNeeded (line 74) | private void separateFromPreviousBlockIfNeeded() { method isBlank (line 80) | private boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/runtime/AgentHandoffSessionEventSupport.java class AgentHandoffSessionEventSupport (line 14) | public final class AgentHandoffSessionEventSupport { method AgentHandoffSessionEventSupport (line 16) | private AgentHandoffSessionEventSupport() { method supports (line 19) | public static boolean supports(AgentEvent event) { method resolveSessionEventType (line 26) | public static SessionEventType resolveSessionEventType(AgentEvent even... method toSessionEvent (line 35) | public static SessionEvent toSessionEvent(String sessionId, String tur... method buildSummary (line 52) | public static String buildSummary(AgentEvent event) { method buildPayload (line 59) | public static Map buildPayload(AgentEvent event) { method payload (line 83) | private static Map payload(AgentEvent event) { method payloadValue (line 93) | private static Object payloadValue(Map payload, String... method payloadString (line 97) | private static String payloadString(Map payload, Strin... method previewLines (line 102) | private static List previewLines(String raw) { method firstNonBlank (line 118) | private static String firstNonBlank(String... values) { method trimToNull (line 130) | private static String trimToNull(String value) { method isBlank (line 138) | private static boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/runtime/AgentTeamMessageSessionEventSupport.java class AgentTeamMessageSessionEventSupport (line 14) | public final class AgentTeamMessageSessionEventSupport { method AgentTeamMessageSessionEventSupport (line 16) | private AgentTeamMessageSessionEventSupport() { method supports (line 19) | public static boolean supports(AgentEvent event) { method toSessionEvent (line 23) | public static SessionEvent toSessionEvent(String sessionId, String tur... method buildSummary (line 39) | public static String buildSummary(AgentEvent event) { method buildPayload (line 49) | public static Map buildPayload(AgentEvent event) { method payload (line 69) | private static Map payload(AgentEvent event) { method payloadValue (line 79) | private static Object payloadValue(Map payload, String... method payloadString (line 83) | private static String payloadString(Map payload, Strin... method route (line 88) | private static String route(String fromMemberId, String toMemberId) { method previewLines (line 97) | private static List previewLines(String raw) { method firstNonBlank (line 113) | private static String firstNonBlank(String... values) { method trimToNull (line 125) | private static String trimToNull(String value) { method isBlank (line 133) | private static boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/runtime/AgentTeamSessionEventSupport.java class AgentTeamSessionEventSupport (line 14) | public final class AgentTeamSessionEventSupport { method AgentTeamSessionEventSupport (line 16) | private AgentTeamSessionEventSupport() { method supports (line 19) | public static boolean supports(AgentEvent event) { method resolveSessionEventType (line 27) | public static SessionEventType resolveSessionEventType(AgentEvent even... method toSessionEvent (line 36) | public static SessionEvent toSessionEvent(String sessionId, String tur... method buildSummary (line 53) | public static String buildSummary(AgentEvent event) { method buildPayload (line 61) | public static Map buildPayload(AgentEvent event) { method payload (line 94) | private static Map payload(AgentEvent event) { method payloadValue (line 104) | private static Object payloadValue(Map payload, String... method payloadString (line 108) | private static String payloadString(Map payload, Strin... method previewLines (line 113) | private static List previewLines(String raw) { method firstNonBlank (line 129) | private static String firstNonBlank(String... values) { method trimToNull (line 141) | private static String trimToNull(String value) { method isBlank (line 149) | private static boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/runtime/CliTeamStateManager.java class CliTeamStateManager (line 22) | public final class CliTeamStateManager { method CliTeamStateManager (line 30) | public CliTeamStateManager(Path workspaceRoot) { method listKnownTeamIds (line 39) | public List listKnownTeamIds() { method renderListOutput (line 54) | public String renderListOutput() { method renderStatusOutput (line 82) | public String renderStatusOutput(String requestedTeamId) { method renderMessagesOutput (line 113) | public String renderMessagesOutput(String requestedTeamId, Integer lim... method resolveState (line 159) | public ResolvedTeamState resolveState(String requestedTeamId) { method renderBoardLines (line 169) | public List renderBoardLines(String requestedTeamId) { method renderResumeOutput (line 177) | public String renderResumeOutput(String requestedTeamId) { method listStates (line 190) | private List listStates() { method latestState (line 194) | private AgentTeamState latestState() { method hydrate (line 199) | private AgentTeamState hydrate(AgentTeamState state) { method loadMessages (line 208) | private List loadMessages(String teamId, AgentTeamSt... method summarizeTasks (line 223) | private TaskSummary summarizeTasks(List taskStates) { method teamMissingOutput (line 251) | private String teamMissingOutput(String requestedTeamId) { method formatTimestamp (line 256) | private String formatTimestamp(long epochMillis) { method singleLine (line 265) | private String singleLine(String value) { method clip (line 272) | private String clip(String value, int maxChars) { method firstNonBlank (line 280) | private String firstNonBlank(String... values) { method trimToNull (line 292) | private String trimToNull(String value) { method isBlank (line 300) | private boolean isBlank(String value) { class ResolvedTeamState (line 304) | public static final class ResolvedTeamState { method ResolvedTeamState (line 308) | private ResolvedTeamState(String teamId, AgentTeamState state) { method getTeamId (line 313) | public String getTeamId() { method getState (line 317) | public AgentTeamState getState() { class TaskSummary (line 322) | private static final class TaskSummary { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/runtime/CliToolApprovalDecorator.java class CliToolApprovalDecorator (line 18) | public class CliToolApprovalDecorator implements ToolExecutorDecorator { method CliToolApprovalDecorator (line 27) | public CliToolApprovalDecorator(ApprovalMode approvalMode, TerminalIO ... method CliToolApprovalDecorator (line 31) | public CliToolApprovalDecorator(ApprovalMode approvalMode, method decorate (line 39) | @Override method requiresApproval (line 55) | private boolean requiresApproval(String toolName, AgentToolCall call) { method requestApproval (line 73) | private void requestApproval(String toolName, AgentToolCall call) { method printApprovalBlock (line 102) | private void printApprovalBlock(String toolName, JSONObject arguments,... method appendBashApprovalLines (line 117) | private void appendBashApprovalLines(List lines, JSONObject ar... method appendPatchApprovalLines (line 135) | private void appendPatchApprovalLines(List lines, JSONObject a... method summarize (line 147) | private String summarize(String toolName, JSONObject arguments) { method printApprovalResolution (line 164) | private void printApprovalResolution(String toolName, JSONObject argum... method summarizeApprovalResolution (line 174) | private List summarizeApprovalResolution(String toolName, JSON... method buildApprovalRejectedMessage (line 207) | private String buildApprovalRejectedMessage(String toolName, JSONObjec... method summarizePatchChanges (line 213) | private List summarizePatchChanges(String patch) { method parseArguments (line 217) | private JSONObject parseArguments(String rawArguments) { method defaultText (line 229) | private String defaultText(String value, String defaultValue) { method firstNonBlank (line 233) | private String firstNonBlank(String... values) { method safeTrimToNull (line 245) | private String safeTrimToNull(String value) { method clip (line 249) | private String clip(String value, int maxChars) { method isBlank (line 260) | private boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/runtime/CodingCliSessionRunner.java class CodingCliSessionRunner (line 107) | public class CodingCliSessionRunner { method CodingCliSessionRunner (line 165) | public CodingCliSessionRunner(CodingAgent agent, method CodingCliSessionRunner (line 175) | public CodingCliSessionRunner(CodingAgent agent, method CodingCliSessionRunner (line 186) | public CodingCliSessionRunner(CodingAgent agent, method CodingCliSessionRunner (line 197) | public CodingCliSessionRunner(CodingAgent agent, method CodingCliSessionRunner (line 212) | private CodingCliSessionRunner(CodingAgent agent, method run (line 311) | public int run() throws Exception { method setMcpRuntimeManager (line 353) | public void setMcpRuntimeManager(CliMcpRuntimeManager mcpRuntimeManage... method runCliLoop (line 357) | private int runCliLoop(ManagedCodingSession session) throws Exception { method runTuiLoop (line 396) | private int runTuiLoop(ManagedCodingSession session) throws Exception { method handleTuiKey (line 433) | private DispatchResult handleTuiKey(ManagedCodingSession session, TuiK... method handleActiveTuiTurnKey (line 567) | private DispatchResult handleActiveTuiTurnKey(ManagedCodingSession ses... method handleReplayViewerKey (line 577) | private DispatchResult handleReplayViewerKey(ManagedCodingSession sess... method handleTeamBoardKey (line 593) | private DispatchResult handleTeamBoardKey(ManagedCodingSession session... method appendInputAndRefreshSlashPalette (line 609) | private void appendInputAndRefreshSlashPalette(String text) { method backspaceInputAndRefreshSlashPalette (line 613) | private void backspaceInputAndRefreshSlashPalette() { method refreshSlashPalette (line 617) | private void refreshSlashPalette() { method closeSlashPaletteIfNeeded (line 621) | private void closeSlashPaletteIfNeeded() { method closeSlashPaletteIfNeededSilently (line 628) | private void closeSlashPaletteIfNeededSilently() { method applySlashSelection (line 635) | private void applySlashSelection() { method handleProcessInspectorKey (line 643) | private DispatchResult handleProcessInspectorKey(ManagedCodingSession ... method moveFocusedSelection (line 669) | private DispatchResult moveFocusedSelection(ManagedCodingSession sessi... method dispatchInteractiveInput (line 676) | private DispatchResult dispatchInteractiveInput(ManagedCodingSession s... method runTurn (line 846) | private void runTurn(ManagedCodingSession session, String input) throw... method runTurn (line 850) | private void runTurn(ManagedCodingSession session, String input, Activ... method runTurn (line 854) | private void runTurn(ManagedCodingSession session, String input, Activ... method runAgentTurn (line 914) | private void runAgentTurn(ManagedCodingSession session, String input) ... method printSessionHelp (line 928) | private void printSessionHelp() { method printSessionHeader (line 992) | private void printSessionHeader(ManagedCodingSession session) { method printStatus (line 1018) | private void printStatus(ManagedCodingSession session) { method printCurrentSession (line 1046) | private void printCurrentSession(ManagedCodingSession session) { method printThemes (line 1091) | private void printThemes() { method printProviders (line 1127) | private void printProviders() { method printCurrentProvider (line 1131) | private void printCurrentProvider() { method printSkills (line 1135) | private void printSkills(ManagedCodingSession session, String argument) { method printAgents (line 1139) | private void printAgents(ManagedCodingSession session, String argument) { method handleProviderCommand (line 1143) | private ManagedCodingSession handleProviderCommand(ManagedCodingSessio... method handleModelCommand (line 1178) | private ManagedCodingSession handleModelCommand(ManagedCodingSession s... method handleExperimentalCommand (line 1203) | private ManagedCodingSession handleExperimentalCommand(ManagedCodingSe... method handleMcpCommand (line 1232) | private ManagedCodingSession handleMcpCommand(ManagedCodingSession ses... method addMcpServer (line 1270) | private ManagedCodingSession addMcpServer(ManagedCodingSession session... method removeMcpServer (line 1294) | private ManagedCodingSession removeMcpServer(ManagedCodingSession sess... method enableMcpServer (line 1319) | private ManagedCodingSession enableMcpServer(ManagedCodingSession sess... method disableMcpServer (line 1339) | private ManagedCodingSession disableMcpServer(ManagedCodingSession ses... method pauseMcpServer (line 1360) | private ManagedCodingSession pauseMcpServer(ManagedCodingSession sessi... method resumeMcpServer (line 1381) | private ManagedCodingSession resumeMcpServer(ManagedCodingSession sess... method retryMcpServer (line 1397) | private ManagedCodingSession retryMcpServer(ManagedCodingSession sessi... method parseMcpAddCommand (line 1413) | private McpAddCommand parseMcpAddCommand(String rawArguments) { method renderMcpOutput (line 1455) | private String renderMcpOutput() { method deriveMcpStatuses (line 1485) | private List deriveMcpStatuses(CliResolvedMcpCon... method switchToProviderProfile (line 1520) | private ManagedCodingSession switchToProviderProfile(ManagedCodingSess... method saveCurrentProviderProfile (line 1541) | private void saveCurrentProviderProfile(String profileName) throws IOE... method addProviderProfile (line 1562) | private void addProviderProfile(String rawArguments) throws IOException { method editProviderProfile (line 1608) | private ManagedCodingSession editProviderProfile(ManagedCodingSession ... method removeProviderProfile (line 1681) | private void removeProviderProfile(String profileName) throws IOExcept... method setDefaultProviderProfile (line 1704) | private void setDefaultProviderProfile(String profileName) throws IOEx... method parseProviderProfileMutation (line 1726) | private ProviderProfileMutation parseProviderProfileMutation(String ra... method requireProviderMutationValue (line 1803) | private String requireProviderMutationValue(String[] tokens, int index... method parseProviderType (line 1811) | private PlatformType parseProviderType(String raw) { method parseProviderProtocol (line 1825) | private CliProtocol parseProviderProtocol(String raw) { method isSupportedProviderProtocol (line 1834) | private boolean isSupportedProviderProtocol(PlatformType provider, Cli... method normalizeStoredProtocol (line 1845) | private String normalizeStoredProtocol(String raw, PlatformType provid... method resolveConfiguredRuntimeOptions (line 1852) | private CodeCommandOptions resolveConfiguredRuntimeOptions() { method switchSessionRuntime (line 1871) | private ManagedCodingSession switchSessionRuntime(ManagedCodingSession... method printCommands (line 1921) | private void printCommands() { method runCustomCommand (line 1958) | private void runCustomCommand(ManagedCodingSession session, String raw... method renderCustomCommand (line 1980) | private String renderCustomCommand(CustomCommandTemplate command, Mana... method applyTheme (line 1994) | private void applyTheme(String themeName, ManagedCodingSession session) { method printCheckpoint (line 2020) | private void printCheckpoint(ManagedCodingSession session) { method printClearMarker (line 2043) | private void printClearMarker(ManagedCodingSession session) { method resolveCompact (line 2059) | private CodingSessionCompactResult resolveCompact(CodingSession sessio... method printCompactResult (line 2070) | private void printCompactResult(CodingSessionCompactResult result) { method printAutoCompactOutcome (line 2092) | private void printAutoCompactOutcome(ManagedCodingSession session, Str... method appendLoopDecisionEvents (line 2118) | private void appendLoopDecisionEvents(ManagedCodingSession session, St... method emitLoopDecision (line 2141) | private void emitLoopDecision(CodingLoopDecision decision, CodingAgent... method formatLoopDecisionSummary (line 2161) | private String formatLoopDecisionSummary(CodingLoopDecision decision, ... method formatStopReason (line 2175) | private String formatStopReason(CodingStopReason stopReason) { method openInitialSession (line 2183) | private ManagedCodingSession openInitialSession() throws Exception { method resumeSession (line 2193) | private ManagedCodingSession resumeSession(ManagedCodingSession curren... method forkSession (line 2210) | private ManagedCodingSession forkSession(ManagedCodingSession currentS... method persistSession (line 2242) | private void persistSession(ManagedCodingSession session, boolean forc... method printSessions (line 2258) | private void printSessions() { method printHistory (line 2294) | private void printHistory(ManagedCodingSession currentSession, String ... method printTree (line 2348) | private void printTree(ManagedCodingSession currentSession, String roo... method printEvents (line 2383) | private void printEvents(ManagedCodingSession session, String limitArg... method printReplay (line 2419) | private void printReplay(ManagedCodingSession session, String limitArg... method printTeamBoard (line 2460) | private void printTeamBoard(ManagedCodingSession session) { method handleTeamCommand (line 2495) | private void handleTeamCommand(ManagedCodingSession session, String ar... method resumePersistedTeamBoard (line 2529) | private void resumePersistedTeamBoard(ManagedCodingSession session, method teamArgument (line 2559) | private String teamArgument(List tokens, int index) { method createTeamStateManager (line 2567) | private CliTeamStateManager createTeamStateManager(ManagedCodingSessio... method listKnownTeamIds (line 2571) | private List listKnownTeamIds() { method resolveWorkspaceRoot (line 2575) | private Path resolveWorkspaceRoot(ManagedCodingSession session) { method printCompacts (line 2586) | private void printCompacts(ManagedCodingSession session, String limitA... method printProcesses (line 2609) | private void printProcesses(ManagedCodingSession session) { method handleProcessCommand (line 2645) | private void handleProcessCommand(ManagedCodingSession session, String... method openReplayViewer (line 2708) | private void openReplayViewer(ManagedCodingSession session, int limit) { method openProcessInspector (line 2728) | private void openProcessInspector(ManagedCodingSession session, String... method buildReplayLines (line 2755) | private List buildReplayLines(List events) { method buildCompletedToolKeysByTurn (line 2796) | private Map> buildCompletedToolKeysByTur... method buildToolEventKey (line 2820) | private String buildToolEventKey(Map payload) { method buildReplayEventLines (line 2834) | private List buildReplayEventLines(SessionEvent event) { method buildReplayTaskLines (line 2911) | private List buildReplayTaskLines(SessionEvent event) { method buildReplayTeamMessageLines (line 2956) | private List buildReplayTeamMessageLines(SessionEvent event) { method appendReplayBlock (line 2971) | private void appendReplayBlock(List lines, List blockL... method buildReplayCompactResult (line 2979) | private CodingSessionCompactResult buildReplayCompactResult(SessionEve... method appendReplayMultiline (line 2992) | private void appendReplayMultiline(List lines, String prefix, ... method appendReplayToolLines (line 3003) | private void appendReplayToolLines(List lines, Map buildToolPrimaryLines(String toolName, String tit... method resolveToolPrimaryPrefix (line 3073) | private String resolveToolPrimaryPrefix(String toolName, String title,... method normalizeToolPrimaryLabel (line 3100) | private String normalizeToolPrimaryLabel(String title) { method stripToolTitlePrefix (line 3126) | private String stripToolTitlePrefix(String title, String prefix) { method replayContinuation (line 3133) | private String replayContinuation(String prefix) { method buildCompactLines (line 3142) | private List buildCompactLines(List events, int ... method showProcessStatus (line 3192) | private void showProcessStatus(ManagedCodingSession session, method followProcessLogs (line 3227) | private void followProcessLogs(ManagedCodingSession session, method appendProcessSummary (line 3278) | private void appendProcessSummary(StringBuilder builder, BashProcessIn... method writeSelectedProcessInput (line 3288) | private void writeSelectedProcessInput(ManagedCodingSession session) { method resolveProcessIds (line 3303) | private List resolveProcessIds(ManagedCodingSession session) { method buildProcessCompletionCandidates (line 3318) | private List buildP... method buildModelCompletionCandidates (line 3340) | private List buildMod... method listKnownSkillNames (line 3361) | private List listKnownSkillNames() { method listKnownAgentNames (line 3378) | private List listKnownAgentNames() { method listKnownMcpServerNames (line 3399) | private List listKnownMcpServerNames() { method addProfileModelCompletionCandidate (line 3413) | private void addProfileModelCompletionCandidate(LinkedHashMap values, String target) { method addName (line 3468) | private List addName(List values, String name) { method removeName (line 3483) | private List removeName(List values, String name) { method splitWhitespace (line 3499) | private List splitWhitespace(String value) { method normalizeMcpTransport (line 3506) | private String normalizeMcpTransport(String rawTransport) { method buildProcessCompletionDescription (line 3523) | private String buildProcessCompletionDescription(BashProcessInfo proce... method firstProcessId (line 3543) | private String firstProcessId(ManagedCodingSession session) { method mergeCurrentSession (line 3548) | private List mergeCurrentSession(List resolveHistory(List resolveHistoryLines(List... method renderTreeLines (line 3619) | private List renderTreeLines(List ses... method appendTreeLines (line 3673) | private void appendTreeLines(List lines, method renderCommandLines (line 3703) | private List renderCommandLines(List co... method buildPaletteItems (line 3722) | private List buildPaletteItems(ManagedCodingSession se... method buildCommandPaletteItems (line 3775) | private List buildCommandPaletteItems() { method emitOutput (line 3848) | private void emitOutput(String text) { method emitError (line 3860) | private void emitError(String text) { method useMainBufferInteractiveShell (line 3872) | private boolean useMainBufferInteractiveShell() { method useAppendOnlyTranscriptTui (line 3887) | private boolean useAppendOnlyTranscriptTui() { method suppressMainBufferReasoningBlocks (line 3891) | private boolean suppressMainBufferReasoningBlocks() { method streamTranscriptEnabled (line 3895) | private boolean streamTranscriptEnabled() { method renderMainBufferAssistantIncrementally (line 3899) | private boolean renderMainBufferAssistantIncrementally() { method renderMainBufferReasoningIncrementally (line 3903) | private boolean renderMainBufferReasoningIncrementally() { method resolveMainBufferInteractiveOverride (line 3907) | private Boolean resolveMainBufferInteractiveOverride() { method buildMainBufferToolLines (line 3918) | private List buildMainBufferToolLines(TuiAssistantToolView too... method buildMainBufferRunningStatus (line 3922) | private String buildMainBufferRunningStatus(TuiAssistantToolView toolV... method emitMainBufferAssistant (line 3926) | private void emitMainBufferAssistant(String text) { method emitMainBufferReasoning (line 3932) | private void emitMainBufferReasoning(String text) { method emitMainBufferError (line 3969) | private void emitMainBufferError(String message) { method lastPathSegment (line 3973) | private String lastPathSegment(String value) { method refreshTuiSessions (line 3982) | private void refreshTuiSessions() { method refreshTuiEvents (line 3997) | private void refreshTuiEvents(ManagedCodingSession session) { method refreshTuiReplay (line 4008) | private void refreshTuiReplay(ManagedCodingSession session) { method refreshTuiTeamBoard (line 4020) | private void refreshTuiTeamBoard(ManagedCodingSession session) { method refreshTuiProcessInspector (line 4032) | private void refreshTuiProcessInspector(ManagedCodingSession session) { method renderTui (line 4053) | private void renderTui(ManagedCodingSession session) { method renderTuiFromCache (line 4057) | private void renderTuiFromCache(ManagedCodingSession session) { method renderTui (line 4061) | private void renderTui(ManagedCodingSession session, boolean refreshCa... method buildTuiScreenModel (line 4079) | private TuiScreenModel buildTuiScreenModel(ManagedCodingSession sessio... method setTuiAssistantOutput (line 4107) | private void setTuiAssistantOutput(String output) { method setTuiCachedSessions (line 4111) | private void setTuiCachedSessions(List sessio... method setTuiCachedHistory (line 4115) | private void setTuiCachedHistory(List historyLines) { method setTuiCachedTree (line 4119) | private void setTuiCachedTree(List treeLines) { method setTuiCachedCommands (line 4123) | private void setTuiCachedCommands(List commands) { method setTuiCachedEvents (line 4127) | private void setTuiCachedEvents(List events) { method setTuiCachedReplay (line 4131) | private void setTuiCachedReplay(List replayLines) { method setTuiCachedTeamBoard (line 4135) | private void setTuiCachedTeamBoard(List teamBoardLines) { method setTuiProcessInspector (line 4139) | private void setTuiProcessInspector(BashProcessInfo processInfo, BashP... method shouldAutoRefresh (line 4144) | private boolean shouldAutoRefresh(ManagedCodingSession session) { method shouldAnimateAppendOnlyFooter (line 4154) | private boolean shouldAnimateAppendOnlyFooter() { method beginTuiTurn (line 4161) | private void beginTuiTurn(String input) { method isTuiMode (line 4169) | private boolean isTuiMode() { method renderTuiIfEnabled (line 4173) | private void renderTuiIfEnabled(ManagedCodingSession session) { method shouldRunTurnsAsync (line 4179) | private boolean shouldRunTurnsAsync() { method runMainBufferTurn (line 4186) | private void runMainBufferTurn(final ManagedCodingSession session, fin... method isTurnInterrupted (line 4242) | private boolean isTurnInterrupted(String turnId, ActiveTuiTurn activeT... method registerMainBufferTurn (line 4246) | private void registerMainBufferTurn(String turnId, Thread worker) { method clearMainBufferTurnInterruptState (line 4254) | private void clearMainBufferTurnInterruptState(String turnId) { method interruptActiveMainBufferTurn (line 4265) | private boolean interruptActiveMainBufferTurn(String turnId) { method isMainBufferTurnInterrupted (line 4282) | private boolean isMainBufferTurnInterrupted(String turnId) { method buildModelConnectionStatus (line 4288) | private String buildModelConnectionStatus(ManagedCodingSession session) { method handleMainBufferTurnInterrupted (line 4303) | private void handleMainBufferTurnInterrupted(ManagedCodingSession sess... method hasActiveTuiTurn (line 4314) | private boolean hasActiveTuiTurn() { method startAsyncTuiTurn (line 4319) | private void startAsyncTuiTurn(ManagedCodingSession session, String in... method interruptActiveTuiTurn (line 4328) | private void interruptActiveTuiTurn(ManagedCodingSession session) { method reapCompletedTuiTurn (line 4340) | private ManagedCodingSession reapCompletedTuiTurn(ManagedCodingSession... method startTuiTurnAnimation (line 4355) | private void startTuiTurnAnimation(final ManagedCodingSession session) { method shouldAnimateTuiTurn (line 4382) | private boolean shouldAnimateTuiTurn() { method stopTuiTurnAnimation (line 4390) | private void stopTuiTurnAnimation() { method useAlternateScreenTui (line 4404) | private boolean useAlternateScreenTui() { method shouldRenderModelDelta (line 4408) | private boolean shouldRenderModelDelta(String delta) { method buildTuiRenderContext (line 4424) | private TuiRenderContext buildTuiRenderContext() { method closeQuietly (line 4438) | private void closeQuietly(ManagedCodingSession session) { method closeMcpRuntimeQuietly (line 4449) | private void closeMcpRuntimeQuietly(CliMcpRuntimeManager runtimeManage... method refreshSessionContext (line 4460) | private void refreshSessionContext(ManagedCodingSession session) { method attachCodingTaskEventBridge (line 4472) | private void attachCodingTaskEventBridge() { method detachCodingTaskEventBridge (line 4491) | private void detachCodingTaskEventBridge() { method handleCodingTaskSessionEvent (line 4499) | private void handleCodingTaskSessionEvent(SessionEvent event) { method maskSecret (line 4512) | private String maskSecret(String value) { method appendCompactEvent (line 4523) | private void appendCompactEvent(ManagedCodingSession session, CodingSe... method appendEvent (line 4547) | private void appendEvent(ManagedCodingSession session, method resolveProcessEventType (line 4573) | private SessionEventType resolveProcessEventType(String action, String... method appendProcessEvent (line 4589) | private void appendProcessEvent(ManagedCodingSession session, method extractProcessObject (line 4623) | private JSONObject extractProcessObject(String action, String output) { method buildProcessSummary (line 4644) | private String buildProcessSummary(SessionEventType eventType, String ... method parseLimit (line 4658) | private Integer parseLimit(String raw) { method resolveCompactMode (line 4671) | private String resolveCompactMode(SessionEvent event) { method formatCompactDelta (line 4686) | private String formatCompactDelta(Integer before, Integer after) { method defaultInt (line 4693) | private int defaultInt(Integer value) { method payloadInt (line 4697) | private Integer payloadInt(Map payload, String key) { method payloadBoolean (line 4715) | private boolean payloadBoolean(Map payload, String key) { method payloadString (line 4729) | private String payloadString(Map payload, String key) { method payloadLines (line 4737) | private List payloadLines(Map payload, String ... method toStringLines (line 4762) | private List toStringLines(Iterable source) { method wrapPrefixedText (line 4779) | private List wrapPrefixedText(String firstPrefix, String conti... method safeTrimToNull (line 4806) | private String safeTrimToNull(String value) { method repeat (line 4810) | private String repeat(char ch, int count) { method findWrapIndex (line 4821) | private int findWrapIndex(String text, int width) { method normalizeToolPreviewLines (line 4835) | private List normalizeToolPreviewLines(String toolName, String... method stripPreviewLabel (line 4861) | private String stripPreviewLabel(String previewLine) { method hasPayloadKey (line 4888) | private boolean hasPayloadKey(Map payload, String key) { method parseObject (line 4892) | private JSONObject parseObject(String value) { method toPanelLines (line 4903) | private String[] toPanelLines(String text, int maxChars, int maxLines) { method payloadOf (line 4919) | private Map payloadOf(Object... pairs) { method newTurnId (line 4933) | private String newTurnId() { method formatTimestamp (line 4937) | private String formatTimestamp(long epochMs) { method extractCommandArgument (line 4946) | private String extractCommandArgument(String command) { method renderStatusOutput (line 4957) | private String renderStatusOutput(ManagedCodingSession session, Coding... method handleStreamCommand (line 4986) | private ManagedCodingSession handleStreamCommand(ManagedCodingSession ... method renderStreamOutput (line 5018) | private String renderStreamOutput() { method renderSessionOutput (line 5030) | private String renderSessionOutput(ManagedCodingSession session) { method renderMcpSummary (line 5066) | private String renderMcpSummary() { method renderProvidersOutput (line 5101) | private String renderProvidersOutput() { method renderCurrentProviderOutput (line 5131) | private String renderCurrentProviderOutput() { method renderModelOutput (line 5147) | private String renderModelOutput() { method renderExperimentalOutput (line 5158) | private String renderExperimentalOutput() { method renderExperimentalState (line 5174) | private String renderExperimentalState(Boolean configuredValue, boolea... method normalizeExperimentalFeature (line 5179) | private String normalizeExperimentalFeature(String raw) { method parseExperimentalToggle (line 5197) | private Boolean parseExperimentalToggle(String raw) { method renderSkillsOutput (line 5211) | private String renderSkillsOutput(ManagedCodingSession session, String... method findSkill (line 5249) | private CodingSkillDescriptor findSkill(List sk... method renderSkillDetailOutput (line 5265) | private String renderSkillDetailOutput(CodingSkillDescriptor skill, Wo... method renderAgentsOutput (line 5276) | private String renderAgentsOutput(ManagedCodingSession session, String... method resolveSkillRoots (line 5311) | private List resolveSkillRoots(WorkspaceContext workspaceConte... method findAgent (line 5336) | private CodingAgentDefinition findAgent(List de... method renderAgentDetailOutput (line 5353) | private String renderAgentDetailOutput(CodingAgentDefinition definitio... method resolveAgentRoots (line 5371) | private List resolveAgentRoots() { method renderAllowedTools (line 5390) | private String renderAllowedTools(CodingAgentDefinition definition) { method joinWithComma (line 5407) | private String joinWithComma(List values) { method renderCheckpointOutput (line 5424) | private String renderCheckpointOutput(CodingSessionCheckpoint checkpoi... method renderSessionsOutput (line 5431) | private String renderSessionsOutput(List sess... method renderEventsOutput (line 5449) | private String renderEventsOutput(List events) { method renderReplayOutput (line 5464) | private String renderReplayOutput(List replayLines) { method renderProcessesOutput (line 5475) | private String renderProcessesOutput(List processes) { method renderProcessStatusOutput (line 5492) | private String renderProcessStatusOutput(BashProcessInfo processInfo) { method renderProcessDetailsOutput (line 5501) | private String renderProcessDetailsOutput(BashProcessInfo processInfo,... method renderPanel (line 5510) | private String renderPanel(String title, String... lines) { method resolveToolCallKey (line 5525) | private String resolveToolCallKey(AgentToolCall call) { method resolveToolResultKey (line 5535) | private String resolveToolResultKey(AgentToolResult result) { method buildPendingToolView (line 5545) | private TuiAssistantToolView buildPendingToolView(AgentToolCall call) { method buildCompletedToolView (line 5560) | private TuiAssistantToolView buildCompletedToolView(AgentToolCall call... method isToolError (line 5574) | private boolean isToolError(AgentToolResult result, JSONObject output) { method isApprovalRejectedToolResult (line 5578) | private boolean isApprovalRejectedToolResult(AgentToolResult result) { method isApprovalRejectedToolError (line 5582) | private boolean isApprovalRejectedToolError(String rawOutput, JSONObje... method extractToolError (line 5587) | private String extractToolError(String rawOutput, JSONObject output) { method extractRawToolError (line 5595) | private String extractRawToolError(String rawOutput, JSONObject output) { method stripApprovalRejectedPrefix (line 5613) | private String stripApprovalRejectedPrefix(String error) { method buildToolTitle (line 5624) | private String buildToolTitle(String toolName, JSONObject arguments) { method buildPendingToolDetail (line 5660) | private String buildPendingToolDetail(String toolName, JSONObject argu... method buildPendingToolPreviewLines (line 5695) | private List buildPendingToolPreviewLines(String toolName, JSO... method buildCompletedToolDetail (line 5710) | private String buildCompletedToolDetail(String toolName, method isMcpToolName (line 5767) | private boolean isMcpToolName(String toolName) { method qualifyMcpToolName (line 5771) | private String qualifyMcpToolName(String toolName) { method formatToolArgumentSummary (line 5783) | private String formatToolArgumentSummary(JSONObject arguments) { method formatInlineToolArgumentValue (line 5815) | private String formatInlineToolArgumentValue(Object value) { method buildToolPreviewLines (line 5828) | private List buildToolPreviewLines(String toolName, method addPreviewLines (line 5877) | private void addPreviewLines(List target, String label, String... method addCommandPreviewLines (line 5895) | private void addCommandPreviewLines(List target, String stdout... method addPlainPreviewLines (line 5911) | private void addPlainPreviewLines(List target, String raw) { method addSummarizedPreview (line 5918) | private void addSummarizedPreview(List target, List li... method collectNonBlankLines (line 5933) | private List collectNonBlankLines(String raw) { method addPreviewLine (line 5947) | private void addPreviewLine(List target, String label, String ... class TuiLiveTurnState (line 5954) | private final class TuiLiveTurnState { method beginTurn (line 5970) | private synchronized void beginTurn(String input) { method onStepStart (line 5985) | private synchronized void onStepStart(Integer step) { method onModelDelta (line 5994) | private synchronized void onModelDelta(Integer step, String delta) { method onReasoningDelta (line 6004) | private synchronized void onReasoningDelta(Integer step, String delt... method onRetry (line 6016) | private synchronized void onRetry(Integer step, String detail) { method onToolCall (line 6023) | private synchronized void onToolCall(Integer step, TuiAssistantToolV... method onToolResult (line 6033) | private synchronized void onToolResult(Integer step, TuiAssistantToo... method onStepEnd (line 6047) | private synchronized void onStepEnd(Integer step) { method onFinalOutput (line 6056) | private synchronized void onFinalOutput(Integer step, String output) { method onError (line 6085) | private synchronized void onError(Integer step, String errorMessage) { method finishTurn (line 6092) | private synchronized void finishTurn(Integer step, String output) { method flushPendingText (line 6106) | private synchronized String flushPendingText() { method flushPendingReasoning (line 6112) | private synchronized String flushPendingReasoning() { method flushLiveReasoning (line 6118) | private synchronized String flushLiveReasoning() { method flushLiveText (line 6124) | private synchronized String flushLiveText() { method pendingReasoning (line 6130) | private synchronized String pendingReasoning() { method pendingText (line 6137) | private synchronized String pendingText() { method pendingLiveReasoning (line 6144) | private synchronized String pendingLiveReasoning() { method pendingLiveText (line 6151) | private synchronized String pendingLiveText() { method hasPendingReasoning (line 6158) | private synchronized boolean hasPendingReasoning() { method hasPendingText (line 6162) | private synchronized boolean hasPendingText() { method currentText (line 6166) | private synchronized String currentText() { method textBeforeFinalOutput (line 6170) | private synchronized String textBeforeFinalOutput() { method toViewModel (line 6174) | private synchronized TuiAssistantViewModel toViewModel() { method advanceAnimationTick (line 6187) | private synchronized boolean advanceAnimationTick() { method isSpinnerActive (line 6199) | private synchronized boolean isSpinnerActive() { method touch (line 6205) | private void touch() { class MainBufferTurnPrinter (line 6211) | private final class MainBufferTurnPrinter { method beginTurn (line 6219) | private synchronized void beginTurn(String input) { method finishTurn (line 6227) | private synchronized void finishTurn() { method showThinking (line 6235) | private synchronized void showThinking() { method showConnecting (line 6242) | private synchronized void showConnecting(String text) { method showRetrying (line 6249) | private synchronized void showRetrying(String text, int attempt, int... method showResponding (line 6256) | private synchronized void showResponding() { method showStatus (line 6263) | private synchronized void showStatus(String text) { method clearTransient (line 6270) | private synchronized void clearTransient() { method printSectionBreak (line 6278) | private synchronized void printSectionBreak() { method printBlock (line 6283) | private synchronized void printBlock(List lines) { method printAssistantBlock (line 6288) | private synchronized void printAssistantBlock(String text) { method replaceAssistantBlock (line 6312) | private synchronized boolean replaceAssistantBlock(String previousTe... method discardAssistantBlock (line 6318) | private synchronized void discardAssistantBlock() { method streamAssistant (line 6338) | private synchronized void streamAssistant(String delta) { method streamReasoning (line 6342) | private synchronized void streamReasoning(String delta) { method shellTerminal (line 6346) | private JlineShellTerminalIO shellTerminal() { method transcriptPrinter (line 6350) | private TranscriptPrinter transcriptPrinter() { method streamLiveTranscript (line 6357) | private void streamLiveTranscript(LiveTranscriptKind kind, String de... method ensureLiveTranscript (line 6389) | private void ensureLiveTranscript(LiveTranscriptKind kind) { method finishLiveTranscript (line 6406) | private void finishLiveTranscript() { method emitLiveTranscriptFragment (line 6426) | private void emitLiveTranscriptFragment(LiveTranscriptKind kind, Str... method streamAssistantMarkdown (line 6442) | private void streamAssistantMarkdown(String delta) { method emitCompletedAssistantLine (line 6457) | private void emitCompletedAssistantLine() { method flushAssistantRemainder (line 6477) | private void flushAssistantRemainder() { method emitLiveTranscriptLine (line 6499) | private void emitLiveTranscriptLine(String line) { method emitLiveTranscriptAssistantLine (line 6510) | private void emitLiveTranscriptAssistantLine(String line, boolean ne... method enterTranscriptCodeBlock (line 6534) | private void enterTranscriptCodeBlock(String language) { method beginAssistantBlockTracking (line 6541) | private void beginAssistantBlockTracking() { method exitTranscriptCodeBlock (line 6548) | private void exitTranscriptCodeBlock() { method trimBlankEdges (line 6555) | private List trimBlankEdges(String[] rawLines) { method sameText (line 6574) | private boolean sameText(String left, String right) { type LiveTranscriptKind (line 6579) | private enum LiveTranscriptKind { class DispatchResult (line 6584) | private static final class DispatchResult { method DispatchResult (line 6589) | private DispatchResult(ManagedCodingSession session, boolean exitReq... method stay (line 6594) | private static DispatchResult stay(ManagedCodingSession session) { method exit (line 6598) | private static DispatchResult exit(ManagedCodingSession session) { method getSession (line 6602) | private ManagedCodingSession getSession() { method isExitRequested (line 6606) | private boolean isExitRequested() { method safeMessage (line 6611) | private String safeMessage(Throwable throwable) { method firstNonBlank (line 6619) | private String firstNonBlank(String... values) { method isBlank (line 6631) | private boolean isBlank(String value) { method safeEquals (line 6635) | private boolean safeEquals(String left, String right) { method sameTurnId (line 6639) | private boolean sameTurnId(String left, String right) { method isExitCommand (line 6646) | private boolean isExitCommand(String input) { method clip (line 6651) | private String clip(String value, int maxChars) { class CliAgentListener (line 6655) | private final class CliAgentListener implements AgentListener { method CliAgentListener (line 6666) | private CliAgentListener(ManagedCodingSession session, String turnId... method onEvent (line 6672) | @Override method close (line 6814) | private void close() { method shouldIgnoreEvents (line 6818) | private boolean shouldIgnoreEvents() { method retryPayloadInt (line 6822) | private int retryPayloadInt(Object payload, String key) { method handleToolCall (line 6842) | private void handleToolCall(AgentEvent event) { method handleToolResult (line 6879) | private void handleToolResult(AgentEvent event) { method handleHandoffEvent (line 6910) | private void handleHandoffEvent(AgentEvent event) { method handleTeamTaskEvent (line 6925) | private void handleTeamTaskEvent(AgentEvent event) { method handleTeamMessageEvent (line 6940) | private void handleTeamMessageEvent(AgentEvent event) { method flushFinalOutput (line 6955) | private void flushFinalOutput() { method flushPendingAssistantText (line 6978) | private void flushPendingAssistantText(Integer step) { method flushPendingReasoning (line 6989) | private void flushPendingReasoning(Integer step) { method flushPendingText (line 7005) | private void flushPendingText(Integer step) { method streamMainBufferReasoningDelta (line 7019) | private void streamMainBufferReasoningDelta() { method streamMainBufferAssistantDelta (line 7026) | private void streamMainBufferAssistantDelta() { class ActiveTuiTurn (line 7037) | private final class ActiveTuiTurn { method ActiveTuiTurn (line 7047) | private ActiveTuiTurn(ManagedCodingSession session, String input) { method start (line 7052) | private void start() { method requestInterrupt (line 7069) | private boolean requestInterrupt() { method getSession (line 7081) | private ManagedCodingSession getSession() { method getTurnId (line 7085) | private String getTurnId() { method isInterrupted (line 7089) | private boolean isInterrupted() { method isDone (line 7093) | private boolean isDone() { method getFailure (line 7097) | private Exception getFailure() { method computeAssistantReplayPlan (line 7102) | private AssistantReplayPlan computeAssistantReplayPlan(String currentT... method computeRenderedSupplementalReplayLines (line 7121) | private List computeRenderedSupplementalReplayLines(List currentLines, Lis... method normalizeAssistantComparisonText (line 7154) | private String normalizeAssistantComparisonText(List lines) { method assistantTextMatches (line 7168) | private boolean assistantTextMatches(String currentText, String finalT... method assistantComparisonLine (line 7173) | private String assistantComparisonLine(String line) { method joinLines (line 7186) | private String joinLines(List lines) { method clipPreserveNewlines (line 7200) | private String clipPreserveNewlines(String value, int maxChars) { class McpAddCommand (line 7211) | private static final class McpAddCommand { method McpAddCommand (line 7216) | private McpAddCommand(String name, CliMcpServerDefinition definition) { class ProviderProfileMutation (line 7222) | private static final class ProviderProfileMutation { method ProviderProfileMutation (line 7234) | private ProviderProfileMutation(String profileName) { method hasAnyFieldChanges (line 7238) | private boolean hasAnyFieldChanges() { class AssistantReplayPlan (line 7250) | private static final class AssistantReplayPlan { method AssistantReplayPlan (line 7255) | private AssistantReplayPlan(boolean replaceBlock, List suppl... method none (line 7262) | private static AssistantReplayPlan none() { method append (line 7266) | private static AssistantReplayPlan append(List supplementalL... method replace (line 7270) | private static AssistantReplayPlan replace(List supplemental... method replaceBlock (line 7274) | private boolean replaceBlock() { method supplementalLines (line 7278) | private List supplementalLines() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/runtime/CodingCliTuiSupport.java class CodingCliTuiSupport (line 8) | public class CodingCliTuiSupport { method CodingCliTuiSupport (line 15) | public CodingCliTuiSupport(TuiConfig config, method getConfig (line 25) | public TuiConfig getConfig() { method getTheme (line 29) | public TuiTheme getTheme() { method getRenderer (line 33) | public TuiRenderer getRenderer() { method getRuntime (line 37) | public TuiRuntime getRuntime() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/runtime/CodingTaskSessionEventBridge.java class CodingTaskSessionEventBridge (line 19) | public class CodingTaskSessionEventBridge implements CodingRuntimeListen... type SessionEventConsumer (line 21) | public interface SessionEventConsumer { method onEvent (line 23) | void onEvent(SessionEvent event); method CodingTaskSessionEventBridge (line 29) | public CodingTaskSessionEventBridge(CodingSessionManager sessionManage... method CodingTaskSessionEventBridge (line 33) | public CodingTaskSessionEventBridge(CodingSessionManager sessionManage... method onTaskCreated (line 38) | @Override method onTaskUpdated (line 43) | @Override method toTaskCreatedEvent (line 48) | public SessionEvent toTaskCreatedEvent(CodingTask task, CodingSessionL... method toTaskUpdatedEvent (line 62) | public SessionEvent toTaskUpdatedEvent(CodingTask task) { method append (line 76) | private void append(SessionEvent event) { method buildPayload (line 91) | private Map buildPayload(CodingTask task, CodingSessio... method buildSummary (line 114) | private String buildSummary(CodingTask task) { method buildTitle (line 120) | private String buildTitle(CodingTask task) { method previewLines (line 128) | private List previewLines(String raw) { method normalizeStatus (line 144) | private String normalizeStatus(CodingTaskStatus status) { method firstNonBlank (line 148) | private String firstNonBlank(String... values) { method trimToNull (line 160) | private String trimToNull(String value) { method isBlank (line 168) | private boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/runtime/HeadlessCodingSessionRuntime.java class HeadlessCodingSessionRuntime (line 28) | public class HeadlessCodingSessionRuntime { method HeadlessCodingSessionRuntime (line 35) | public HeadlessCodingSessionRuntime(CodeCommandOptions options, Coding... method runPrompt (line 40) | public PromptResult runPrompt(ManagedCodingSession session, method appendCancelledEvent (line 89) | private void appendCancelledEvent(ManagedCodingSession session, String... method appendAutoCompactEvent (line 95) | private void appendAutoCompactEvent(ManagedCodingSession session, Stri... method appendLoopDecisionEvents (line 136) | private void appendLoopDecisionEvents(ManagedCodingSession session, method persistSession (line 168) | private void persistSession(ManagedCodingSession session) { method appendEvent (line 178) | private void appendEvent(ManagedCodingSession session, method appendEvent (line 200) | private void appendEvent(ManagedCodingSession session, SessionEvent ev... method newTurnId (line 207) | private String newTurnId() { method payloadOf (line 211) | private Map payloadOf(Object... values) { method clip (line 225) | private String clip(String value, int maxChars) { method clipPreserveNewlines (line 236) | private String clipPreserveNewlines(String value, int maxChars) { method safeMessage (line 246) | private String safeMessage(Throwable throwable) { method isBlank (line 262) | private boolean isBlank(String value) { class PromptControl (line 266) | public static final class PromptControl { method attach (line 271) | void attach(Thread worker) { method detach (line 275) | void detach() { method cancel (line 279) | public void cancel() { method isCancelled (line 289) | public boolean isCancelled() { class PromptResult (line 294) | public static final class PromptResult { method PromptResult (line 301) | private PromptResult(String turnId, String finalOutput, String stopR... method completed (line 308) | public static PromptResult completed(String turnId, String finalOutp... method cancelled (line 312) | public static PromptResult cancelled(String turnId, String finalOutp... method getTurnId (line 316) | public String getTurnId() { method getFinalOutput (line 320) | public String getFinalOutput() { method getStopReason (line 324) | public String getStopReason() { method getCodingStopReason (line 328) | public CodingStopReason getCodingStopReason() { method mapPromptStopReason (line 332) | private static String mapPromptStopReason(CodingStopReason codingSto... class HeadlessAgentListener (line 341) | private final class HeadlessAgentListener implements AgentListener { method HeadlessAgentListener (line 353) | private HeadlessAgentListener(ManagedCodingSession session, method onEvent (line 363) | @Override method handleReasoning (line 408) | private void handleReasoning(AgentEvent event) { method handleAssistant (line 416) | private void handleAssistant(AgentEvent event) { method handleToolCall (line 427) | private void handleToolCall(AgentEvent event) { method handleToolResult (line 449) | private void handleToolResult(AgentEvent event) { method handleHandoffEvent (line 467) | private void handleHandoffEvent(AgentEvent event) { method handleTeamEvent (line 476) | private void handleTeamEvent(AgentEvent event) { method handleTeamMessageEvent (line 485) | private void handleTeamMessageEvent(AgentEvent event) { method flushPendingAssistantText (line 494) | private void flushPendingAssistantText(Integer step) { method flushPendingReasoning (line 499) | private void flushPendingReasoning(Integer step) { method flushPendingText (line 510) | private void flushPendingText(Integer step) { method flushFinalOutput (line 522) | private String flushFinalOutput() { method getFinalOutput (line 527) | private String getFinalOutput() { method close (line 531) | private void close() { method resolveToolCallKey (line 535) | private String resolveToolCallKey(AgentToolCall call) { method resolveToolResultKey (line 539) | private String resolveToolResultKey(AgentToolResult result) { method isApprovalRejectedToolResult (line 543) | private boolean isApprovalRejectedToolResult(AgentToolResult result) { method firstNonBlank (line 549) | private String firstNonBlank(String... values) { method formatStopReason (line 562) | private String formatStopReason(CodingStopReason stopReason) { method firstNonBlank (line 570) | private String firstNonBlank(String... values) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/runtime/HeadlessTurnObserver.java type HeadlessTurnObserver (line 8) | public interface HeadlessTurnObserver { method onTurnStarted (line 10) | void onTurnStarted(ManagedCodingSession session, String turnId, String... method onReasoningDelta (line 12) | void onReasoningDelta(ManagedCodingSession session, String turnId, Int... method onAssistantDelta (line 14) | void onAssistantDelta(ManagedCodingSession session, String turnId, Int... method onToolCall (line 16) | void onToolCall(ManagedCodingSession session, String turnId, Integer s... method onToolResult (line 18) | void onToolResult(ManagedCodingSession session, method onTurnCompleted (line 25) | void onTurnCompleted(ManagedCodingSession session, String turnId, Stri... method onTurnError (line 27) | void onTurnError(ManagedCodingSession session, String turnId, Integer ... method onSessionEvent (line 29) | void onSessionEvent(ManagedCodingSession session, SessionEvent event); class Adapter (line 31) | class Adapter implements HeadlessTurnObserver { method onTurnStarted (line 33) | @Override method onReasoningDelta (line 37) | @Override method onAssistantDelta (line 41) | @Override method onToolCall (line 45) | @Override method onToolResult (line 49) | @Override method onTurnCompleted (line 58) | @Override method onTurnError (line 62) | @Override method onSessionEvent (line 66) | @Override FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/runtime/TeamBoardRenderSupport.java class TeamBoardRenderSupport (line 19) | public final class TeamBoardRenderSupport { method TeamBoardRenderSupport (line 23) | private TeamBoardRenderSupport() { method renderBoardLines (line 26) | public static List renderBoardLines(List events) { method renderBoardLines (line 72) | public static List renderBoardLines(AgentTeamState state) { method renderBoardOutput (line 118) | public static String renderBoardOutput(List lines) { method aggregate (line 129) | private static Aggregation aggregate(List events) { method aggregate (line 170) | private static Aggregation aggregate(AgentTeamState state) { method buildLanes (line 241) | private static List buildLanes(Aggregation aggregation) { method lane (line 293) | private static LaneState lane(Map lanes, String key... method applyTaskEvent (line 309) | private static void applyTaskEvent(TaskState state, SessionEvent event) { method toMessageState (line 336) | private static MessageState toMessageState(SessionEvent event) { method isTeamTaskEvent (line 358) | private static boolean isTeamTaskEvent(SessionEvent event) { method resolveTaskId (line 375) | private static String resolveTaskId(SessionEvent event) { method taskBadge (line 388) | private static String taskBadge(TaskState task) { method taskLabel (line 408) | private static String taskLabel(TaskState task) { method messageLabel (line 417) | private static String messageLabel(MessageState message) { method lanePriority (line 438) | private static int lanePriority(LaneState lane) { method taskPriority (line 449) | private static int taskPriority(TaskState task) { method intValue (line 466) | private static int intValue(Map payload, String key, i... method longValue (line 478) | private static long longValue(Map payload, String key,... method payloadString (line 490) | private static String payloadString(Map payload, Strin... method taskMemberId (line 498) | private static String taskMemberId(AgentTeamTask task) { method firstPositive (line 502) | private static long firstPositive(long... values) { method memberLabelMap (line 514) | private static Map memberLabelMap(List list() throws IOException; method delete (line 33) | void delete(String sessionId) throws IOException; method appendEvent (line 35) | SessionEvent appendEvent(String sessionId, SessionEvent event) throws ... method listEvents (line 37) | List listEvents(String sessionId, Integer limit, Long of... method getDirectory (line 39) | Path getDirectory(); FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/session/CodingSessionStore.java type CodingSessionStore (line 7) | public interface CodingSessionStore { method save (line 9) | StoredCodingSession save(StoredCodingSession session) throws IOException; method load (line 11) | StoredCodingSession load(String sessionId) throws IOException; method list (line 13) | List list() throws IOException; method getDirectory (line 15) | Path getDirectory(); FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/session/DefaultCodingSessionManager.java class DefaultCodingSessionManager (line 21) | public class DefaultCodingSessionManager implements CodingSessionManager { method DefaultCodingSessionManager (line 26) | public DefaultCodingSessionManager(CodingSessionStore sessionStore, Se... method create (line 31) | @Override method resume (line 56) | @Override method fork (line 86) | @Override method save (line 125) | @Override method load (line 156) | @Override method list (line 168) | @Override method delete (line 193) | @Override method appendEvent (line 205) | @Override method listEvents (line 218) | @Override method getDirectory (line 226) | @Override method describe (line 231) | public CodingSessionDescriptor describe(ManagedCodingSession session) { method baseEvent (line 235) | private SessionEvent baseEvent(String sessionId, SessionEventType type... method normalizeRootSessionId (line 244) | private String normalizeRootSessionId(StoredCodingSession session) { method assertWorkspaceMatches (line 248) | private void assertWorkspaceMatches(StoredCodingSession storedSession,... method isBlank (line 260) | private boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/session/FileCodingSessionStore.java class FileCodingSessionStore (line 16) | public class FileCodingSessionStore implements CodingSessionStore { method FileCodingSessionStore (line 20) | public FileCodingSessionStore(Path directory) { method save (line 24) | @Override method load (line 55) | @Override method list (line 74) | @Override method getDirectory (line 95) | @Override method resolveFile (line 100) | private Path resolveFile(String sessionId) { method sanitizeSessionId (line 104) | private String sanitizeSessionId(String sessionId) { method normalize (line 108) | private StoredCodingSession normalize(StoredCodingSession session, Pat... method firstNonBlank (line 116) | private String firstNonBlank(String... values) { method isBlank (line 128) | private boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/session/FileSessionEventStore.java class FileSessionEventStore (line 15) | public class FileSessionEventStore implements SessionEventStore { method FileSessionEventStore (line 19) | public FileSessionEventStore(Path directory) { method append (line 23) | @Override method list (line 35) | @Override method delete (line 69) | @Override method getDirectory (line 77) | @Override method resolveFile (line 82) | private Path resolveFile(String sessionId) { method isBlank (line 86) | private boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/session/InMemoryCodingSessionStore.java class InMemoryCodingSessionStore (line 12) | public class InMemoryCodingSessionStore implements CodingSessionStore { method InMemoryCodingSessionStore (line 17) | public InMemoryCodingSessionStore(Path directory) { method save (line 21) | @Override method load (line 46) | @Override method list (line 58) | @Override method getDirectory (line 71) | @Override method normalize (line 76) | private StoredCodingSession normalize(StoredCodingSession session) { method firstNonBlank (line 87) | private String firstNonBlank(String... values) { method isBlank (line 99) | private boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/session/InMemorySessionEventStore.java class InMemorySessionEventStore (line 13) | public class InMemorySessionEventStore implements SessionEventStore { method append (line 18) | @Override method list (line 32) | @Override method delete (line 52) | @Override method getDirectory (line 60) | @Override method isBlank (line 65) | private boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/session/SessionEventStore.java type SessionEventStore (line 9) | public interface SessionEventStore { method append (line 11) | SessionEvent append(SessionEvent event) throws IOException; method list (line 13) | List list(String sessionId, Integer limit, Long offset) ... method delete (line 15) | void delete(String sessionId) throws IOException; method getDirectory (line 17) | Path getDirectory(); FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/session/StoredCodingSession.java class StoredCodingSession (line 5) | public class StoredCodingSession { method StoredCodingSession (line 27) | public StoredCodingSession() { method StoredCodingSession (line 30) | public StoredCodingSession(String sessionId, method builder (line 70) | public static Builder builder() { method toBuilder (line 74) | public Builder toBuilder() { method getSessionId (line 97) | public String getSessionId() { method setSessionId (line 101) | public void setSessionId(String sessionId) { method getRootSessionId (line 105) | public String getRootSessionId() { method setRootSessionId (line 109) | public void setRootSessionId(String rootSessionId) { method getParentSessionId (line 113) | public String getParentSessionId() { method setParentSessionId (line 117) | public void setParentSessionId(String parentSessionId) { method getProvider (line 121) | public String getProvider() { method setProvider (line 125) | public void setProvider(String provider) { method getProtocol (line 129) | public String getProtocol() { method setProtocol (line 133) | public void setProtocol(String protocol) { method getModel (line 137) | public String getModel() { method setModel (line 141) | public void setModel(String model) { method getWorkspace (line 145) | public String getWorkspace() { method setWorkspace (line 149) | public void setWorkspace(String workspace) { method getWorkspaceDescription (line 153) | public String getWorkspaceDescription() { method setWorkspaceDescription (line 157) | public void setWorkspaceDescription(String workspaceDescription) { method getSystemPrompt (line 161) | public String getSystemPrompt() { method setSystemPrompt (line 165) | public void setSystemPrompt(String systemPrompt) { method getInstructions (line 169) | public String getInstructions() { method setInstructions (line 173) | public void setInstructions(String instructions) { method getSummary (line 177) | public String getSummary() { method setSummary (line 181) | public void setSummary(String summary) { method getMemoryItemCount (line 185) | public int getMemoryItemCount() { method setMemoryItemCount (line 189) | public void setMemoryItemCount(int memoryItemCount) { method getProcessCount (line 193) | public int getProcessCount() { method setProcessCount (line 197) | public void setProcessCount(int processCount) { method getActiveProcessCount (line 201) | public int getActiveProcessCount() { method setActiveProcessCount (line 205) | public void setActiveProcessCount(int activeProcessCount) { method getRestoredProcessCount (line 209) | public int getRestoredProcessCount() { method setRestoredProcessCount (line 213) | public void setRestoredProcessCount(int restoredProcessCount) { method getCreatedAtEpochMs (line 217) | public long getCreatedAtEpochMs() { method setCreatedAtEpochMs (line 221) | public void setCreatedAtEpochMs(long createdAtEpochMs) { method getUpdatedAtEpochMs (line 225) | public long getUpdatedAtEpochMs() { method setUpdatedAtEpochMs (line 229) | public void setUpdatedAtEpochMs(long updatedAtEpochMs) { method getStorePath (line 233) | public String getStorePath() { method setStorePath (line 237) | public void setStorePath(String storePath) { method getState (line 241) | public CodingSessionState getState() { method setState (line 245) | public void setState(CodingSessionState state) { class Builder (line 249) | public static final class Builder { method Builder (line 271) | private Builder() { method sessionId (line 274) | public Builder sessionId(String sessionId) { method rootSessionId (line 279) | public Builder rootSessionId(String rootSessionId) { method parentSessionId (line 284) | public Builder parentSessionId(String parentSessionId) { method provider (line 289) | public Builder provider(String provider) { method protocol (line 294) | public Builder protocol(String protocol) { method model (line 299) | public Builder model(String model) { method workspace (line 304) | public Builder workspace(String workspace) { method workspaceDescription (line 309) | public Builder workspaceDescription(String workspaceDescription) { method systemPrompt (line 314) | public Builder systemPrompt(String systemPrompt) { method instructions (line 319) | public Builder instructions(String instructions) { method summary (line 324) | public Builder summary(String summary) { method memoryItemCount (line 329) | public Builder memoryItemCount(int memoryItemCount) { method processCount (line 334) | public Builder processCount(int processCount) { method activeProcessCount (line 339) | public Builder activeProcessCount(int activeProcessCount) { method restoredProcessCount (line 344) | public Builder restoredProcessCount(int restoredProcessCount) { method createdAtEpochMs (line 349) | public Builder createdAtEpochMs(long createdAtEpochMs) { method updatedAtEpochMs (line 354) | public Builder updatedAtEpochMs(long updatedAtEpochMs) { method storePath (line 359) | public Builder storePath(String storePath) { method state (line 364) | public Builder state(CodingSessionState state) { method build (line 369) | public StoredCodingSession build() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/shell/JlineCodeCommandRunner.java class JlineCodeCommandRunner (line 15) | public final class JlineCodeCommandRunner { method JlineCodeCommandRunner (line 30) | public JlineCodeCommandRunner(CodingAgent agent, method runCommand (line 56) | public int runCommand() throws Exception { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/shell/JlineShellContext.java class JlineShellContext (line 16) | public final class JlineShellContext implements AutoCloseable { method JlineShellContext (line 22) | private JlineShellContext(Terminal terminal, LineReader lineReader, St... method openSystem (line 28) | public static JlineShellContext openSystem(SlashCommandController slas... method terminal (line 55) | Terminal terminal() { method lineReader (line 59) | LineReader lineReader() { method status (line 63) | Status status() { method close (line 67) | @Override method resolveCharset (line 77) | private static Charset resolveCharset() { method isWindows (line 99) | private static boolean isWindows() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/shell/JlineShellTerminalIO.java class JlineShellTerminalIO (line 25) | public final class JlineShellTerminalIO implements TerminalIO { method JlineShellTerminalIO (line 69) | public JlineShellTerminalIO(JlineShellContext shellContext, SlashComma... method readLine (line 100) | @Override method print (line 116) | @Override method println (line 121) | @Override method errorln (line 126) | @Override method supportsAnsi (line 131) | @Override method supportsRawInput (line 136) | @Override method isInputClosed (line 141) | @Override method getTerminalRows (line 146) | @Override method getTerminalColumns (line 151) | @Override method updateSessionContext (line 156) | public void updateSessionContext(String sessionId, String model, Strin... method updateTheme (line 177) | public void updateTheme(TuiTheme theme) { method showIdle (line 185) | public void showIdle(String hint) { method beginTurn (line 204) | public void beginTurn(String input) { method beginTurnInterruptWatch (line 213) | public void beginTurnInterruptWatch(Runnable interruptHandler) { method beginTurnInterruptPolling (line 232) | public void beginTurnInterruptPolling() { method pollTurnInterrupt (line 252) | public boolean pollTurnInterrupt(long timeoutMs) { method showThinking (line 269) | public void showThinking() { method showConnecting (line 273) | public void showConnecting(String detail) { method showResponding (line 277) | public void showResponding() { method showWorking (line 281) | public void showWorking(String detail) { method showRetrying (line 285) | public void showRetrying(String detail, int attempt, int maxAttempts) { method clearTransient (line 290) | public void clearTransient() { method finishTurn (line 295) | public void finishTurn() { method endTurnInterruptWatch (line 301) | public void endTurnInterruptWatch() { method endTurnInterruptPolling (line 307) | public void endTurnInterruptPolling() { method printAssistantFragment (line 313) | public void printAssistantFragment(String message) { method printReasoningFragment (line 317) | public void printReasoningFragment(String message) { method printTranscriptLine (line 321) | public void printTranscriptLine(String line, boolean newline) { method printTranscriptBlock (line 325) | public void printTranscriptBlock(List lines) { method printAssistantMarkdownBlock (line 339) | public void printAssistantMarkdownBlock(String markdown) { method enterTranscriptCodeBlock (line 347) | public void enterTranscriptCodeBlock(String language) { method exitTranscriptCodeBlock (line 351) | public void exitTranscriptCodeBlock() { method beginAssistantBlockTracking (line 355) | public void beginAssistantBlockTracking() { method beginDirectOutputWindow (line 362) | public void beginDirectOutputWindow() { method endDirectOutputWindow (line 368) | public void endDirectOutputWindow() { method assistantBlockRows (line 374) | public int assistantBlockRows() { method clearAssistantBlock (line 380) | public void clearAssistantBlock() { method forgetAssistantBlock (line 390) | public void forgetAssistantBlock() { method rewriteAssistantBlock (line 398) | public boolean rewriteAssistantBlock(int previousRows, String replacem... method close (line 408) | @Override method lineReader (line 417) | private LineReader lineReader() { method terminal (line 421) | private Terminal terminal() { method status (line 425) | private Status status() { method runSpinnerLoop (line 429) | private void runSpinnerLoop() { method watchForTurnInterrupt (line 455) | private void watchForTurnInterrupt(Runnable interruptHandler) { method readTurnInterruptChar (line 486) | private int readTurnInterruptChar(Terminal terminal) throws IOException { method readTurnInterruptChar (line 490) | private int readTurnInterruptChar(Terminal terminal, long timeoutMs) t... method isTurnInterruptRunning (line 500) | private boolean isTurnInterruptRunning() { method stopTurnInterruptWatchLocked (line 506) | private void stopTurnInterruptWatchLocked(boolean join) { method stopTurnInterruptPollingLocked (line 523) | private void stopTurnInterruptPollingLocked() { method showBusyState (line 535) | private void showBusyState(BusyState nextBusyState, String label, Stri... method redrawStatus (line 557) | private void redrawStatus() { method redrawInlineStatus (line 593) | private void redrawInlineStatus(String statusPayload) { method buildPrimaryStatusLine (line 637) | private String buildPrimaryStatusLine() { method buildStatusLines (line 646) | private List buildStatusLines() { method buildSlashPaletteLines (line 667) | private List buildSlashPaletteLines(SlashCommandController.Pal... method buildStatusLine (line 712) | private String buildStatusLine() { method currentStatusLine (line 725) | public String currentStatusLine() { method snapshotBusyState (line 729) | private BusySnapshot snapshotBusyState() { method snapshotBusyStateLocked (line 735) | private BusySnapshot snapshotBusyStateLocked() { method waitingLabelFor (line 753) | private String waitingLabelFor(BusyState state, String fallback) { method waitingDetailFor (line 760) | private String waitingDetailFor(BusyState state, String detail, long i... method stalledDetailFor (line 776) | private String stalledDetailFor(BusyState state, String detail, long i... method buildSessionLine (line 792) | private String buildSessionLine() { method buildHintLine (line 800) | private String buildHintLine() { method joinStatusPayload (line 804) | private String joinStatusPayload(List lines) { method stylePrintedMessage (line 818) | private String stylePrintedMessage(String message) { method writeOutput (line 833) | private void writeOutput(String message, boolean newline) { method writeOutput (line 837) | private void writeOutput(String message, boolean newline, boolean trac... method writeStyledOutput (line 845) | private void writeStyledOutput(String message, boolean newline) { method writeStyledOutput (line 849) | private void writeStyledOutput(String message, boolean newline, boolea... method rewriteAssistantBlockDirect (line 909) | private boolean rewriteAssistantBlockDirect(int previousRows, String r... method clearAssistantBlockDirect (line 960) | private boolean clearAssistantBlockDirect(int previousRows, boolean re... method redrawInputLine (line 1005) | private void redrawInputLine() { method countOutputRows (line 1020) | private int countOutputRows(String message, boolean newline, boolean r... method countWrappedRows (line 1037) | private int countWrappedRows(String message, int startColumn) { method normalizeReadingPrintAboveMessage (line 1049) | private String normalizeReadingPrintAboveMessage(String message) { method lastPathSegment (line 1066) | private String lastPathSegment(String value) { method clip (line 1075) | private String clip(String value, int maxChars) { method firstNonBlank (line 1079) | private String firstNonBlank(String... values) { method isBlank (line 1091) | private boolean isBlank(String value) { method sameText (line 1095) | private boolean sameText(String left, String right) { method resolveDurationProperty (line 1102) | private long resolveDurationProperty(String key, long fallback) { type BusyState (line 1115) | private enum BusyState { class BusySnapshot (line 1124) | private static final class BusySnapshot { method BusySnapshot (line 1129) | private BusySnapshot(String label, String detail, boolean spinnerAct... method isJetBrainsTerminal (line 1136) | private boolean isJetBrainsTerminal() { method resolveStatusComponentEnabled (line 1156) | private boolean resolveStatusComponentEnabled() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/cli/shell/WindowsConsoleKeyPoller.java class WindowsConsoleKeyPoller (line 6) | public final class WindowsConsoleKeyPoller { method isSupported (line 13) | boolean isSupported() { method resetEscapeState (line 17) | void resetEscapeState() { method pollEscapePressed (line 25) | boolean pollEscapePressed() { method isDown (line 36) | private static boolean isDown(short state) { method wasPressedSinceLastPoll (line 40) | private static boolean wasPressedSinceLastPoll(short state) { method loadUser32 (line 44) | private static User32 loadUser32() { method isWindows (line 55) | private static boolean isWindows() { type User32 (line 60) | interface User32 extends Library { method GetAsyncKeyState (line 61) | short GetAsyncKeyState(int vKey); FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/AnsiTuiRuntime.java class AnsiTuiRuntime (line 5) | public class AnsiTuiRuntime extends DefaultAnsiTuiRuntime { method AnsiTuiRuntime (line 7) | public AnsiTuiRuntime(TerminalIO terminal, TuiRenderer renderer) { method AnsiTuiRuntime (line 11) | public AnsiTuiRuntime(TerminalIO terminal, TuiRenderer renderer, boole... FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/AppendOnlyTuiRuntime.java class AppendOnlyTuiRuntime (line 5) | public class AppendOnlyTuiRuntime extends DefaultAppendOnlyTuiRuntime { method AppendOnlyTuiRuntime (line 7) | public AppendOnlyTuiRuntime(TerminalIO terminal) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/JlineTerminalIO.java class JlineTerminalIO (line 12) | public class JlineTerminalIO extends DefaultJlineTerminalIO { method JlineTerminalIO (line 14) | private JlineTerminalIO(Terminal terminal, OutputStream errStream) { method openSystem (line 18) | public static JlineTerminalIO openSystem(OutputStream errStream) throw... FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/StreamsTerminalIO.java class StreamsTerminalIO (line 9) | public class StreamsTerminalIO extends DefaultStreamsTerminalIO { method StreamsTerminalIO (line 11) | public StreamsTerminalIO(InputStream in, OutputStream out, OutputStrea... method StreamsTerminalIO (line 15) | StreamsTerminalIO(InputStream in, OutputStream out, OutputStream err, ... method StreamsTerminalIO (line 19) | StreamsTerminalIO(InputStream in, method resolveTerminalCharset (line 27) | public static Charset resolveTerminalCharset() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TerminalIO.java type TerminalIO (line 5) | public interface TerminalIO { method readLine (line 7) | String readLine(String prompt) throws IOException; method readKeyStroke (line 9) | default TuiKeyStroke readKeyStroke() throws IOException { method readKeyStroke (line 13) | default TuiKeyStroke readKeyStroke(long timeoutMs) throws IOException { method print (line 17) | void print(String message); method println (line 19) | void println(String message); method errorln (line 21) | void errorln(String message); method supportsAnsi (line 23) | default boolean supportsAnsi() { method supportsRawInput (line 27) | default boolean supportsRawInput() { method isInputClosed (line 31) | default boolean isInputClosed() { method clearScreen (line 35) | default void clearScreen() { method enterAlternateScreen (line 38) | default void enterAlternateScreen() { method exitAlternateScreen (line 41) | default void exitAlternateScreen() { method hideCursor (line 44) | default void hideCursor() { method showCursor (line 47) | default void showCursor() { method moveCursorHome (line 50) | default void moveCursorHome() { method getTerminalRows (line 53) | default int getTerminalRows() { method getTerminalColumns (line 57) | default int getTerminalColumns() { method close (line 61) | default void close() throws IOException { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiAnsi.java class TuiAnsi (line 3) | final class TuiAnsi { method TuiAnsi (line 8) | private TuiAnsi() { method bold (line 11) | static String bold(String value, boolean ansi) { method fg (line 15) | static String fg(String value, String hexColor, boolean ansi) { method bg (line 19) | static String bg(String value, String hexColor, boolean ansi) { method badge (line 23) | static String badge(String value, String foreground, String background... method colorize (line 30) | static String colorize(String value, String hexColor, boolean ansi, bo... method style (line 34) | static String style(String value, String foreground, String background... method appendColorCode (line 54) | private static void appendColorCode(StringBuilder codes, String prefix... method parseHex (line 67) | private static int[] parseHex(String hexColor) { method isBlank (line 82) | private static boolean isBlank(String value) { method isEmpty (line 86) | private static boolean isEmpty(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiAssistantPhase.java type TuiAssistantPhase (line 3) | public enum TuiAssistantPhase { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiAssistantToolView.java class TuiAssistantToolView (line 11) | @Data FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiAssistantViewModel.java class TuiAssistantViewModel (line 11) | @Data FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiConfig.java class TuiConfig (line 3) | public class TuiConfig { method getTheme (line 12) | public String getTheme() { method setTheme (line 16) | public void setTheme(String theme) { method isDenseMode (line 20) | public boolean isDenseMode() { method setDenseMode (line 24) | public void setDenseMode(boolean denseMode) { method isShowTimestamps (line 28) | public boolean isShowTimestamps() { method setShowTimestamps (line 32) | public void setShowTimestamps(boolean showTimestamps) { method isShowFooter (line 36) | public boolean isShowFooter() { method setShowFooter (line 40) | public void setShowFooter(boolean showFooter) { method getMaxEvents (line 44) | public int getMaxEvents() { method setMaxEvents (line 48) | public void setMaxEvents(int maxEvents) { method isUseAlternateScreen (line 52) | public boolean isUseAlternateScreen() { method setUseAlternateScreen (line 56) | public void setUseAlternateScreen(boolean useAlternateScreen) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiConfigManager.java class TuiConfigManager (line 19) | public class TuiConfigManager { method TuiConfigManager (line 32) | public TuiConfigManager(Path workspaceRoot) { method load (line 36) | public TuiConfig load(String overrideTheme) { method save (line 48) | public TuiConfig save(TuiConfig config) throws IOException { method switchTheme (line 57) | public TuiConfig switchTheme(String themeName) throws IOException { method resolveTheme (line 70) | public TuiTheme resolveTheme(String name) { method listThemeNames (line 93) | public List listThemeNames() { method merge (line 101) | private TuiConfig merge(TuiConfig base, TuiConfig override) { method loadConfig (line 105) | private TuiConfig loadConfig(Path path) { method loadTheme (line 116) | private TuiTheme loadTheme(Path path) { method loadBuiltInTheme (line 127) | private TuiTheme loadBuiltInTheme(String name) { method readAllBytes (line 140) | private byte[] readAllBytes(InputStream inputStream) throws IOException { method scanThemeNames (line 150) | private List scanThemeNames(Path dir) { method normalize (line 172) | private void normalize(TuiConfig config) { method normalize (line 184) | private void normalize(TuiTheme theme, String fallbackName) { method defaultTheme (line 244) | private TuiTheme defaultTheme() { method workspaceConfigPath (line 250) | private Path workspaceConfigPath() { method workspaceThemesDir (line 254) | private Path workspaceThemesDir() { method workspaceThemePath (line 258) | private Path workspaceThemePath(String name) { method homeConfigPath (line 262) | private Path homeConfigPath() { method homeThemesDir (line 267) | private Path homeThemesDir() { method homeThemePath (line 272) | private Path homeThemePath(String name) { method isBlank (line 277) | private boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiInteractionState.java class TuiInteractionState (line 8) | public class TuiInteractionState { type PaletteMode (line 10) | public enum PaletteMode { method setRenderCallback (line 33) | public synchronized void setRenderCallback(Runnable renderCallback) { method getApprovalSnapshot (line 37) | public synchronized ApprovalSnapshot getApprovalSnapshot() { method getFocusedPanel (line 41) | public synchronized TuiPanelId getFocusedPanel() { method getInputBuffer (line 45) | public synchronized String getInputBuffer() { method getProcessInputBuffer (line 49) | public synchronized String getProcessInputBuffer() { method isPaletteOpen (line 53) | public synchronized boolean isPaletteOpen() { method getPaletteQuery (line 57) | public synchronized String getPaletteQuery() { method getPaletteMode (line 61) | public synchronized PaletteMode getPaletteMode() { method getPaletteSelectedIndex (line 65) | public synchronized int getPaletteSelectedIndex() { method getPaletteItems (line 69) | public synchronized List getPaletteItems() { method getSelectedProcessId (line 73) | public synchronized String getSelectedProcessId() { method isProcessInspectorOpen (line 77) | public synchronized boolean isProcessInspectorOpen() { method isReplayViewerOpen (line 81) | public synchronized boolean isReplayViewerOpen() { method isTeamBoardOpen (line 85) | public synchronized boolean isTeamBoardOpen() { method getReplayScrollOffset (line 89) | public synchronized int getReplayScrollOffset() { method getTeamBoardScrollOffset (line 93) | public synchronized int getTeamBoardScrollOffset() { method getTranscriptScrollOffset (line 97) | public synchronized int getTranscriptScrollOffset() { method setFocusedPanel (line 101) | public void setFocusedPanel(TuiPanelId focusedPanel) { method focusNextPanel (line 105) | public void focusNextPanel() { method appendInput (line 113) | public void appendInput(String text) { method backspaceInput (line 120) | public void backspaceInput() { method consumeInputBuffer (line 128) | public synchronized String consumeInputBuffer() { method consumeInputBufferSilently (line 135) | public synchronized String consumeInputBufferSilently() { method clearInputBuffer (line 141) | public void clearInputBuffer() { method replaceInputBuffer (line 145) | public void replaceInputBuffer(String value) { method replaceInputBufferAndClosePalette (line 154) | public void replaceInputBufferAndClosePalette(String value) { method appendInputAndSyncSlashPalette (line 164) | public void appendInputAndSyncSlashPalette(String text, List ite... method syncSlashPalette (line 183) | public void syncSlashPalette(List items) { method appendProcessInput (line 187) | public void appendProcessInput(String text) { method backspaceProcessInput (line 194) | public void backspaceProcessInput() { method consumeProcessInputBuffer (line 202) | public synchronized String consumeProcessInputBuffer() { method clearProcessInputBuffer (line 209) | public void clearProcessInputBuffer() { method openPalette (line 213) | public void openPalette(List items) { method openSlashPalette (line 217) | public void openSlashPalette(List items, String input) { method refreshSlashPalette (line 221) | public void refreshSlashPalette(List items, String inp... method openPalette (line 227) | private void openPalette(List items, PaletteMode mode,... method closePalette (line 237) | public void closePalette() { method closePaletteSilently (line 241) | public synchronized void closePaletteSilently() { method appendPaletteQuery (line 245) | public void appendPaletteQuery(String text) { method backspacePaletteQuery (line 255) | public void backspacePaletteQuery() { method movePaletteSelection (line 264) | public void movePaletteSelection(int delta) { method selectProcess (line 280) | public void selectProcess(String processId) { method selectAdjacentProcess (line 284) | public void selectAdjacentProcess(List processIds, int delta) { method openProcessInspector (line 303) | public void openProcessInspector(String processId) { method closeProcessInspector (line 315) | public void closeProcessInspector() { method openReplayViewer (line 322) | public void openReplayViewer() { method closeReplayViewer (line 331) | public void closeReplayViewer() { method moveReplayScroll (line 335) | public void moveReplayScroll(int delta) { method openTeamBoard (line 339) | public void openTeamBoard() { method closeTeamBoard (line 348) | public void closeTeamBoard() { method moveTeamBoardScroll (line 352) | public void moveTeamBoardScroll(int delta) { method resetTranscriptScroll (line 356) | public void resetTranscriptScroll() { method moveTranscriptScroll (line 365) | public void moveTranscriptScroll(int delta) { method getSelectedPaletteItem (line 369) | public synchronized TuiPaletteItem getSelectedPaletteItem() { method showApproval (line 378) | public void showApproval(String mode, String toolName, String summary) { method resolveApproval (line 382) | public void resolveApproval(String toolName, boolean approved) { method clearApproval (line 386) | public void clearApproval() { method filterPaletteItems (line 390) | private synchronized List filterPaletteItems() { method matches (line 416) | private boolean matches(String query, String value) { method syncSlashPaletteState (line 420) | private void syncSlashPaletteState(List items) { method openSlashPaletteState (line 431) | private void openSlashPaletteState(List items, String ... method closePaletteState (line 439) | private void closePaletteState() { method shouldOpenSlashPalette (line 446) | private boolean shouldOpenSlashPalette(String input) { method updateApproval (line 453) | private void updateApproval(ApprovalSnapshot snapshot) { method updateState (line 460) | private void updateState(StateMutation mutation) { method triggerRender (line 467) | private void triggerRender() { method isBlank (line 477) | private boolean isBlank(String value) { method normalizeSlashQuery (line 481) | private String normalizeSlashQuery(String input) { method firstNonBlank (line 492) | private String firstNonBlank(String... values) { type StateMutation (line 504) | private interface StateMutation { method apply (line 505) | void apply(); class ApprovalSnapshot (line 508) | public static final class ApprovalSnapshot { method ApprovalSnapshot (line 516) | private ApprovalSnapshot(boolean pending, method pending (line 528) | public static ApprovalSnapshot pending(String mode, String toolName,... method resolved (line 532) | public static ApprovalSnapshot resolved(String toolName, boolean app... method idle (line 540) | public static ApprovalSnapshot idle(String lastDecision) { method isPending (line 544) | public boolean isPending() { method getMode (line 548) | public String getMode() { method getToolName (line 552) | public String getToolName() { method getSummary (line 556) | public String getSummary() { method getLastDecision (line 560) | public String getLastDecision() { method defaultText (line 564) | private static String defaultText(String value, String defaultValue) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiKeyStroke.java class TuiKeyStroke (line 3) | public class TuiKeyStroke { method TuiKeyStroke (line 8) | private TuiKeyStroke(TuiKeyType type, String text) { method of (line 13) | public static TuiKeyStroke of(TuiKeyType type) { method character (line 17) | public static TuiKeyStroke character(String text) { method getType (line 21) | public TuiKeyType getType() { method getText (line 25) | public String getText() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiKeyType.java type TuiKeyType (line 3) | public enum TuiKeyType { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiPaletteItem.java class TuiPaletteItem (line 3) | public class TuiPaletteItem { method TuiPaletteItem (line 11) | public TuiPaletteItem(String id, String group, String label, String de... method getId (line 19) | public String getId() { method getGroup (line 23) | public String getGroup() { method getLabel (line 27) | public String getLabel() { method getDetail (line 31) | public String getDetail() { method getCommand (line 35) | public String getCommand() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiPanelId.java type TuiPanelId (line 3) | public enum TuiPanelId { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiRenderContext.java class TuiRenderContext (line 3) | public class TuiRenderContext { method TuiRenderContext (line 15) | private TuiRenderContext(Builder builder) { method builder (line 27) | public static Builder builder() { method getProvider (line 31) | public String getProvider() { method getProtocol (line 35) | public String getProtocol() { method getModel (line 39) | public String getModel() { method getWorkspace (line 43) | public String getWorkspace() { method getSessionStore (line 47) | public String getSessionStore() { method getSessionMode (line 51) | public String getSessionMode() { method getApprovalMode (line 55) | public String getApprovalMode() { method getTerminalRows (line 59) | public int getTerminalRows() { method getTerminalColumns (line 63) | public int getTerminalColumns() { class Builder (line 67) | public static final class Builder { method Builder (line 79) | private Builder() { method provider (line 82) | public Builder provider(String provider) { method protocol (line 87) | public Builder protocol(String protocol) { method model (line 92) | public Builder model(String model) { method workspace (line 97) | public Builder workspace(String workspace) { method sessionStore (line 102) | public Builder sessionStore(String sessionStore) { method sessionMode (line 107) | public Builder sessionMode(String sessionMode) { method approvalMode (line 112) | public Builder approvalMode(String approvalMode) { method terminalRows (line 117) | public Builder terminalRows(int terminalRows) { method terminalColumns (line 122) | public Builder terminalColumns(int terminalColumns) { method build (line 127) | public TuiRenderContext build() { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiRenderer.java type TuiRenderer (line 3) | public interface TuiRenderer { method getMaxEvents (line 5) | int getMaxEvents(); method getThemeName (line 7) | String getThemeName(); method updateTheme (line 9) | void updateTheme(TuiConfig config, TuiTheme theme); method render (line 11) | String render(TuiScreenModel screenModel); FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiRuntime.java type TuiRuntime (line 5) | public interface TuiRuntime { method supportsRawInput (line 7) | boolean supportsRawInput(); method enter (line 9) | void enter(); method exit (line 11) | void exit(); method readKeyStroke (line 13) | TuiKeyStroke readKeyStroke(long timeoutMs) throws IOException; method render (line 15) | void render(TuiScreenModel screenModel); FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiScreenModel.java class TuiScreenModel (line 13) | public class TuiScreenModel { method TuiScreenModel (line 34) | private TuiScreenModel(Builder builder) { method builder (line 55) | public static Builder builder() { method getConfig (line 59) | public TuiConfig getConfig() { method getTheme (line 63) | public TuiTheme getTheme() { method getDescriptor (line 67) | public CodingSessionDescriptor getDescriptor() { method getSnapshot (line 71) | public CodingSessionSnapshot getSnapshot() { method getCheckpoint (line 75) | public CodingSessionCheckpoint getCheckpoint() { method getRenderContext (line 79) | public TuiRenderContext getRenderContext() { method getInteractionState (line 83) | public TuiInteractionState getInteractionState() { method getCachedSessions (line 87) | public List getCachedSessions() { method getCachedHistory (line 91) | public List getCachedHistory() { method getCachedTree (line 95) | public List getCachedTree() { method getCachedCommands (line 99) | public List getCachedCommands() { method getCachedEvents (line 103) | public List getCachedEvents() { method getCachedReplay (line 107) | public List getCachedReplay() { method getCachedTeamBoard (line 111) | public List getCachedTeamBoard() { method getInspectedProcess (line 115) | public BashProcessInfo getInspectedProcess() { method getInspectedProcessLogs (line 119) | public BashProcessLogChunk getInspectedProcessLogs() { method getAssistantOutput (line 123) | public String getAssistantOutput() { method getAssistantViewModel (line 127) | public TuiAssistantViewModel getAssistantViewModel() { class Builder (line 131) | public static final class Builder { method Builder (line 152) | private Builder() { method config (line 155) | public Builder config(TuiConfig config) { method theme (line 160) | public Builder theme(TuiTheme theme) { method descriptor (line 165) | public Builder descriptor(CodingSessionDescriptor descriptor) { method snapshot (line 170) | public Builder snapshot(CodingSessionSnapshot snapshot) { method checkpoint (line 175) | public Builder checkpoint(CodingSessionCheckpoint checkpoint) { method renderContext (line 180) | public Builder renderContext(TuiRenderContext renderContext) { method interactionState (line 185) | public Builder interactionState(TuiInteractionState interactionState) { method cachedSessions (line 190) | public Builder cachedSessions(List cachedSe... method cachedHistory (line 195) | public Builder cachedHistory(List cachedHistory) { method cachedTree (line 200) | public Builder cachedTree(List cachedTree) { method cachedCommands (line 205) | public Builder cachedCommands(List cachedCommands) { method cachedEvents (line 210) | public Builder cachedEvents(List cachedEvents) { method cachedReplay (line 215) | public Builder cachedReplay(List cachedReplay) { method cachedTeamBoard (line 220) | public Builder cachedTeamBoard(List cachedTeamBoard) { method inspectedProcess (line 225) | public Builder inspectedProcess(BashProcessInfo inspectedProcess) { method inspectedProcessLogs (line 230) | public Builder inspectedProcessLogs(BashProcessLogChunk inspectedPro... method assistantOutput (line 235) | public Builder assistantOutput(String assistantOutput) { method assistantViewModel (line 240) | public Builder assistantViewModel(TuiAssistantViewModel assistantVie... method build (line 245) | public TuiScreenModel build() { method copy (line 249) | private static List copy(List source) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiSessionView.java class TuiSessionView (line 24) | public class TuiSessionView implements TuiRenderer { method TuiSessionView (line 71) | public TuiSessionView(TuiConfig config, TuiTheme theme, boolean ansi) { method updateTheme (line 77) | public void updateTheme(TuiConfig config, TuiTheme theme) { method getMaxEvents (line 82) | public int getMaxEvents() { return config == null || config.getMaxEven... method getThemeName (line 83) | public String getThemeName() { return theme == null ? "default" : them... method setCachedSessions (line 84) | public void setCachedSessions(List sessions) ... method setCachedEvents (line 85) | public void setCachedEvents(List events) { this.cachedEv... method setCachedHistory (line 86) | public void setCachedHistory(List historyLines) { this.cachedH... method setCachedTree (line 87) | public void setCachedTree(List treeLines) { this.cachedTree = ... method setCachedCommands (line 88) | public void setCachedCommands(List commandLines) { this.cached... method setAssistantOutput (line 89) | public void setAssistantOutput(String assistantOutput) { this.assistan... method setAssistantViewModel (line 90) | public void setAssistantViewModel(TuiAssistantViewModel assistantViewM... method setCachedReplay (line 91) | public void setCachedReplay(List replayLines) { this.cachedRep... method setCachedTeamBoard (line 92) | public void setCachedTeamBoard(List teamBoardLines) { this.cac... method setProcessInspector (line 93) | public void setProcessInspector(BashProcessInfo process, BashProcessLo... method render (line 95) | @Override method render (line 125) | public String render(ManagedCodingSession session, TuiRenderContext co... method applyModel (line 140) | private void applyModel(TuiScreenModel screenModel) { method renderHeader (line 160) | private String renderHeader(CodingSessionDescriptor descriptor, TuiRen... method buildFeedLines (line 185) | private List buildFeedLines(int transcriptViewport) { method appendEventFeed (line 197) | private void appendEventFeed(List lines) { method appendLiveAssistantFeed (line 278) | private void appendLiveAssistantFeed(List lines) { method appendTaskEventLines (line 305) | private void appendTaskEventLines(List lines, SessionEvent eve... method appendTeamMessageLines (line 353) | private void appendTeamMessageLines(List lines, SessionEvent e... method appendAssistantNote (line 371) | private void appendAssistantNote(List lines) { method resolveTranscriptViewport (line 384) | private int resolveTranscriptViewport(TuiRenderContext context, String... method sliceTranscriptLines (line 402) | private List sliceTranscriptLines(List transcriptLines... method countRenderedLines (line 418) | private int countRenderedLines(String value) { method trimTrailingBlankLines (line 431) | private void trimTrailingBlankLines(List lines) { method filterUnpersistedLiveTools (line 440) | private List filterUnpersistedLiveTools(List buildPersistedToolKeys() { method buildCompletedToolKeys (line 480) | private Set buildCompletedToolKeys(List events) { method buildToolIdentity (line 497) | private String buildToolIdentity(Map payload) { method buildToolIdentity (line 511) | private String buildToolIdentity(TuiAssistantToolView tool) { method appendAssistantMarkdown (line 523) | private void appendAssistantMarkdown(List lines, String rawTex... method appendReasoningMarkdown (line 527) | private void appendReasoningMarkdown(List lines, String rawTex... method appendMarkdownBlock (line 553) | private void appendMarkdownBlock(List lines, method appendStartupTips (line 584) | private void appendStartupTips(List lines) { method buildAssistantStatusLine (line 596) | private String buildAssistantStatusLine(TuiAssistantViewModel viewMode... method appendToolLines (line 610) | private void appendToolLines(List lines, List lines, SessionEvent eve... method buildToolView (line 649) | private TuiAssistantToolView buildToolView(SessionEvent event) { method formatToolPrimaryLines (line 691) | private List formatToolPrimaryLines(TuiAssistantToolView tool) { method resolveToolPrimaryPrefix (line 711) | private String resolveToolPrimaryPrefix(String toolName, String title,... method normalizeToolPrimaryLabel (line 735) | private String normalizeToolPrimaryLabel(String title) { method formatToolDetail (line 758) | private String formatToolDetail(TuiAssistantToolView tool) { method formatToolPreviewLines (line 787) | private List formatToolPreviewLines(TuiAssistantToolView tool) { method normalizeToolPreviewLines (line 807) | private List normalizeToolPreviewLines(TuiAssistantToolView to... method stripPreviewLabel (line 835) | private String stripPreviewLabel(String previewLine) { method extractToolLabel (line 862) | private String extractToolLabel(TuiAssistantToolView tool) { method parseObject (line 873) | private JSONObject parseObject(String rawJson) { method isToolError (line 884) | private boolean isToolError(JSONObject output, String rawOutput) { method extractToolError (line 888) | private String extractToolError(JSONObject output, String rawOutput) { method buildToolTitle (line 902) | private String buildToolTitle(String toolName, JSONObject arguments) { method buildPendingToolDetail (line 930) | private String buildPendingToolDetail(String toolName, JSONObject argu... method buildPendingToolPreviewLines (line 959) | private List buildPendingToolPreviewLines(String toolName, JSO... method buildCompletedToolDetail (line 963) | private String buildCompletedToolDetail(String toolName, method buildToolPreviewLines (line 1007) | private List buildToolPreviewLines(String toolName, method addPreviewLines (line 1054) | private void addPreviewLines(List target, String label, String... method addCommandPreviewLines (line 1072) | private void addCommandPreviewLines(List target, String stdout... method addPlainPreviewLines (line 1088) | private void addPlainPreviewLines(List target, String raw) { method addSummarizedPreview (line 1095) | private void addSummarizedPreview(List target, List li... method collectNonBlankLines (line 1110) | private List collectNonBlankLines(String raw) { method addPreviewLine (line 1124) | private void addPreviewLine(List target, String label, String ... method renderOverlay (line 1131) | private String renderOverlay(TuiInteractionState state) { method renderComposerAddon (line 1150) | private String renderComposerAddon(TuiInteractionState state) { method renderModal (line 1157) | private String renderModal(String title, List lines) { method renderInlinePalette (line 1170) | private String renderInlinePalette(List lines) { method buildApprovalLines (line 1184) | private List buildApprovalLines(TuiInteractionState state) { method buildProcessOverlayTitle (line 1200) | private String buildProcessOverlayTitle(TuiInteractionState state) { method buildProcessInspectorLines (line 1205) | private List buildProcessInspectorLines(TuiInteractionState st... method buildReplayViewerLines (line 1226) | private List buildReplayViewerLines(TuiInteractionState state) { method buildTeamBoardViewerLines (line 1247) | private List buildTeamBoardViewerLines(TuiInteractionState sta... method buildPaletteLines (line 1268) | private List buildPaletteLines(TuiInteractionState state) { method renderComposer (line 1301) | private String renderComposer(TuiInteractionState state) { method renderModalLine (line 1313) | private String renderModalLine(String line) { method appendLines (line 1327) | private void appendLines(StringBuilder out, List lines) { method styleLine (line 1336) | private String styleLine(String line) { method normalizeStatusPhrase (line 1396) | private String normalizeStatusPhrase(String detail, TuiAssistantPhase ... method extractApprovalCommand (line 1450) | private String extractApprovalCommand(String summary) { method statusPrefix (line 1470) | private String statusPrefix(TuiAssistantViewModel viewModel) { method stripStatusPrefix (line 1485) | private String stripStatusPrefix(String line) { method renderAssistantLine (line 1497) | private String renderAssistantLine(String line, String assistantBody) { method renderReasoningLine (line 1517) | private String renderReasoningLine(String line, String reasoningBody) { method renderInlineMarkdown (line 1531) | private String renderInlineMarkdown(String text, String baseColor) { method appendStyledSegment (line 1563) | private void appendStyledSegment(StringBuilder out, String segment, St... method renderCodeBlockContent (line 1572) | private String renderCodeBlockContent(String content) { method renderCodeTokens (line 1579) | private String renderCodeTokens(String content) { method appendCodeToken (line 1633) | private void appendCodeToken(StringBuilder out, String token, String f... method isCodeKeyword (line 1640) | private boolean isCodeKeyword(String token) { method isHashCommentStart (line 1647) | private boolean isHashCommentStart(String content, int index) { method findStringEnd (line 1651) | private int findStringEnd(String content, int start) { method isNumberStart (line 1669) | private boolean isNumberStart(String content, int index) { method findNumberEnd (line 1679) | private int findNumberEnd(String content, int start) { method isHexDigit (line 1716) | private boolean isHexDigit(char value) { method isWordStart (line 1723) | private boolean isWordStart(char value) { method isWordPart (line 1727) | private boolean isWordPart(char value) { method codeBackgroundColor (line 1731) | private String codeBackgroundColor() { method codeTextColor (line 1735) | private String codeTextColor() { method codeKeywordColor (line 1740) | private String codeKeywordColor() { method codeStringColor (line 1745) | private String codeStringColor() { method codeCommentColor (line 1750) | private String codeCommentColor() { method codeNumberColor (line 1755) | private String codeNumberColor() { method stripInlineMarkdown (line 1760) | private String stripInlineMarkdown(String text) { method normalizeLegacyTranscriptLine (line 1767) | private String normalizeLegacyTranscriptLine(String line) { method extractAssistantBody (line 1783) | private String extractAssistantBody(String line) { method extractReasoningBody (line 1796) | private String extractReasoningBody(String line) { method resolveActiveInputBuffer (line 1809) | private String resolveActiveInputBuffer(TuiInteractionState state) { method hasPendingApproval (line 1819) | private boolean hasPendingApproval(TuiInteractionState state) { method lastAssistantMessage (line 1824) | private String lastAssistantMessage() { method appendRecentSessionHints (line 1837) | private void appendRecentSessionHints(List lines) { method shortenSessionId (line 1866) | private String shortenSessionId(String sessionId) { method payloadString (line 1877) | private String payloadString(Map payload, String key) { method payloadLines (line 1885) | private List payloadLines(Map payload, String ... method toStringLines (line 1910) | private List toStringLines(Iterable source) { method appendWrappedText (line 1927) | private void appendWrappedText(List lines, String prefix, Stri... method appendBlankLineIfNeeded (line 1945) | private void appendBlankLineIfNeeded(List lines) { method wrapPrefixedText (line 1954) | private List wrapPrefixedText(String firstPrefix, String conti... method findWrapIndex (line 1982) | private int findWrapIndex(String text, int width) { method appendMultiline (line 1996) | private void appendMultiline(List lines, String rawContent, in... method copyLines (line 2014) | private List copyLines(List lines, int maxLines) { method trimObjects (line 2022) | private List trimObjects(List source, int maxEntries) { method tailObjects (line 2030) | private List tailObjects(List source, int maxEntries) { method tailLines (line 2038) | private List tailLines(List source, int maxEntries) { method firstNonBlank (line 2047) | private String firstNonBlank(String... values) { method defaultText (line 2059) | private String defaultText(String value, String fallback) { method trimToNull (line 2063) | private String trimToNull(String value) { method lastPathSegment (line 2067) | private String lastPathSegment(String value) { method repeat (line 2076) | private String repeat(char c, int count) { method line (line 2087) | private String line(char c, int width) { method clip (line 2091) | private String clip(String value, int maxChars) { method clipCodeLine (line 2099) | private String clipCodeLine(String value, int maxChars) { method isBlank (line 2107) | private boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/TuiTheme.java class TuiTheme (line 3) | public class TuiTheme { method getName (line 24) | public String getName() { method setName (line 28) | public void setName(String name) { method getBrand (line 32) | public String getBrand() { method setBrand (line 36) | public void setBrand(String brand) { method getAccent (line 40) | public String getAccent() { method setAccent (line 44) | public void setAccent(String accent) { method getSuccess (line 48) | public String getSuccess() { method setSuccess (line 52) | public void setSuccess(String success) { method getWarning (line 56) | public String getWarning() { method setWarning (line 60) | public void setWarning(String warning) { method getDanger (line 64) | public String getDanger() { method setDanger (line 68) | public void setDanger(String danger) { method getText (line 72) | public String getText() { method setText (line 76) | public void setText(String text) { method getMuted (line 80) | public String getMuted() { method setMuted (line 84) | public void setMuted(String muted) { method getPanelBorder (line 88) | public String getPanelBorder() { method setPanelBorder (line 92) | public void setPanelBorder(String panelBorder) { method getPanelTitle (line 96) | public String getPanelTitle() { method setPanelTitle (line 100) | public void setPanelTitle(String panelTitle) { method getBadgeForeground (line 104) | public String getBadgeForeground() { method setBadgeForeground (line 108) | public void setBadgeForeground(String badgeForeground) { method getCodeBackground (line 112) | public String getCodeBackground() { method setCodeBackground (line 116) | public void setCodeBackground(String codeBackground) { method getCodeBorder (line 120) | public String getCodeBorder() { method setCodeBorder (line 124) | public void setCodeBorder(String codeBorder) { method getCodeText (line 128) | public String getCodeText() { method setCodeText (line 132) | public void setCodeText(String codeText) { method getCodeKeyword (line 136) | public String getCodeKeyword() { method setCodeKeyword (line 140) | public void setCodeKeyword(String codeKeyword) { method getCodeString (line 144) | public String getCodeString() { method setCodeString (line 148) | public void setCodeString(String codeString) { method getCodeComment (line 152) | public String getCodeComment() { method setCodeComment (line 156) | public void setCodeComment(String codeComment) { method getCodeNumber (line 160) | public String getCodeNumber() { method setCodeNumber (line 164) | public void setCodeNumber(String codeNumber) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/io/DefaultJlineTerminalIO.java class DefaultJlineTerminalIO (line 24) | public class DefaultJlineTerminalIO implements TerminalIO { method DefaultJlineTerminalIO (line 39) | protected DefaultJlineTerminalIO(Terminal terminal, OutputStream errSt... method openSystem (line 48) | public static DefaultJlineTerminalIO openSystem(OutputStream errStream... method readLine (line 57) | @Override method readKeyStroke (line 90) | @Override method readKeyStroke (line 97) | @Override method print (line 107) | @Override method println (line 114) | @Override method errorln (line 121) | @Override method supportsAnsi (line 127) | @Override method supportsRawInput (line 132) | @Override method isInputClosed (line 137) | @Override method clearScreen (line 142) | @Override method enterAlternateScreen (line 147) | @Override method exitAlternateScreen (line 152) | @Override method hideCursor (line 157) | @Override method showCursor (line 162) | @Override method moveCursorHome (line 167) | @Override method getTerminalRows (line 172) | @Override method getTerminalColumns (line 177) | @Override method close (line 182) | @Override method toKeyStroke (line 192) | private TuiKeyStroke toKeyStroke(int ch) throws IOException { method readEscapeSequence (line 222) | private TuiKeyStroke readEscapeSequence() throws IOException { method ensureRawMode (line 249) | private void ensureRawMode() { method restoreRawMode (line 257) | private void restoreRawMode() { method puts (line 265) | private void puts(InfoCmp.Capability capability) { method readChar (line 273) | private int readChar() throws IOException { method readChar (line 282) | private int readChar(long timeoutMs) throws IOException { method unreadChar (line 291) | private void unreadChar(int ch) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/io/DefaultStreamsTerminalIO.java class DefaultStreamsTerminalIO (line 18) | public class DefaultStreamsTerminalIO implements TerminalIO { method DefaultStreamsTerminalIO (line 36) | public DefaultStreamsTerminalIO(InputStream in, OutputStream out, Outp... method DefaultStreamsTerminalIO (line 40) | protected DefaultStreamsTerminalIO(InputStream in, OutputStream out, O... method DefaultStreamsTerminalIO (line 44) | protected DefaultStreamsTerminalIO(InputStream in, method readLine (line 57) | @Override method readKeyStroke (line 81) | @Override method readKeyStroke (line 113) | @Override method print (line 136) | @Override method println (line 142) | @Override method errorln (line 148) | @Override method supportsAnsi (line 154) | @Override method supportsRawInput (line 159) | @Override method isInputClosed (line 164) | @Override method clearScreen (line 169) | @Override method enterAlternateScreen (line 178) | @Override method exitAlternateScreen (line 183) | @Override method hideCursor (line 188) | @Override method showCursor (line 193) | @Override method moveCursorHome (line 198) | @Override method getTerminalRows (line 203) | @Override method getTerminalColumns (line 208) | @Override method readEscapeSequence (line 213) | private TuiKeyStroke readEscapeSequence() throws IOException { method emitAnsi (line 240) | private void emitAnsi(String value) { method hasBufferedInput (line 248) | private boolean hasBufferedInput() throws IOException { method parsePositiveInt (line 252) | private int parsePositiveInt(String value, int fallback) { method detectAnsiSupport (line 264) | private static boolean detectAnsiSupport() { method hasTermSupport (line 281) | private static boolean hasTermSupport(String term) { method resolveTerminalCharset (line 285) | public static Charset resolveTerminalCharset() { method resolveTerminalCharset (line 307) | static Charset resolveTerminalCharset(String[] explicitCandidates, method firstSupportedCharset (line 329) | private static Charset firstSupportedCharset(String[] candidates) { method shouldPreferUtf8 (line 342) | private static boolean shouldPreferUtf8() { method hasUtf8Locale (line 350) | private static boolean hasUtf8Locale(String value) { method consoleCharsetName (line 354) | private static String consoleCharsetName() { method toCharset (line 371) | private static Charset toCharset(String value) { method isBlank (line 382) | private static boolean isBlank(String value) { FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/runtime/DefaultAnsiTuiRuntime.java class DefaultAnsiTuiRuntime (line 10) | public class DefaultAnsiTuiRuntime implements TuiRuntime { method DefaultAnsiTuiRuntime (line 17) | public DefaultAnsiTuiRuntime(TerminalIO terminal, TuiRenderer renderer) { method DefaultAnsiTuiRuntime (line 21) | public DefaultAnsiTuiRuntime(TerminalIO terminal, TuiRenderer renderer... method supportsRawInput (line 27) | @Override method enter (line 32) | @Override method exit (line 44) | @Override method readKeyStroke (line 56) | @Override method render (line 61) | @Override FILE: ai4j-cli/src/main/java/io/github/lnyocly/ai4j/tui/runtime/DefaultAppendOnlyTuiRuntime.java class DefaultAppendOnlyTuiRuntime (line 24) | public class DefaultAppendOnlyTuiRuntime implements TuiRuntime { method DefaultAppendOnlyTuiRuntime (line 59) | public DefaultAppendOnlyTuiRuntime(TerminalIO terminal) { method supportsRawInput (line 63) | @Override method enter (line 68) | @Override method exit (line 78) | @Override method readKeyStroke (line 87) | @Override method render (line 92) | @Override method printSessionHeader (line 108) | private void printSessionHeader(TuiScreenModel screenModel) { method printSessionBoundaryIfNeeded (line 130) | private void printSessionBoundaryIfNeeded(TuiScreenModel screenModel) { method appendEventTranscript (line 141) | private void appendEventTranscript(TuiScreenModel screenModel) { method consumeLiveAssistantEvent (line 167) | private boolean consumeLiveAssistantEvent(SessionEvent event) { method appendLiveAssistantTranscript (line 193) | private void appendLiveAssistantTranscript(TuiScreenModel screenModel) { method normalizeLiveBuffer (line 219) | private String normalizeLiveBuffer(String value) { method appendLiveSuffix (line 223) | private void appendLiveSuffix(LiveBlock mode, String alreadyPrinted, S... method closeActiveLiveBlock (line 259) | private void closeActiveLiveBlock() { method resetLiveDedupState (line 268) | private void resetLiveDedupState() { method appendAssistantOutput (line 273) | private void appendAssistantOutput(TuiScreenModel screenModel) { method renderFooter (line 291) | private void renderFooter(TuiScreenModel screenModel) { method buildFooter (line 313) | private Footer buildFooter(TuiScreenModel screenModel) { method buildStatusLine (line 340) | private FooterLine buildStatusLine(TuiAssistantViewModel assistant, in... method statusPrefix (line 364) | private String statusPrefix(TuiAssistantViewModel assistant) { method animatedStatusPrefix (line 379) | private String animatedStatusPrefix(String label, TuiAssistantViewMode... method spinnerFrame (line 383) | private String spinnerFrame(int animationTick) { method normalizeStatusDetail (line 395) | private String normalizeStatusDetail(TuiAssistantPhase phase, String d... method buildPreviewLines (line 419) | private List buildPreviewLines(TuiScreenModel screenModel, method shouldShowInitialHint (line 434) | private boolean shouldShowInitialHint(TuiScreenModel screenModel, TuiA... method buildPaletteLines (line 445) | private List buildPaletteLines(TuiInteractionState interac... method paletteHeader (line 476) | private String paletteHeader(TuiInteractionState interaction) { method printTranscriptLines (line 487) | private void printTranscriptLines(List lines) { method clearFooter (line 499) | private void clearFooter() { method moveToFooterTop (line 510) | private void moveToFooterTop() { method clearFooterArea (line 520) | private void clearFooterArea() { method printFooterLines (line 537) | private void printFooterLines(List lines) { method placeCursor (line 549) | private void placeCursor(Footer footer) { method resolveWidth (line 563) | private int resolveWidth(TuiScreenModel screenModel) { method resolvePaletteCapacity (line 571) | private int resolvePaletteCapacity() { method formatEvent (line 579) | private List formatEvent(SessionEvent event) { method formatTaskEvent (line 630) | private List formatTaskEvent(Map payload, Stri... method formatTeamMessageEvent (line 648) | private List formatTeamMessageEvent(Map payloa... method formatReasoning (line 665) | private List formatReasoning(List content) { method formatToolResult (line 678) | private List formatToolResult(Map payload) { method formatProcessEvent (line 716) | private List formatProcessEvent(SessionEventType type, Map bulletBlock(List content, String label) { method formatInitialHintLines (line 781) | private List formatInitialHintLines(String output) { method appendLabelBlock (line 792) | private List appendLabelBlock(String label, List conte... method prefixBlock (line 803) | private List prefixBlock(String prefix, List content) { method buildFooterSignature (line 815) | private String buildFooterSignature(Footer footer) { method eventKey (line 831) | private String eventKey(SessionEvent event) { method splitLines (line 842) | private List splitLines(String text) { method payloadLines (line 854) | private List payloadLines(Map payload, String ... method payloadString (line 875) | private String payloadString(Map payload, String key) { method firstPendingTool (line 883) | private TuiAssistantToolView firstPendingTool(TuiAssistantViewModel as... method toolPrimaryLabel (line 895) | private String toolPrimaryLabel(TuiAssistantToolView tool, boolean pen... method normalizeToolLabel (line 906) | private String normalizeToolLabel(String title) { method looksLikeToolFailure (line 917) | private boolean looksLikeToolFailure(String output, String detail) { method shortenSessionId (line 926) | private String shortenSessionId(String sessionId) { method crop (line 937) | private String crop(String value, int width) { method displayWidth (line 956) | private int displayWidth(String text) { method charWidth (line 967) | private int charWidth(char ch) { method trimBlankEdges (line 972) | private String trimBlankEdges(String value) { method safeTrim (line 987) | private String safeTrim(String value) { method firstNonBlank (line 991) | private String firstNonBlank(String... values) { method isBlank (line 1003) | private boolean isBlank(String value) { method repeat (line 1007) | private String repeat(char ch, int count) { method lastPathSegment (line 1015) | private String lastPathSegment(String value) { method capitalize (line 1024) | private String capitalize(String value) { method equals (line 1031) | private boolean equals(String left, String right) { method colorize (line 1035) | private String colorize(String color, String text) { class Footer (line 1042) | private static final class Footer { method Footer (line 1048) | private Footer(List lines, int inputLineIndex, int curso... class FooterLine (line 1055) | private static final class FooterLine { method FooterLine (line 1060) | private FooterLine(String text, String style) { method render (line 1065) | private String render(DefaultAppendOnlyTuiRuntime runtime) { method isBlank (line 1072) | private static boolean isBlank(String value) { class InputViewport (line 1077) | private static final class InputViewport { method InputViewport (line 1082) | private InputViewport(String visibleText, int cursorColumns) { type LiveBlock (line 1088) | private enum LiveBlock { method firstPrefix (line 1093) | private String firstPrefix() { method continuationPrefix (line 1097) | private String continuationPrefix() { FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/Ai4jCliTest.java class Ai4jCliTest (line 25) | public class Ai4jCliTest { method test_top_level_help (line 27) | @Test method test_unknown_command_returns_argument_error (line 48) | @Test method test_top_level_tui_command_routes_to_tui_mode (line 67) | @Test class StubCodingCliAgentFactory (line 90) | private static final class StubCodingCliAgentFactory implements Coding... method prepare (line 92) | @Override class StubModelClient (line 103) | private static final class StubModelClient implements AgentModelClient { method create (line 105) | @Override method createStream (line 110) | @Override method findLastUserText (line 120) | private String findLastUserText(AgentPrompt prompt) { FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/AssistantTranscriptRendererTest.java class AssistantTranscriptRendererTest (line 15) | public class AssistantTranscriptRendererTest { method renderTurnsMarkdownCodeBlocksIntoTranscriptLines (line 17) | @Test method styleBlockHighlightsCodeWithoutLeakingFences (line 36) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/CliDisplayWidthTest.java class CliDisplayWidthTest (line 8) | public class CliDisplayWidthTest { method clipUsesDisplayWidthForChineseText (line 10) | @Test method wrapAnsiBreaksBeforeWideTextPushesLastSymbolPastEdge (line 18) | @Test method wrapAnsiHonorsExistingColumnOffset (line 30) | @Test method wrapAnsiDoesNotLeaveChinesePeriodAloneAtLineStart (line 42) | @Test method wrapAnsiDoesNotLeaveChineseColonAloneAtLineStart (line 54) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/CliMcpConfigManagerTest.java class CliMcpConfigManagerTest (line 15) | public class CliMcpConfigManagerTest { method saveLoadAndResolveMcpConfigs (line 17) | @Test method resolveMarksInvalidDefinitionsWithoutBlockingOtherServers (line 96) | @Test method restoreUserHome (line 142) | private void restoreUserHome(String value) { FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/CliMcpRuntimeManagerTest.java class CliMcpRuntimeManagerTest (line 15) | public class CliMcpRuntimeManagerTest { method connectedServerRegistersToolsAndRoutesCalls (line 17) | @Test method failedAndConflictingServersDoNotBlockHealthyServer (line 52) | @Test method indexStatuses (line 110) | private Map indexStatuses(List sessions) { method FakeClientFactory (line 178) | private FakeClientFactory(Map sessions, method create (line 184) | @Override class FakeClientSession (line 197) | private static final class FakeClientSession implements CliMcpRuntimeM... method FakeClientSession (line 205) | private FakeClientSession(List tools) { method connect (line 209) | @Override method listTools (line 214) | @Override method callTool (line 219) | @Override method close (line 229) | @Override FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/CliProviderConfigManagerTest.java class CliProviderConfigManagerTest (line 18) | public class CliProviderConfigManagerTest { method saveAndLoadProviderAndWorkspaceConfigs (line 20) | @Test method loadProvidersConfigMigratesLegacyAutoProtocol (line 80) | @Test method restoreUserHome (line 119) | private void restoreUserHome(String value) { FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/CliThemeStylerTest.java class CliThemeStylerTest (line 10) | public class CliThemeStylerTest { method styleTranscriptLineAddsAnsiForBulletBlocksWhenEnabled (line 11) | @Test method buildPrimaryStatusLineStylesSpinnerAndDetail (line 21) | @Test method ansiDisabledLeavesTranscriptPlain (line 32) | @Test method styleThinkingTranscriptLineUsesAnsiWhenEnabled (line 42) | @Test method buildCompactStatusLineIncludesStatusAndContext (line 52) | @Test method styleCodeBlockLineUsesAnsiWhenEnabled (line 72) | @Test method styleJavaCodeBlockUsesTranscriptStateForSyntaxHighlighting (line 85) | @Test method styleJsonCodeBlockHighlightsKeysAndLiterals (line 100) | @Test method ansiDisabledStripsInlineMarkdownMarkers (line 113) | @Test method styleHeadingAndQuoteUseAnsiWhenEnabled (line 122) | @Test method theme (line 135) | private TuiTheme theme() { FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/CodeCommandOptionsParserTest.java class CodeCommandOptionsParserTest (line 20) | public class CodeCommandOptionsParserTest { method test_parse_resolves_env_and_defaults (line 24) | @Test method test_help_does_not_require_model (line 48) | @Test method test_parse_ui_mode_from_env (line 62) | @Test method test_parse_session_options (line 77) | @Test method test_parse_stream_option (line 115) | @Test method test_invalid_provider_should_fail_fast (line 127) | @Test method test_no_session_cannot_resume_or_fork_on_startup (line 142) | @Test method test_parse_prefers_workspace_and_global_profile_config_before_env_fallbacks (line 169) | @Test method test_parse_cli_runtime_values_override_profile_config (line 226) | @Test method test_parse_rejects_explicit_auto_protocol_flag (line 273) | @Test method test_parse_provider_override_does_not_reuse_mismatched_profile_credentials (line 288) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/CodeCommandTest.java class CodeCommandTest (line 100) | public class CodeCommandTest { method test_interactive_mode_runs_until_exit (line 102) | @Test method test_interactive_compact_command (line 132) | @Test method test_resume_session_across_runs (line 185) | @Test method test_interactive_history_tree_and_fork (line 224) | @Test method test_no_session_mode_avoids_file_session_store (line 261) | @Test method test_custom_command_templates_are_listed_and_executed (line 286) | @Test method test_skills_command_lists_discovered_workspace_skills (line 322) | @Test method test_skills_command_with_name_prints_skill_detail_and_content (line 364) | @Test method test_safe_approval_mode_prompts_before_bash_exec (line 411) | @Test method test_one_shot_prompt_mode (line 442) | @Test method test_one_shot_prompt_mode_does_not_duplicate_streamed_final_output (line 466) | @Test method test_tui_mode_renders_tui_shell (line 489) | @Test method test_tui_mode_requests_approval_inline_for_safe_mode (line 517) | @Test method test_tui_mode_rejection_keeps_rejected_block_without_failed_tool_card (line 544) | @Test method test_tui_mode_renders_tool_cards_for_bash_turns (line 570) | @Test method test_tui_mode_keeps_session_alive_when_apply_patch_fails (line 597) | @Test method test_tui_mode_accepts_recoverable_apply_patch_headers (line 622) | @Test method test_tui_mode_accepts_recoverable_unified_diff_apply_patch_headers (line 647) | @Test method test_tui_mode_surfaces_invalid_bash_calls_without_hiding_tool_feedback (line 672) | @Test method test_tui_interactive_main_buffer_prints_reasoning_in_transcript_before_tool_feedback (line 699) | @Test method test_tui_mode_prints_main_buffer_status_without_fullscreen_redraw (line 729) | @Test method test_tui_mode_streams_chunked_main_buffer_output_without_duplicate_final_flush (line 755) | @Test method test_tui_mode_renders_fenced_code_blocks_in_streaming_transcript (line 780) | @Test method test_tui_mode_buffers_split_code_fence_chunks_without_leaking_backticks (line 809) | @Test method test_tui_mode_does_not_duplicate_final_output_when_provider_rewrites_markdown (line 836) | @Test method test_tui_mode_replays_missing_final_code_block_segment_when_streamed_text_is_incomplete (line 860) | @Test method test_stream_command_turns_streaming_off_for_current_session (line 885) | @Test method test_stream_command_is_on_by_default_for_new_session (line 921) | @Test method test_stream_command_turns_request_streaming_on_for_current_session (line 950) | @Test method test_cli_stream_option_false_uses_non_streaming_model_request (line 981) | @Test method test_cli_stream_option_uses_streaming_model_request (line 1005) | @Test method test_stream_off_does_not_duplicate_completed_assistant_output (line 1028) | @Test method test_provider_and_model_commands_switch_runtime_and_persist_configs (line 1056) | @Test method test_provider_add_and_edit_persist_explicit_protocols (line 1142) | @Test method test_experimental_command_persists_workspace_flags (line 1198) | @Test method test_team_management_commands_render_persisted_team_state (line 1239) | @Test method test_mcp_commands_persist_configs_and_render_statuses (line 1279) | @Test method test_startup_warns_for_unavailable_mcp_servers_without_aborting_session (line 1338) | @Test method test_stream_off_collapses_blank_reasoning_lines_in_main_buffer (line 1381) | @Test method test_tui_mode_uses_text_commands_in_non_alternate_screen_mode (line 1412) | @Test method test_append_only_tui_keeps_error_state_when_stream_finishes_with_blank_output (line 1442) | @Test method test_append_only_tui_slash_enter_applies_selection_without_immediate_dispatch (line 1467) | @Test method test_append_only_tui_typing_slash_keeps_a_single_input_render (line 1502) | @Test method test_replay_command_groups_recent_turns (line 1529) | @Test method test_replay_command_hides_reasoning_prefix (line 1562) | @Test method test_process_status_and_follow_commands_with_restored_snapshot (line 1594) | @Test method test_tui_mode_uses_replay_command_in_non_alternate_screen_mode (line 1631) | @Test method test_default_non_alternate_screen_terminal_uses_main_buffer_mode (line 1663) | @Test method test_main_buffer_mode_defers_next_prompt_until_output_starts (line 1689) | @Test method test_tui_factory_allows_custom_renderer_and_runtime (line 1731) | @Test method test_tui_mode_keeps_raw_palette_when_alternate_screen_is_disabled (line 1758) | @Test method test_raw_tui_escape_interrupts_active_turn (line 1792) | @Test method test_main_buffer_jline_user_interrupt_suppresses_final_output (line 1900) | @Test method test_main_buffer_jline_user_interrupt_cancels_active_chat_stream (line 1985) | @Test method seedStoredSession (line 2074) | private void seedStoredSession(Path workspace, class FakeCodingCliAgentFactory (line 2117) | private static final class FakeCodingCliAgentFactory implements Coding... method prepare (line 2119) | @Override method prepare (line 2124) | @Override method prepare (line 2129) | @Override class CustomModelCodingCliAgentFactory (line 2148) | private static final class CustomModelCodingCliAgentFactory implements... method CustomModelCodingCliAgentFactory (line 2152) | private CustomModelCodingCliAgentFactory(AgentModelClient modelClien... method prepare (line 2156) | @Override method prepare (line 2161) | @Override method prepare (line 2166) | @Override class ConfiguredRuntimeCodingCliAgentFactory (line 2185) | private static final class ConfiguredRuntimeCodingCliAgentFactory impl... method prepare (line 2187) | @Override method prepare (line 2192) | @Override method prepare (line 2197) | @Override class BlockingChatService (line 2221) | private static final class BlockingChatService implements IChatService { method BlockingChatService (line 2225) | private BlockingChatService(CountDownLatch cancelled) { method chatCompletion (line 2229) | @Override method chatCompletion (line 2234) | @Override method chatCompletionStream (line 2239) | @Override method chatCompletionStream (line 2266) | @Override class RecordingTuiFactory (line 2272) | private static final class RecordingTuiFactory implements CodingCliTui... method create (line 2276) | @Override class AppendOnlyPromptTuiFactory (line 2335) | private static final class AppendOnlyPromptTuiFactory implements Codin... method create (line 2337) | @Override class RawInteractiveTuiFactory (line 2350) | private static final class RawInteractiveTuiFactory implements CodingC... method RawInteractiveTuiFactory (line 2354) | private RawInteractiveTuiFactory(List keys) { method create (line 2358) | @Override class RecordingInteractiveTerminal (line 2413) | private static class RecordingInteractiveTerminal implements TerminalIO { method RecordingInteractiveTerminal (line 2419) | private RecordingInteractiveTerminal(ByteArrayOutputStream out, Byte... method readLine (line 2424) | @Override method print (line 2430) | @Override method println (line 2435) | @Override method errorln (line 2440) | @Override method supportsAnsi (line 2445) | @Override method supportsRawInput (line 2450) | @Override method getReadLineCalls (line 2455) | protected int getReadLineCalls() { method write (line 2459) | private void write(ByteArrayOutputStream stream, String text) { class KeyedRecordingInteractiveTerminal (line 2465) | private static final class KeyedRecordingInteractiveTerminal extends R... method KeyedRecordingInteractiveTerminal (line 2469) | private KeyedRecordingInteractiveTerminal(ByteArrayOutputStream out, method readKeyStroke (line 2476) | @Override method isInputClosed (line 2481) | @Override class ScriptedInteractiveTerminal (line 2487) | private static final class ScriptedInteractiveTerminal extends Recordi... method ScriptedInteractiveTerminal (line 2491) | private ScriptedInteractiveTerminal(ByteArrayOutputStream out, method readLine (line 2498) | @Override method newJlineShellContext (line 2505) | private JlineShellContext newJlineShellContext(Terminal terminal, Line... method restoreProperty (line 2512) | private void restoreProperty(String key, String value) { method readPrivateField (line 2520) | private Object readPrivateField(Object target, String fieldName) throw... method invokePrivateMethod (line 2526) | private Object invokePrivateMethod(Object target, String methodName, C... class ScriptedLineReaderHandler (line 2532) | private static final class ScriptedLineReaderHandler implements Invoca... method ScriptedLineReaderHandler (line 2537) | private ScriptedLineReaderHandler(List scriptedLines) { method invoke (line 2543) | @Override method getReadLineCalls (line 2568) | private int getReadLineCalls() { method defaultValue (line 2572) | private Object defaultValue(Class returnType) { class FakeModelClient (line 2604) | private static final class FakeModelClient implements AgentModelClient { method create (line 2606) | @Override method createStream (line 2736) | @Override method findLastUserText (line 2845) | private String findLastUserText(AgentPrompt prompt) { method findAllUserText (line 2878) | private String findAllUserText(AgentPrompt prompt) { method findLastToolOutput (line 2919) | private String findLastToolOutput(AgentPrompt prompt) { method parseObject (line 2938) | private JSONObject parseObject(String raw) { method firstNonBlank (line 2949) | private String firstNonBlank(String... values) { method seedPersistedTeamState (line 2962) | private static void seedPersistedTeamState(Path workspace, String team... method countSpinnerFrames (line 3030) | private static int countSpinnerFrames(String output) { method stripAnsi (line 3041) | private static String stripAnsi(String value) { method countOccurrences (line 3045) | private static int countOccurrences(String text, String needle) { method restoreUserHome (line 3061) | private static void restoreUserHome(String value) { FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/CodexStyleBlockFormatterTest.java class CodexStyleBlockFormatterTest (line 14) | public class CodexStyleBlockFormatterTest { method formatAssistantTrimsBlankEdgesButKeepsInnerSpacing (line 18) | @Test method formatAssistantRendersFencedCodeBlocks (line 25) | @Test method formatRunningStatusRemovesBlockBulletPrefix (line 36) | @Test method formatToolBuildsCodexLikeTranscriptBlock (line 47) | @Test method formatToolKeepsQualifiedMcpToolLabel (line 63) | @Test method formatCompactBuildsCompactBlock (line 78) | @Test method formatOutputParsesStructuredSingleLineStatus (line 97) | @Test method formatInfoBlockKeepsInnerSeparators (line 107) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/DefaultCodingCliAgentFactoryTest.java class DefaultCodingCliAgentFactoryTest (line 29) | public class DefaultCodingCliAgentFactoryTest { method test_default_protocol_prefers_chat_for_openai_compatible_base_url (line 33) | @Test method test_default_protocol_prefers_responses_for_official_openai (line 60) | @Test method test_normalize_zhipu_coding_plan_base_url (line 87) | @Test method test_explicit_responses_rejected_for_zhipu (line 99) | @Test(expected = IllegalArgumentException.class) method test_build_workspace_context_includes_workspace_skill_directories (line 126) | @Test method test_load_definition_registry_merges_built_ins_with_workspace_agents (line 163) | @Test method test_prepare_includes_experimental_subagent_and_team_tools_by_default (line 207) | @Test method test_prepare_respects_workspace_experimental_toggles (line 241) | @Test method toolNames (line 279) | private List toolNames(CodingCliAgentFactory.PreparedCodingAge... class TestFactory (line 300) | private static final class TestFactory extends DefaultCodingCliAgentFa... method createModelClient (line 302) | @Override method emptyResult (line 317) | private AgentModelResult emptyResult() { FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/DefaultCodingSessionManagerTest.java class DefaultCodingSessionManagerTest (line 33) | public class DefaultCodingSessionManagerTest { method shouldCreateSaveResumeAndListSessionEvents (line 38) | @Test class EchoModelClient (line 129) | private static final class EchoModelClient implements AgentModelClient { method create (line 131) | @Override method createStream (line 140) | @Override method findLastUserText (line 150) | private String findLastUserText(AgentPrompt prompt) { method findAllUserText (line 183) | private String findAllUserText(AgentPrompt prompt) { FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/FileCodingSessionStoreTest.java class FileCodingSessionStoreTest (line 23) | public class FileCodingSessionStoreTest { method shouldSaveLoadAndListSessions (line 28) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/FileSessionEventStoreTest.java class FileSessionEventStoreTest (line 15) | public class FileSessionEventStoreTest { method shouldAppendListAndDeleteSessionEvents (line 20) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/JlineShellTerminalIOTest.java class JlineShellTerminalIOTest (line 31) | public class JlineShellTerminalIOTest { method test_clear_assistant_block_resets_tracking_and_writes_erase_sequences (line 33) | @Test method test_forget_assistant_block_resets_tracking_without_rewriting_terminal_history (line 71) | @Test method test_blank_newline_uses_print_above_while_reading (line 108) | @Test method test_multiline_transcript_block_uses_print_above_while_reading (line 139) | @Test method test_assistant_markdown_block_writes_directly_when_not_reading (line 170) | @Test method test_direct_output_window_bypasses_print_above_even_if_line_reader_reports_reading (line 201) | @Test method test_repeated_busy_status_does_not_redundantly_redraw_same_line (line 234) | @Test method test_status_is_disabled_by_default (line 266) | @Test method test_inline_slash_palette_renders_when_status_component_is_unavailable (line 297) | @Test method test_turn_interrupt_watch_invokes_handler_on_escape (line 335) | @Test method test_turn_interrupt_polling_detects_escape (line 368) | @Test method test_connecting_status_escalates_to_stalled_when_no_model_events_arrive (line 394) | @Test method test_responding_status_changes_to_waiting_when_model_stream_goes_quiet (line 436) | @Test method newContext (line 473) | private JlineShellContext newContext(Terminal terminal, LineReader lin... method restoreProperty (line 480) | private void restoreProperty(String key, String value) { class RecordingLineReaderHandler (line 488) | private static final class RecordingLineReaderHandler implements Invoc... method RecordingLineReaderHandler (line 494) | private RecordingLineReaderHandler() { method RecordingLineReaderHandler (line 498) | private RecordingLineReaderHandler(boolean reading) { method invoke (line 502) | @Override method printAboveCalls (line 530) | private List printAboveCalls() { method widgetCalls (line 534) | private List widgetCalls() { method defaultValue (line 538) | private Object defaultValue(Class returnType) { class CountingStatus (line 570) | private static final class CountingStatus extends Status { method CountingStatus (line 574) | private CountingStatus(Terminal terminal) { method update (line 578) | @Override method updateCount (line 583) | private int updateCount() { class PaletteLineReaderHandler (line 588) | private static final class PaletteLineReaderHandler implements Invocat... method PaletteLineReaderHandler (line 593) | private PaletteLineReaderHandler(PaletteBuffer buffer) { method invoke (line 597) | @Override method printAboveCalls (line 625) | private List printAboveCalls() { method defaultValue (line 629) | private Object defaultValue(Class returnType) { class PaletteBuffer (line 655) | private static final class PaletteBuffer { method proxy (line 659) | private Buffer proxy() { method defaultValue (line 690) | private Object defaultValue(Class returnType) { FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/PatchSummaryFormatterTest.java class PatchSummaryFormatterTest (line 13) | public class PatchSummaryFormatterTest { method summarizePatchRequestSupportsLongAndShortDirectives (line 15) | @Test method summarizePatchResultPrefersStructuredFileChanges (line 36) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/SlashCommandControllerTest.java class SlashCommandControllerTest (line 22) | public class SlashCommandControllerTest { method suggestRootCommandsIncludesBuiltInsAndSpacingRules (line 24) | @Test method suggestCustomCommandNamesFromWorkspaceRegistry (line 49) | @Test method suggestThemesIncludesBuiltInThemeNames (line 67) | @Test method suggestStreamOptionsIncludesOnAndOff (line 80) | @Test method suggestExperimentalFeaturesIncludesSubagentAndAgentTeams (line 94) | @Test method suggestExperimentalToggleOptionsIncludesOnAndOff (line 108) | @Test method suggestTeamActionsIncludesPersistedStateCommands (line 122) | @Test method suggestTeamIdsFromSupplierForStatusAndResume (line 138) | @Test method suggestTeamMessageLimitsAfterTeamId (line 155) | @Test method suggestSkillNamesFromSupplier (line 174) | @Test method suggestAgentNamesFromSupplier (line 189) | @Test method suggestExactExecutableArgumentCommandKeepsRootCandidateWithoutTrailingSpace (line 204) | @Test method suggestExactMcpCommandKeepsRootCandidateWithoutTrailingSpace (line 219) | @Test method suggestMcpActionsAfterTrailingSpaceIncludesManagementCommands (line 234) | @Test method suggestMcpTransportOptionsAfterTransportFlag (line 251) | @Test method suggestMcpServerNamesFromSupplier (line 266) | @Test method suggestExactProviderCommandKeepsRootCandidateWithoutTrailingSpace (line 281) | @Test method suggestProviderActionsAfterTrailingSpaceIncludesAddAndEdit (line 295) | @Test method suggestProviderNamesFromProfileSupplier (line 311) | @Test method suggestProviderNamesWhenUseActionIsExactWithoutTrailingSpace (line 326) | @Test method suggestProviderNamesWhenEditActionIsExactWithoutTrailingSpace (line 341) | @Test method suggestProviderDefaultNamesAndClearFromProfileSupplier (line 356) | @Test method suggestProviderMutationOptionsAfterProfileName (line 372) | @Test method suggestProviderMutationProtocolValues (line 388) | @Test method suggestExactModelCommandKeepsRootCandidateWithoutTrailingSpace (line 402) | @Test method suggestModelCandidatesWithTrailingSpace (line 421) | @Test method suggestProcessSubcommandsWhenProcessCommandHasTrailingSpace (line 440) | @Test method suggestProcessIdsFromActiveSessionSupplier (line 454) | @Test method suggestProcessLimitsAfterSelectingProcessId (line 472) | @Test method suggestProcessWriteStopsCompletingAfterProcessId (line 489) | @Test method resolveSlashMenuActionDoesNotInsertDuplicateSlashInsideSlashCommands (line 505) | @Test method resolveAcceptLineActionIgnoresBlankInput (line 520) | @Test method openSlashMenuListsChoicesWithoutCompletingFirstCommand (line 534) | @Test method openSlashMenuKeepsExistingSlashPrefixWhileRefreshingChoices (line 556) | @Test method movePaletteSelectionAdvancesWithoutTabBootstrap (line 577) | @Test method acceptSlashSelectionReplacesBufferWithHighlightedCommand (line 594) | @Test method acceptSlashSelectionKeepsCommandPrefixForArgumentCandidates (line 614) | @Test method acceptSlashSelectionFromPartialCommandKeepsPaletteOpenForArgumentChoices (line 636) | @Test method acceptLineExecutesExactOptionalCommandInsteadOfApplyingCandidate (line 661) | @Test method acceptLineExecutesExactOptionalCommandWithTrailingSpace (line 684) | @Test method acceptLineAcceptsSelectionForIncompletePrefix (line 707) | @Test method invokeAcceptLine (line 727) | private boolean invokeAcceptLine(SlashCommandController controller, Li... method updatePalette (line 733) | private void updatePalette(SlashCommandController controller, String l... method assertContainsValue (line 740) | private void assertContainsValue(List candidates, String va... method containsValue (line 744) | private boolean containsValue(List candidates, String value) { method containsPaletteValue (line 756) | private boolean containsPaletteValue(SlashCommandController.PaletteSna... method recordingLineReader (line 768) | private LineReader recordingLineReader(final RecordingBuffer buffer, f... class RecordingBuffer (line 798) | private static final class RecordingBuffer { method RecordingBuffer (line 802) | private RecordingBuffer(String initialValue) { method proxy (line 807) | private Buffer proxy() { method value (line 842) | private String value() { FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/TranscriptPrinterTest.java class TranscriptPrinterTest (line 14) | public class TranscriptPrinterTest { method printsSingleBlankLineBetweenBlocks (line 16) | @Test method sectionBreakResetsSpacingWithoutDoubleBlankLines (line 27) | @Test method streamingBlockUsesSingleSeparatorBeforeNextBlock (line 39) | @Test method resetPrintedBlockDropsSeparatorAfterClearedBlock (line 53) | @Test class RecordingTerminalIO (line 65) | private static final class RecordingTerminalIO implements TerminalIO { method readLine (line 69) | @Override method print (line 74) | @Override method println (line 79) | @Override method errorln (line 84) | @Override method lines (line 89) | private List lines() { FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/acp/AcpCommandTest.java class AcpCommandTest (line 57) | public class AcpCommandTest { method test_initialize_new_prompt_and_load_history (line 59) | @Test method test_slash_command_prompt_is_handled_without_model_round_trip (line 139) | @Test method test_provider_and_model_slash_commands_rebind_runtime (line 173) | @Test method test_set_config_option_updates_model_and_emits_config_update (line 252) | @Test method test_set_config_option_mode_rebinds_permission_behavior_for_factory_bound_decorator (line 309) | @Test method test_set_config_option_rejects_model_not_present_in_select_options (line 391) | @Test method test_set_mode_switches_permission_behavior_and_emits_mode_updates (line 424) | @Test method test_set_mode_during_active_prompt_applies_to_next_turn (line 516) | @Test method test_set_config_option_during_active_prompt_applies_to_next_turn (line 606) | @Test method test_load_history_replays_delegate_task_events_as_tool_updates (line 691) | @Test method test_subagent_handoff_is_streamed_as_live_tool_updates (line 742) | @Test method test_team_subagent_tasks_are_streamed_as_live_tool_updates (line 784) | @Test method test_permission_request_round_trip (line 854) | @Test method test_permission_request_uses_generated_session_id_when_session_new_omits_session_id (line 952) | @Test method test_markdown_newlines_are_preserved_in_agent_chunks (line 1037) | @Test method test_markdown_char_stream_is_forwarded_without_coalescing (line 1071) | @Test method test_whitespace_only_stream_chunks_are_forwarded (line 1105) | @Test method provider (line 1138) | private AcpJsonRpcServer.AgentFactoryProvider provider() { method provider (line 1142) | private AcpJsonRpcServer.AgentFactoryProvider provider(final AgentMode... method blockingProvider (line 1178) | private AcpJsonRpcServer.AgentFactoryProvider blockingProvider(CountDo... method factoryBoundApprovalProvider (line 1183) | private AcpJsonRpcServer.AgentFactoryProvider factoryBoundApprovalProv... method subagentProvider (line 1220) | private AcpJsonRpcServer.AgentFactoryProvider subagentProvider() { method teamSubagentProvider (line 1265) | private AcpJsonRpcServer.AgentFactoryProvider teamSubagentProvider() { method runtimeEchoProvider (line 1329) | private AcpJsonRpcServer.AgentFactoryProvider runtimeEchoProvider() { method blockingRuntimeEchoProvider (line 1367) | private AcpJsonRpcServer.AgentFactoryProvider blockingRuntimeEchoProvi... method parseOptions (line 1408) | private CodeCommandOptions parseOptions(Path workspace, String... args) { method request (line 1416) | private JSONObject request(Object id, String method, Map result) { method textPrompt (line 1433) | private JSONArray textPrompt(String text) { method params (line 1442) | private Map params(Object... values) { method line (line 1450) | private String line(JSONObject object) { method sendPrompt (line 1454) | private void sendPrompt(PipedOutputStream clientToServer, method readUntilResponse (line 1465) | private void readUntilResponse(BufferedReader reader, method readUntilSessionUpdate (line 1483) | private void readUntilSessionUpdate(BufferedReader reader, method parseLines (line 1508) | private List parseLines(ByteArrayOutputStream output) thro... method hasResponse (line 1523) | private boolean hasResponse(List messages, int id) { method responseResult (line 1532) | private JSONObject responseResult(List messages, int id) { method findError (line 1541) | private JSONObject findError(List messages, int id) { method hasSessionUpdate (line 1550) | private boolean hasSessionUpdate(List messages, String upd... method countSessionUpdates (line 1571) | private int countSessionUpdates(List messages, String upda... method containsAvailableCommand (line 1589) | private boolean containsAvailableCommand(JSONArray commands, String na... method containsConfigOption (line 1602) | private boolean containsConfigOption(JSONArray configOptions, String i... method containsConfigOptionValue (line 1615) | private boolean containsConfigOptionValue(JSONArray configOptions, Str... method containsSessionUpdatePrefix (line 1630) | private boolean containsSessionUpdatePrefix(List messages,... method findSessionUpdate (line 1643) | private JSONObject findSessionUpdate(List messages, String... method findSessionUpdateByToolCallId (line 1660) | private JSONObject findSessionUpdateByToolCallId(List mess... method findSessionUpdateByToolCallIdAndStatus (line 1681) | private JSONObject findSessionUpdateByToolCallIdAndStatus(List sessionUpdateTexts(List messages, Str... method join (line 1751) | private String join(List values) { method seedDelegateTaskHistory (line 1761) | private void seedDelegateTaskHistory(Path workspace, String sessionId)... class FakeAcpModelClient (line 1825) | private static final class FakeAcpModelClient implements AgentModelCli... method create (line 1827) | @Override method createStream (line 1855) | @Override method findLastUserText (line 1884) | private String findLastUserText(AgentPrompt prompt) { method findLastToolOutput (line 1917) | private String findLastToolOutput(AgentPrompt prompt) { class RuntimeEchoModelClient (line 1940) | private static final class RuntimeEchoModelClient implements AgentMode... method RuntimeEchoModelClient (line 1945) | private RuntimeEchoModelClient(String provider, String model) { method create (line 1950) | @Override method createStream (line 1957) | @Override method findLastUserText (line 1967) | private String findLastUserText(AgentPrompt prompt) { class BlockingRuntimeEchoModelClient (line 2001) | private static final class BlockingRuntimeEchoModelClient implements A... method BlockingRuntimeEchoModelClient (line 2008) | private BlockingRuntimeEchoModelClient(String provider, method create (line 2018) | @Override method createStream (line 2025) | @Override class BlockingAcpModelClient (line 2041) | private static final class BlockingAcpModelClient implements AgentMode... method BlockingAcpModelClient (line 2047) | private BlockingAcpModelClient(CountDownLatch promptStarted, CountDo... method create (line 2052) | @Override method createStream (line 2057) | @Override method awaitRelease (line 2068) | private static void awaitRelease(CountDownLatch releasePrompt) { method findLastUserText (line 2077) | private static String findLastUserText(AgentPrompt prompt) { class FakeSubagentRootModelClient (line 2110) | private static final class FakeSubagentRootModelClient implements Agen... method create (line 2112) | @Override method createStream (line 2127) | @Override method findLastToolOutput (line 2144) | private String findLastToolOutput(AgentPrompt prompt) { class FakeSubagentWorkerModelClient (line 2167) | private static final class FakeSubagentWorkerModelClient implements Ag... method FakeSubagentWorkerModelClient (line 2171) | private FakeSubagentWorkerModelClient() { method FakeSubagentWorkerModelClient (line 2175) | private FakeSubagentWorkerModelClient(String output) { method create (line 2179) | @Override method createStream (line 2184) | @Override FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/acp/AcpSlashCommandSupportTest.java class AcpSlashCommandSupportTest (line 29) | public class AcpSlashCommandSupportTest { method availableCommandsShouldIncludeTeam (line 31) | @Test method executeExperimentalShouldDelegateToRuntimeHandler (line 40) | @Test method executeTeamShouldRenderMemberLaneBoard (line 97) | @Test method executeTeamSubcommandsShouldRenderPersistedState (line 130) | @Test method seedTeamHistory (line 186) | private DefaultCodingSessionManager seedTeamHistory(Path workspace, St... method seedPersistedTeamState (line 262) | private void seedPersistedTeamState(Path workspace, String teamId) { method containsCommand (line 310) | private boolean containsCommand(String name) { FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/agent/CliCodingAgentRegistryTest.java class CliCodingAgentRegistryTest (line 15) | public class CliCodingAgentRegistryTest { method loadRegistryParsesWorkspaceAndConfiguredAgentDirectories (line 17) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/runtime/AgentHandoffSessionEventSupportTest.java class AgentHandoffSessionEventSupportTest (line 13) | public class AgentHandoffSessionEventSupportTest { method shouldMapHandoffEventsToTaskSessionEvents (line 15) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/runtime/AgentTeamMessageSessionEventSupportTest.java class AgentTeamMessageSessionEventSupportTest (line 14) | public class AgentTeamMessageSessionEventSupportTest { method shouldMapTeamMessageEventToSessionEvent (line 16) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/runtime/AgentTeamSessionEventSupportTest.java class AgentTeamSessionEventSupportTest (line 13) | public class AgentTeamSessionEventSupportTest { method shouldMapTeamTaskEventsToTaskSessionEvents (line 15) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/runtime/CodingTaskSessionEventBridgeTest.java class CodingTaskSessionEventBridgeTest (line 19) | public class CodingTaskSessionEventBridgeTest { method shouldAppendCreatedAndUpdatedTaskEvents (line 21) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/cli/runtime/HeadlessCodingSessionRuntimeTest.java class HeadlessCodingSessionRuntimeTest (line 46) | public class HeadlessCodingSessionRuntimeTest { method shouldMapApprovalBlockToBlockedStopReasonAndAppendBlockedEvent (line 53) | @Test method shouldAppendAutoContinueAndAutoStopEventsForLoopedPrompt (line 79) | @Test method testOptions (line 107) | private CodeCommandOptions testOptions() { method managedSession (line 144) | private ManagedCodingSession managedSession(CodingAgent agent, CodeCom... method newAgent (line 164) | private CodingAgent newAgent(InspectableQueueModelClient modelClient, ... method singleToolRegistry (line 185) | private AgentToolRegistry singleToolRegistry(String toolName) { method okToolExecutor (line 192) | private ToolExecutor okToolExecutor() { method approvalRejectedToolExecutor (line 201) | private ToolExecutor approvalRejectedToolExecutor() { method hasEvent (line 210) | private boolean hasEvent(List events, SessionEventType t... method toolCallResult (line 222) | private AgentModelResult toolCallResult(String toolName, String callId) { method assistantResult (line 234) | private AgentModelResult assistantResult(String text) { class CollectingObserver (line 241) | private static final class CollectingObserver extends HeadlessTurnObse... method onSessionEvent (line 245) | @Override class InspectableQueueModelClient (line 253) | private static final class InspectableQueueModelClient implements Agen... method enqueue (line 258) | private void enqueue(AgentModelResult result) { method create (line 262) | @Override method createStream (line 269) | @Override FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/tui/AnsiTuiRuntimeTest.java class AnsiTuiRuntimeTest (line 8) | public class AnsiTuiRuntimeTest { method shouldPrintFramesWithoutTrailingNewlineAndSkipDuplicateRenders (line 10) | @Test class SequenceRenderer (line 27) | private static final class SequenceRenderer implements TuiRenderer { method SequenceRenderer (line 32) | private SequenceRenderer(String... frames) { method getMaxEvents (line 36) | @Override method getThemeName (line 41) | @Override method updateTheme (line 46) | @Override method render (line 50) | @Override class RecordingTerminalIO (line 61) | private static final class RecordingTerminalIO implements TerminalIO { method readLine (line 69) | @Override method print (line 74) | @Override method println (line 80) | @Override method errorln (line 86) | @Override method clearScreen (line 90) | @Override method moveCursorHome (line 95) | @Override method supportsAnsi (line 100) | @Override FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/tui/AppendOnlyTuiRuntimeTest.java class AppendOnlyTuiRuntimeTest (line 14) | public class AppendOnlyTuiRuntimeTest { method shouldNotDuplicateLiveReasoningWhenAssistantEventArrives (line 16) | @Test method shouldAppendMissingAssistantSuffixWithoutPrintingANewBlock (line 45) | @Test method shouldNotRepeatLocalCommandOutputInFooterPreview (line 74) | @Test method shouldKeepReasoningTextAndToolResultInTranscriptOrder (line 91) | @Test method shouldNotRedrawFooterWhenOnlyTheSameAppendOnlyStatusIsRenderedAgain (line 141) | @Test method shouldRenderStableErrorFooterWithoutSpinnerPrefix (line 161) | @Test method shouldRenderStableThinkingFooterWithBulletPrefix (line 181) | @Test method shouldRenderBulletHeaderHintAndReadyFooter (line 205) | @Test method shouldKeepInitialHintAsBulletLinesEvenWhenSessionEventsAlreadyExist (line 226) | @Test method shouldRenderPaletteWithBulletItemsAndHeader (line 253) | @Test method shouldRenderProcessEventsAsStructuredTranscriptBlocks (line 279) | @Test method shouldReturnToColumnOneBeforeRedrawingFooterAfterLiveOutput (line 309) | @Test method shouldRenderWorkingSpinnerForPendingToolStatus (line 337) | @Test method screenModel (line 359) | private static TuiScreenModel screenModel(TuiAssistantViewModel assist... method payload (line 365) | private static Map payload(Object... pairs) { method stripAnsi (line 376) | private static String stripAnsi(String value) { method countOccurrences (line 384) | private static int countOccurrences(String text, String needle) { method containsSpinnerFrame (line 400) | private static boolean containsSpinnerFrame(String text) { class RecordingTerminalIO (line 413) | private static final class RecordingTerminalIO implements TerminalIO { method readLine (line 417) | @Override method print (line 422) | @Override method println (line 427) | @Override method errorln (line 432) | @Override method supportsAnsi (line 436) | @Override FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/tui/StreamsTerminalIOTest.java class StreamsTerminalIOTest (line 13) | public class StreamsTerminalIOTest { method shouldUseConfiguredCharsetForChineseInputAndOutput (line 15) | @Test method shouldPreferUtf8HintsBeforeLegacyPlatformFallback (line 45) | @Test method shouldDrainBufferedScriptedKeyStrokesWithTimeoutReads (line 68) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/tui/TuiConfigManagerTest.java class TuiConfigManagerTest (line 16) | public class TuiConfigManagerTest { method shouldLoadBuiltInThemesAndPersistWorkspaceConfig (line 21) | @Test method shouldPreferWorkspaceThemeOverrides (line 53) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/tui/TuiInteractionStateTest.java class TuiInteractionStateTest (line 9) | public class TuiInteractionStateTest { method shouldConsumeInputSilentlyWithoutTriggeringRender (line 11) | @Test method shouldSkipRenderWhenTranscriptScrollAlreadyAtZero (line 31) | @Test method shouldNormalizeSlashPaletteQueryWithoutLeadingSlash (line 52) | @Test method shouldAppendSlashInputAndOpenPaletteInSingleRender (line 64) | @Test method shouldReplaceSlashSelectionAndClosePaletteInSingleRender (line 87) | @Test FILE: ai4j-cli/src/test/java/io/github/lnyocly/ai4j/tui/TuiSessionViewTest.java class TuiSessionViewTest (line 19) | public class TuiSessionViewTest { method shouldRenderReplayViewerOverlay (line 21) | @Test method shouldRenderTeamBoardOverlay (line 44) | @Test method shouldRenderProcessInspectorOverlay (line 76) | @Test method shouldRenderSlashCommandOverlay (line 107) | @Test method shouldScrollSlashCommandWindowWithSelection (line 130) | @Test method shouldRenderStructuredAssistantTrace (line 161) | @Test method shouldRenderMinimalHeader (line 191) | @Test method shouldRenderStartupTipsWhenIdle (line 225) | @Test method shouldNotDuplicateAssistantOutputWhenLatestEventMatchesLiveText (line 238) | @Test method shouldRenderAssistantMarkdownCodeBlocks (line 261) | @Test method shouldRenderTranscriptInEventOrderWithPersistentToolEntries (line 282) | @Test method shouldPreferPersistedToolMetadataWhenArgumentsAreClipped (line 334) | @Test method shouldIndentMultilineToolPreviewOutput (line 373) | @Test method shouldAllowScrollingFullTranscriptWithoutTruncatingAssistantLines (line 394) | @Test method shouldUseTerminalHeightToSizeTranscriptViewport (line 431) | @Test method shouldRenderLiveToolImmediatelyEvenWhenHistoryContainsOlderToolEvents (line 477) | @Test method shouldShowInvalidBashCallWithoutEmptyCommandFallback (line 506) | @Test method shouldHighlightAnsiCodeBlocks (line 527) | @Test method shouldRenderCodexStyleToolLabelsWithoutMetadataNoise (line 560) | @Test method shouldRenderTeamMessageEventsAsNotes (line 609) | @Test method shouldRenderTeamTaskProgressMetadata (line 629) | @Test method countOccurrences (line 656) | private int countOccurrences(String text, String needle) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/CodingAgent.java class CodingAgent (line 23) | public class CodingAgent { method CodingAgent (line 34) | public CodingAgent(Agent delegate, method run (line 52) | public CodingAgentResult run(String input) throws Exception { method run (line 58) | public CodingAgentResult run(CodingAgentRequest request) throws Except... method runStream (line 64) | public CodingAgentResult runStream(CodingAgentRequest request, AgentLi... method newSession (line 70) | public CodingSession newSession() { method newSession (line 74) | public CodingSession newSession(CodingSessionState state) { method newSession (line 78) | public CodingSession newSession(String sessionId, CodingSessionState s... method getDelegate (line 130) | public Agent getDelegate() { method getWorkspaceContext (line 134) | public WorkspaceContext getWorkspaceContext() { method getOptions (line 138) | public CodingAgentOptions getOptions() { method getRuntime (line 142) | public CodingRuntime getRuntime() { method getDefinitionRegistry (line 146) | public CodingAgentDefinitionRegistry getDefinitionRegistry() { method delegate (line 150) | public CodingDelegateResult delegate(CodingDelegateRequest request) th... method getTask (line 156) | public CodingTask getTask(String taskId) { method listTasks (line 160) | public List listTasks() { method listTasks (line 164) | public List listTasks(String parentSessionId) { method listSessionLinks (line 170) | public List listSessionLinks(String parentSessionId) { method isBlank (line 176) | private boolean isBlank(String value) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/CodingAgentBuilder.java class CodingAgentBuilder (line 51) | public class CodingAgentBuilder { method runtime (line 81) | public CodingAgentBuilder runtime(AgentRuntime runtime) { method modelClient (line 86) | public CodingAgentBuilder modelClient(AgentModelClient modelClient) { method workspaceContext (line 91) | public CodingAgentBuilder workspaceContext(WorkspaceContext workspaceC... method agentOptions (line 96) | public CodingAgentBuilder agentOptions(AgentOptions agentOptions) { method codingOptions (line 101) | public CodingAgentBuilder codingOptions(CodingAgentOptions codingOptio... method toolRegistry (line 106) | public CodingAgentBuilder toolRegistry(AgentToolRegistry toolRegistry) { method toolExecutor (line 111) | public CodingAgentBuilder toolExecutor(ToolExecutor toolExecutor) { method definitionRegistry (line 116) | public CodingAgentBuilder definitionRegistry(CodingAgentDefinitionRegi... method subAgentRegistry (line 121) | public CodingAgentBuilder subAgentRegistry(SubAgentRegistry subAgentRe... method handoffPolicy (line 126) | public CodingAgentBuilder handoffPolicy(HandoffPolicy handoffPolicy) { method subAgent (line 131) | public CodingAgentBuilder subAgent(SubAgentDefinition definition) { method subAgents (line 138) | public CodingAgentBuilder subAgents(List definitio... method taskManager (line 145) | public CodingAgentBuilder taskManager(CodingTaskManager taskManager) { method sessionLinkStore (line 150) | public CodingAgentBuilder sessionLinkStore(CodingSessionLinkStore sess... method toolPolicyResolver (line 155) | public CodingAgentBuilder toolPolicyResolver(CodingToolPolicyResolver ... method codingRuntime (line 160) | public CodingAgentBuilder codingRuntime(CodingRuntime codingRuntime) { method model (line 165) | public CodingAgentBuilder model(String model) { method instructions (line 170) | public CodingAgentBuilder instructions(String instructions) { method systemPrompt (line 175) | public CodingAgentBuilder systemPrompt(String systemPrompt) { method temperature (line 180) | public CodingAgentBuilder temperature(Double temperature) { method topP (line 185) | public CodingAgentBuilder topP(Double topP) { method maxOutputTokens (line 190) | public CodingAgentBuilder maxOutputTokens(Integer maxOutputTokens) { method reasoning (line 195) | public CodingAgentBuilder reasoning(Object reasoning) { method toolChoice (line 200) | public CodingAgentBuilder toolChoice(Object toolChoice) { method parallelToolCalls (line 205) | public CodingAgentBuilder parallelToolCalls(Boolean parallelToolCalls) { method store (line 210) | public CodingAgentBuilder store(Boolean store) { method user (line 215) | public CodingAgentBuilder user(String user) { method extraBody (line 220) | public CodingAgentBuilder extraBody(Map extraBody) { method build (line 225) | public CodingAgent build() { method createBuiltInRegistry (line 317) | public static AgentToolRegistry createBuiltInRegistry(CodingAgentOptio... method createBuiltInRegistry (line 321) | public static AgentToolRegistry createBuiltInRegistry(CodingAgentOptio... method createBuiltInToolExecutor (line 334) | public static ToolExecutor createBuiltInToolExecutor(WorkspaceContext ... method createBuiltInToolExecutor (line 340) | public static ToolExecutor createBuiltInToolExecutor(WorkspaceContext ... method mergeToolRegistry (line 366) | public static AgentToolRegistry mergeToolRegistry(AgentToolRegistry bu... method mergeToolExecutor (line 373) | public static ToolExecutor mergeToolExecutor(AgentToolRegistry builtIn... method mergeSubAgentToolRegistry (line 393) | public static AgentToolRegistry mergeSubAgentToolRegistry(AgentToolReg... method mergeSubAgentToolExecutor (line 402) | public static ToolExecutor mergeSubAgentToolExecutor(ToolExecutor base... method resolveToolNames (line 415) | public static Set resolveToolNames(AgentToolRegistry registry) { method isBlank (line 431) | private static boolean isBlank(String value) { method decorate (line 435) | private static ToolExecutor decorate(String toolName, ToolExecutor exe... method resolveSubAgentRegistry (line 442) | private SubAgentRegistry resolveSubAgentRegistry() { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/CodingAgentOptions.java class CodingAgentOptions (line 7) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/CodingAgentRequest.java class CodingAgentRequest (line 10) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/CodingAgentResult.java class CodingAgentResult (line 14) | @Data method from (line 43) | public static CodingAgentResult from(String sessionId, AgentResult res... FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/CodingAgents.java class CodingAgents (line 3) | public final class CodingAgents { method CodingAgents (line 5) | private CodingAgents() { method builder (line 8) | public static CodingAgentBuilder builder() { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/CodingSession.java class CodingSession (line 30) | public class CodingSession implements AutoCloseable { method CodingSession (line 52) | public CodingSession(AgentSession delegate, method CodingSession (line 59) | public CodingSession(String sessionId, method CodingSession (line 67) | public CodingSession(AgentSession delegate, method CodingSession (line 75) | public CodingSession(String sessionId, method run (line 89) | public CodingAgentResult run(String input) throws Exception { method run (line 93) | public CodingAgentResult run(CodingAgentRequest request) throws Except... method runStream (line 98) | public CodingAgentResult runStream(CodingAgentRequest request, AgentLi... method getSessionId (line 103) | public String getSessionId() { method getDelegate (line 107) | public AgentSession getDelegate() { method getWorkspaceContext (line 111) | public WorkspaceContext getWorkspaceContext() { method getOptions (line 115) | public CodingAgentOptions getOptions() { method getRuntime (line 119) | public CodingRuntime getRuntime() { method delegate (line 123) | public CodingDelegateResult delegate(CodingDelegateRequest request) th... method snapshot (line 130) | public CodingSessionSnapshot snapshot() { method exportState (line 164) | public CodingSessionState exportState() { method restore (line 183) | public void restore(CodingSessionState state) { method compact (line 208) | public CodingSessionCompactResult compact() { method compact (line 212) | public CodingSessionCompactResult compact(String summary) { method listProcesses (line 235) | public List listProcesses() { method processStatus (line 239) | public BashProcessInfo processStatus(String processId) { method processLogs (line 244) | public BashProcessLogChunk processLogs(String processId, Long offset, ... method writeProcess (line 249) | public int writeProcess(String processId, String input) throws IOExcep... method stopProcess (line 254) | public BashProcessInfo stopProcess(String processId) { method drainLastAutoCompactResult (line 259) | public CodingSessionCompactResult drainLastAutoCompactResult() { method drainLastAutoCompactError (line 268) | public Exception drainLastAutoCompactError() { method clearAutoCompactState (line 277) | public void clearAutoCompactState() { method getLastAutoCompactResult (line 284) | public CodingSessionCompactResult getLastAutoCompactResult() { method getLastAutoCompactError (line 288) | public Exception getLastAutoCompactError() { method drainAutoCompactResults (line 292) | public List drainAutoCompactResults() { method drainAutoCompactErrors (line 305) | public List drainAutoCompactErrors() { method recordLoopDecision (line 315) | public void recordLoopDecision(CodingLoopDecision decision) { method drainLoopDecisions (line 321) | public List drainLoopDecisions() { method clearPendingLoopArtifacts (line 333) | public void clearPendingLoopArtifacts() { method maybeAutoCompactAfterTurn (line 338) | private void maybeAutoCompactAfterTurn() { method requireInMemoryMemory (line 400) | private InMemoryAgentMemory requireInMemoryMemory() { method requireProcessRegistry (line 408) | private void requireProcessRegistry() { method listProcessInfos (line 414) | private List listProcessInfos() { method exportProcessSnapshots (line 421) | private List exportProcessSnapshots() { method close (line 428) | @Override method resolveMemory (line 435) | private AgentMemory resolveMemory() { method exportMemory (line 439) | private MemorySnapshot exportMemory() { method resolveCheckpoint (line 450) | private CodingSessionCheckpoint resolveCheckpoint(MemorySnapshot snaps... method copyProcesses (line 467) | private List copyProcesses(List normalize(List values) { method addIfPresent (line 320) | private static void addIfPresent(List target, String value) { method copyProcesses (line 327) | private static List copyProcesses(List readStringList(JSONArray values) { method extractJsonObject (line 396) | private static String extractJsonObject(String summary) { method stripCodeFence (line 409) | private static String stripCodeFence(String text) { method safeTrim (line 425) | private static String safeTrim(String value) { method defaultText (line 429) | private static String defaultText(String value, String fallback) { method clip (line 433) | private static String clip(String value, int maxChars) { method isBlank (line 444) | private static boolean isBlank(String value) { type Section (line 448) | private enum Section { type ProgressSection (line 458) | private enum ProgressSection { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/CodingSessionCompactResult.java class CodingSessionCompactResult (line 6) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/CodingSessionScope.java class CodingSessionScope (line 3) | public final class CodingSessionScope { method CodingSessionScope (line 7) | private CodingSessionScope() { type SessionCallable (line 10) | public interface SessionCallable { method call (line 11) | T call() throws Exception; type SessionRunnable (line 14) | public interface SessionRunnable { method run (line 15) | void run() throws Exception; method currentSession (line 18) | public static CodingSession currentSession() { method runWithSession (line 22) | public static T runWithSession(CodingSession session, SessionCalla... method runWithSession (line 35) | public static void runWithSession(CodingSession session, SessionRunnab... method restore (line 48) | private static void restore(CodingSession previous) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/CodingSessionSnapshot.java class CodingSessionSnapshot (line 10) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/CodingSessionState.java class CodingSessionState (line 13) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/compact/CodingCompactionPreparation.java class CodingCompactionPreparation (line 8) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/compact/CodingSessionCompactor.java class CodingSessionCompactor (line 25) | public class CodingSessionCompactor { method prepare (line 78) | public CodingCompactionPreparation prepare(MemorySnapshot snapshot, method compact (line 132) | public CodingSessionCompactResult compact(String sessionId, method estimateContextTokens (line 215) | public int estimateContextTokens(List rawItems, String summary) { method shouldCompact (line 225) | private boolean shouldCompact(int estimatedTokens, CodingAgentOptions ... method needsAggressiveCompaction (line 232) | private boolean needsAggressiveCompaction(int afterTokens, int beforeT... method findCutPoint (line 242) | private CutPoint findCutPoint(List rawItems, int keepRecentTok... method findNearestCutPointAtOrAfter (line 268) | private int findNearestCutPointAtOrAfter(List cutPoints, int ... method findTurnStartIndex (line 277) | private int findTurnStartIndex(List rawItems, int index) { method isValidCutPoint (line 286) | private boolean isValidCutPoint(Object item) { method isUserMessage (line 291) | private boolean isUserMessage(Object item) { method estimateItemTokens (line 296) | private int estimateItemTokens(Object item) { method buildCheckpoint (line 327) | private CodingSessionCheckpoint buildCheckpoint(AgentContext context, method summarize (line 369) | private CodingSessionCheckpoint summarize(AgentContext context, method buildSummarizationPromptText (line 443) | private String buildSummarizationPromptText(String conversationText, method serializeConversation (line 464) | private String serializeConversation(List items) { method serializeItem (line 481) | private String serializeItem(Object item) { method extractMessageText (line 505) | private String extractMessageText(JSONArray content) { method truncateForSummary (line 536) | private String truncateForSummary(String text) { method buildFallbackCheckpoint (line 546) | private CodingSessionCheckpoint buildFallbackCheckpoint(List i... method buildSessionMemoryFallbackCheckpoint (line 572) | private CodingSessionCheckpoint buildSessionMemoryFallbackCheckpoint(L... method mergeRecentContextIntoCheckpoint (line 597) | private void mergeRecentContextIntoCheckpoint(CodingSessionCheckpoint ... method mergeFallbackSignals (line 614) | private void mergeFallbackSignals(CodingSessionCheckpoint checkpoint, method annotatePromptTooLongRetry (line 653) | private CodingSessionCheckpoint annotatePromptTooLongRetry(CodingSessi... method resolveLatestUserGoal (line 688) | private String resolveLatestUserGoal(List items) { method truncateForPromptTooLongRetry (line 705) | private PromptTooLongRetrySlice truncateForPromptTooLongRetry(List items, int ... method isPromptTooLongError (line 749) | private boolean isPromptTooLongError(Throwable throwable) { method attachCheckpointMetadata (line 774) | private CodingSessionCheckpoint attachCheckpointMetadata(CodingSession... method copyCheckpoint (line 792) | private CodingSessionCheckpoint copyCheckpoint(CodingSessionCheckpoint... method copyStrings (line 812) | private List copyStrings(List values) { method copyProcesses (line 819) | private List copyProcesses(List target, String value) { method toJSONObject (line 873) | private JSONObject toJSONObject(Object item) { method copySlice (line 892) | private List copySlice(List rawItems, int from, int to) { method estimateTextTokens (line 899) | private int estimateTextTokens(String text) { method resolveCheckpointStrategy (line 903) | private String resolveCheckpointStrategy(boolean aggressiveCompactionA... method safeSize (line 910) | private int safeSize(List values) { method estimateChars (line 914) | private int estimateChars(int chars) { method safeText (line 918) | private String safeText(String value) { method singleLine (line 922) | private String singleLine(String value) { method clip (line 926) | private String clip(String value, int maxChars) { method isBlank (line 934) | private boolean isBlank(String value) { method appendInstructions (line 938) | private String appendInstructions(String base, String extra) { class CutPoint (line 948) | private static final class CutPoint { method CutPoint (line 954) | private CutPoint(int firstKeptItemIndex, int turnStartItemIndex, boo... class PromptTooLongRetrySlice (line 961) | private static final class PromptTooLongRetrySlice { method PromptTooLongRetrySlice (line 966) | private PromptTooLongRetrySlice(List items, int droppedItemC... FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/compact/CodingToolResultMicroCompactResult.java class CodingToolResultMicroCompactResult (line 8) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/compact/CodingToolResultMicroCompactor.java class CodingToolResultMicroCompactor (line 15) | public class CodingToolResultMicroCompactor { method compact (line 20) | public CodingToolResultMicroCompactResult compact(MemorySnapshot snaps... method collectToolResultIndexes (line 74) | private List collectToolResultIndexes(List rawItems) { method shouldCompactToolResult (line 85) | private boolean shouldCompactToolResult(Object item, method compactToolResult (line 103) | private Object compactToolResult(Object item) { method buildSummary (line 122) | private String buildSummary(int compactedCount, int beforeTokens, int ... method estimateContextTokens (line 133) | private int estimateContextTokens(List rawItems, String summar... method estimateItemTokens (line 143) | private int estimateItemTokens(Object item) { method estimateTextTokens (line 174) | private int estimateTextTokens(String text) { method estimateChars (line 178) | private int estimateChars(int chars) { method copyItem (line 182) | private Object copyItem(Object item) { method toJSONObject (line 189) | private JSONObject toJSONObject(Object item) { method isBlank (line 208) | private boolean isBlank(String value) { method safeText (line 212) | private String safeText(String value) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/definition/BuiltInCodingAgentDefinitions.java class BuiltInCodingAgentDefinitions (line 8) | public final class BuiltInCodingAgentDefinitions { method BuiltInCodingAgentDefinitions (line 62) | private BuiltInCodingAgentDefinitions() { method list (line 65) | public static List list() { method registry (line 69) | public static CodingAgentDefinitionRegistry registry() { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/definition/CodingAgentDefinition.java class CodingAgentDefinition (line 8) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/definition/CodingAgentDefinitionRegistry.java type CodingAgentDefinitionRegistry (line 5) | public interface CodingAgentDefinitionRegistry { method getDefinition (line 7) | CodingAgentDefinition getDefinition(String nameOrToolName); method listDefinitions (line 9) | List listDefinitions(); FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/definition/CodingApprovalMode.java type CodingApprovalMode (line 3) | public enum CodingApprovalMode { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/definition/CodingIsolationMode.java type CodingIsolationMode (line 3) | public enum CodingIsolationMode { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/definition/CodingMemoryScope.java type CodingMemoryScope (line 3) | public enum CodingMemoryScope { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/definition/CodingSessionMode.java type CodingSessionMode (line 3) | public enum CodingSessionMode { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/definition/CompositeCodingAgentDefinitionRegistry.java class CompositeCodingAgentDefinitionRegistry (line 10) | public class CompositeCodingAgentDefinitionRegistry implements CodingAge... method CompositeCodingAgentDefinitionRegistry (line 14) | public CompositeCodingAgentDefinitionRegistry(CodingAgentDefinitionReg... method CompositeCodingAgentDefinitionRegistry (line 18) | public CompositeCodingAgentDefinitionRegistry(List ordered, Codi... method sameKey (line 90) | private boolean sameKey(String left, String right) { method normalize (line 95) | private String normalize(String value) { method isBlank (line 99) | private boolean isBlank(String value) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/definition/StaticCodingAgentDefinitionRegistry.java class StaticCodingAgentDefinitionRegistry (line 10) | public class StaticCodingAgentDefinitionRegistry implements CodingAgentD... method StaticCodingAgentDefinitionRegistry (line 15) | public StaticCodingAgentDefinitionRegistry(List... method getDefinition (line 38) | @Override method listDefinitions (line 46) | @Override method register (line 51) | private void register(Map map, String k... method normalize (line 59) | private String normalize(String value) { method isBlank (line 63) | private boolean isBlank(String value) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/delegate/CodingDelegateRequest.java class CodingDelegateRequest (line 7) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/delegate/CodingDelegateResult.java class CodingDelegateResult (line 7) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/delegate/CodingDelegateToolExecutor.java class CodingDelegateToolExecutor (line 16) | public class CodingDelegateToolExecutor implements ToolExecutor { method CodingDelegateToolExecutor (line 21) | public CodingDelegateToolExecutor(CodingRuntime runtime, CodingAgentDe... method execute (line 26) | @Override method requireDefinition (line 64) | private CodingAgentDefinition requireDefinition(String toolName) { method parseArguments (line 72) | private JSONObject parseArguments(String raw) { method parseBoolean (line 86) | private Boolean parseBoolean(JSONObject arguments, String key) { method parseSessionMode (line 93) | private CodingSessionMode parseSessionMode(String raw) { method firstNonBlank (line 104) | private String firstNonBlank(String... values) { method isBlank (line 116) | private boolean isBlank(String value) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/delegate/CodingDelegateToolRegistry.java class CodingDelegateToolRegistry (line 15) | public class CodingDelegateToolRegistry implements AgentToolRegistry { method CodingDelegateToolRegistry (line 19) | public CodingDelegateToolRegistry(CodingAgentDefinitionRegistry defini... method getTools (line 37) | @Override method createTool (line 42) | private Tool createTool(CodingAgentDefinition definition) { method resolveDescription (line 65) | private String resolveDescription(CodingAgentDefinition definition) { method property (line 73) | private Tool.Function.Property property(String type, String descriptio... method isBlank (line 80) | private boolean isBlank(String value) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/loop/CodingAgentLoopController.java class CodingAgentLoopController (line 17) | public class CodingAgentLoopController { method run (line 34) | public CodingAgentResult run(CodingSession session, CodingAgentRequest... method runStream (line 38) | public CodingAgentResult runStream(CodingSession session, method execute (line 44) | private CodingAgentResult execute(CodingSession session, method turnRequest (line 103) | private CodingAgentRequest turnRequest(CodingAgentRequest request, Str... method decide (line 110) | private CodingLoopDecision decide(CodingLoopPolicy policy, method shouldContinue (line 180) | private boolean shouldContinue(CodingLoopPolicy policy, method resolveContinueReason (line 199) | private String resolveContinueReason(CodingAgentResult result, boolean... method buildContinueSummary (line 212) | private String buildContinueSummary(int turnNumber, String continueRea... method stopDecision (line 225) | private CodingLoopDecision stopDecision(int turnNumber, CodingStopReas... method aggregate (line 234) | private CodingAgentResult aggregate(CodingSession session, method hasApprovalBlockedResult (line 257) | private boolean hasApprovalBlockedResult(CodingAgentResult result) { method hasToolError (line 271) | private boolean hasToolError(CodingAgentResult result) { method looksLikeQuestion (line 285) | private boolean looksLikeQuestion(String text) { method looksLikeCompleted (line 289) | private boolean looksLikeCompleted(String text) { method looksTransitional (line 293) | private boolean looksTransitional(String text) { method hasPositiveLimit (line 301) | private boolean hasPositiveLimit(int limit) { method throwIfInterrupted (line 305) | private void throwIfInterrupted() throws InterruptedException { class StepOffsetAgentListener (line 311) | private static final class StepOffsetAgentListener implements AgentLis... method StepOffsetAgentListener (line 316) | private StepOffsetAgentListener(AgentListener delegate, int stepOffs... method onEvent (line 321) | @Override FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/loop/CodingContinuationPrompt.java class CodingContinuationPrompt (line 10) | public final class CodingContinuationPrompt { method CodingContinuationPrompt (line 12) | private CodingContinuationPrompt() { method build (line 15) | public static String build(CodingLoopDecision decision, method appendCompactReanchor (line 41) | private static void appendCompactReanchor(StringBuilder prompt, Coding... method appendList (line 74) | private static void appendList(StringBuilder prompt, String label, Lis... method appendProcesses (line 92) | private static void appendProcesses(StringBuilder prompt, List allowedToolNames) { method extractToolName (line 58) | private String extractToolName(Object tool) { method wrapExecutor (line 66) | private ToolExecutor wrapExecutor(final ToolExecutor baseExecutor, fin... method normalize (line 82) | private Set normalize(Set toolNames) { method normalize (line 96) | private String normalize(String value) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/process/BashProcessInfo.java class BashProcessInfo (line 8) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/process/BashProcessLogChunk.java class BashProcessLogChunk (line 8) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/process/BashProcessStatus.java type BashProcessStatus (line 3) | public enum BashProcessStatus { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/process/SessionProcessRegistry.java class SessionProcessRegistry (line 23) | public class SessionProcessRegistry implements AutoCloseable { method SessionProcessRegistry (line 30) | public SessionProcessRegistry(WorkspaceContext workspaceContext, Codin... method start (line 35) | public BashProcessInfo start(String command, String cwd) throws IOExce... method status (line 59) | public BashProcessInfo status(String processId) { method list (line 71) | public List list() { method exportSnapshots (line 83) | public List exportSnapshots() { method restoreSnapshots (line 100) | public void restoreSnapshots(List snapshots) { method activeCount (line 116) | public int activeCount() { method restoredCount (line 126) | public int restoredCount() { method logs (line 130) | public BashProcessLogChunk logs(String processId, Long offset, Integer... method write (line 144) | public int write(String processId, String input) throws IOException { method stop (line 156) | public BashProcessInfo stop(String processId) { method close (line 162) | @Override method getLiveProcess (line 169) | private ManagedProcess getLiveProcess(String processId) { method toProcessInfo (line 180) | private BashProcessInfo toProcessInfo(StoredProcessSnapshot snapshot) { method restoredLogs (line 195) | private BashProcessLogChunk restoredLogs(StoredProcessSnapshot snapsho... method isBlank (line 213) | private boolean isBlank(String value) { class ManagedProcess (line 217) | private static class ManagedProcess { method ManagedProcess (line 232) | private ManagedProcess(String processId, method startReaders (line 249) | private void startReaders() { method startWatcher (line 258) | private void startWatcher() { method readLogs (line 275) | private BashProcessLogChunk readLogs(long offset, int limit) { method snapshot (line 288) | private BashProcessInfo snapshot() { method metadataSnapshot (line 303) | private StoredProcessSnapshot metadataSnapshot(int previewChars) { method stop (line 320) | private void stop(long graceMs) { method safePid (line 350) | private static Long safePid(Process process) { class StreamCollector (line 359) | private static class StreamCollector implements Runnable { method StreamCollector (line 366) | private StreamCollector(InputStream inputStream, ProcessOutputBuffer... method run (line 373) | @Override class ProcessOutputBuffer (line 385) | private static class ProcessOutputBuffer { method ProcessOutputBuffer (line 391) | private ProcessOutputBuffer(int maxChars) { method append (line 395) | private synchronized void append(String value) { method read (line 403) | private synchronized Chunk read(long offset, int limit) { method nextOffset (line 413) | private synchronized long nextOffset() { method tail (line 417) | private synchronized String tail(int maxChars) { method trim (line 425) | private void trim() { class Chunk (line 434) | private static class Chunk { method Chunk (line 441) | private Chunk(long offset, long nextOffset, boolean truncated, Str... method getOffset (line 448) | private long getOffset() { method getNextOffset (line 452) | private long getNextOffset() { method isTruncated (line 456) | private boolean isTruncated() { method getContent (line 460) | private String getContent() { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/process/StoredProcessSnapshot.java class StoredProcessSnapshot (line 8) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/prompt/CodingContextPromptAssembler.java class CodingContextPromptAssembler (line 12) | public final class CodingContextPromptAssembler { method CodingContextPromptAssembler (line 14) | private CodingContextPromptAssembler() { method mergeSystemPrompt (line 17) | public static String mergeSystemPrompt(String basePrompt, WorkspaceCon... method buildWorkspacePrompt (line 28) | private static String buildWorkspacePrompt(WorkspaceContext workspaceC... method appendSkillGuidance (line 53) | private static void appendSkillGuidance(StringBuilder builder, List toSkillDescriptors(List listTasks(); method listTasksByParentSessionId (line 24) | List listTasksByParentSessionId(String parentSessionId); method listSessionLinks (line 26) | List listSessionLinks(String parentSessionId); method getDefinitionRegistry (line 28) | CodingAgentDefinitionRegistry getDefinitionRegistry(); FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/runtime/CodingRuntimeListener.java type CodingRuntimeListener (line 6) | public interface CodingRuntimeListener { method onTaskCreated (line 8) | void onTaskCreated(CodingTask task, CodingSessionLink link); method onTaskUpdated (line 10) | void onTaskUpdated(CodingTask task); FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/runtime/DefaultCodingRuntime.java class DefaultCodingRuntime (line 44) | public class DefaultCodingRuntime implements CodingRuntime { method DefaultCodingRuntime (line 59) | public DefaultCodingRuntime(WorkspaceContext workspaceContext, method DefaultCodingRuntime (line 70) | public DefaultCodingRuntime(WorkspaceContext workspaceContext, method DefaultCodingRuntime (line 93) | public DefaultCodingRuntime(WorkspaceContext workspaceContext, method DefaultCodingRuntime (line 105) | public DefaultCodingRuntime(WorkspaceContext workspaceContext, method delegate (line 129) | @Override method getTask (line 186) | @Override method addListener (line 191) | @Override method removeListener (line 198) | @Override method listTasks (line 205) | @Override method listTasksByParentSessionId (line 210) | @Override method listSessionLinks (line 215) | @Override method getDefinitionRegistry (line 222) | @Override method runTask (line 227) | private CodingDelegateResult runTask(CodingSession parentSession, method createChildSession (line 259) | private CodingSession createChildSession(CodingSession parentSession, method resolveSeedState (line 303) | private CodingSessionState resolveSeedState(CodingSession parentSessio... method requireDefinition (line 310) | private CodingAgentDefinition requireDefinition(CodingDelegateRequest ... method defaultSessionMode (line 319) | private CodingSessionMode defaultSessionMode(CodingAgentDefinition def... method composeInput (line 325) | private String composeInput(CodingDelegateRequest request) { method saveTask (line 340) | private CodingTask saveTask(CodingTask task) { method persistInitialTask (line 349) | private CodingTask persistInitialTask(CodingTask task) { method saveLink (line 356) | private CodingSessionLink saveLink(CodingSessionLink link) { method updateTask (line 363) | private CodingTask updateTask(String taskId, method progress (line 384) | private CodingTaskProgress progress(String phase, String message, Inte... method buildDelegateResult (line 393) | private CodingDelegateResult buildDelegateResult(CodingTask task, Exce... method mergeText (line 406) | private String mergeText(String base, String extra) { method resolveDelegateOutputText (line 416) | private String resolveDelegateOutputText(CodingAgentResult result, Cod... method resolveLatestAssistantMessage (line 431) | private String resolveLatestAssistantMessage(MemorySnapshot snapshot) { method extractMessageText (line 449) | private String extractMessageText(JSONArray content) { method toJSONObject (line 473) | private JSONObject toJSONObject(Object raw) { method firstNonBlank (line 490) | private String firstNonBlank(String... values) { method trimToNull (line 503) | private String trimToNull(String value) { method isBlank (line 511) | private boolean isBlank(String value) { method safeMessage (line 515) | private String safeMessage(Throwable throwable) { method notifyTaskCreated (line 530) | private void notifyTaskCreated(CodingTask task, CodingSessionLink link) { method notifyTaskUpdated (line 539) | private void notifyTaskUpdated(CodingTask task) { method copyTask (line 548) | private CodingTask copyTask(CodingTask task) { method copyLink (line 552) | private CodingSessionLink copyLink(CodingSessionLink link) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/session/CodingSessionDescriptor.java class CodingSessionDescriptor (line 8) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/session/CodingSessionLink.java class CodingSessionLink (line 7) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/session/CodingSessionLinkStore.java type CodingSessionLinkStore (line 5) | public interface CodingSessionLinkStore { method save (line 7) | CodingSessionLink save(CodingSessionLink link); method listLinks (line 9) | List listLinks(); method listLinksByParentSessionId (line 11) | List listLinksByParentSessionId(String parentSessio... method findByChildSessionId (line 13) | CodingSessionLink findByChildSessionId(String childSessionId); FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/session/InMemoryCodingSessionLinkStore.java class InMemoryCodingSessionLinkStore (line 10) | public class InMemoryCodingSessionLinkStore implements CodingSessionLink... method save (line 14) | @Override method listLinks (line 24) | @Override method listLinksByParentSessionId (line 29) | @Override method findByChildSessionId (line 44) | @Override method sort (line 50) | private List sort(Iterable value... method sortInPlace (line 61) | private void sortInPlace(List items) { method isBlank (line 83) | private boolean isBlank(String value) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/session/ManagedCodingSession.java class ManagedCodingSession (line 6) | public class ManagedCodingSession implements AutoCloseable { method ManagedCodingSession (line 21) | public ManagedCodingSession(CodingSession session, method getSession (line 47) | public CodingSession getSession() { method getSessionId (line 51) | public String getSessionId() { method getProvider (line 55) | public String getProvider() { method getProtocol (line 59) | public String getProtocol() { method getModel (line 63) | public String getModel() { method getWorkspace (line 67) | public String getWorkspace() { method getWorkspaceDescription (line 71) | public String getWorkspaceDescription() { method getSystemPrompt (line 75) | public String getSystemPrompt() { method getInstructions (line 79) | public String getInstructions() { method getRootSessionId (line 83) | public String getRootSessionId() { method getParentSessionId (line 87) | public String getParentSessionId() { method getCreatedAtEpochMs (line 91) | public long getCreatedAtEpochMs() { method getUpdatedAtEpochMs (line 95) | public long getUpdatedAtEpochMs() { method touch (line 99) | public void touch(long updatedAtEpochMs) { method toDescriptor (line 103) | public CodingSessionDescriptor toDescriptor() { method close (line 123) | @Override FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/session/SessionEvent.java class SessionEvent (line 10) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/session/SessionEventType.java type SessionEventType (line 3) | public enum SessionEventType { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/shell/LocalShellCommandExecutor.java class LocalShellCommandExecutor (line 14) | public class LocalShellCommandExecutor implements ShellCommandExecutor { method LocalShellCommandExecutor (line 19) | public LocalShellCommandExecutor(WorkspaceContext workspaceContext, lo... method execute (line 24) | @Override method buildShellCommand (line 71) | private List buildShellCommand(String command) { method isBlank (line 75) | private boolean isBlank(String value) { method appendTimeoutHint (line 79) | private void appendTimeoutHint(StringBuilder stderr) { class StreamCollector (line 89) | private static class StreamCollector implements Runnable { method StreamCollector (line 95) | private StreamCollector(InputStream inputStream, StringBuilder targe... method run (line 101) | @Override FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/shell/ShellCommandExecutor.java type ShellCommandExecutor (line 3) | public interface ShellCommandExecutor { method execute (line 5) | ShellCommandResult execute(ShellCommandRequest request) throws Exception; FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/shell/ShellCommandRequest.java class ShellCommandRequest (line 8) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/shell/ShellCommandResult.java class ShellCommandResult (line 8) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/shell/ShellCommandSupport.java class ShellCommandSupport (line 9) | public final class ShellCommandSupport { method ShellCommandSupport (line 14) | private ShellCommandSupport() { method buildShellCommand (line 17) | public static List buildShellCommand(String command) { method buildShellCommand (line 21) | static List buildShellCommand(String command, String osName) { method buildShellUsageGuidance (line 28) | public static String buildShellUsageGuidance() { method buildShellUsageGuidance (line 32) | static String buildShellUsageGuidance(String osName) { method resolveShellCharset (line 39) | public static Charset resolveShellCharset() { method resolveShellCharset (line 55) | static Charset resolveShellCharset(String osName, String[] explicitCan... method isWindows (line 67) | private static boolean isWindows(String osName) { method firstSupportedCharset (line 71) | private static Charset firstSupportedCharset(String[] candidates) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/skill/CodingSkillDescriptor.java class CodingSkillDescriptor (line 8) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/skill/CodingSkillDiscovery.java class CodingSkillDiscovery (line 11) | public final class CodingSkillDiscovery { method CodingSkillDiscovery (line 13) | private CodingSkillDiscovery() { method enrich (line 16) | public static WorkspaceContext enrich(WorkspaceContext workspaceContex... method discover (line 27) | public static DiscoveryResult discover(WorkspaceContext workspaceConte... method toCodingDescriptors (line 38) | private static List toCodingDescriptors(List skills, List getSkills() { method getAllowedReadRoots (line 71) | public List getAllowedReadRoots() { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/task/CodingTask.java class CodingTask (line 6) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/task/CodingTaskManager.java type CodingTaskManager (line 5) | public interface CodingTaskManager { method save (line 7) | CodingTask save(CodingTask task); method getTask (line 9) | CodingTask getTask(String taskId); method listTasks (line 11) | List listTasks(); method listTasksByParentSessionId (line 13) | List listTasksByParentSessionId(String parentSessionId); FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/task/CodingTaskProgress.java class CodingTaskProgress (line 6) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/task/CodingTaskStatus.java type CodingTaskStatus (line 3) | public enum CodingTaskStatus { method isTerminal (line 11) | public boolean isTerminal() { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/task/InMemoryCodingTaskManager.java class InMemoryCodingTaskManager (line 10) | public class InMemoryCodingTaskManager implements CodingTaskManager { method save (line 14) | @Override method getTask (line 24) | @Override method listTasks (line 30) | @Override method listTasksByParentSessionId (line 35) | @Override method sort (line 50) | private List sort(Iterable values) { method sortInPlace (line 61) | private void sortInPlace(List items) { method isBlank (line 83) | private boolean isBlank(String value) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/tool/ApplyPatchToolExecutor.java class ApplyPatchToolExecutor (line 20) | public class ApplyPatchToolExecutor implements ToolExecutor { method ApplyPatchToolExecutor (line 33) | public ApplyPatchToolExecutor(WorkspaceContext workspaceContext) { method execute (line 37) | @Override method apply (line 48) | private ApplyPatchResult apply(String patchText) throws IOException { method applyAddFile (line 105) | private PatchOperation applyAddFile(List lines, int startIndex... method applyUpdateFile (line 129) | private PatchOperation applyUpdateFile(List lines, int startIn... method applyDeleteFile (line 154) | private PatchOperation applyDeleteFile(String path, int startIndex) th... method applyUpdateBody (line 170) | private String applyUpdateBody(String original, List body, Str... method parseHunks (line 218) | private List> parseHunks(List body) { method resolveAnchor (line 249) | private List resolveAnchor(List hunk) { method findAnchor (line 274) | private int findAnchor(List originalLines, int fromIndex, List... method ensureMatch (line 294) | private void ensureMatch(List originalLines, int current, Stri... method appendRange (line 304) | private void appendRange(List output, List originalLin... method writeFile (line 310) | private void writeFile(Path file, String content) throws IOException { method splitContentLines (line 318) | private List splitContentLines(String content) { method joinLines (line 335) | private String joinLines(List lines) { method normalizeRelativePath (line 349) | private String normalizeRelativePath(String path) { method parseArguments (line 358) | private JSONObject parseArguments(String rawArguments) { method normalizeLines (line 365) | private List normalizeLines(String content) { method countPrefixedLines (line 379) | private int countPrefixedLines(List lines, char prefix) { method normalizeUpdateBody (line 392) | private List normalizeUpdateBody(List body) { method isUnifiedDiffMetadataLine (line 414) | private boolean isUnifiedDiffMetadataLine(String line) { method parseDirective (line 424) | private PatchDirective parseDirective(String line) { method directivePath (line 452) | private String directivePath(String line, String directivePrefix) { method normalizePatchPath (line 464) | private String normalizePatchPath(String rawPath) { method looksLikeAbsolutePath (line 472) | private boolean looksLikeAbsolutePath(String path) { class PatchOperation (line 485) | private static final class PatchOperation { method PatchOperation (line 490) | private PatchOperation(int nextIndex, ApplyPatchFileChange fileChang... class PatchDirective (line 496) | private static final class PatchDirective { method PatchDirective (line 501) | private PatchDirective(String operation, String path) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/tool/BashToolExecutor.java class BashToolExecutor (line 19) | public class BashToolExecutor implements ToolExecutor { method BashToolExecutor (line 26) | public BashToolExecutor(WorkspaceContext workspaceContext, method execute (line 35) | @Override method exec (line 62) | private String exec(JSONObject arguments) throws Exception { method start (line 71) | private String start(JSONObject arguments) throws Exception { method status (line 76) | private String status(JSONObject arguments) { method logs (line 80) | private String logs(JSONObject arguments) { method write (line 89) | private String write(JSONObject arguments) throws Exception { method stop (line 98) | private String stop(JSONObject arguments) { method list (line 102) | private String list() { method parseArguments (line 106) | private JSONObject parseArguments(String rawArguments) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/tool/CodingToolNames.java class CodingToolNames (line 7) | public final class CodingToolNames { method CodingToolNames (line 14) | private CodingToolNames() { method allBuiltIn (line 17) | public static Set allBuiltIn() { method readOnlyBuiltIn (line 21) | public static Set readOnlyBuiltIn() { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/tool/CodingToolRegistryFactory.java class CodingToolRegistryFactory (line 10) | public final class CodingToolRegistryFactory { method CodingToolRegistryFactory (line 12) | private CodingToolRegistryFactory() { method createBuiltInRegistry (line 15) | public static AgentToolRegistry createBuiltInRegistry() { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/tool/ReadFileToolExecutor.java class ReadFileToolExecutor (line 11) | public class ReadFileToolExecutor implements ToolExecutor { method ReadFileToolExecutor (line 16) | public ReadFileToolExecutor(WorkspaceFileService workspaceFileService,... method execute (line 21) | @Override method parseArguments (line 33) | private JSONObject parseArguments(String rawArguments) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/tool/RoutingToolExecutor.java class RoutingToolExecutor (line 12) | public class RoutingToolExecutor implements ToolExecutor { method RoutingToolExecutor (line 17) | public RoutingToolExecutor(List routes, ToolExecutor fallbackEx... method execute (line 26) | @Override method route (line 40) | public static Route route(Set toolNames, ToolExecutor executor) { class Route (line 44) | public static class Route { method Route (line 49) | public Route(Set toolNames, ToolExecutor executor) { method supports (line 58) | public boolean supports(String toolName) { method getExecutor (line 62) | public ToolExecutor getExecutor() { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/tool/ToolExecutorDecorator.java type ToolExecutorDecorator (line 5) | public interface ToolExecutorDecorator { method decorate (line 7) | ToolExecutor decorate(String toolName, ToolExecutor delegate); FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/tool/WriteFileToolExecutor.java class WriteFileToolExecutor (line 17) | public class WriteFileToolExecutor implements ToolExecutor { method WriteFileToolExecutor (line 21) | public WriteFileToolExecutor(WorkspaceContext workspaceContext) { method execute (line 25) | @Override method resolvePath (line 78) | private Path resolvePath(String path) { method parseArguments (line 87) | private JSONObject parseArguments(String rawArguments) { method safeTrim (line 94) | private String safeTrim(String value) { method firstNonBlank (line 98) | private String firstNonBlank(String... values) { method isBlank (line 110) | private boolean isBlank(String value) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/workspace/LocalWorkspaceFileService.java class LocalWorkspaceFileService (line 14) | public class LocalWorkspaceFileService implements WorkspaceFileService { method LocalWorkspaceFileService (line 18) | public LocalWorkspaceFileService(WorkspaceContext workspaceContext) { method listFiles (line 22) | @Override method readFile (line 54) | @Override method writeFile (line 99) | @Override method safeSize (line 126) | private long safeSize(Path path) { method toRelativePath (line 137) | private String toRelativePath(Path path) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/workspace/WorkspaceContext.java class WorkspaceContext (line 16) | @Data method getRoot (line 42) | public Path getRoot() { method resolveWorkspacePath (line 46) | public Path resolveWorkspacePath(String path) { method resolveReadablePath (line 62) | public Path resolveReadablePath(String path) { method getAllowedReadRootPaths (line 83) | public List getAllowedReadRootPaths() { method isExcluded (line 97) | public boolean isExcluded(Path absolutePath) { method defaultExcludedPaths (line 111) | private static List defaultExcludedPaths() { method isBlank (line 115) | private boolean isBlank(String value) { FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/workspace/WorkspaceEntry.java class WorkspaceEntry (line 8) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/workspace/WorkspaceFileReadResult.java class WorkspaceFileReadResult (line 8) | @Data FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/workspace/WorkspaceFileService.java type WorkspaceFileService (line 6) | public interface WorkspaceFileService { method listFiles (line 8) | List listFiles(String path, int maxDepth, int maxEntri... method readFile (line 10) | WorkspaceFileReadResult readFile(String path, Integer startLine, Integ... method writeFile (line 12) | WorkspaceWriteResult writeFile(String path, String content, boolean ap... FILE: ai4j-coding/src/main/java/io/github/lnyocly/ai4j/coding/workspace/WorkspaceWriteResult.java class WorkspaceWriteResult (line 8) | @Data FILE: ai4j-coding/src/test/java/io/github/lnyocly/ai4j/coding/ApplyPatchToolExecutorTest.java class ApplyPatchToolExecutorTest (line 21) | public class ApplyPatchToolExecutorTest { method shouldAddUpdateAndDeleteFiles (line 26) | @Test method shouldAcceptShortDirectiveAliases (line 82) | @Test method shouldAcceptDirectiveWithoutSpaceAfterColonAndWorkspaceRootPath (line 103) | @Test method shouldAcceptUnifiedDiffMetadataBeforePatchHunk (line 127) | @Test method shouldRejectEscapingWorkspace (line 155) | @Test(expected = IllegalArgumentException.class) method call (line 170) | private AgentToolCall call(String patch) { method patch (line 179) | private String patch(String... lines) { FILE: ai4j-coding/src/test/java/io/github/lnyocly/ai4j/coding/BashToolExecutorTest.java class BashToolExecutorTest (line 22) | public class BashToolExecutorTest { method shouldExecuteForegroundCommand (line 27) | @Test method shouldManageBackgroundProcessLifecycle (line 46) | @Test method shouldWriteToBackgroundProcess (line 71) | @Test method shouldExposeRestoredProcessesAsMetadataOnly (line 89) | @Test method call (line 125) | private AgentToolCall call(String arguments) { method json (line 132) | private String json(Object... pairs) { method awaitLogs (line 140) | private JSONObject awaitLogs(BashToolExecutor executor, String process... method backgroundCommand (line 155) | private String backgroundCommand() { method stdinEchoCommand (line 162) | private String stdinEchoCommand() { method isWindows (line 169) | private boolean isWindows() { FILE: ai4j-coding/src/test/java/io/github/lnyocly/ai4j/coding/CodingAgentBuilderTest.java class CodingAgentBuilderTest (line 36) | public class CodingAgentBuilderTest { method shouldRunBuiltInCodingToolWithinAgentLoop (line 41) | @Test method shouldApplyPatchWithinAgentLoop (line 83) | @Test method shouldReturnToolErrorInsteadOfAbortingSession (line 126) | @Test method shouldAllowModelToInvokeDelegateTool (line 169) | @Test method shouldAllowModelToInvokeGenericSubAgentToolWithinCodingSession (line 228) | @Test method shouldAllowDelegatedCodingWorkerToInvokeConfiguredSubAgent (line 285) | @Test class QueueModelClient (line 372) | private static class QueueModelClient implements AgentModelClient { method enqueue (line 376) | private void enqueue(AgentModelResult result) { method create (line 380) | @Override method createStream (line 385) | @Override FILE: ai4j-coding/src/test/java/io/github/lnyocly/ai4j/coding/CodingRuntimeTest.java class CodingRuntimeTest (line 46) | public class CodingRuntimeTest { method shouldResolveBuiltInDefinitionsByNameAndToolName (line 51) | @Test method shouldExposeDelegateToolsInBuiltInRegistry (line 62) | @Test method shouldFilterToolsForReadOnlyDefinitions (line 76) | @Test method shouldDelegateSynchronouslyAndTrackTaskAndLinks (line 99) | @Test method shouldFallbackToAssistantMemoryWhenDelegateOutputTextIsBlank (line 137) | @Test method shouldDelegateInBackgroundAndEventuallyComplete (line 175) | @Test method waitForTask (line 214) | private CodingTask waitForTask(CodingTaskManager taskManager, String t... method collectToolNames (line 226) | private List collectToolNames(AgentToolRegistry registry) { class QueueModelClient (line 243) | private static class QueueModelClient implements AgentModelClient { method enqueue (line 247) | private void enqueue(AgentModelResult result) { method create (line 251) | @Override method createStream (line 256) | @Override class BlockingModelClient (line 267) | private static class BlockingModelClient implements AgentModelClient { method BlockingModelClient (line 273) | private BlockingModelClient(String outputText) { method create (line 277) | @Override method createStream (line 287) | @Override method awaitStarted (line 297) | private boolean awaitStarted(long timeout, TimeUnit unit) throws Int... method release (line 301) | private void release() { FILE: ai4j-coding/src/test/java/io/github/lnyocly/ai4j/coding/CodingSessionCheckpointFormatterTest.java class CodingSessionCheckpointFormatterTest (line 8) | public class CodingSessionCheckpointFormatterTest { method shouldIgnoreLeadingProseBeforeMarkdownSections (line 10) | @Test method shouldParseStructuredJsonCheckpoint (line 34) | @Test FILE: ai4j-coding/src/test/java/io/github/lnyocly/ai4j/coding/CodingSessionTest.java class CodingSessionTest (line 32) | public class CodingSessionTest { method shouldSnapshotAndCompactSessionMemory (line 39) | @Test method shouldExportAndRestoreSessionState (line 81) | @Test method shouldRestoreProcessMetadataAsReadOnlySnapshots (line 118) | @Test method shouldReadPreviewLogsFromRestoredProcessSnapshots (line 161) | @Test method shouldAutoCompactWhenTokenBudgetExceeded (line 203) | @Test method shouldMicroCompactOversizedToolResultsBeforeFullCheckpointCompaction (line 243) | @Test method shouldOpenAutoCompactCircuitBreakerAfterRepeatedFailures (line 287) | @Test method shouldRetryCompactSummaryAfterPromptTooLong (line 334) | @Test method shouldFallbackWhenPromptTooLongRetriesAreExhausted (line 364) | @Test method shouldUseSessionMemoryFallbackWhenCheckpointAlreadyExists (line 394) | @Test method shouldReuseExistingCheckpointForAggressiveFallback (line 428) | @Test method shouldExposeCheckpointDeltaStrategyWhenReusingPreviousCheckpoint (line 469) | @Test method shouldPreserveLatestCompactMetadataAcrossExportAndRestore (line 501) | @Test method shouldPreserveAutoCompactBreakerAcrossExportAndRestore (line 540) | @Test method shouldClearPendingLoopArtifactsAfterManualCompact (line 592) | @Test class CompactionAwareModelClient (line 622) | private static final class CompactionAwareModelClient implements Agent... method create (line 624) | @Override method createStream (line 657) | @Override method findLastUserText (line 667) | private String findLastUserText(AgentPrompt prompt) { method repeat (line 675) | private String repeat(String text, int times) { method firstMemorySnapshot (line 684) | private MemorySnapshot firstMemorySnapshot() { method singleToolRegistry (line 688) | private AgentToolRegistry singleToolRegistry(String toolName) { method largeToolExecutor (line 695) | private ToolExecutor largeToolExecutor() { method toolCallResult (line 704) | private AgentModelResult toolCallResult(String toolName, String callId) { method assistantResult (line 716) | private AgentModelResult assistantResult(String text) { method repeat (line 723) | private String repeat(String text, int times) { method findLastUserText (line 731) | private String findLastUserText(AgentPrompt prompt) { class QueueModelClient (line 739) | private static final class QueueModelClient implements AgentModelClient { method enqueue (line 744) | private void enqueue(AgentModelResult result) { method getSummaryPromptCount (line 748) | private int getSummaryPromptCount() { method create (line 752) | @Override method createStream (line 762) | @Override class FailingCompactionModelClient (line 773) | private final class FailingCompactionModelClient implements AgentModel... method create (line 777) | @Override method createStream (line 791) | @Override method getSummaryPromptCount (line 801) | private int getSummaryPromptCount() { class PromptTooLongOnceCompactionModelClient (line 806) | private final class PromptTooLongOnceCompactionModelClient implements ... method PromptTooLongOnceCompactionModelClient (line 812) | private PromptTooLongOnceCompactionModelClient(int promptTooLongThre... method create (line 816) | @Override method createStream (line 848) | @Override method getSummaryPromptCount (line 858) | private int getSummaryPromptCount() { method getPromptTooLongFailures (line 862) | private int getPromptTooLongFailures() { class AlwaysPromptTooLongCompactionModelClient (line 867) | private final class AlwaysPromptTooLongCompactionModelClient implement... method create (line 871) | @Override method createStream (line 885) | @Override method getSummaryPromptCount (line 895) | private int getSummaryPromptCount() { class FirstSummaryThenFailingCompactionModelClient (line 900) | private final class FirstSummaryThenFailingCompactionModelClient imple... method create (line 904) | @Override method createStream (line 933) | @Override class FirstSummaryThenAggressiveFailingCompactionModelClient (line 944) | private final class FirstSummaryThenAggressiveFailingCompactionModelCl... method create (line 948) | @Override method createStream (line 985) | @Override method getSummaryPromptCount (line 995) | private int getSummaryPromptCount() { FILE: ai4j-coding/src/test/java/io/github/lnyocly/ai4j/coding/CodingSkillSupportTest.java class CodingSkillSupportTest (line 26) | public class CodingSkillSupportTest { method shouldDiscoverSkillsAndInjectAvailableSkillsPrompt (line 31) | @Test method shouldAllowReadOnlySkillFilesOutsideWorkspace (line 91) | @Test method writeSkill (line 123) | private static Path writeSkill(Path skillFile, String content) throws ... method restoreProperty (line 129) | private static void restoreProperty(String key, String value) { class CapturingModelClient (line 137) | private static final class CapturingModelClient implements AgentModelC... method create (line 141) | @Override method createStream (line 150) | @Override method getLastPrompt (line 155) | public AgentPrompt getLastPrompt() { FILE: ai4j-coding/src/test/java/io/github/lnyocly/ai4j/coding/LocalShellCommandExecutorTest.java class LocalShellCommandExecutorTest (line 17) | public class LocalShellCommandExecutorTest { method shouldRunCommandInsideWorkspace (line 22) | @Test method shouldExplainHowToHandleTimedOutInteractiveOrLongRunningCommands (line 39) | @Test method timeoutCommand (line 56) | private String timeoutCommand() { FILE: ai4j-coding/src/test/java/io/github/lnyocly/ai4j/coding/MinimaxCodingAgentTeamWorkspaceUsageTest.java class MinimaxCodingAgentTeamWorkspaceUsageTest (line 47) | public class MinimaxCodingAgentTeamWorkspaceUsageTest { method setupMinimaxClient (line 57) | @Before method test_travel_demo_team_delivers_workspace_artifacts (line 77) | @Test method member (line 235) | private AgentTeamMember member(WorkspaceContext workspaceContext, method buildWorkspaceCodingAgent (line 249) | private Agent buildWorkspaceCodingAgent(WorkspaceContext workspaceCont... method seedWorkspace (line 273) | private void seedWorkspace(Path workspaceRoot) throws IOException { method write (line 311) | private void write(Path path, String content) throws IOException { method assertFileContains (line 315) | private void assertFileContains(Path path, String expected) throws IOE... method assertFileContainsAny (line 322) | private void assertFileContainsAny(Path path, String... expectedValues... method assertFileContainsIgnoreCase (line 335) | private void assertFileContainsIgnoreCase(Path path, String expected) ... method assertTodoRemoved (line 342) | private void assertTodoRemoved(Path path, String todoMarker) throws IO... method renderSummary (line 348) | private String renderSummary(String objective, List states) { method describeTaskStates (line 404) | private String describeTaskStates(List states) { method callWithProviderGuard (line 430) | private T callWithProviderGuard(ThrowingSupplier supplier) thro... method skipIfProviderUnavailable (line 439) | private void skipIfProviderUnavailable(Throwable throwable) { method isProviderUnavailable (line 445) | private boolean isProviderUnavailable(Throwable throwable) { method extractRootMessage (line 469) | private String extractRootMessage(Throwable throwable) { method createHttpClient (line 479) | private OkHttpClient createHttpClient() { method readValue (line 491) | private String readValue(String envKey, String propertyKey) { method safe (line 499) | private String safe(String value) { method isBlank (line 503) | private boolean isBlank(String value) { type ThrowingSupplier (line 507) | @FunctionalInterface method get (line 509) | T get() throws Exception; FILE: ai4j-coding/src/test/java/io/github/lnyocly/ai4j/coding/ReadFileToolExecutorTest.java class ReadFileToolExecutorTest (line 21) | public class ReadFileToolExecutorTest { method shouldReadFileInsideWorkspace (line 26) | @Test method shouldRejectPathOutsideWorkspace (line 47) | @Test(expected = IllegalArgumentException.class) FILE: ai4j-coding/src/test/java/io/github/lnyocly/ai4j/coding/WriteFileToolExecutorTest.java class WriteFileToolExecutorTest (line 21) | public class WriteFileToolExecutorTest { method shouldCreateOverwriteAndAppendFiles (line 26) | @Test method shouldAllowWritingAbsolutePathOutsideWorkspace (line 49) | @Test method call (line 63) | private AgentToolCall call(String path, String content, String mode) { FILE: ai4j-coding/src/test/java/io/github/lnyocly/ai4j/coding/loop/CodingAgentLoopControllerTest.java class CodingAgentLoopControllerTest (line 41) | public class CodingAgentLoopControllerTest { method shouldContinueWithHiddenInstructionsWithoutAddingExtraUserMessage (line 48) | @Test method shouldStopWhenMaxAutoFollowUpsIsReached (line 69) | @Test method shouldStopWhenApprovalIsRejected (line 98) | @Test method shouldStopAfterToolWorkWhenAssistantAlreadyReturnedFinalAnswer (line 117) | @Test method shouldReanchorContinuationPromptFromCheckpointAfterCompaction (line 137) | @Test method shouldInjectConstraintsBlockedAndProcessesIntoContinuationPrompt (line 169) | @Test method newAgent (line 217) | private CodingAgent newAgent(InspectableQueueModelClient modelClient, method defaultOptions (line 235) | private CodingAgentOptions defaultOptions() { method singleToolRegistry (line 244) | private AgentToolRegistry singleToolRegistry(String toolName) { method okToolExecutor (line 251) | private ToolExecutor okToolExecutor() { method approvalRejectedToolExecutor (line 260) | private ToolExecutor approvalRejectedToolExecutor() { method toolCallResult (line 269) | private AgentModelResult toolCallResult(String toolName, String callId) { method assistantResult (line 281) | private AgentModelResult assistantResult(String text) { method repeat (line 288) | private String repeat(String text, int times) { method compactSummaryResult (line 296) | private static AgentModelResult compactSummaryResult() { method findContinuationInstructions (line 313) | private String findContinuationInstructions(List prompts) { method countUserMessages (line 327) | private int countUserMessages(MemorySnapshot snapshot) { class InspectableQueueModelClient (line 344) | private static final class InspectableQueueModelClient implements Agen... method enqueue (line 349) | private void enqueue(AgentModelResult result) { method getPrompts (line 353) | private List getPrompts() { method create (line 357) | @Override method createStream (line 369) | @Override FILE: ai4j-coding/src/test/java/io/github/lnyocly/ai4j/coding/shell/ShellCommandSupportTest.java class ShellCommandSupportTest (line 12) | public class ShellCommandSupportTest { method shouldBuildWindowsShellCommandAndGuidance (line 14) | @Test method shouldBuildPosixShellCommandAndGuidance (line 25) | @Test method shouldResolveWindowsShellCharsetFromNativeEncoding (line 37) | @Test method shouldPreferExplicitShellCharsetOverride (line 48) | @Test FILE: ai4j-flowgram-demo/src/main/java/io/github/lnyocly/ai4j/flowgram/demo/FlowGramDemoApplication.java class FlowGramDemoApplication (line 6) | @SpringBootApplication method main (line 9) | public static void main(String[] args) { FILE: ai4j-flowgram-demo/src/main/java/io/github/lnyocly/ai4j/flowgram/demo/FlowGramDemoMockController.java class FlowGramDemoMockController (line 11) | @RestController method weather (line 15) | @GetMapping("/weather") method pickWeather (line 31) | private String pickWeather(int seed) { method pickTemperature (line 36) | private String pickTemperature(int seed) { method pickAdvice (line 42) | private String pickAdvice(int seed) { method isBlank (line 52) | private boolean isBlank(String value) { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/adapter/FlowGramProtocolAdapter.java class FlowGramProtocolAdapter (line 23) | public class FlowGramProtocolAdapter { method toTaskRunInput (line 25) | public FlowGramTaskRunInput toTaskRunInput(FlowGramTaskRunRequest requ... method toTaskRunInput (line 32) | public FlowGramTaskRunInput toTaskRunInput(FlowGramTaskValidateRequest... method toRunResponse (line 39) | public FlowGramTaskRunResponse toRunResponse(FlowGramTaskRunOutput out... method toValidateResponse (line 45) | public FlowGramTaskValidateResponse toValidateResponse(FlowGramTaskVal... method toReportResponse (line 54) | public FlowGramTaskReportResponse toReportResponse(String taskId, method toResultResponse (line 91) | public FlowGramTaskResultResponse toResultResponse(String taskId, method toCancelResponse (line 104) | public FlowGramTaskCancelResponse toCancelResponse(boolean success) { method schemaToJson (line 110) | private String schemaToJson(Object schema) { method safeMap (line 120) | private Map safeMap(Map source) { method copyValue (line 131) | @SuppressWarnings("unchecked") FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/autoconfigure/FlowGramAutoConfiguration.java class FlowGramAutoConfiguration (line 51) | @Configuration method flowGramTaskStore (line 59) | @Bean method flowGramCallerResolver (line 84) | @Bean method flowGramAccessChecker (line 90) | @Bean method flowGramTaskOwnershipStrategy (line 96) | @Bean method flowGramProtocolAdapter (line 102) | @Bean method flowGramLlmNodeRunner (line 108) | @Bean method flowGramRuntimeService (line 119) | @Bean method flowGramHttpNodeExecutor (line 130) | @Bean method flowGramVariableNodeExecutor (line 136) | @Bean method flowGramCodeNodeExecutor (line 142) | @Bean method flowGramToolNodeExecutor (line 148) | @Bean method flowGramKnowledgeRetrieveNodeExecutor (line 154) | @Bean method flowGramNodeExecutorRegistrar (line 170) | @Bean method flowGramRuntimeListenerRegistrar (line 183) | @Bean method flowGramRuntimeTraceCollector (line 196) | @Bean method flowGramRuntimeFacade (line 202) | @Bean method flowGramTaskController (line 215) | @Bean method flowGramExceptionHandler (line 221) | @Bean FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/config/FlowGramProperties.java class FlowGramProperties (line 10) | @Data class ApiProperties (line 25) | @Data class TaskStoreProperties (line 30) | @Data class CorsProperties (line 37) | @Data class AuthProperties (line 42) | @Data FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/controller/FlowGramTaskController.java class FlowGramTaskController (line 20) | @RestController method FlowGramTaskController (line 26) | public FlowGramTaskController(FlowGramRuntimeFacade runtimeFacade) { method run (line 30) | @PostMapping("/tasks/run") method validate (line 36) | @PostMapping("/tasks/validate") method report (line 42) | @GetMapping("/tasks/{taskId}/report") method result (line 48) | @GetMapping("/tasks/{taskId}/result") method cancel (line 54) | @PostMapping("/tasks/{taskId}/cancel") FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/dto/FlowGramErrorResponse.java class FlowGramErrorResponse (line 8) | @Data FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/dto/FlowGramTaskCancelResponse.java class FlowGramTaskCancelResponse (line 8) | @Data FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/dto/FlowGramTaskReportResponse.java class FlowGramTaskReportResponse (line 10) | @Data class WorkflowStatus (line 23) | @Data class NodeStatus (line 35) | @Data FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/dto/FlowGramTaskResultResponse.java class FlowGramTaskResultResponse (line 10) | @Data FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/dto/FlowGramTaskRunRequest.java class FlowGramTaskRunRequest (line 10) | @Data FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/dto/FlowGramTaskRunResponse.java class FlowGramTaskRunResponse (line 8) | @Data FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/dto/FlowGramTaskValidateRequest.java class FlowGramTaskValidateRequest (line 10) | @Data FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/dto/FlowGramTaskValidateResponse.java class FlowGramTaskValidateResponse (line 10) | @Data FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/dto/FlowGramTraceView.java class FlowGramTraceView (line 11) | @Data class EventView (line 25) | @Data class NodeView (line 37) | @Data class SummaryView (line 54) | @Data class MetricsView (line 69) | @Data FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/exception/FlowGramAccessDeniedException.java class FlowGramAccessDeniedException (line 6) | public class FlowGramAccessDeniedException extends FlowGramApiException { method FlowGramAccessDeniedException (line 8) | public FlowGramAccessDeniedException(FlowGramAction action) { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/exception/FlowGramApiException.java class FlowGramApiException (line 5) | public class FlowGramApiException extends RuntimeException { method FlowGramApiException (line 11) | public FlowGramApiException(HttpStatus status, String code, String mes... method FlowGramApiException (line 15) | public FlowGramApiException(HttpStatus status, String code, String mes... method getStatus (line 22) | public HttpStatus getStatus() { method getCode (line 26) | public String getCode() { method getDetails (line 30) | public Object getDetails() { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/exception/FlowGramExceptionHandler.java class FlowGramExceptionHandler (line 9) | @RestControllerAdvice method handleFlowGramApiException (line 12) | @ExceptionHandler(FlowGramApiException.class) method handleIllegalArgumentException (line 18) | @ExceptionHandler(IllegalArgumentException.class) method handleException (line 24) | @ExceptionHandler(Exception.class) method error (line 30) | private FlowGramErrorResponse error(String code, String message, Objec... FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/exception/FlowGramTaskNotFoundException.java class FlowGramTaskNotFoundException (line 5) | public class FlowGramTaskNotFoundException extends FlowGramApiException { method FlowGramTaskNotFoundException (line 7) | public FlowGramTaskNotFoundException(String taskId) { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/node/FlowGramCodeNodeExecutor.java class FlowGramCodeNodeExecutor (line 15) | public class FlowGramCodeNodeExecutor implements FlowGramNodeExecutor { method getType (line 19) | @Override method execute (line 24) | @Override method buildScript (line 60) | private String buildScript(String userCode, Map params) { method parseOutputs (line 81) | private Map parseOutputs(String rawResult) { method tryParse (line 99) | private Object tryParse(String raw) { method mapValue (line 107) | private Map mapValue(Object value) { method safeMap (line 116) | private Map safeMap(Map value) { method valueAsString (line 120) | private String valueAsString(Object value) { method isBlank (line 124) | private boolean isBlank(String value) { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/node/FlowGramHttpNodeExecutor.java class FlowGramHttpNodeExecutor (line 21) | public class FlowGramHttpNodeExecutor implements FlowGramNodeExecutor { method getType (line 25) | @Override method execute (line 30) | @Override method executeRequest (line 65) | private Map executeRequest(String fullUrl, method buildRequestBody (line 129) | private String buildRequestBody(Map body, FlowGramNode... method readBody (line 152) | private String readBody(HttpURLConnection connection, int statusCode) ... method appendQueryParams (line 170) | private String appendQueryParams(String rawUrl, Map pa... method encode (line 192) | private String encode(String value) throws Exception { method allowsRequestBody (line 196) | private boolean allowsRequestBody(String method) { method mapValue (line 200) | private Map mapValue(Object value) { method safeMap (line 209) | private Map safeMap(Map value) { method valueAsString (line 213) | private String valueAsString(Object value) { method intValue (line 217) | private int intValue(Object value, int defaultValue) { method firstNonBlank (line 231) | private String firstNonBlank(String first, String fallback) { method isBlank (line 235) | private boolean isBlank(String value) { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/node/FlowGramKnowledgeRetrieveNodeExecutor.java class FlowGramKnowledgeRetrieveNodeExecutor (line 28) | public class FlowGramKnowledgeRetrieveNodeExecutor implements FlowGramNo... method FlowGramKnowledgeRetrieveNodeExecutor (line 35) | public FlowGramKnowledgeRetrieveNodeExecutor(AiServiceRegistry aiServi... method getType (line 45) | @Override method execute (line 50) | @Override method requiredString (line 105) | private String requiredString(Map inputs, String key) { method valueAsString (line 113) | private String valueAsString(Object value) { method intValue (line 117) | private int intValue(Object value, int defaultValue) { method firstNonBlank (line 131) | private String firstNonBlank(String... values) { method mapValue (line 143) | @SuppressWarnings("unchecked") method mapHits (line 162) | private List> mapHits(List hits) { method mapCitations (line 194) | private List> mapCitations(List citat... method mapTrace (line 216) | private Map mapTrace(RagTrace trace) { method mapScoreDetails (line 228) | private List> mapScoreDetails(List... FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/node/FlowGramNodeValueResolver.java class FlowGramNodeValueResolver (line 10) | class FlowGramNodeValueResolver { method resolve (line 12) | public Object resolve(Object value, FlowGramNodeExecutionContext conte... method resolveMap (line 46) | public Map resolveMap(Map raw, FlowGra... method resolveList (line 57) | public List resolveList(List raw, FlowGramNodeExecutionCont... method renderTemplate (line 68) | public String renderTemplate(String template, FlowGramNodeExecutionCon... method replaceTemplatePattern (line 78) | private String replaceTemplatePattern(String template, method evaluateExpression (line 99) | private Object evaluateExpression(String expression, FlowGramNodeExecu... method resolvePathExpression (line 120) | private Object resolvePathExpression(String expression, FlowGramNodeEx... method resolveReference (line 134) | private Object resolveReference(Object content, FlowGramNodeExecutionC... method resolveRootReference (line 149) | private Object resolveRootReference(Object segment, FlowGramNodeExecut... method descend (line 169) | private Object descend(Object current, Object segment) { method objectList (line 189) | private List objectList(Object value) { method mapValue (line 207) | private Map mapValue(Object value) { method safeMap (line 216) | private Map safeMap(Map value) { method copyValue (line 220) | private Object copyValue(Object value) { method normalizeType (line 240) | private String normalizeType(String type) { method valueAsString (line 244) | private String valueAsString(Object value) { method valueAsInteger (line 248) | private Integer valueAsInteger(Object value) { method valueAsDouble (line 266) | private Double valueAsDouble(Object value) { method isBlank (line 284) | private boolean isBlank(String value) { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/node/FlowGramToolNodeExecutor.java class FlowGramToolNodeExecutor (line 15) | public class FlowGramToolNodeExecutor implements FlowGramNodeExecutor { method getType (line 17) | @Override method execute (line 22) | @Override method tryExecuteBuiltinDemoTool (line 76) | private String tryExecuteBuiltinDemoTool(String toolName, String argum... method tryParse (line 86) | private Object tryParse(String raw) { method valueAsString (line 97) | private String valueAsString(Object value) { method trimToNull (line 101) | private String trimToNull(String value) { method extractIntegerArgument (line 109) | private Integer extractIntegerArgument(String argumentsJson, String ke... FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/node/FlowGramVariableNodeExecutor.java class FlowGramVariableNodeExecutor (line 11) | public class FlowGramVariableNodeExecutor implements FlowGramNodeExecutor { method getType (line 15) | @Override method execute (line 20) | @Override method dataValue (line 43) | private Object dataValue(FlowGramNodeExecutionContext context, String ... method listValue (line 48) | private List listValue(Object value) { method mapValue (line 57) | private Map mapValue(Object value) { method valueAsString (line 66) | private String valueAsString(Object value) { method isBlank (line 70) | private boolean isBlank(String value) { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/security/DefaultFlowGramAccessChecker.java class DefaultFlowGramAccessChecker (line 5) | public class DefaultFlowGramAccessChecker implements FlowGramAccessCheck... method isAllowed (line 7) | @Override FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/security/DefaultFlowGramCallerResolver.java class DefaultFlowGramCallerResolver (line 8) | public class DefaultFlowGramCallerResolver implements FlowGramCallerReso... method DefaultFlowGramCallerResolver (line 14) | public DefaultFlowGramCallerResolver(FlowGramProperties properties) { method resolve (line 18) | @Override method anonymousCaller (line 36) | private FlowGramCaller anonymousCaller() { method trimToNull (line 44) | private String trimToNull(String value) { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/security/DefaultFlowGramTaskOwnershipStrategy.java class DefaultFlowGramTaskOwnershipStrategy (line 5) | public class DefaultFlowGramTaskOwnershipStrategy implements FlowGramTas... method DefaultFlowGramTaskOwnershipStrategy (line 9) | public DefaultFlowGramTaskOwnershipStrategy(Duration retention) { method createOwnership (line 13) | @Override FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/security/FlowGramAccessChecker.java type FlowGramAccessChecker (line 5) | public interface FlowGramAccessChecker { method isAllowed (line 7) | boolean isAllowed(FlowGramAction action, FlowGramCaller caller, FlowGr... FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/security/FlowGramAction.java type FlowGramAction (line 3) | public enum FlowGramAction { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/security/FlowGramCaller.java class FlowGramCaller (line 10) | @Data FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/security/FlowGramCallerResolver.java type FlowGramCallerResolver (line 5) | public interface FlowGramCallerResolver { method resolve (line 7) | FlowGramCaller resolve(HttpServletRequest request); FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/security/FlowGramTaskOwnership.java class FlowGramTaskOwnership (line 8) | @Data FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/security/FlowGramTaskOwnershipStrategy.java type FlowGramTaskOwnershipStrategy (line 3) | public interface FlowGramTaskOwnershipStrategy { method createOwnership (line 5) | FlowGramTaskOwnership createOwnership(String taskId, FlowGramCaller ca... FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/support/FlowGramRuntimeFacade.java class FlowGramRuntimeFacade (line 31) | public class FlowGramRuntimeFacade { method FlowGramRuntimeFacade (line 43) | public FlowGramRuntimeFacade(FlowGramRuntimeService runtimeService, method run (line 61) | public FlowGramTaskRunResponse run(FlowGramTaskRunRequest request, Htt... method validate (line 79) | public FlowGramTaskValidateResponse validate(FlowGramTaskValidateReque... method report (line 86) | public FlowGramTaskReportResponse report(String taskId, HttpServletReq... method result (line 107) | public FlowGramTaskResultResponse result(String taskId, HttpServletReq... method cancel (line 123) | public FlowGramTaskCancelResponse cancel(String taskId, HttpServletReq... method resolveCaller (line 134) | private FlowGramCaller resolveCaller(HttpServletRequest servletRequest) { method loadTask (line 139) | private FlowGramStoredTask loadTask(String taskId) { method ensureAllowed (line 147) | private void ensureAllowed(FlowGramAction action, FlowGramCaller calle... method resolveTrace (line 153) | private FlowGramTraceView resolveTrace(String taskId, FlowGramTaskRepo... FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/support/FlowGramRuntimeTraceCollector.java class FlowGramRuntimeTraceCollector (line 19) | public class FlowGramRuntimeTraceCollector implements FlowGramRuntimeLis... method onEvent (line 23) | @Override method getTrace (line 32) | public FlowGramTraceView getTrace(String taskId) { method getTrace (line 37) | public FlowGramTraceView getTrace(String taskId, FlowGramTaskReportOut... method isBlank (line 46) | private boolean isBlank(String value) { class TraceSnapshot (line 50) | private static final class TraceSnapshot { method TraceSnapshot (line 59) | private TraceSnapshot(String taskId) { method onEvent (line 63) | private synchronized void onEvent(FlowGramRuntimeEvent event) { method updateNode (line 99) | private void updateNode(FlowGramRuntimeEvent event) { method mergeReport (line 122) | private synchronized void mergeReport(FlowGramTaskReportOutput repor... method toView (line 173) | private synchronized FlowGramTraceView toView() { method buildMetricsView (line 252) | private FlowGramTraceView.MetricsView buildMetricsView(MutableNodeTr... method hasUsageMetrics (line 267) | private boolean hasUsageMetrics(MutableNodeTrace value) { method extractMetrics (line 274) | private NodeMetrics extractMetrics(Map inputs, Map T firstNonNull(T left, T right) { method firstNonNull (line 393) | private static Object firstNonNull(Object... values) { method longObject (line 405) | private static Long longObject(Object value) { method doubleObject (line 419) | private static Double doubleObject(Object value) { method sum (line 433) | private static Long sum(Long left, Long right) { method sum (line 443) | private static Double sum(Double left, Double right) { method propertyValue (line 453) | @SuppressWarnings("unchecked") method normalizedSource (line 473) | private static Object normalizedSource(Object source) { method normalizeTree (line 485) | @SuppressWarnings("unchecked") method invokeAccessor (line 510) | private static Object invokeAccessor(Object source, String methodName) { method fieldValue (line 531) | private static Object fieldValue(Object source, String name) { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/support/FlowGramStoredTask.java class FlowGramStoredTask (line 10) | @Data FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/support/FlowGramTaskStore.java type FlowGramTaskStore (line 5) | public interface FlowGramTaskStore { method save (line 7) | void save(FlowGramStoredTask task); method find (line 9) | FlowGramStoredTask find(String taskId); method updateState (line 11) | void updateState(String taskId, String status, Boolean terminated, Str... FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/support/FlowGramTraceResponseEnricher.java class FlowGramTraceResponseEnricher (line 12) | class FlowGramTraceResponseEnricher { method enrichReportResponse (line 14) | FlowGramTaskReportResponse enrichReportResponse(FlowGramTaskReportResp... method enrichTrace (line 25) | FlowGramTraceView enrichTrace(FlowGramTraceView trace, method enrichNodes (line 96) | private Map enrichNodes( method mergeOutputs (line 117) | private Map mergeOutputs(Map outputs, ... method mergeMetrics (line 141) | private FlowGramTraceView.MetricsView mergeMetrics(FlowGramTraceView.M... method extractNodeMetrics (line 159) | private NodeMetrics extractNodeMetrics(FlowGramTaskReportResponse.Node... method hasMetrics (line 184) | private static boolean hasMetrics(FlowGramTraceView.MetricsView metric... method putIfAbsent (line 194) | private static void putIfAbsent(Map target, String key... method value (line 200) | @SuppressWarnings("unchecked") method normalizeMap (line 220) | @SuppressWarnings("unchecked") method normalizeTree (line 234) | @SuppressWarnings("unchecked") method stringValue (line 265) | private static String stringValue(Object source, String key) { method longValue (line 270) | private static Long longValue(Object value) { method doubleValue (line 284) | private static Double doubleValue(Object value) { method sum (line 298) | private static Long sum(Long left, Long right) { method sum (line 308) | private static Double sum(Double left, Double right) { method firstNonBlank (line 318) | private static String firstNonBlank(String... values) { method firstNonNull (line 330) | private static T firstNonNull(T left, T right) { class NodeMetrics (line 334) | private static final class NodeMetrics { method NodeMetrics (line 344) | private NodeMetrics(String model, method hasUsageLikeContent (line 362) | private boolean hasUsageLikeContent() { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/support/InMemoryFlowGramTaskStore.java class InMemoryFlowGramTaskStore (line 8) | public class InMemoryFlowGramTaskStore implements FlowGramTaskStore { method save (line 12) | @Override method find (line 20) | @Override method updateState (line 26) | @Override method copy (line 51) | private FlowGramStoredTask copy(FlowGramStoredTask task) { method copyMap (line 57) | private Map copyMap(Map source) { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/support/JdbcFlowGramTaskStore.java class JdbcFlowGramTaskStore (line 15) | public class JdbcFlowGramTaskStore implements FlowGramTaskStore { method JdbcFlowGramTaskStore (line 20) | public JdbcFlowGramTaskStore(DataSource dataSource, String tableName, ... method save (line 31) | @Override method find (line 39) | @Override method updateState (line 70) | @Override method initializeSchema (line 94) | private void initializeSchema() { method upsert (line 116) | private void upsert(FlowGramStoredTask task) { method copy (line 161) | private FlowGramStoredTask copy(FlowGramStoredTask task) { method copyMap (line 167) | private Map copyMap(Map source) { method parseSnapshot (line 176) | private Map parseSnapshot(String json) { method longValue (line 184) | private Long longValue(ResultSet resultSet, String column) throws Exce... method booleanValue (line 189) | private Boolean booleanValue(ResultSet resultSet, String column) throw... method setLong (line 194) | private void setLong(PreparedStatement statement, int index, Long valu... method validIdentifier (line 202) | private String validIdentifier(String value) { method isBlank (line 209) | private boolean isBlank(String value) { FILE: ai4j-flowgram-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/flowgram/springboot/support/RegistryBackedFlowGramModelClientResolver.java class RegistryBackedFlowGramModelClientResolver (line 14) | public class RegistryBackedFlowGramModelClientResolver implements Ai4jFl... method RegistryBackedFlowGramModelClientResolver (line 21) | public RegistryBackedFlowGramModelClientResolver(AiServiceRegistry aiS... method resolve (line 27) | @Override method firstNonBlank (line 40) | private String firstNonBlank(String... values) { method valueAsString (line 52) | private String valueAsString(Object value) { FILE: ai4j-flowgram-spring-boot-starter/src/test/java/io/github/lnyocly/ai4j/flowgram/springboot/FlowGramJdbcTaskStoreAutoConfigurationTest.java class FlowGramJdbcTaskStoreAutoConfigurationTest (line 23) | @RunWith(SpringRunner.class) method shouldAutoConfigureJdbcTaskStoreWhenDataSourceIsPresent (line 39) | @Test class TestApplication (line 44) | @SpringBootConfiguration method dataSource (line 48) | @Bean method flowGramLlmNodeRunner (line 57) | @Bean FILE: ai4j-flowgram-spring-boot-starter/src/test/java/io/github/lnyocly/ai4j/flowgram/springboot/FlowGramRuntimeTraceCollectorTest.java class FlowGramRuntimeTraceCollectorTest (line 15) | public class FlowGramRuntimeTraceCollectorTest { method shouldMergeReportMetricsIntoTraceProjection (line 17) | @Test method shouldExtractUsageFromObjectRawResponse (line 57) | @Test method singleNodeReport (line 108) | private Map singleNodeRep... method inputMap (line 135) | private Map inputMap(String modelName) { method event (line 141) | private FlowGramRuntimeEvent event(FlowGramRuntimeEvent.Type type, FILE: ai4j-flowgram-spring-boot-starter/src/test/java/io/github/lnyocly/ai4j/flowgram/springboot/FlowGramTaskControllerIntegrationTest.java class FlowGramTaskControllerIntegrationTest (line 54) | @RunWith(SpringRunner.class) method setUp (line 76) | @Before method shouldRunTaskThroughControllerAndRegisterExtensionBeans (line 81) | @Test method shouldValidateWorkflowRequest (line 128) | @Test method shouldBackfillTraceMetricsFromSerializedLlmResponse (line 143) | @Test method shouldReturnNotFoundForUnknownTask (line 173) | @Test method awaitResult (line 184) | private JSONObject awaitResult(String taskId) throws Exception { method postForJson (line 196) | private JSONObject postForJson(String path, Object body) throws Except... method getForJson (line 205) | private JSONObject getForJson(String path) throws Exception { method customExecutorWorkflow (line 212) | private static FlowGramWorkflowSchema customExecutorWorkflow() { method llmWorkflow (line 226) | private static FlowGramWorkflowSchema llmWorkflow() { method invalidWorkflow (line 240) | private static FlowGramWorkflowSchema invalidWorkflow() { method node (line 249) | private static FlowGramNodeSchema node(String id, String type, Map startData() { method transformData (line 269) | private static Map transformData() { method llmData (line 277) | private static Map llmData() { method endData (line 294) | private static Map endData(Map resultV... method stringSchema (line 301) | private static Map stringSchema() { method objectSchema (line 305) | private static Map objectSchema(List required,... method property (line 319) | private static Map property(String name, Map required(String... names) { method ref (line 327) | private static Map ref(String... path) { method constant (line 331) | private static Map constant(Object value) { method mapOf (line 335) | private static Map mapOf(Object... keyValues) { class TestApplication (line 343) | @SpringBootConfiguration method flowGramLlmNodeRunner (line 347) | @Bean method transformNodeExecutor (line 371) | @Bean method testRuntimeEventCollector (line 389) | @Bean method flowGramRuntimeListener (line 394) | @Bean class TestRuntimeEventCollector (line 400) | public static class TestRuntimeEventCollector implements FlowGramRunti... method onEvent (line 404) | @Override method clear (line 411) | public void clear() { method hasEventType (line 415) | public boolean hasEventType(FlowGramRuntimeEvent.Type type) { method hasNodeEvent (line 424) | public boolean hasNodeEvent(String nodeId, FlowGramRuntimeEvent.Type... FILE: ai4j-flowgram-spring-boot-starter/src/test/java/io/github/lnyocly/ai4j/flowgram/springboot/node/FlowGramBuiltinNodeExecutorTest.java class FlowGramBuiltinNodeExecutorTest (line 23) | public class FlowGramBuiltinNodeExecutorTest { method shouldResolveVariableAssignments (line 25) | @Test method shouldRunCodeNodeScript (line 47) | @Test method shouldInvokeToolNode (line 69) | @Test method shouldInvokeHttpNode (line 87) | @Test method node (line 144) | private static FlowGramNodeSchema node(String id, String type, Map mapOf(Object... keyValues) { method isNashornAvailable (line 161) | private boolean isNashornAvailable() { FILE: ai4j-flowgram-spring-boot-starter/src/test/java/io/github/lnyocly/ai4j/flowgram/springboot/node/FlowGramKnowledgeRetrieveNodeExecutorTest.java class FlowGramKnowledgeRetrieveNodeExecutorTest (line 35) | public class FlowGramKnowledgeRetrieveNodeExecutorTest { method shouldProduceStructuredKnowledgeOutputs (line 37) | @Test method node (line 79) | private static FlowGramNodeSchema node(String id, String type, Map mapOf(Object... keyValues) { class FakeRegistry (line 96) | private static class FakeRegistry implements AiServiceRegistry { method find (line 97) | @Override method ids (line 102) | @Override method getEmbeddingService (line 107) | @Override method getChatService (line 130) | @Override method getAudioService (line 135) | @Override method getRealtimeService (line 140) | @Override method getImageService (line 145) | @Override method getResponsesService (line 150) | @Override class FakeVectorStore (line 156) | private static class FakeVectorStore implements VectorStore { method upsert (line 157) | @Override method search (line 162) | @Override method delete (line 177) | @Override method capabilities (line 182) | @Override FILE: ai4j-flowgram-spring-boot-starter/src/test/java/io/github/lnyocly/ai4j/flowgram/springboot/support/JdbcFlowGramTaskStoreTest.java class JdbcFlowGramTaskStoreTest (line 14) | public class JdbcFlowGramTaskStoreTest { method shouldPersistAndUpdateTaskState (line 16) | @Test method dataSource (line 44) | private JdbcDataSource dataSource(String suffix) { FILE: ai4j-flowgram-webapp-demo/src/assets/icon-cancel.tsx type Props (line 6) | interface Props { FILE: ai4j-flowgram-webapp-demo/src/assets/icon-comment.tsx type IconCommentProps (line 8) | interface IconCommentProps { FILE: ai4j-flowgram-webapp-demo/src/assets/icon-mouse.tsx function IconMouse (line 6) | function IconMouse(props: { width?: number; height?: number }) { FILE: ai4j-flowgram-webapp-demo/src/assets/icon-pad.tsx function IconPad (line 6) | function IconPad(props: { width?: number; height?: number }) { FILE: ai4j-flowgram-webapp-demo/src/assets/icon-success.tsx type Props (line 6) | interface Props { FILE: ai4j-flowgram-webapp-demo/src/assets/icon-warning.tsx type Props (line 6) | interface Props { FILE: ai4j-flowgram-webapp-demo/src/components/base-node/node-wrapper.tsx type NodeWrapperProps (line 17) | interface NodeWrapperProps { FILE: ai4j-flowgram-webapp-demo/src/components/base-node/utils.ts function scrollToView (line 8) | function scrollToView( FILE: ai4j-flowgram-webapp-demo/src/components/comment/components/blank-area.tsx type IBlankArea (line 13) | interface IBlankArea { FILE: ai4j-flowgram-webapp-demo/src/components/comment/components/border-area.tsx type IBorderArea (line 12) | interface IBorderArea { FILE: ai4j-flowgram-webapp-demo/src/components/comment/components/container.tsx type ICommentContainer (line 8) | interface ICommentContainer { FILE: ai4j-flowgram-webapp-demo/src/components/comment/components/content-drag-area.tsx type IContentDragArea (line 13) | interface IContentDragArea { FILE: ai4j-flowgram-webapp-demo/src/components/comment/components/drag-area.tsx type IDragArea (line 12) | interface IDragArea { FILE: ai4j-flowgram-webapp-demo/src/components/comment/components/editor.tsx type ICommentEditor (line 14) | interface ICommentEditor { FILE: ai4j-flowgram-webapp-demo/src/components/comment/components/more-button.tsx type IMoreButton (line 12) | interface IMoreButton { FILE: ai4j-flowgram-webapp-demo/src/components/comment/components/resize-area.tsx type IResizeArea (line 12) | interface IResizeArea { FILE: ai4j-flowgram-webapp-demo/src/components/comment/constant.ts type CommentEditorFormField (line 8) | enum CommentEditorFormField { type CommentEditorEvent (line 14) | enum CommentEditorEvent { FILE: ai4j-flowgram-webapp-demo/src/components/comment/model.ts class CommentEditorModel (line 11) | class CommentEditorModel { method value (line 22) | public get value(): string { method setValue (line 27) | public setValue(value: string = CommentEditorDefaultValue): void { method setInitValue (line 43) | public setInitValue(value: string = CommentEditorDefaultValue): void { method element (line 58) | public set element(el: HTMLTextAreaElement) { method element (line 66) | public get element(): HTMLTextAreaElement { method setFocus (line 71) | public setFocus(focused: boolean): void { method selectEnd (line 87) | public selectEnd(): void { method focused (line 98) | public get focused(): boolean { method deselect (line 103) | private deselect(): void { method initialized (line 113) | private get initialized(): boolean { method syncEditorValue (line 121) | private syncEditorValue(): void { FILE: ai4j-flowgram-webapp-demo/src/components/comment/type.ts type CommentEditorChangeEvent (line 8) | interface CommentEditorChangeEvent { type CommentEditorMultiSelectEvent (line 13) | interface CommentEditorMultiSelectEvent { type CommentEditorSelectEvent (line 17) | interface CommentEditorSelectEvent { type CommentEditorBlurEvent (line 21) | interface CommentEditorBlurEvent { type CommentEditorInitEvent (line 25) | interface CommentEditorInitEvent { type CommentEditorEventParams (line 30) | type CommentEditorEventParams = FILE: ai4j-flowgram-webapp-demo/src/components/group/color.ts type GroupColor (line 6) | type GroupColor = { FILE: ai4j-flowgram-webapp-demo/src/components/group/components/background.tsx type GroupBackgroundProps (line 13) | interface GroupBackgroundProps { FILE: ai4j-flowgram-webapp-demo/src/components/group/components/header.tsx type GroupHeaderProps (line 13) | interface GroupHeaderProps { FILE: ai4j-flowgram-webapp-demo/src/components/group/components/icon-group.tsx type IconGroupProps (line 8) | interface IconGroupProps { FILE: ai4j-flowgram-webapp-demo/src/components/group/components/tips/global-store.ts constant STORAGE_KEY (line 8) | const STORAGE_KEY = 'workflow-move-into-group-tip-visible'; constant STORAGE_VALUE (line 9) | const STORAGE_VALUE = 'false'; class TipsGlobalStore (line 11) | class TipsGlobalStore { method instance (line 14) | public static get instance(): TipsGlobalStore { method isClosed (line 23) | public isClosed(): boolean { method close (line 27) | public close(): void { method isCloseForever (line 31) | public isCloseForever(): boolean { method closeForever (line 35) | public closeForever(): void { FILE: ai4j-flowgram-webapp-demo/src/components/group/components/ungroup.tsx type UngroupButtonProps (line 14) | interface UngroupButtonProps { FILE: ai4j-flowgram-webapp-demo/src/components/group/constant.ts constant HEADER_HEIGHT (line 6) | const HEADER_HEIGHT = 30; constant HEADER_PADDING (line 7) | const HEADER_PADDING = 5; type GroupField (line 9) | enum GroupField { FILE: ai4j-flowgram-webapp-demo/src/components/node-menu/index.tsx type NodeMenuProps (line 25) | interface NodeMenuProps { FILE: ai4j-flowgram-webapp-demo/src/components/node-panel/index.tsx type NodePanelRenderProps (line 16) | interface NodePanelRenderProps extends NodePanelRenderPropsDefault { FILE: ai4j-flowgram-webapp-demo/src/components/node-panel/node-list.tsx type NodeProps (line 40) | interface NodeProps { function Node (line 47) | function Node(props: NodeProps) { type NodeListProps (line 68) | interface NodeListProps { FILE: ai4j-flowgram-webapp-demo/src/components/problem-panel/use-watch-validate.ts constant DEBOUNCE_TIME (line 13) | const DEBOUNCE_TIME = 1000; FILE: ai4j-flowgram-webapp-demo/src/components/selector-box-popover/index.tsx constant BUTTON_HEIGHT (line 16) | const BUTTON_HEIGHT = 24; FILE: ai4j-flowgram-webapp-demo/src/components/sidebar/node-form-panel.tsx type NodeFormPanelProps (line 19) | interface NodeFormPanelProps { FILE: ai4j-flowgram-webapp-demo/src/components/sidebar/sidebar-node-renderer.tsx function SidebarNodeRenderer (line 10) | function SidebarNodeRenderer(props: { node: FlowNodeEntity }) { FILE: ai4j-flowgram-webapp-demo/src/components/testrun/hooks/use-form-meta.ts constant DEFAULT_DECLARE (line 14) | const DEFAULT_DECLARE: IJsonSchema = { FILE: ai4j-flowgram-webapp-demo/src/components/testrun/json-value-editor/index.tsx function JsonValueEditor (line 18) | function JsonValueEditor({ FILE: ai4j-flowgram-webapp-demo/src/components/testrun/node-status-bar/group/index.tsx type NodeStatusGroupProps (line 16) | interface NodeStatusGroupProps { FILE: ai4j-flowgram-webapp-demo/src/components/testrun/node-status-bar/header/index.tsx type NodeStatusBarProps (line 15) | interface NodeStatusBarProps { FILE: ai4j-flowgram-webapp-demo/src/components/testrun/node-status-bar/render/index.tsx type NodeStatusRenderProps (line 20) | interface NodeStatusRenderProps { FILE: ai4j-flowgram-webapp-demo/src/components/testrun/node-status-bar/viewer/index.tsx type DataStructureViewerProps (line 13) | interface DataStructureViewerProps { type TreeNodeProps (line 18) | interface TreeNodeProps { FILE: ai4j-flowgram-webapp-demo/src/components/testrun/testrun-button/index.tsx function TestRunButton (line 16) | function TestRunButton(props: { disabled: boolean }) { FILE: ai4j-flowgram-webapp-demo/src/components/testrun/testrun-form/index.tsx type TestRunFormProps (line 19) | interface TestRunFormProps { FILE: ai4j-flowgram-webapp-demo/src/components/testrun/testrun-form/type.ts type TestRunFormMetaItem (line 8) | interface TestRunFormMetaItem { type TestRunFormMeta (line 16) | type TestRunFormMeta = TestRunFormMetaItem[]; type TestRunFormField (line 18) | interface TestRunFormField extends TestRunFormMetaItem { FILE: ai4j-flowgram-webapp-demo/src/components/testrun/testrun-json-input/index.tsx type TestRunJsonInputProps (line 13) | interface TestRunJsonInputProps { FILE: ai4j-flowgram-webapp-demo/src/components/testrun/testrun-panel/test-run-panel.tsx type TestRunSidePanelProps (line 22) | interface TestRunSidePanelProps {} FILE: ai4j-flowgram-webapp-demo/src/components/testrun/trace-panel/index.tsx type TracePanelProps (line 15) | interface TracePanelProps { FILE: ai4j-flowgram-webapp-demo/src/components/tools/interactive.tsx constant CACHE_KEY (line 16) | const CACHE_KEY = 'workflow_prefer_interactive_type'; constant IS_MAC_OS (line 17) | const IS_MAC_OS = /(Macintosh|MacIntel|MacPPC|Mac68K|iPad)/.test(navigat... type InteractiveType (line 31) | enum InteractiveType { FILE: ai4j-flowgram-webapp-demo/src/components/tools/mouse-pad-selector.tsx type InteractiveType (line 17) | enum InteractiveType { type MousePadSelectorProps (line 22) | interface MousePadSelectorProps { FILE: ai4j-flowgram-webapp-demo/src/components/tools/save.tsx function Save (line 11) | function Save(props: { disabled: boolean }) { FILE: ai4j-flowgram-webapp-demo/src/context/node-render-context.ts type INodeRenderContext (line 10) | interface INodeRenderContext extends NodeRenderReturnType {} FILE: ai4j-flowgram-webapp-demo/src/data/workflow-templates.ts type WorkflowTemplate (line 5) | interface WorkflowTemplate { FILE: ai4j-flowgram-webapp-demo/src/editor.tsx constant DRAFT_STORAGE_KEY (line 24) | const DRAFT_STORAGE_KEY = 'ai4j.flowgram.workbench.draft.v2'; constant PROMPT_EDITOR_COMPONENT (line 25) | const PROMPT_EDITOR_COMPONENT = 'prompt-editor'; FILE: ai4j-flowgram-webapp-demo/src/form-components/feedback.tsx type StatePanelProps (line 9) | interface StatePanelProps { FILE: ai4j-flowgram-webapp-demo/src/form-components/form-content/index.tsx function FormContent (line 17) | function FormContent(props: { children?: React.ReactNode }) { FILE: ai4j-flowgram-webapp-demo/src/form-components/form-header/index.tsx function FormHeader (line 21) | function FormHeader() { FILE: ai4j-flowgram-webapp-demo/src/form-components/form-header/title-input.tsx function TitleInput (line 15) | function TitleInput(props: { FILE: ai4j-flowgram-webapp-demo/src/form-components/form-inputs/index.tsx function FormInputs (line 14) | function FormInputs() { FILE: ai4j-flowgram-webapp-demo/src/form-components/form-item/index.tsx type FormItemProps (line 15) | interface FormItemProps { function FormItem (line 26) | function FormItem({ FILE: ai4j-flowgram-webapp-demo/src/hooks/use-editor-props.tsx function useEditorProps (line 41) | function useEditorProps( FILE: ai4j-flowgram-webapp-demo/src/hooks/use-is-sidebar.ts function useIsSidebar (line 10) | function useIsSidebar() { FILE: ai4j-flowgram-webapp-demo/src/hooks/use-node-render-context.ts function useNodeRenderContext (line 10) | function useNodeRenderContext() { FILE: ai4j-flowgram-webapp-demo/src/nodes/block-end/index.ts method canAdd (line 43) | canAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/block-start/index.ts method canAdd (line 43) | canAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/break/index.ts method onAdd (line 35) | onAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/code/components/code.tsx function Code (line 12) | function Code() { FILE: ai4j-flowgram-webapp-demo/src/nodes/code/components/inputs.tsx function Inputs (line 12) | function Inputs() { FILE: ai4j-flowgram-webapp-demo/src/nodes/code/components/outputs.tsx function Outputs (line 13) | function Outputs() { FILE: ai4j-flowgram-webapp-demo/src/nodes/code/index.tsx method onAdd (line 40) | onAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/code/types.tsx type CodeNodeJSON (line 9) | interface CodeNodeJSON extends FlowNodeJSON { FILE: ai4j-flowgram-webapp-demo/src/nodes/condition/condition-inputs/index.tsx type ConditionValue (line 19) | interface ConditionValue { function ConditionInputs (line 24) | function ConditionInputs() { FILE: ai4j-flowgram-webapp-demo/src/nodes/condition/index.ts method onAdd (line 31) | onAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/constants.ts type WorkflowNodeType (line 6) | enum WorkflowNodeType { FILE: ai4j-flowgram-webapp-demo/src/nodes/continue/index.ts method onAdd (line 35) | onAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/end/index.ts method canAdd (line 35) | canAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/group/index.tsx method selectable (line 33) | selectable(node: WorkflowNodeEntity, mousePos?: PositionSchema): boolean { method onAdd (line 50) | onAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/http/components/api.tsx function Api (line 13) | function Api() { FILE: ai4j-flowgram-webapp-demo/src/nodes/http/components/body.tsx constant BODY_TYPE_OPTIONS (line 17) | const BODY_TYPE_OPTIONS = [ function Body (line 32) | function Body() { FILE: ai4j-flowgram-webapp-demo/src/nodes/http/components/headers.tsx function Headers (line 12) | function Headers() { FILE: ai4j-flowgram-webapp-demo/src/nodes/http/components/params.tsx function Params (line 12) | function Params() { FILE: ai4j-flowgram-webapp-demo/src/nodes/http/components/timeout.tsx function Timeout (line 12) | function Timeout() { FILE: ai4j-flowgram-webapp-demo/src/nodes/http/index.tsx method onAdd (line 27) | onAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/http/types.tsx type HTTPNodeJSON (line 10) | interface HTTPNodeJSON extends FlowNodeJSON { FILE: ai4j-flowgram-webapp-demo/src/nodes/knowledge/index.tsx method onAdd (line 22) | onAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/llm/index.ts method onAdd (line 26) | onAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/loop/form-meta.tsx type LoopNodeJSON (line 21) | interface LoopNodeJSON extends FlowNodeJSON { FILE: ai4j-flowgram-webapp-demo/src/nodes/loop/index.ts method selectable (line 65) | selectable(node: WorkflowNodeEntity, mousePos?: PositionSchema): boolean { method onAdd (line 80) | onAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/start/index.ts method canAdd (line 36) | canAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/tool/index.tsx method onAdd (line 22) | onAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/variable/index.tsx method onAdd (line 28) | onAdd() { FILE: ai4j-flowgram-webapp-demo/src/nodes/variable/types.tsx type VariableNodeJSON (line 9) | interface VariableNodeJSON extends FlowNodeJSON { FILE: ai4j-flowgram-webapp-demo/src/plugins/context-menu-plugin/context-menu-layer.tsx class ContextMenuLayer (line 23) | class ContextMenuLayer extends Layer { method onReady (line 36) | onReady() { method openNodePanel (line 45) | openNodePanel(e: MouseEvent) { method getContainerNode (line 74) | private getContainerNode(mousePos: PositionSchema): WorkflowNodeEntity... FILE: ai4j-flowgram-webapp-demo/src/plugins/context-menu-plugin/context-menu-plugin.ts type ContextMenuPluginOptions (line 14) | interface ContextMenuPluginOptions {} method onInit (line 25) | onInit(ctx, options) { FILE: ai4j-flowgram-webapp-demo/src/plugins/panel-manager-plugin/constants.ts type PanelType (line 6) | enum PanelType { FILE: ai4j-flowgram-webapp-demo/src/plugins/runtime-plugin/client/base-client.ts class WorkflowRuntimeClient (line 12) | class WorkflowRuntimeClient implements IRuntimeClient { method constructor (line 13) | constructor() {} method getLatestTrace (line 25) | public getLatestTrace(): FlowGramTraceView | undefined { method clearLatestTrace (line 29) | public clearLatestTrace(): void {} FILE: ai4j-flowgram-webapp-demo/src/plugins/runtime-plugin/client/browser-client/index.ts class WorkflowRuntimeBrowserClient (line 13) | class WorkflowRuntimeBrowserClient extends WorkflowRuntimeClient impleme... FILE: ai4j-flowgram-webapp-demo/src/plugins/runtime-plugin/client/server-client/constant.ts constant DEFAULT_SERVER_CONFIG (line 8) | const DEFAULT_SERVER_CONFIG: ServerConfig = { FILE: ai4j-flowgram-webapp-demo/src/plugins/runtime-plugin/client/server-client/index.ts type BackendTaskRunResponse (line 23) | interface BackendTaskRunResponse { type BackendTaskValidateResponse (line 27) | interface BackendTaskValidateResponse { type BackendTaskCancelResponse (line 32) | interface BackendTaskCancelResponse { type BackendWorkflowStatus (line 36) | interface BackendWorkflowStatus { type BackendNodeStatus (line 44) | interface BackendNodeStatus { type BackendTaskReportResponse (line 54) | interface BackendTaskReportResponse { type TraceMetrics (line 63) | type TraceMetrics = NonNullable; type BackendTaskResultResponse (line 314) | interface BackendTaskResultResponse { class WorkflowRuntimeServerClient (line 324) | class WorkflowRuntimeServerClient extends WorkflowRuntimeClient implemen... method init (line 329) | public init(config: ServerConfig) { method getLatestTrace (line 443) | public getLatestTrace(): FlowGramTraceView | undefined { method clearLatestTrace (line 447) | public clearLatestTrace(): void { method request (line 451) | private async request(path: string, init: RequestInit): Promise(response: Response): Promise { method toRuntimeReport (line 482) | private toRuntimeReport(output: BackendTaskReportResponse): IReport { method toSnapshots (line 504) | private toSnapshots(nodeID: string, nodeStatus?: BackendNodeStatus): S... method toMessages (line 530) | private toMessages(output: BackendTaskReportResponse): WorkflowMessages { method toStatusData (line 564) | private toStatusData(status?: BackendWorkflowStatus | BackendNodeStatu... method mapStatus (line 581) | private mapStatus(status?: string): WorkflowStatus { method isTerminal (line 602) | private isTerminal(status: WorkflowStatus): boolean { method toUrl (line 608) | private toUrl(path: string): string { FILE: ai4j-flowgram-webapp-demo/src/plugins/runtime-plugin/client/server-client/type.ts type ServerError (line 6) | interface ServerError { FILE: ai4j-flowgram-webapp-demo/src/plugins/runtime-plugin/create-runtime-plugin.ts method onBind (line 17) | onBind({ bind, rebind }, options) { method onInit (line 28) | onInit(ctx, options) { FILE: ai4j-flowgram-webapp-demo/src/plugins/runtime-plugin/runtime-service/index.ts constant SYNC_TASK_REPORT_INTERVAL (line 25) | const SYNC_TASK_REPORT_INTERVAL = 500; type NodeRunningStatus (line 27) | interface NodeRunningStatus { type WorkflowRuntimeStatus (line 33) | type WorkflowRuntimeStatus = type WorkflowRuntimeSnapshot (line 41) | interface WorkflowRuntimeSnapshot { class WorkflowRuntimeService (line 56) | class WorkflowRuntimeService { method isFlowingLine (line 112) | public isFlowingLine(line: WorkflowLineEntity) { method getDraftInputs (line 116) | public getDraftInputs(): WorkflowInputs { method setDraftInputs (line 120) | public setDraftInputs(inputs: WorkflowInputs): void { method getSnapshot (line 125) | public getSnapshot(): WorkflowRuntimeSnapshot { method taskValidate (line 138) | public async taskValidate(inputs: WorkflowInputs): Promise { method buildSchema (line 244) | private buildSchema(): string { method validateForm (line 251) | private async validateForm(): Promise { method resetRuntimeState (line 258) | private resetRuntimeState(clearInputs: boolean): void { method syncTaskReport (line 283) | private async syncTaskReport(): Promise { method extractErrors (line 344) | private extractErrors(report: IReport): string[] { method updateReport (line 360) | private updateReport(report: IReport): void { method emitSnapshot (line 400) | private emitSnapshot(): void { method clone (line 404) | private clone(value: T): T { FILE: ai4j-flowgram-webapp-demo/src/plugins/runtime-plugin/trace.ts type FlowGramTraceEventView (line 1) | interface FlowGramTraceEventView { type FlowGramTraceNodeView (line 9) | interface FlowGramTraceNodeView { type FlowGramTraceMetricsView (line 22) | interface FlowGramTraceMetricsView { type FlowGramTraceSummaryView (line 32) | interface FlowGramTraceSummaryView { type FlowGramTraceView (line 43) | interface FlowGramTraceView { FILE: ai4j-flowgram-webapp-demo/src/plugins/runtime-plugin/type.ts type RuntimeBrowserOptions (line 6) | interface RuntimeBrowserOptions { type RuntimeServerOptions (line 10) | interface RuntimeServerOptions { type RuntimePluginOptions (line 15) | type RuntimePluginOptions = RuntimeBrowserOptions | RuntimeServerOptions; type ServerConfig (line 17) | interface ServerConfig { FILE: ai4j-flowgram-webapp-demo/src/plugins/variable-panel-plugin/components/full-variable-list.tsx function FullVariableList (line 9) | function FullVariableList() { FILE: ai4j-flowgram-webapp-demo/src/plugins/variable-panel-plugin/components/global-variable-editor.tsx function GlobalVariableEditor (line 16) | function GlobalVariableEditor() { FILE: ai4j-flowgram-webapp-demo/src/plugins/variable-panel-plugin/components/variable-panel.tsx function VariablePanel (line 17) | function VariablePanel() { FILE: ai4j-flowgram-webapp-demo/src/plugins/variable-panel-plugin/variable-panel-layer.tsx class VariablePanelLayer (line 11) | class VariablePanelLayer extends Layer { method onReady (line 12) | onReady(): void { method render (line 24) | render(): JSX.Element { FILE: ai4j-flowgram-webapp-demo/src/plugins/variable-panel-plugin/variable-panel-plugin.ts type GetGlobalVariableSchema (line 27) | type GetGlobalVariableSchema = () => IJsonSchema; method onBind (line 31) | onBind({ bind }) { method onInit (line 37) | onInit(ctx, opts) { FILE: ai4j-flowgram-webapp-demo/src/services/custom-service.ts class CustomService (line 35) | class CustomService { method save (line 44) | save() { FILE: ai4j-flowgram-webapp-demo/src/services/validate-service.ts type ValidateResult (line 16) | interface ValidateResult { class ValidateService (line 22) | class ValidateService { method validateLines (line 28) | validateLines() { method validateNode (line 33) | async validateNode(node: FlowNodeEntity) { method validateNodes (line 41) | async validateNodes(): Promise { FILE: ai4j-flowgram-webapp-demo/src/shortcuts/collapse/index.ts class CollapseShortcut (line 14) | class CollapseShortcut implements ShortcutsHandler { method constructor (line 25) | constructor(context: FreeLayoutPluginContext) { method execute (line 30) | public async execute(): Promise { FILE: ai4j-flowgram-webapp-demo/src/shortcuts/constants.ts type FlowCommandId (line 8) | enum FlowCommandId { FILE: ai4j-flowgram-webapp-demo/src/shortcuts/copy/index.ts class CopyShortcut (line 32) | class CopyShortcut implements ShortcutsHandler { method constructor (line 43) | constructor(context: FreeLayoutPluginContext) { method execute (line 53) | public async execute(): Promise { method toClipboardData (line 67) | public toClipboardData(nodes?: WorkflowNodeEntity[]): WorkflowClipboar... method readonly (line 83) | private get readonly(): boolean { method hasSelectedText (line 90) | private async hasSelectedText(): Promise { method selectedNodes (line 104) | private get selectedNodes(): WorkflowNodeEntity[] { method isValid (line 113) | private isValid(nodes: WorkflowNodeEntity[]): boolean { method getValidNodes (line 126) | private getValidNodes(nodes: WorkflowNodeEntity[]): WorkflowNodeEntity... method toSource (line 143) | private toSource(): WorkflowClipboardSource { method toJSON (line 152) | private toJSON(nodes: WorkflowNodeEntity[]): WorkflowJSON { method getNodeJSONs (line 164) | private getNodeJSONs(nodes: WorkflowNodeEntity[]): WorkflowNodeJSON[] { method getGroupNodeJSON (line 176) | private getGroupNodeJSON(node: WorkflowNodeEntity): WorkflowNodeJSON { method getEdgeJSONs (line 187) | private getEdgeJSONs(nodes: WorkflowNodeEntity[]): WorkflowEdgeJSON[] { method expandGroupNodes (line 211) | private expandGroupNodes(nodes: WorkflowNodeEntity[]): WorkflowNodeEnt... method getEntireBounds (line 223) | private getEntireBounds(nodes: WorkflowNodeEntity[]): WorkflowClipboar... method write (line 237) | private async write(data: WorkflowClipboardData): Promise { method notifySuccess (line 249) | private notifySuccess(): void { FILE: ai4j-flowgram-webapp-demo/src/shortcuts/delete/index.ts class DeleteShortcut (line 22) | class DeleteShortcut implements ShortcutsHandler { method constructor (line 38) | constructor(context: FreeLayoutPluginContext) { method execute (line 49) | public async execute(nodes?: WorkflowNodeEntity[]): Promise { method readonly (line 81) | private get readonly(): boolean { method isValid (line 88) | private isValid(nodes: WorkflowNodeEntity[]): boolean { method removeNode (line 105) | private removeNode(node: WorkflowNodeEntity): void { method removeLine (line 121) | private removeLine(line: WorkflowLineEntity): void { FILE: ai4j-flowgram-webapp-demo/src/shortcuts/expand/index.ts class ExpandShortcut (line 14) | class ExpandShortcut implements ShortcutsHandler { method constructor (line 25) | constructor(context: FreeLayoutPluginContext) { method execute (line 30) | public async execute(): Promise { FILE: ai4j-flowgram-webapp-demo/src/shortcuts/paste/index.ts class PasteShortcut (line 31) | class PasteShortcut implements ShortcutsHandler { method constructor (line 53) | constructor(context: FreeLayoutPluginContext) { method execute (line 67) | public async execute(): Promise { method apply (line 93) | public apply(data: WorkflowClipboardData): WorkflowNodeEntity[] { method readonly (line 121) | private get readonly(): boolean { method isValidData (line 125) | private isValidData(data?: WorkflowClipboardData): boolean { method tryReadClipboard (line 158) | private async tryReadClipboard(): Promise { FILE: ai4j-flowgram-webapp-demo/src/shortcuts/paste/traverse.ts type TraverseValue (line 7) | type TraverseValue = any; type TraverseNode (line 10) | interface TraverseNode { type TraverseContext (line 19) | interface TraverseContext { type TraverseHandler (line 29) | type TraverseHandler = (context: TraverseContext) => void; FILE: ai4j-flowgram-webapp-demo/src/shortcuts/select-all/index.ts class SelectAllShortcut (line 15) | class SelectAllShortcut implements ShortcutsHandler { method constructor (line 24) | constructor(context: FreeLayoutPluginContext) { method execute (line 30) | public async execute(): Promise { FILE: ai4j-flowgram-webapp-demo/src/shortcuts/shortcuts.ts function shortcuts (line 17) | function shortcuts(shortcutsRegistry: ShortcutsRegistry, ctx: FreeLayout... FILE: ai4j-flowgram-webapp-demo/src/shortcuts/type.ts type WorkflowClipboardSource (line 10) | interface WorkflowClipboardSource { type WorkflowClipboardRect (line 15) | interface WorkflowClipboardRect { type WorkflowClipboardData (line 22) | interface WorkflowClipboardData { FILE: ai4j-flowgram-webapp-demo/src/shortcuts/zoom-in/index.ts class ZoomInShortcut (line 14) | class ZoomInShortcut implements ShortcutsHandler { method constructor (line 21) | constructor(context: FreeLayoutPluginContext) { method execute (line 26) | public async execute(): Promise { FILE: ai4j-flowgram-webapp-demo/src/shortcuts/zoom-out/index.ts class ZoomOutShortcut (line 14) | class ZoomOutShortcut implements ShortcutsHandler { method constructor (line 21) | constructor(context: FreeLayoutPluginContext) { method execute (line 26) | public async execute(): Promise { FILE: ai4j-flowgram-webapp-demo/src/typings/json-schema.ts type BasicType (line 8) | type BasicType = JsonSchemaBasicType; type JsonSchema (line 9) | type JsonSchema = IJsonSchema; FILE: ai4j-flowgram-webapp-demo/src/typings/node.ts type FlowNodeJSON (line 23) | interface FlowNodeJSON extends FlowNodeJSONDefault { type FlowNodeMeta (line 52) | interface FlowNodeMeta extends WorkflowNodeMeta { type FlowNodeRegistry (line 63) | interface FlowNodeRegistry extends FlowNodeRegistryDefault { type FlowDocumentJSON (line 74) | interface FlowDocumentJSON { FILE: ai4j-flowgram-webapp-demo/src/utils/backend-workflow.ts type SerializableWorkflow (line 5) | type SerializableWorkflow = string | WorkflowSchema | FlowDocumentJSON; constant UI_ONLY_TYPES (line 7) | const UI_ONLY_TYPES = new Set([ constant BACKEND_TYPE_MAP (line 14) | const BACKEND_TYPE_MAP: Record = { FILE: ai4j-flowgram-webapp-demo/src/utils/can-contain-node.ts function canContainNode (line 16) | function canContainNode( FILE: ai4j-flowgram-webapp-demo/src/utils/toggle-loop-expanded.ts function toggleLoopExpanded (line 11) | function toggleLoopExpanded( FILE: ai4j-flowgram-webapp-demo/src/workbench/workbench-shell.tsx type WorkbenchShellProps (line 19) | interface WorkbenchShellProps { FILE: ai4j-flowgram-webapp-demo/src/workbench/workbench-sidebar.tsx type WorkbenchSidebarProps (line 16) | interface WorkbenchSidebarProps { type WorkflowDocumentWithFactory (line 21) | interface WorkflowDocumentWithFactory extends WorkflowDocument { constant LOCKED_NODE_TYPES (line 30) | const LOCKED_NODE_TYPES: WorkflowNodeType[] = [WorkflowNodeType.Start, W... constant ADDABLE_NODE_TYPES (line 31) | const ADDABLE_NODE_TYPES: WorkflowNodeType[] = [ constant NODE_MATERIAL_META (line 42) | const NODE_MATERIAL_META: Record = { FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/AgentFlowProperties.java class AgentFlowProperties (line 10) | @Data class EndpointProperties (line 20) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/AgentFlowRegistry.java class AgentFlowRegistry (line 10) | public class AgentFlowRegistry { method AgentFlowRegistry (line 15) | public AgentFlowRegistry(Map agentFlows, String def... method asMap (line 23) | public Map asMap() { method names (line 27) | public Set names() { method contains (line 31) | public boolean contains(String name) { method get (line 35) | public AgentFlow get(String name) { method getDefault (line 43) | public AgentFlow getDefault() { FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/AiConfigAutoConfiguration.java class AiConfigAutoConfiguration (line 54) | @Configuration method AiConfigAutoConfiguration (line 110) | public AiConfigAutoConfiguration(OkHttpConfigProperties okHttpConfigPr... method aiService (line 133) | @Bean method aiServiceFactory (line 138) | @Bean method aiServiceRegistry (line 143) | @Bean method getFreeAiService (line 150) | @Bean method agentFlowRegistry (line 155) | @Bean method agentFlow (line 171) | @Bean method pineconeService (line 179) | @Bean method pineconeVectorStore (line 184) | @Bean method qdrantVectorStore (line 190) | @Bean method milvusVectorStore (line 197) | @Bean method pgVectorStore (line 204) | @Bean method ragContextAssembler (line 211) | @Bean method ragReranker (line 217) | @Bean method init (line 223) | @PostConstruct method initOkHttp (line 250) | private void initOkHttp() { method initOpenAiConfig (line 300) | private void initOpenAiConfig() { method initZhipuConfig (line 319) | private void initZhipuConfig() { method initPineconeConfig (line 332) | private void initPineconeConfig() { method initQdrantConfig (line 343) | private void initQdrantConfig() { method initMilvusConfig (line 356) | private void initMilvusConfig() { method initPgVectorConfig (line 374) | private void initPgVectorConfig() { method initDeepSeekConfig (line 394) | private void initDeepSeekConfig(){ method initMoonshotConfig (line 406) | private void initMoonshotConfig() { method initHunyuanConfig (line 418) | private void initHunyuanConfig() { method initLingyiConfig (line 429) | private void initLingyiConfig() { method initOllamaConfig (line 441) | private void initOllamaConfig() { method initMinimaxConfig (line 455) | private void initMinimaxConfig() { method initBaichuanConfig (line 467) | private void initBaichuanConfig() { method initSearXNGConfig (line 479) | private void initSearXNGConfig() { method initDashScopeConfig (line 491) | private void initDashScopeConfig() { method initDoubaoConfig (line 503) | private void initDoubaoConfig() { method initJinaConfig (line 516) | private void initJinaConfig() { method toAgentFlowConfig (line 525) | private AgentFlowConfig toAgentFlowConfig(AgentFlowProperties.Endpoint... FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/AiConfigProperties.java class AiConfigProperties (line 23) | @ConfigurationProperties(prefix = "ai") FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/AiPlatformProperties.java class AiPlatformProperties (line 5) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/BaichuanConfigProperties.java class BaichuanConfigProperties (line 12) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/DashScopeConfigProperties.java class DashScopeConfigProperties (line 12) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/DeepSeekConfigProperties.java class DeepSeekConfigProperties (line 12) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/DoubaoConfigProperties.java class DoubaoConfigProperties (line 8) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/HunyuanConfigProperties.java class HunyuanConfigProperties (line 12) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/JinaConfigProperties.java class JinaConfigProperties (line 6) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/LingyiConfigProperties.java class LingyiConfigProperties (line 12) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/MilvusConfigProperties.java class MilvusConfigProperties (line 9) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/MinimaxConfigProperties.java class MinimaxConfigProperties (line 13) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/MoonshotConfigProperties.java class MoonshotConfigProperties (line 12) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/OkHttpConfigProperties.java class OkHttpConfigProperties (line 16) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/OllamaConfigProperties.java class OllamaConfigProperties (line 11) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/OpenAiConfigProperties.java class OpenAiConfigProperties (line 13) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/PgVectorConfigProperties.java class PgVectorConfigProperties (line 6) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/PineconeConfigProperties.java class PineconeConfigProperties (line 12) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/QdrantConfigProperties.java class QdrantConfigProperties (line 6) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/SearXNGConfigProperties.java class SearXNGConfigProperties (line 11) | @Data FILE: ai4j-spring-boot-starter/src/main/java/io/github/lnyocly/ai4j/ZhipuConfigProperties.java class ZhipuConfigProperties (line 12) | @Data FILE: ai4j-spring-boot-starter/src/test/java/io/github/lnyocly/ai4j/AgentFlowAutoConfigurationTest.java class AgentFlowAutoConfigurationTest (line 9) | public class AgentFlowAutoConfigurationTest { method test_agent_flow_registry_is_created (line 14) | @Test method test_default_agent_flow_bean_uses_default_name (line 35) | @Test FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/AgentFlow.java class AgentFlow (line 12) | public class AgentFlow { method AgentFlow (line 17) | public AgentFlow(Configuration configuration, AgentFlowConfig config) { method getConfiguration (line 28) | public Configuration getConfiguration() { method getConfig (line 32) | public AgentFlowConfig getConfig() { method chat (line 36) | public AgentFlowChatService chat() { method workflow (line 46) | public AgentFlowWorkflowService workflow() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/AgentFlowConfig.java class AgentFlowConfig (line 15) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/AgentFlowException.java class AgentFlowException (line 3) | public class AgentFlowException extends RuntimeException { method AgentFlowException (line 5) | public AgentFlowException(String message) { method AgentFlowException (line 9) | public AgentFlowException(String message, Throwable cause) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/AgentFlowType.java type AgentFlowType (line 3) | public enum AgentFlowType { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/AgentFlowUsage.java class AgentFlowUsage (line 9) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/chat/AgentFlowChatEvent.java class AgentFlowChatEvent (line 10) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/chat/AgentFlowChatListener.java type AgentFlowChatListener (line 3) | public interface AgentFlowChatListener { method onEvent (line 5) | void onEvent(AgentFlowChatEvent event); method onOpen (line 7) | default void onOpen() { method onError (line 10) | default void onError(Throwable throwable) { method onComplete (line 13) | default void onComplete(AgentFlowChatResponse response) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/chat/AgentFlowChatRequest.java class AgentFlowChatRequest (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/chat/AgentFlowChatResponse.java class AgentFlowChatResponse (line 10) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/chat/AgentFlowChatService.java type AgentFlowChatService (line 3) | public interface AgentFlowChatService { method chat (line 5) | AgentFlowChatResponse chat(AgentFlowChatRequest request) throws Except... method chatStream (line 7) | void chatStream(AgentFlowChatRequest request, AgentFlowChatListener li... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/chat/CozeAgentFlowChatService.java class CozeAgentFlowChatService (line 27) | public class CozeAgentFlowChatService extends AgentFlowSupport implement... method CozeAgentFlowChatService (line 29) | public CozeAgentFlowChatService(Configuration configuration, AgentFlow... method chat (line 33) | @Override method chatStream (line 104) | @Override method pollChat (line 285) | private JSONObject pollChat(String conversationId, String chatId) thro... method buildCreateRequest (line 306) | private Request buildCreateRequest(AgentFlowChatRequest request, boole... method buildCreateBody (line 315) | private JSONObject buildCreateBody(AgentFlowChatRequest request, boole... method buildMessageListRequest (line 336) | private Request buildMessageListRequest(String conversationId, String ... method userMessage (line 352) | private JSONObject userMessage(String prompt) { method parseObjectOrNull (line 361) | private JSONObject parseObjectOrNull(String data) { method queryConversation (line 373) | private Map queryConversation(String conversationId) { method query (line 381) | private Map query(String conversationId, String chatId) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/chat/DifyAgentFlowChatService.java class DifyAgentFlowChatService (line 24) | public class DifyAgentFlowChatService extends AgentFlowSupport implement... method DifyAgentFlowChatService (line 26) | public DifyAgentFlowChatService(Configuration configuration, AgentFlow... method chat (line 30) | @Override method chatStream (line 46) | @Override method buildRequestBody (line 201) | private JSONObject buildRequestBody(AgentFlowChatRequest request, Stri... method mapBlockingResponse (line 217) | private AgentFlowChatResponse mapBlockingResponse(JSONObject response) { method metadataUsage (line 228) | private JSONObject metadataUsage(JSONObject payload) { method parseObjectOrNull (line 233) | private JSONObject parseObjectOrNull(String data) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/support/AgentFlowSupport.java class AgentFlowSupport (line 29) | public abstract class AgentFlowSupport { method AgentFlowSupport (line 38) | protected AgentFlowSupport(Configuration configuration, AgentFlowConfi... method defaultUserId (line 54) | protected String defaultUserId(String requestUserId) { method defaultConversationId (line 64) | protected String defaultConversationId(String requestConversationId) { method requireBaseUrl (line 71) | protected String requireBaseUrl() { method requireWebhookUrl (line 78) | protected String requireWebhookUrl() { method requireApiKey (line 85) | protected String requireApiKey() { method requireBotId (line 92) | protected String requireBotId() { method requireWorkflowId (line 99) | protected String requireWorkflowId(String requestWorkflowId) { method joinedUrl (line 109) | protected String joinedUrl(String baseUrl, String path) { method appendQuery (line 113) | protected String appendQuery(String url, Map queryPara... method jsonBody (line 129) | protected RequestBody jsonBody(Object body) { method jsonRequestBuilder (line 133) | protected Request.Builder jsonRequestBuilder(String url) { method execute (line 149) | protected String execute(Request request) throws IOException { method executeObject (line 155) | protected JSONObject executeObject(Request request) throws IOException { method parseJsonOrText (line 167) | protected Object parseJsonOrText(String body) { method readResponse (line 178) | protected String readResponse(Request request, Response response) thro... method assertCozeSuccess (line 187) | protected void assertCozeSuccess(JSONObject response) { method mutableMap (line 194) | protected Map mutableMap(Map source) { method toStringMap (line 201) | protected Map toStringMap(Map source) { method extractText (line 214) | protected String extractText(Object value) { method usageFromDify (line 243) | protected AgentFlowUsage usageFromDify(JSONObject usage) { method usageFromCoze (line 255) | protected AgentFlowUsage usageFromCoze(JSONObject usage) { method firstNonNullInteger (line 267) | protected Integer firstNonNullInteger(Integer first, Integer second) { method firstNonBlank (line 271) | protected String firstNonBlank(String first, String second) { method firstNonBlank (line 275) | protected String firstNonBlank(String first, method pollIntervalMillis (line 290) | protected long pollIntervalMillis() { method pollTimeoutMillis (line 295) | protected long pollTimeoutMillis() { method sleep (line 300) | protected void sleep(long millis) throws InterruptedException { method abbreviate (line 306) | protected String abbreviate(String value) { method isBlank (line 316) | protected boolean isBlank(String value) { method startTrace (line 320) | protected AgentFlowTraceContext startTrace(String operation, boolean s... method traceEvent (line 340) | protected void traceEvent(AgentFlowTraceContext context, Object event) { method traceComplete (line 357) | protected void traceComplete(AgentFlowTraceContext context, Object res... method traceError (line 374) | protected void traceError(AgentFlowTraceContext context, Throwable thr... method notifyTraceStart (line 391) | private void notifyTraceStart(AgentFlowTraceContext context) { method traceListeners (line 408) | private List traceListeners() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/trace/AgentFlowTraceContext.java class AgentFlowTraceContext (line 10) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/trace/AgentFlowTraceListener.java type AgentFlowTraceListener (line 3) | public interface AgentFlowTraceListener { method onStart (line 5) | default void onStart(AgentFlowTraceContext context) { method onEvent (line 8) | default void onEvent(AgentFlowTraceContext context, Object event) { method onComplete (line 11) | default void onComplete(AgentFlowTraceContext context, Object response) { method onError (line 14) | default void onError(AgentFlowTraceContext context, Throwable throwabl... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/workflow/AgentFlowWorkflowEvent.java class AgentFlowWorkflowEvent (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/workflow/AgentFlowWorkflowListener.java type AgentFlowWorkflowListener (line 3) | public interface AgentFlowWorkflowListener { method onEvent (line 5) | void onEvent(AgentFlowWorkflowEvent event); method onOpen (line 7) | default void onOpen() { method onError (line 10) | default void onError(Throwable throwable) { method onComplete (line 13) | default void onComplete(AgentFlowWorkflowResponse response) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/workflow/AgentFlowWorkflowRequest.java class AgentFlowWorkflowRequest (line 12) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/workflow/AgentFlowWorkflowResponse.java class AgentFlowWorkflowResponse (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/workflow/AgentFlowWorkflowService.java type AgentFlowWorkflowService (line 3) | public interface AgentFlowWorkflowService { method run (line 5) | AgentFlowWorkflowResponse run(AgentFlowWorkflowRequest request) throws... method runStream (line 7) | void runStream(AgentFlowWorkflowRequest request, AgentFlowWorkflowList... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/workflow/CozeAgentFlowWorkflowService.java class CozeAgentFlowWorkflowService (line 26) | public class CozeAgentFlowWorkflowService extends AgentFlowSupport imple... method CozeAgentFlowWorkflowService (line 28) | public CozeAgentFlowWorkflowService(Configuration configuration, Agent... method run (line 32) | @Override method runStream (line 61) | @Override method buildRunRequest (line 191) | private Request buildRunRequest(AgentFlowWorkflowRequest request, bool... method buildRequestBody (line 197) | private JSONObject buildRequestBody(AgentFlowWorkflowRequest request) { method parseWorkflowData (line 216) | private Object parseWorkflowData(Object dataValue) { method parseObjectOrNull (line 234) | private JSONObject parseObjectOrNull(String data) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/workflow/DifyAgentFlowWorkflowService.java class DifyAgentFlowWorkflowService (line 26) | public class DifyAgentFlowWorkflowService extends AgentFlowSupport imple... method DifyAgentFlowWorkflowService (line 28) | public DifyAgentFlowWorkflowService(Configuration configuration, Agent... method run (line 32) | @Override method runStream (line 48) | @Override method buildRequestBody (line 213) | private JSONObject buildRequestBody(AgentFlowWorkflowRequest request, ... method mapWorkflowResponse (line 224) | private AgentFlowWorkflowResponse mapWorkflowResponse(JSONObject respo... method parseObjectOrNull (line 241) | private JSONObject parseObjectOrNull(String data) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/agentflow/workflow/N8nAgentFlowWorkflowService.java class N8nAgentFlowWorkflowService (line 13) | public class N8nAgentFlowWorkflowService extends AgentFlowSupport implem... method N8nAgentFlowWorkflowService (line 15) | public N8nAgentFlowWorkflowService(Configuration configuration, AgentF... method run (line 19) | @Override method runStream (line 56) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/auth/BearerTokenUtils.java class BearerTokenUtils (line 21) | public class BearerTokenUtils { method getToken (line 38) | public static String getToken(String apiKey) { method getAuthorization (line 69) | public static String getAuthorization(String apiKey, String action, St... method hmac256 (line 116) | private static byte[] hmac256(byte[] key, String msg) throws Exception { method sha256Hex (line 123) | private static String sha256Hex(String s) throws Exception { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/AiPlatform.java class AiPlatform (line 5) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/BaichuanConfig.java class BaichuanConfig (line 7) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/DashScopeConfig.java class DashScopeConfig (line 12) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/DeepSeekConfig.java class DeepSeekConfig (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/DoubaoConfig.java class DoubaoConfig (line 12) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/HunyuanConfig.java class HunyuanConfig (line 12) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/JinaConfig.java class JinaConfig (line 7) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/LingyiConfig.java class LingyiConfig (line 12) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/McpConfig.java class McpConfig (line 9) | @Data method getFullServerUrl (line 95) | public String getFullServerUrl() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/MilvusConfig.java class MilvusConfig (line 10) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/MinimaxConfig.java class MinimaxConfig (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/MoonshotConfig.java class MoonshotConfig (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/OkHttpConfig.java class OkHttpConfig (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/OllamaConfig.java class OllamaConfig (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/OpenAiConfig.java class OpenAiConfig (line 12) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/PgVectorConfig.java class PgVectorConfig (line 7) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/PineconeConfig.java class PineconeConfig (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/QdrantConfig.java class QdrantConfig (line 7) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/config/ZhipuConfig.java class ZhipuConfig (line 12) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/constant/Constants.java class Constants (line 8) | public class Constants { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/convert/audio/AudioParameterConvert.java type AudioParameterConvert (line 8) | public interface AudioParameterConvert { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/convert/audio/AudioResultConvert.java type AudioResultConvert (line 8) | public interface AudioResultConvert { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/convert/chat/ParameterConvert.java type ParameterConvert (line 10) | public interface ParameterConvert { method convertChatCompletionObject (line 11) | T convertChatCompletionObject(ChatCompletion chatCompletion); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/convert/chat/ResultConvert.java type ResultConvert (line 12) | public interface ResultConvert { method convertEventSource (line 13) | EventSourceListener convertEventSource(SseListener eventSourceListener); method convertChatCompletionResponse (line 14) | ChatCompletionResponse convertChatCompletionResponse(T t); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/convert/embedding/EmbeddingParameterConvert.java type EmbeddingParameterConvert (line 10) | public interface EmbeddingParameterConvert { method convertEmbeddingRequest (line 11) | T convertEmbeddingRequest(Embedding embeddingRequest); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/convert/embedding/EmbeddingResultConvert.java type EmbeddingResultConvert (line 10) | public interface EmbeddingResultConvert { method convertEmbeddingResponse (line 11) | EmbeddingResponse convertEmbeddingResponse(T t); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/document/RecursiveCharacterTextSplitter.java class RecursiveCharacterTextSplitter (line 13) | @Slf4j method RecursiveCharacterTextSplitter (line 20) | public RecursiveCharacterTextSplitter(List separators, int chu... method RecursiveCharacterTextSplitter (line 31) | public RecursiveCharacterTextSplitter(int chunkSize, int chunkOverlap) { method splitText (line 38) | public List splitText(String text) { method mergeSplits (line 80) | private List mergeSplits(List splits, String separator) { method joinDocs (line 117) | private String joinDocs(List docs, String separator) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/document/TikaUtil.java class TikaUtil (line 15) | public class TikaUtil { method parseFile (line 27) | public static String parseFile(File file) throws IOException, TikaExce... method parseInputStream (line 41) | public static String parseInputStream(InputStream stream) throws IOExc... method parseFileWithTika (line 58) | public static String parseFileWithTika(File file) throws IOException, ... method parseInputStreamWithTika (line 69) | public static String parseInputStreamWithTika(InputStream stream) thro... method detectMimeType (line 79) | public static String detectMimeType(File file) throws IOException { method detectMimeType (line 89) | public static String detectMimeType(InputStream stream) throws IOExcep... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/exception/Ai4jException.java class Ai4jException (line 6) | public class Ai4jException extends RuntimeException { method Ai4jException (line 8) | public Ai4jException(String message) { method Ai4jException (line 12) | public Ai4jException(String message, Throwable cause) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/exception/CommonException.java class CommonException (line 6) | public class CommonException extends Ai4jException { method CommonException (line 8) | public CommonException(String msg) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/exception/chain/AbstractErrorHandler.java class AbstractErrorHandler (line 11) | public abstract class AbstractErrorHandler implements IErrorHandler{ method setNext (line 14) | @Override method handleNext (line 19) | protected Error handleNext(String errorInfo) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/exception/chain/ErrorHandler.java class ErrorHandler (line 16) | public class ErrorHandler { method ErrorHandler (line 20) | private ErrorHandler() { method assembleChain (line 33) | private void assembleChain(){ class ErrorHandlerHolder (line 42) | private static class ErrorHandlerHolder { method getInstance (line 46) | public static ErrorHandler getInstance() { method process (line 50) | public Error process(String errorSring){ FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/exception/chain/IErrorHandler.java type IErrorHandler (line 11) | public interface IErrorHandler { method setNext (line 12) | void setNext(IErrorHandler handler); method parseError (line 13) | Error parseError(String errorInfo); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/exception/chain/impl/HunyuanErrorHandler.java class HunyuanErrorHandler (line 16) | public class HunyuanErrorHandler extends AbstractErrorHandler { method parseError (line 17) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/exception/chain/impl/OpenAiErrorHandler.java class OpenAiErrorHandler (line 18) | public class OpenAiErrorHandler extends AbstractErrorHandler { method parseError (line 20) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/exception/chain/impl/UnknownErrorHandler.java class UnknownErrorHandler (line 11) | public class UnknownErrorHandler extends AbstractErrorHandler { method parseError (line 12) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/exception/error/Error.java class Error (line 12) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/exception/error/HunyuanError.java class HunyuanError (line 15) | @Data class Response (line 21) | @Data class Error (line 27) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/exception/error/OpenAiError.java class OpenAiError (line 23) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/interceptor/ContentTypeInterceptor.java class ContentTypeInterceptor (line 18) | public class ContentTypeInterceptor implements Interceptor { method intercept (line 24) | @Override method isNdjsonResponse (line 42) | private boolean isNdjsonResponse(Response response) { method readBody (line 47) | private String readBody(ResponseBody responseBody) throws IOException { method toSseBody (line 54) | private String toSseBody(String ndjsonBody) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/interceptor/ErrorInterceptor.java class ErrorInterceptor (line 24) | @Slf4j method intercept (line 27) | @NotNull method buildCommonException (line 62) | private CommonException buildCommonException(int code, String message,... method containsStructuredError (line 86) | private boolean containsStructuredError(String content) { method isStreamingResponse (line 124) | private boolean isStreamingResponse(Response response) { method isStreamingRequest (line 137) | private boolean isStreamingRequest(Request request) { method rebuildResponse (line 162) | private Response rebuildResponse(Response response, ResponseBody respo... method getResponseBodyBytes (line 168) | private byte[] getResponseBodyBytes(ResponseBody responseBody) throws ... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/listener/AbstractManagedStreamListener.java class AbstractManagedStreamListener (line 15) | abstract class AbstractManagedStreamListener extends EventSourceListener... method onOpen (line 30) | @Override method onFailure (line 39) | @Override method cancelStream (line 50) | public void cancelStream() { method awaitCompletion (line 56) | @Override method getFailure (line 103) | @Override method recordFailure (line 108) | @Override method dispatchFailure (line 113) | public void dispatchFailure() { method clearFailure (line 123) | @Override method prepareForRetry (line 129) | @Override method hasReceivedEvent (line 140) | @Override method isCancelRequested (line 145) | @Override method onRetrying (line 150) | @Override method error (line 155) | protected void error(Throwable t, Response response) { method retry (line 158) | protected void retry(Throwable t, int attempt, int maxAttempts) { method resetRetryState (line 161) | protected void resetRetryState() { method resolveFailure (line 164) | protected Throwable resolveFailure(@Nullable Throwable t, @Nullable Re... method attachEventSource (line 177) | protected final void attachEventSource(EventSource eventSource) { method clearCancelRequested (line 181) | protected final void clearCancelRequested() { method markActivity (line 185) | protected final void markActivity() { method finishAttempt (line 194) | protected final void finishAttempt() { method finishAttempt (line 198) | protected final void finishAttempt(CountDownLatch latch) { method cancelActiveEventSource (line 203) | protected final void cancelActiveEventSource() { method recordFailure (line 214) | private void recordFailure(Throwable failure, Response response) { method advanceLatch (line 219) | private synchronized CountDownLatch advanceLatch(CountDownLatch expect... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/listener/ImageSseListener.java class ImageSseListener (line 21) | public abstract class ImageSseListener extends EventSourceListener { method error (line 26) | protected void error(Throwable t, Response response) {} method onEvent (line 31) | protected abstract void onEvent(); method accept (line 45) | public void accept(ImageStreamEvent event) { method appendResponse (line 52) | private void appendResponse(ImageStreamEvent event) { method shouldAppendImage (line 74) | private boolean shouldAppendImage(ImageStreamEvent event) { method complete (line 85) | public void complete() { method onError (line 90) | public void onError(Throwable t, Response response) { method onFailure (line 94) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/listener/ManagedStreamListener.java type ManagedStreamListener (line 3) | public interface ManagedStreamListener { method awaitCompletion (line 5) | void awaitCompletion(StreamExecutionOptions options) throws Interrupte... method getFailure (line 7) | Throwable getFailure(); method recordFailure (line 9) | void recordFailure(Throwable failure); method clearFailure (line 11) | void clearFailure(); method prepareForRetry (line 13) | void prepareForRetry(); method hasReceivedEvent (line 15) | boolean hasReceivedEvent(); method isCancelRequested (line 17) | boolean isCancelRequested(); method onRetrying (line 19) | void onRetrying(Throwable failure, int attempt, int maxAttempts); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/listener/RealtimeListener.java class RealtimeListener (line 16) | @Slf4j method onOpen (line 19) | protected abstract void onOpen(WebSocket webSocket); method onMessage (line 20) | protected abstract void onMessage(ByteString bytes); method onMessage (line 21) | protected abstract void onMessage(String text); method onFailure (line 22) | protected abstract void onFailure(); method onOpen (line 24) | @Override method onMessage (line 30) | @Override method onMessage (line 36) | @Override method onFailure (line 42) | @Override method onClosing (line 47) | @Override method onClosed (line 51) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/listener/ResponseSseListener.java class ResponseSseListener (line 13) | public abstract class ResponseSseListener extends AbstractManagedStreamL... method error (line 16) | @Override method onEvent (line 21) | protected abstract void onEvent(); method accept (line 47) | public void accept(ResponseStreamEvent event) { method applyEvent (line 57) | private void applyEvent(ResponseStreamEvent event) { method mergeResponse (line 109) | private void mergeResponse(Response source) { method complete (line 157) | public void complete() { method onError (line 161) | public void onError(Throwable t, okhttp3.Response response) { method onClosed (line 165) | @Override method retry (line 171) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/listener/SseListener.java class SseListener (line 32) | @Slf4j method error (line 37) | protected void error(Throwable t, Response response) {} method send (line 39) | protected abstract void send(); method onEvent (line 105) | @Override method onClosed (line 252) | @Override method resetRetryState (line 260) | @Override method firstToolCall (line 268) | private ToolCall firstToolCall(List calls) { method safeToolArguments (line 275) | private String safeToolArguments(ToolCall call) { method safeToolName (line 282) | private String safeToolName(ToolCall call) { method isEmpty (line 289) | private boolean isEmpty(List values) { method shouldTreatAsCompleteToolCalls (line 293) | private boolean shouldTreatAsCompleteToolCalls(ChatMessage responseMes... method addCompleteToolCalls (line 308) | private void addCompleteToolCalls(List completeToolCalls) { method consumeFragmentedToolCalls (line 327) | private void consumeFragmentedToolCalls(List messageToolCall... method startToolCall (line 362) | private void startToolCall(ToolCall currentToolCall, String argumentsD... method finalizeCurrentToolCall (line 369) | private void finalizeCurrentToolCall() { method mergeToolIdentity (line 384) | private void mergeToolIdentity(ToolCall target, ToolCall source) { method hasToolIdentity (line 402) | private boolean hasToolIdentity(ToolCall call) { method hasToolName (line 407) | private boolean hasToolName(ToolCall call) { method isSameToolCall (line 413) | private boolean isSameToolCall(ToolCall left, ToolCall right) { method hasStructuredJsonObjectArguments (line 427) | private boolean hasStructuredJsonObjectArguments(ToolCall call) { method resolveFailure (line 440) | @Override method resolveFailureMessage (line 452) | protected String resolveFailureMessage(@Nullable Throwable t, @Nullabl... method responseMessage (line 469) | private String responseMessage(@Nullable Response response) { method extractStructuredErrorMessage (line 489) | private String extractStructuredErrorMessage(String payload) { method firstJsonText (line 511) | private String firstJsonText(JsonNode... nodes) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/listener/StreamExecutionOptions.java class StreamExecutionOptions (line 8) | @Data method normalizedFirstTokenTimeoutMs (line 26) | public long normalizedFirstTokenTimeoutMs() { method normalizedIdleTimeoutMs (line 30) | public long normalizedIdleTimeoutMs() { method normalizedMaxRetries (line 34) | public int normalizedMaxRetries() { method normalizedRetryBackoffMs (line 38) | public long normalizedRetryBackoffMs() { method totalAttempts (line 42) | public int totalAttempts() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/listener/StreamExecutionSupport.java class StreamExecutionSupport (line 3) | public final class StreamExecutionSupport { method StreamExecutionSupport (line 15) | private StreamExecutionSupport() { type StreamStarter (line 18) | public interface StreamStarter { method start (line 19) | void start() throws Exception; method execute (line 22) | public static void execute(ManagedStreamListener listener, method resolveOptions (line 70) | static StreamExecutionOptions resolveOptions(StreamExecutionOptions op... method longProperty (line 82) | private static long longProperty(String key, long fallback) { method intProperty (line 94) | private static int intProperty(String key, int fallback) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/client/McpClient.java class McpClient (line 25) | public class McpClient implements McpTransport.McpMessageHandler { method McpClient (line 51) | public McpClient(String clientName, String clientVersion, McpTransport... method McpClient (line 55) | public McpClient(String clientName, String clientVersion, McpTransport... method connect (line 72) | public CompletableFuture connect() { method disconnect (line 106) | public CompletableFuture disconnect() { method startHeartbeat (line 138) | private void startHeartbeat() { method stopHeartbeat (line 157) | private void stopHeartbeat() { method isConnected (line 166) | public boolean isConnected() { method isInitialized (line 173) | public boolean isInitialized() { method getAvailableTools (line 180) | public CompletableFuture> getAvailableTools() { method getAvailableResources (line 206) | public CompletableFuture> getAvailableResources() { method readResource (line 232) | public CompletableFuture readResource(String uri) { method getAvailablePrompts (line 261) | public CompletableFuture> getAvailablePrompts() { method getPrompt (line 287) | public CompletableFuture getPrompt(String name) { method getPrompt (line 294) | public CompletableFuture getPrompt(String name, Map callTool(String toolName, Object argu... method handleMessage (line 361) | @Override method onConnected (line 381) | @Override method onDisconnected (line 387) | @Override method onError (line 420) | @Override method scheduleReconnection (line 429) | private void scheduleReconnection() { method initialize (line 465) | private CompletableFuture initialize() { method sendRequest (line 519) | private CompletableFuture sendRequest(String method, Objec... method sendNotification (line 541) | private CompletableFuture sendNotification(String method, Object... method handleResponse (line 560) | private void handleResponse(McpMessage message) { method handleNotification (line 590) | private void handleNotification(McpMessage message) { method handleRequest (line 624) | private void handleRequest(McpMessage message) { method nextMessageId (line 635) | private long nextMessageId() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/client/McpClientResponseSupport.java class McpClientResponseSupport (line 18) | public final class McpClientResponseSupport { method McpClientResponseSupport (line 20) | private McpClientResponseSupport() { method parseToolsListResponse (line 23) | public static List parseToolsListResponse(Object re... method parseToolCallResponse (line 48) | public static String parseToolCallResponse(Object result) { method parseResourcesListResponse (line 80) | public static List parseResourcesListResponse(Object resu... method parseResourceReadResponse (line 106) | public static McpResourceContent parseResourceReadResponse(Object resu... method parsePromptsListResponse (line 147) | public static List parsePromptsListResponse(Object result) { method parsePromptGetResponse (line 171) | public static McpPromptResult parsePromptGetResponse(String name, Obje... method parseSingleResourceContent (line 196) | private static McpResourceContent parseSingleResourceContent(Object co... method extractResourceContent (line 209) | private static Object extractResourceContent(Map conte... method appendPromptMessageText (line 225) | private static void appendPromptMessageText(StringBuilder builder, Obj... method asMap (line 250) | private static Map asMap(Object value) { method asList (line 263) | private static List asList(Object value) { method stringValue (line 270) | private static String stringValue(Object value) { method longValue (line 278) | private static Long longValue(Object value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/config/FileMcpConfigSource.java class FileMcpConfigSource (line 16) | public class FileMcpConfigSource implements McpConfigSource { method FileMcpConfigSource (line 24) | public FileMcpConfigSource(String configFile) { method getAllConfigs (line 29) | @Override method getConfig (line 34) | @Override method addConfigChangeListener (line 39) | @Override method removeConfigChangeListener (line 44) | @Override method reloadConfigs (line 52) | public void reloadConfigs() { method loadConfigs (line 64) | private void loadConfigs() { method detectAndNotifyChanges (line 89) | private void detectAndNotifyChanges(Map loadEnabledCo... method extractEnabledConfigs (line 37) | public static Map extractEnable... method loadConfigContent (line 53) | public static String loadConfigContent(String configFile, ClassLoader ... method readAllBytes (line 72) | private static byte[] readAllBytes(InputStream inputStream) throws IOE... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/config/McpConfigManager.java class McpConfigManager (line 17) | public class McpConfigManager implements McpConfigSource { type ConfigChangeListener (line 27) | @Deprecated method addConfigChangeListener (line 34) | @Override method removeConfigChangeListener (line 42) | @Override method addConfigChangeListener (line 50) | public void addConfigChangeListener(ConfigChangeListener listener) { method removeConfigChangeListener (line 57) | public void removeConfigChangeListener(ConfigChangeListener listener) { method addConfig (line 64) | public void addConfig(String serverId, McpServerConfig.McpServerInfo c... method removeConfig (line 79) | public void removeConfig(String serverId) { method getConfig (line 90) | @Override method getAllConfigs (line 98) | @Override method updateConfig (line 106) | public void updateConfig(String serverId, McpServerConfig.McpServerInf... method hasConfig (line 113) | public boolean hasConfig(String serverId) { method validateConfig (line 120) | public boolean validateConfig(McpServerConfig.McpServerInfo config) { method notifyConfigAdded (line 147) | private void notifyConfigAdded(String serverId, McpServerConfig.McpSer... method notifyConfigRemoved (line 157) | private void notifyConfigRemoved(String serverId) { method notifyConfigUpdated (line 167) | private void notifyConfigUpdated(String serverId, McpServerConfig.McpS... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/config/McpConfigSource.java type McpConfigSource (line 9) | public interface McpConfigSource { method getAllConfigs (line 14) | Map getAllConfigs(); method getConfig (line 19) | McpServerConfig.McpServerInfo getConfig(String serverId); method addConfigChangeListener (line 24) | void addConfigChangeListener(ConfigChangeListener listener); method removeConfigChangeListener (line 29) | void removeConfigChangeListener(ConfigChangeListener listener); type ConfigChangeListener (line 34) | interface ConfigChangeListener { method onConfigAdded (line 38) | void onConfigAdded(String serverId, McpServerConfig.McpServerInfo co... method onConfigRemoved (line 43) | void onConfigRemoved(String serverId); method onConfigUpdated (line 48) | void onConfigUpdated(String serverId, McpServerConfig.McpServerInfo ... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/config/McpServerConfig.java class McpServerConfig (line 13) | @Data class McpServerInfo (line 25) | @Data method getType (line 82) | public String getType() { method setType (line 86) | public void setType(String type) { method getHeaders (line 90) | public Map getHeaders() { method setHeaders (line 94) | public void setHeaders(Map headers) { method updateVersion (line 161) | public void updateVersion() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpError.java class McpError (line 13) | @Data type ErrorCode (line 40) | public enum ErrorCode { method ErrorCode (line 63) | ErrorCode(int code, String message) { method getCode (line 68) | public int getCode() { method getMessage (line 72) | public String getMessage() { method fromCode (line 76) | public static ErrorCode fromCode(int code) { method of (line 89) | public static McpError of(ErrorCode errorCode) { method of (line 99) | public static McpError of(ErrorCode errorCode, String customMessage) { method of (line 109) | public static McpError of(ErrorCode errorCode, String customMessage, O... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpInitializeResponse.java class McpInitializeResponse (line 15) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpMessage.java class McpMessage (line 16) | @Data method isRequest (line 69) | @JsonIgnore method isNotification (line 77) | @JsonIgnore method isResponse (line 85) | @JsonIgnore method isSuccessResponse (line 93) | @JsonIgnore method isErrorResponse (line 101) | @JsonIgnore FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpNotification.java class McpNotification (line 11) | @Data method McpNotification (line 16) | public McpNotification() { method McpNotification (line 20) | public McpNotification(String method, Object params) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpPrompt.java class McpPrompt (line 15) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpPromptResult.java class McpPromptResult (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpRequest.java class McpRequest (line 11) | @Data method McpRequest (line 16) | public McpRequest() { method McpRequest (line 20) | public McpRequest(String method, Object id, Object params) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpResource.java class McpResource (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpResourceContent.java class McpResourceContent (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpResponse.java class McpResponse (line 11) | @Data method McpResponse (line 16) | public McpResponse() { method McpResponse (line 20) | public McpResponse(Object id, Object result) { method McpResponse (line 27) | public McpResponse(Object id, McpError error) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpRoot.java class McpRoot (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpSamplingRequest.java class McpSamplingRequest (line 15) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpSamplingResult.java class McpSamplingResult (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpServerInfo.java class McpServerInfo (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpServerReference.java class McpServerReference (line 16) | @Data method of (line 100) | public static McpServerReference of(String name) { method stdio (line 109) | public static McpServerReference stdio(String name, String command, Li... method http (line 122) | public static McpServerReference http(String name, String url) { method sse (line 134) | public static McpServerReference sse(String name, String url) { method getResolvedType (line 146) | public String getResolvedType() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpTool.java class McpTool (line 15) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpToolDefinition.java class McpToolDefinition (line 15) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/entity/McpToolResult.java class McpToolResult (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/gateway/McpGateway.java class McpGateway (line 22) | public class McpGateway { method getInstance (line 58) | public static McpGateway getInstance() { method setGlobalInstance (line 73) | public static void setGlobalInstance(McpGateway instance) { method clearGlobalInstance (line 83) | public static void clearGlobalInstance() { method isInitialized (line 100) | public boolean isInitialized() { method McpGateway (line 104) | public McpGateway() { method McpGateway (line 108) | McpGateway(McpGatewayClientFactory clientFactory) { method setConfigSource (line 118) | public void setConfigSource(McpConfigSource configSource) { method loadConfigsFromSource (line 127) | private void loadConfigsFromSource() { method initialize (line 134) | public CompletableFuture initialize() { method initialize (line 141) | public CompletableFuture initialize(String configFile) { method loadServerConfig (line 183) | private void loadServerConfig(String configFile) { method startConfiguredServers (line 200) | private void startConfiguredServers() { method startMcpServer (line 221) | private CompletableFuture startMcpServer(String serverId, McpSer... method addMcpClient (line 240) | public CompletableFuture addMcpClient(String serviceId, McpClien... method addUserMcpClient (line 247) | public CompletableFuture addUserMcpClient(String userId, String ... method addMcpClientInternal (line 255) | private CompletableFuture addMcpClientInternal(String clientKey,... method addMcpServer (line 286) | public CompletableFuture addMcpServer(String serverId, McpServer... method removeMcpClient (line 305) | public CompletableFuture removeMcpClient(String serviceId) { method removeUserMcpClient (line 312) | public CompletableFuture removeUserMcpClient(String userId, Stri... method removeMcpClientInternal (line 320) | private CompletableFuture removeMcpClientInternal(String clientK... method getAvailableTools (line 341) | public CompletableFuture> getAvailableTools() { method getAvailableTools (line 353) | public CompletableFuture> getAvailableTools(List> getUserAvailableTools(Li... method callTool (line 419) | public CompletableFuture callTool(String toolName, Object argu... method callUserTool (line 426) | public CompletableFuture callUserTool(String userId, String to... method callToolInternal (line 444) | private CompletableFuture callToolInternal(String toolName, Ob... method callToolInternal (line 458) | private CompletableFuture callToolInternal(String toolName, Ob... method clearUserMcpClients (line 481) | public CompletableFuture clearUserMcpClients(String userId) { method getGatewayStatus (line 504) | public Map getGatewayStatus() { method getToolToClientMap (line 540) | public Map getToolToClientMap() { method shutdown (line 547) | public CompletableFuture shutdown() { method disconnectClientQuietly (line 564) | private void disconnectClientQuietly(String clientKey, McpClient clien... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/gateway/McpGatewayClientFactory.java class McpGatewayClientFactory (line 15) | class McpGatewayClientFactory { method McpGatewayClientFactory (line 22) | McpGatewayClientFactory() { method McpGatewayClientFactory (line 26) | McpGatewayClientFactory(String clientVersion) { method create (line 30) | public McpClient create(String serverId, McpServerConfig.McpServerInfo... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/gateway/McpGatewayConfigSourceBinding.java class McpGatewayConfigSourceBinding (line 14) | class McpGatewayConfigSourceBinding { method McpGatewayConfigSourceBinding (line 22) | McpGatewayConfigSourceBinding(McpGateway gateway, McpGatewayClientFact... method rebind (line 44) | public void rebind(McpConfigSource currentSource, McpConfigSource next... method loadAll (line 59) | public void loadAll(McpConfigSource configSource) { method tryAddOrReplace (line 79) | private void tryAddOrReplace(String serverId, McpServerConfig.McpServe... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/gateway/McpGatewayKeySupport.java class McpGatewayKeySupport (line 6) | public final class McpGatewayKeySupport { method McpGatewayKeySupport (line 8) | private McpGatewayKeySupport() { method buildUserClientKey (line 11) | public static String buildUserClientKey(String userId, String serviceI... method buildUserToolKey (line 15) | public static String buildUserToolKey(String userId, String toolName) { method buildUserPrefix (line 19) | public static String buildUserPrefix(String userId) { method isUserClientKey (line 23) | public static boolean isUserClientKey(String clientKey) { method extractUserIdFromClientKey (line 27) | public static String extractUserIdFromClientKey(String clientKey) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/gateway/McpGatewayToolRegistry.java class McpGatewayToolRegistry (line 21) | public class McpGatewayToolRegistry { method getAvailableToolsCache (line 28) | public List getAvailableToolsCache() { method getClientId (line 32) | public String getClientId(String toolKey) { method snapshotMappings (line 36) | public Map snapshotMappings() { method clearClientMappings (line 40) | public void clearClientMappings(String clientKey) { method clearAll (line 46) | public void clearAll() { method refresh (line 51) | public CompletableFuture refresh(Map mcpClien... method registerClientTools (line 80) | private void registerClientTools( FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/server/McpHttpServerSupport.java class McpHttpServerSupport (line 17) | public final class McpHttpServerSupport { method McpHttpServerSupport (line 19) | private McpHttpServerSupport() { method setCorsHeaders (line 22) | public static void setCorsHeaders(HttpExchange exchange, String allowM... method readRequestBody (line 28) | public static String readRequestBody(HttpExchange exchange) throws IOE... method writeJsonResponse (line 43) | public static void writeJsonResponse(HttpExchange exchange, int status... method writeJsonResponse (line 47) | public static void writeJsonResponse( method sendError (line 69) | public static void sendError(HttpExchange exchange, int statusCode, St... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/server/McpServer.java type McpServer (line 11) | public interface McpServer { method start (line 18) | CompletableFuture start(); method stop (line 25) | CompletableFuture stop(); method isRunning (line 32) | boolean isRunning(); method getServerInfo (line 39) | String getServerInfo(); method getServerName (line 46) | String getServerName(); method getServerVersion (line 53) | String getServerVersion(); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/server/McpServerEngine.java class McpServerEngine (line 28) | public class McpServerEngine { method McpServerEngine (line 41) | public McpServerEngine( method processMessage (line 62) | public McpMessage processMessage(McpMessage message, McpServerSessionS... method handleInitialize (line 106) | private McpMessage handleInitialize(McpMessage message, McpServerSessi... method handleToolsList (line 138) | private McpMessage handleToolsList(McpMessage message, McpServerSessio... method handleToolsCall (line 158) | private McpMessage handleToolsCall(McpMessage message, McpServerSessio... method handleResourcesList (line 196) | private McpMessage handleResourcesList(McpMessage message, McpServerSe... method handleResourcesRead (line 218) | private McpMessage handleResourcesRead(McpMessage message, McpServerSe... method handlePromptsList (line 258) | private McpMessage handlePromptsList(McpMessage message, McpServerSess... method handlePromptsGet (line 280) | private McpMessage handlePromptsGet(McpMessage message, McpServerSessi... method handlePing (line 319) | private McpMessage handlePing(McpMessage message) { method handleNotification (line 334) | private void handleNotification(McpMessage message, McpServerSessionSt... method requireInitialization (line 340) | private McpMessage requireInitialization(McpMessage message, McpServer... method resolveProtocolVersion (line 347) | private String resolveProtocolVersion(String requestedVersion) { method buildCapabilities (line 360) | private Map buildCapabilities() { method createErrorResponse (line 381) | private McpResponse createErrorResponse(Object id, int code, String me... method convertToMcpToolDefinitions (line 392) | private List convertToMcpToolDefinitions() { method convertParametersToInputSchema (line 414) | private Map convertParametersToInputSchema(Tool.Functi... method asMap (line 430) | private Map asMap(Object value) { method stringValue (line 447) | private String stringValue(Object value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/server/McpServerFactory.java class McpServerFactory (line 13) | public class McpServerFactory { type ServerType (line 20) | public enum ServerType { method ServerType (line 29) | ServerType(String value) { method getValue (line 33) | public String getValue() { method fromString (line 40) | public static ServerType fromString(String value) { class ServerConfig (line 61) | public static class ServerConfig { method ServerConfig (line 67) | public ServerConfig(String name, String version) { method withPort (line 74) | public ServerConfig withPort(int port) { method withHost (line 79) | public ServerConfig withHost(String host) { method getName (line 85) | public String getName() { return name; } method getVersion (line 86) | public String getVersion() { return version; } method getPort (line 87) | public Integer getPort() { return port; } method getHost (line 88) | public String getHost() { return host; } method setName (line 91) | public void setName(String name) { this.name = name; } method setVersion (line 92) | public void setVersion(String version) { this.version = version; } method setPort (line 93) | public void setPort(Integer port) { this.port = port; } method setHost (line 94) | public void setHost(String host) { this.host = host; } method toString (line 96) | @Override method createServer (line 114) | public static McpServer createServer(ServerType type, ServerConfig con... method createServer (line 137) | public static McpServer createServer(String typeString, ServerConfig c... method createServer (line 145) | public static McpServer createServer(String typeString, String name, S... method createServer (line 152) | public static McpServer createServer(String typeString, String name, S... method createStdioServer (line 159) | private static StdioMcpServer createStdioServer(ServerConfig config) { method createSseServer (line 166) | private static SseMcpServer createSseServer(ServerConfig config) { method createStreamableHttpServer (line 173) | private static StreamableHttpMcpServer createStreamableHttpServer(Serv... method validateConfig (line 180) | public static void validateConfig(ServerType type, ServerConfig config) { method getSupportedTypes (line 210) | public static ServerType[] getSupportedTypes() { method isSupported (line 217) | public static boolean isSupported(String typeString) { method startServer (line 224) | public static void startServer(McpServer server) { method stopServer (line 236) | public static void stopServer(McpServer server) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/server/McpServerSessionState.java class McpServerSessionState (line 9) | public class McpServerSessionState { method McpServerSessionState (line 15) | public McpServerSessionState(String sessionId) { method getSessionId (line 19) | public String getSessionId() { method isInitialized (line 23) | public boolean isInitialized() { method setInitialized (line 27) | public void setInitialized(boolean initialized) { method getCapabilities (line 31) | public Map getCapabilities() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/server/McpServerSessionSupport.java class McpServerSessionSupport (line 10) | public final class McpServerSessionSupport { method McpServerSessionSupport (line 12) | private McpServerSessionSupport() { method generateSessionId (line 15) | public static String generateSessionId(String prefix) { method getOrCreateSession (line 19) | public static T getOrCreateSession( FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/server/SseMcpServer.java class SseMcpServer (line 36) | public class SseMcpServer implements McpServer { method SseMcpServer (line 49) | public SseMcpServer(String serverName, String serverVersion, int port) { method start (line 63) | public CompletableFuture start() { method stop (line 93) | public CompletableFuture stop() { method isRunning (line 110) | public boolean isRunning() { method getServerInfo (line 114) | public String getServerInfo() { method getServerName (line 118) | public String getServerName() { method getServerVersion (line 122) | public String getServerVersion() { class SessionContext (line 129) | private static class SessionContext extends McpServerSessionState { method SessionContext (line 132) | public SessionContext(String sessionId) { method getCreatedTime (line 137) | public long getCreatedTime() { class SseHandler (line 145) | private class SseHandler implements HttpHandler { method handle (line 146) | @Override class MessageHandler (line 180) | private class MessageHandler implements HttpHandler { method handle (line 181) | @Override method handleMessageRequest (line 237) | private void handleMessageRequest(HttpExchange exchange) throws IOEx... method findSessionForRequest (line 268) | private String findSessionForRequest() { class HealthHandler (line 294) | private class HealthHandler implements HttpHandler { method handle (line 295) | @Override method getOrCreateSession (line 320) | private SessionContext getOrCreateSession(String sessionId) { method generateSessionId (line 327) | private String generateSessionId() { method getPort (line 331) | public int getPort() { method establishSseConnection (line 338) | private void establishSseConnection(HttpExchange exchange) throws IOEx... method sendSseMessage (line 389) | private void sendSseMessage(String sessionId, McpMessage message) { class RootHandler (line 414) | private class RootHandler implements HttpHandler { method handle (line 415) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/server/StdioMcpServer.java class StdioMcpServer (line 22) | public class StdioMcpServer implements McpServer { method StdioMcpServer (line 32) | public StdioMcpServer(String serverName, String serverVersion) { method start (line 52) | public CompletableFuture start() { method stop (line 87) | public CompletableFuture stop() { method isRunning (line 101) | public boolean isRunning() { method getServerInfo (line 108) | public String getServerInfo() { method getServerName (line 115) | public String getServerName() { method getServerVersion (line 122) | public String getServerVersion() { method handleMessage (line 129) | private void handleMessage(McpMessage message) { method sendResponse (line 145) | private void sendResponse(McpMessage response) { method createInternalErrorResponse (line 156) | private McpResponse createInternalErrorResponse(McpMessage originalMes... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/server/StreamableHttpMcpServer.java class StreamableHttpMcpServer (line 32) | public class StreamableHttpMcpServer implements McpServer { method StreamableHttpMcpServer (line 45) | public StreamableHttpMcpServer(String serverName, String serverVersion... method start (line 59) | public CompletableFuture start() { method stop (line 88) | public CompletableFuture stop() { method isRunning (line 105) | public boolean isRunning() { method getServerInfo (line 109) | public String getServerInfo() { method getServerName (line 113) | public String getServerName() { method getServerVersion (line 117) | public String getServerVersion() { class SessionContext (line 124) | private static class SessionContext extends McpServerSessionState { method SessionContext (line 127) | public SessionContext(String sessionId) { method getCreatedTime (line 132) | public long getCreatedTime() { class McpHandler (line 140) | private class McpHandler implements HttpHandler { method handle (line 141) | @Override method handlePostRequest (line 180) | private void handlePostRequest(HttpExchange exchange) throws IOExcep... method handleGetRequest (line 189) | private void handleGetRequest(HttpExchange exchange) throws IOExcept... method handleDeleteRequest (line 209) | private void handleDeleteRequest(HttpExchange exchange) throws IOExc... method getOrCreateSession (line 228) | private SessionContext getOrCreateSession(String sessionId) { method generateSessionId (line 235) | private String generateSessionId() { method processClientMessage (line 239) | private void processClientMessage(HttpExchange exchange, String reques... method sendSseResponse (line 263) | private void sendSseResponse(HttpExchange exchange, McpMessage respons... method sendJsonResponse (line 294) | private void sendJsonResponse(HttpExchange exchange, McpMessage respon... method establishSseConnection (line 309) | private void establishSseConnection(HttpExchange exchange) throws IOEx... class HealthHandler (line 357) | private class HealthHandler implements HttpHandler { method handle (line 358) | @Override method getPort (line 382) | public int getPort() { class RootHandler (line 389) | private class RootHandler implements HttpHandler { method handle (line 390) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/transport/McpTransport.java type McpTransport (line 11) | public interface McpTransport { method start (line 16) | CompletableFuture start(); method stop (line 21) | CompletableFuture stop(); method sendMessage (line 28) | CompletableFuture sendMessage(McpMessage message); method setMessageHandler (line 34) | void setMessageHandler(McpMessageHandler handler); method isConnected (line 40) | boolean isConnected(); method needsHeartbeat (line 47) | boolean needsHeartbeat(); method getTransportType (line 52) | String getTransportType(); type McpMessageHandler (line 57) | interface McpMessageHandler { method handleMessage (line 62) | void handleMessage(McpMessage message); method onConnected (line 67) | void onConnected(); method onDisconnected (line 73) | void onDisconnected(String reason); method onError (line 79) | void onError(Throwable error); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/transport/McpTransportFactory.java class McpTransportFactory (line 13) | public class McpTransportFactory { type TransportType (line 20) | public enum TransportType { method TransportType (line 29) | TransportType(String value) { method getValue (line 33) | public String getValue() { method fromString (line 40) | public static TransportType fromString(String value) { method createTransport (line 65) | public static McpTransport createTransport(TransportType type, Transpo... method createTransport (line 88) | public static McpTransport createTransport(String typeString, Transpor... method createStdioTransport (line 96) | private static McpTransport createStdioTransport(TransportConfig confi... method createSseTransport (line 112) | private static McpTransport createSseTransport(TransportConfig config) { method createStreamableHttpTransport (line 124) | private static McpTransport createStreamableHttpTransport(TransportCon... method validateConfig (line 136) | public static void validateConfig(TransportType type, TransportConfig ... method getSupportedTypes (line 160) | public static TransportType[] getSupportedTypes() { method isSupported (line 167) | public static boolean isSupported(String typeString) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/transport/McpTransportSupport.java class McpTransportSupport (line 16) | public final class McpTransportSupport { method McpTransportSupport (line 18) | private McpTransportSupport() { method safeMessage (line 21) | public static String safeMessage(Throwable throwable) { method clip (line 37) | public static String clip(String value, int maxLength) { method isBlank (line 44) | public static boolean isBlank(String value) { method buildHttpFailureMessage (line 48) | public static String buildHttpFailureMessage(int statusCode, String re... method buildHttpFailureMessage (line 61) | public static String buildHttpFailureMessage(Response response) throws... method readResponseBody (line 74) | public static String readResponseBody(HttpURLConnection connection, in... method closeQuietly (line 95) | public static void closeQuietly(InputStream inputStream) { method extractErrorDetail (line 105) | private static String extractErrorDetail(Response response) throws IOE... method extractErrorDetail (line 112) | private static String extractErrorDetail(String raw) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/transport/SseTransport.java class SseTransport (line 25) | public class SseTransport implements McpTransport { method SseTransport (line 45) | public SseTransport(String sseEndpointUrl) { method SseTransport (line 51) | public SseTransport(TransportConfig config) { method SseTransport (line 58) | public SseTransport(String sseEndpointUrl, OkHttpClient httpClient) { method parseInitialQueryParams (line 64) | private void parseInitialQueryParams(String url) { method createDefaultHttpClient (line 82) | private static OkHttpClient createDefaultHttpClient() { method start (line 91) | @Override method stop (line 121) | @Override method sendMessage (line 141) | @Override method setMessageHandler (line 206) | @Override method isConnected (line 211) | @Override method needsHeartbeat (line 216) | @Override method getTransportType (line 221) | @Override method startSseConnection (line 229) | private void startSseConnection() { method waitForEndpointEvent (line 246) | private void waitForEndpointEvent() { method readEventStream (line 267) | private void readEventStream() { method openSseConnection (line 305) | private HttpURLConnection openSseConnection() throws IOException { method openPostConnection (line 328) | private HttpURLConnection openPostConnection(String endpointUrl, Strin... method processEventStream (line 351) | private void processEventStream(BufferedReader reader) throws IOExcept... method dispatchSseEvent (line 398) | private void dispatchSseEvent(String eventId, String eventType, String... method handleSseClosure (line 423) | private void handleSseClosure(String reason) { method closeSseResources (line 433) | private void closeSseResources() { method waitForReaderThreadToExit (line 457) | private void waitForReaderThreadToExit() { method closeQuietly (line 476) | private void closeQuietly(InputStream inputStream) { method closeQuietly (line 480) | private void closeQuietly(BufferedReader reader) { method disconnectQuietly (line 491) | private void disconnectQuietly(HttpURLConnection connection) { method handleEndpointEvent (line 500) | private void handleEndpointEvent(String data) { method buildFullUrl (line 515) | private String buildFullUrl(String endpointPath) { method mergeInitialQueriesIntoUrl (line 535) | private String mergeInitialQueriesIntoUrl(String urlStr) { method extractBaseUrl (line 561) | private String extractBaseUrl(String fullUrl) { method extractSessionId (line 582) | private String extractSessionId(String messageUrl) { method handleMessageEvent (line 608) | private void handleMessageEvent(String data) { method parseMessage (line 630) | private McpMessage parseMessage(String jsonString) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/transport/StdioTransport.java class StdioTransport (line 22) | public class StdioTransport implements McpTransport { method StdioTransport (line 37) | public StdioTransport(String command, List args, Map terminateSession() { method parseMcpMessage (line 299) | public static McpMessage parseMcpMessage(String jsonString) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/transport/TransportConfig.java class TransportConfig (line 15) | public class TransportConfig { method TransportConfig (line 42) | public TransportConfig() { method stdio (line 59) | public static TransportConfig stdio(String command, List args) { method stdio (line 70) | public static TransportConfig stdio(String command, List args,... method sse (line 79) | public static TransportConfig sse(String url) { method sse (line 89) | public static TransportConfig sse(McpServerConfig.McpServerInfo server... method streamableHttp (line 100) | public static TransportConfig streamableHttp(String url) { method streamableHttp (line 110) | public static TransportConfig streamableHttp(McpServerConfig.McpServer... method http (line 119) | public static TransportConfig http(String url) { method fromServerInfo (line 126) | public static TransportConfig fromServerInfo(McpServerConfig.McpServer... method withTimeout (line 140) | public TransportConfig withTimeout(int connectTimeout, int readTimeout... method withRetry (line 147) | public TransportConfig withRetry(boolean enableRetry, int maxRetries, ... method withHeartbeat (line 154) | public TransportConfig withHeartbeat(boolean enableHeartbeat, long hea... method getType (line 162) | public String getType() { method setType (line 166) | public void setType(String type) { method getUrl (line 170) | public String getUrl() { method setUrl (line 174) | public void setUrl(String url) { method getConnectTimeout (line 178) | public Integer getConnectTimeout() { method setConnectTimeout (line 182) | public void setConnectTimeout(Integer connectTimeout) { method getReadTimeout (line 186) | public Integer getReadTimeout() { method setReadTimeout (line 190) | public void setReadTimeout(Integer readTimeout) { method getWriteTimeout (line 194) | public Integer getWriteTimeout() { method setWriteTimeout (line 198) | public void setWriteTimeout(Integer writeTimeout) { method getCommand (line 202) | public String getCommand() { method setCommand (line 206) | public void setCommand(String command) { method getArgs (line 210) | public List getArgs() { method setArgs (line 214) | public void setArgs(List args) { method getEnv (line 218) | public Map getEnv() { method setEnv (line 222) | public void setEnv(Map env) { method getEnableRetry (line 226) | public Boolean getEnableRetry() { method setEnableRetry (line 230) | public void setEnableRetry(Boolean enableRetry) { method getMaxRetries (line 234) | public Integer getMaxRetries() { method setMaxRetries (line 238) | public void setMaxRetries(Integer maxRetries) { method getRetryDelay (line 242) | public Long getRetryDelay() { method setRetryDelay (line 246) | public void setRetryDelay(Long retryDelay) { method getEnableHeartbeat (line 250) | public Boolean getEnableHeartbeat() { method setEnableHeartbeat (line 254) | public void setEnableHeartbeat(Boolean enableHeartbeat) { method getHeartbeatInterval (line 258) | public Long getHeartbeatInterval() { method setHeartbeatInterval (line 262) | public void setHeartbeatInterval(Long heartbeatInterval) { method getHeaders (line 266) | public Map getHeaders() { method setHeaders (line 270) | public void setHeaders(Map headers) { method toString (line 274) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/util/McpMessageCodec.java class McpMessageCodec (line 14) | public final class McpMessageCodec { method McpMessageCodec (line 16) | private McpMessageCodec() { method parseMessage (line 19) | public static McpMessage parseMessage(String jsonMessage) { method stringValue (line 51) | private static String stringValue(Object value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/util/McpPromptAdapter.java class McpPromptAdapter (line 20) | @Slf4j method scanAndRegisterMcpPrompts (line 37) | public static void scanAndRegisterMcpPrompts() { method registerMcpServicePrompts (line 51) | private static void registerMcpServicePrompts(Class serviceClass) { method createPromptDefinitionFromMethod (line 78) | private static io.github.lnyocly.ai4j.mcp.entity.McpPrompt createPromp... method getAllMcpPrompts (line 114) | public static List getAll... method getMcpPrompt (line 121) | public static McpPromptResult getMcpPrompt(String promptName, Map promptClass, Meth... method preparePromptMethodArguments (line 174) | private static Object[] preparePromptMethodArguments(Method method, Ma... method getJsonSchemaType (line 201) | private static String getJsonSchemaType(Class javaType) { method convertValue (line 222) | private static Object convertValue(Object value, Class targetType) { method promptExists (line 248) | public static boolean promptExists(String promptName) { method getPromptDefinition (line 255) | public static io.github.lnyocly.ai4j.mcp.entity.McpPrompt getPromptDef... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/util/McpResourceAdapter.java class McpResourceAdapter (line 21) | @Slf4j method scanAndRegisterMcpResources (line 41) | public static void scanAndRegisterMcpResources() { method registerMcpServiceResources (line 55) | private static void registerMcpServiceResources(Class serviceClass) { method createResourceDefinitionFromMethod (line 81) | private static io.github.lnyocly.ai4j.mcp.entity.McpResource createRes... method getAllMcpResources (line 96) | public static List getA... method readMcpResource (line 103) | public static McpResourceContent readMcpResource(String uri) { method findMatchingTemplate (line 143) | private static String findMatchingTemplate(String uri) { method uriMatchesTemplate (line 155) | private static boolean uriMatchesTemplate(String uri, String template) { method extractUriParameters (line 164) | private static Map extractUriParameters(String templat... method invokeMcpResourceMethod (line 195) | private static Object invokeMcpResourceMethod(Class resourceClass, ... method prepareResourceMethodArguments (line 212) | private static Object[] prepareResourceMethodArguments(Method method, ... method convertValue (line 233) | private static Object convertValue(Object value, Class targetType) { method resourceExists (line 259) | public static boolean resourceExists(String uri) { method getResourceDefinition (line 266) | public static io.github.lnyocly.ai4j.mcp.entity.McpResource getResourc... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/util/McpToolAdapter.java class McpToolAdapter (line 24) | public class McpToolAdapter { method scanAndRegisterMcpTools (line 45) | public static void scanAndRegisterMcpTools() { method getAllMcpTools (line 103) | public static List getAllMcpTools() { method invokeMcpTool (line 111) | public static String invokeMcpTool(String toolName, String arguments) { method mcpToolExists (line 150) | public static boolean mcpToolExists(String toolName) { method getMcpTool (line 158) | public static Tool getMcpTool(String toolName) { method getAllMcpToolNames (line 166) | public static Set getAllMcpToolNames() { method refresh (line 174) | public static void refresh() { method ensureInitialized (line 187) | private static void ensureInitialized() { method createToolFromMethod (line 196) | private static Tool createToolFromMethod(Method method, McpTool mcpToo... method createParametersFromMethod (line 226) | private static Tool.Function.Parameter createParametersFromMethod(Meth... method createPropertyFromParameter (line 259) | private static Tool.Function.Property createPropertyFromParameter(Clas... method getEnumValues (line 295) | private static List getEnumValues(Class enumType) { method parseMethodArguments (line 306) | private static Object[] parseMethodArguments(Method method, String arg... method convertValue (line 347) | private static Object convertValue(Object value, Class targetType) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/mcp/util/McpToolConversionSupport.java class McpToolConversionSupport (line 13) | public final class McpToolConversionSupport { method McpToolConversionSupport (line 15) | private McpToolConversionSupport() { method convertToOpenAiTool (line 18) | public static Tool.Function convertToOpenAiTool(McpToolDefinition mcpT... method convertInputSchema (line 30) | public static Tool.Function.Parameter convertInputSchema(Map toolCalls); method addAssistantToolCalls (line 20) | void addAssistantToolCalls(List toolCalls); method addToolOutput (line 22) | void addToolOutput(String toolCallId, String output); method add (line 24) | void add(ChatMemoryItem item); method addAll (line 26) | void addAll(List items); method getItems (line 28) | List getItems(); method toChatMessages (line 30) | List toChatMessages(); method toResponsesInput (line 32) | List toResponsesInput(); method snapshot (line 34) | ChatMemorySnapshot snapshot(); method restore (line 36) | void restore(ChatMemorySnapshot snapshot); method clear (line 38) | void clear(); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/memory/ChatMemoryItem.java class ChatMemoryItem (line 17) | @Data method system (line 35) | public static ChatMemoryItem system(String text) { method user (line 42) | public static ChatMemoryItem user(String text) { method user (line 49) | public static ChatMemoryItem user(String text, String... imageUrls) { method assistant (line 65) | public static ChatMemoryItem assistant(String text) { method assistant (line 72) | public static ChatMemoryItem assistant(String text, List too... method assistantToolCalls (line 80) | public static ChatMemoryItem assistantToolCalls(List toolCal... method tool (line 87) | public static ChatMemoryItem tool(String toolCallId, String output) { method summary (line 95) | public static ChatMemoryItem summary(String role, String text) { method toChatMessage (line 103) | public ChatMessage toChatMessage() { method toResponsesInput (line 132) | public Object toResponsesInput() { method isEmpty (line 167) | public boolean isEmpty() { method copyOf (line 175) | public static ChatMemoryItem copyOf(ChatMemoryItem source) { method toMultiModalContent (line 189) | private static List toMultiModalContent(String tex... method inputText (line 208) | private static Map inputText(String text) { method inputImage (line 215) | private static Map inputImage(String imageUrl) { method serializeToolCalls (line 224) | private static List> serializeToolCalls(List copyToolCalls(List source) { method copyStrings (line 270) | private static List copyStrings(List source) { method hasText (line 274) | private static boolean hasText(String value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/memory/ChatMemoryPolicy.java type ChatMemoryPolicy (line 5) | public interface ChatMemoryPolicy { method apply (line 7) | List apply(List items); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/memory/ChatMemorySnapshot.java class ChatMemorySnapshot (line 11) | @Data method from (line 19) | public static ChatMemorySnapshot from(List items) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/memory/ChatMemorySummarizer.java type ChatMemorySummarizer (line 3) | public interface ChatMemorySummarizer { method summarize (line 5) | String summarize(ChatMemorySummaryRequest request); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/memory/ChatMemorySummaryRequest.java class ChatMemorySummaryRequest (line 11) | @Data method from (line 21) | public static ChatMemorySummaryRequest from(String existingSummary, Li... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/memory/InMemoryChatMemory.java class InMemoryChatMemory (line 9) | public class InMemoryChatMemory implements ChatMemory { method InMemoryChatMemory (line 15) | public InMemoryChatMemory() { method InMemoryChatMemory (line 19) | public InMemoryChatMemory(ChatMemoryPolicy policy) { method setPolicy (line 23) | public void setPolicy(ChatMemoryPolicy policy) { method addSystem (line 28) | @Override method addUser (line 33) | @Override method addUser (line 38) | @Override method addAssistant (line 43) | @Override method addAssistant (line 48) | @Override method addAssistantToolCalls (line 53) | @Override method addToolOutput (line 58) | @Override method add (line 63) | @Override method addAll (line 72) | @Override method getItems (line 82) | @Override method toChatMessages (line 91) | @Override method toResponsesInput (line 100) | @Override method snapshot (line 109) | @Override method restore (line 114) | @Override method clear (line 127) | @Override method applyPolicy (line 132) | private void applyPolicy() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/memory/JdbcChatMemory.java class JdbcChatMemory (line 17) | public class JdbcChatMemory implements ChatMemory { method JdbcChatMemory (line 28) | public JdbcChatMemory(JdbcChatMemoryConfig config) { method JdbcChatMemory (line 47) | public JdbcChatMemory(String jdbcUrl, String sessionId) { method JdbcChatMemory (line 54) | public JdbcChatMemory(String jdbcUrl, String username, String password... method JdbcChatMemory (line 63) | public JdbcChatMemory(DataSource dataSource, String sessionId) { method setPolicy (line 70) | public void setPolicy(ChatMemoryPolicy policy) { method addSystem (line 77) | @Override method addUser (line 82) | @Override method addUser (line 87) | @Override method addAssistant (line 92) | @Override method addAssistant (line 97) | @Override method addAssistantToolCalls (line 102) | @Override method addToolOutput (line 107) | @Override method add (line 112) | @Override method addAll (line 122) | @Override method getItems (line 136) | @Override method toChatMessages (line 141) | @Override method toResponsesInput (line 151) | @Override method snapshot (line 161) | @Override method restore (line 166) | @Override method clear (line 179) | @Override method initializeSchema (line 184) | private void initializeSchema() { method loadItems (line 200) | private List loadItems() { method replaceItems (line 220) | private void replaceItems(List items) { method applyPolicy (line 256) | private List applyPolicy(List items) { method copyItems (line 262) | private List copyItems(List items) { method openConnection (line 275) | private Connection openConnection() throws Exception { method validIdentifier (line 285) | private String validIdentifier(String value) { method requiredText (line 293) | private String requiredText(String value, String fieldName) { method trimToNull (line 301) | private String trimToNull(String value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/memory/JdbcChatMemoryConfig.java class JdbcChatMemoryConfig (line 10) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/memory/MessageWindowChatMemoryPolicy.java class MessageWindowChatMemoryPolicy (line 8) | public class MessageWindowChatMemoryPolicy implements ChatMemoryPolicy { method MessageWindowChatMemoryPolicy (line 12) | public MessageWindowChatMemoryPolicy(int maxMessages) { method apply (line 19) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/memory/SummaryChatMemoryPolicy.java class SummaryChatMemoryPolicy (line 10) | public class SummaryChatMemoryPolicy implements ChatMemoryPolicy { method SummaryChatMemoryPolicy (line 18) | public SummaryChatMemoryPolicy(SummaryChatMemoryPolicyConfig config) { method SummaryChatMemoryPolicy (line 42) | public SummaryChatMemoryPolicy(ChatMemorySummarizer summarizer, int ma... method apply (line 50) | @Override method collectSummaryEligibleIndices (line 84) | private List collectSummaryEligibleIndices(List items, List collectItemsToSummarize(List rebuildWithSummary(List i... method copyItems (line 184) | private List copyItems(List items) { method trimToNull (line 197) | private String trimToNull(String value) { method hasText (line 205) | private boolean hasText(String value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/memory/SummaryChatMemoryPolicyConfig.java class SummaryChatMemoryPolicyConfig (line 9) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/memory/UnboundedChatMemoryPolicy.java class UnboundedChatMemoryPolicy (line 6) | public class UnboundedChatMemoryPolicy implements ChatMemoryPolicy { method apply (line 8) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/network/ConnectionPoolProvider.java type ConnectionPoolProvider (line 10) | public interface ConnectionPoolProvider { method getConnectionPool (line 11) | ConnectionPool getConnectionPool(); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/network/DispatcherProvider.java type DispatcherProvider (line 10) | public interface DispatcherProvider { method getDispatcher (line 11) | Dispatcher getDispatcher(); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/network/OkHttpUtil.java class OkHttpUtil (line 14) | public class OkHttpUtil { method checkClientTrusted (line 19) | @Override method checkServerTrusted (line 23) | @Override method getAcceptedIssuers (line 27) | @Override method getIgnoreInitedSslContext (line 40) | public static SSLContext getIgnoreInitedSslContext() throws NoSuchAlgo... method getIgnoreSslHostnameVerifier (line 51) | public static HostnameVerifier getIgnoreSslHostnameVerifier() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/network/UrlUtils.java class UrlUtils (line 8) | public final class UrlUtils { method UrlUtils (line 10) | private UrlUtils() { method concatUrl (line 13) | public static String concatUrl(String... params){ FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/network/impl/DefaultConnectionPoolProvider.java class DefaultConnectionPoolProvider (line 11) | public class DefaultConnectionPoolProvider implements ConnectionPoolProv... method getConnectionPool (line 12) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/network/impl/DefaultDispatcherProvider.java class DefaultDispatcherProvider (line 11) | public class DefaultDispatcherProvider implements DispatcherProvider { method getDispatcher (line 12) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/baichuan/chat/BaichuanChatService.java class BaichuanChatService (line 43) | public class BaichuanChatService implements IChatService, ParameterConve... method BaichuanChatService (line 53) | public BaichuanChatService(Configuration configuration) { method BaichuanChatService (line 60) | public BaichuanChatService(Configuration configuration, BaichuanConfig... method chatCompletion (line 67) | @Override method chatCompletion (line 121) | @Override method chatCompletionStream (line 126) | @Override method chatCompletionStream (line 168) | @Override method convertChatCompletionObject (line 173) | @Override method convertEventSource (line 190) | @Override method convertChatCompletionResponse (line 219) | @Override method serializeStreamResponse (line 230) | private String serializeStreamResponse(String data) { method prepareChatCompletion (line 242) | private void prepareChatCompletion(ChatCompletion chatCompletion, bool... method attachTools (line 250) | private void attachTools(ChatCompletion chatCompletion) { method hasPendingTools (line 263) | private boolean hasPendingTools(ChatCompletion chatCompletion) { method requiresFollowUp (line 268) | private boolean requiresFollowUp(String finishReason) { method executeChatCompletionRequest (line 272) | private BaichuanChatCompletionResponse executeChatCompletionRequest( method buildChatCompletionRequest (line 286) | private Request buildChatCompletionRequest(String baseUrl, String apiK... method mergeUsage (line 296) | private void mergeUsage(Usage target, Usage usage) { method appendToolMessages (line 305) | private List appendToolMessages( method appendStreamToolMessages (line 316) | private List appendStreamToolMessages(List m... method appendToolResponses (line 323) | private void appendToolResponses(List messages, List functions){ FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/baichuan/chat/entity/BaichuanChatCompletionResponse.java class BaichuanChatCompletionResponse (line 14) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/dashscope/DashScopeChatService.java class DashScopeChatService (line 43) | @Slf4j method request (line 51) | @NotNull method cancel (line 57) | @Override method DashScopeChatService (line 63) | public DashScopeChatService(Configuration configuration) { method DashScopeChatService (line 67) | public DashScopeChatService(Configuration configuration, DashScopeConf... method chatCompletion (line 71) | @Override method chatCompletion (line 162) | @Override method chatCompletionStream (line 167) | @Override method chatCompletionStream (line 268) | @Override method convertChatCompletionObject (line 273) | @Override method convertEventSource (line 302) | @Override method convertChatCompletionResponse (line 307) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/dashscope/entity/DashScopeResult.java class DashScopeResult (line 6) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/dashscope/response/DashScopeResponsesService.java class DashScopeResponsesService (line 33) | public class DashScopeResponsesService implements IResponsesService { method DashScopeResponsesService (line 39) | public DashScopeResponsesService(Configuration configuration) { method create (line 45) | @Override method create (line 70) | @Override method createStream (line 75) | @Override method createStream (line 103) | @Override method retrieve (line 108) | @Override method retrieve (line 128) | @Override method delete (line 133) | @Override method delete (line 153) | @Override method resolveUrl (line 158) | private String resolveUrl(String baseUrl, String path) { method resolveApiKey (line 163) | private String resolveApiKey(String apiKey) { method convertEventSource (line 167) | private EventSourceListener convertEventSource(ObjectMapper mapper, Re... method isTerminalEvent (line 204) | private boolean isTerminalEvent(String type) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/dashscope/util/MessageUtil.java class MessageUtil (line 16) | public class MessageUtil { method convert (line 18) | public static ChatMessage convert(Message message) { method convertToChatMessage (line 52) | public static List convertToChatMessage(List mes... method convert (line 56) | public static Message convert(ChatMessage message) { method convertToMessage (line 92) | public static List convertToMessage(List message... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/deepseek/chat/DeepSeekChatService.java class DeepSeekChatService (line 43) | public class DeepSeekChatService implements IChatService, ParameterConve... method DeepSeekChatService (line 53) | public DeepSeekChatService(Configuration configuration) { method DeepSeekChatService (line 60) | public DeepSeekChatService(Configuration configuration, DeepSeekConfig... method convertChatCompletionObject (line 67) | @Override method convertEventSource (line 90) | @Override method convertChatCompletionResponse (line 119) | @Override method chatCompletion (line 132) | @Override method chatCompletion (line 184) | @Override method chatCompletionStream (line 189) | @Override method chatCompletionStream (line 231) | @Override method serializeStreamResponse (line 236) | private String serializeStreamResponse(String data) { method prepareChatCompletion (line 247) | private void prepareChatCompletion(ChatCompletion chatCompletion, bool... method attachTools (line 255) | private void attachTools(ChatCompletion chatCompletion) { method hasPendingTools (line 268) | private boolean hasPendingTools(ChatCompletion chatCompletion) { method requiresFollowUp (line 273) | private boolean requiresFollowUp(String finishReason) { method executeChatCompletionRequest (line 277) | private DeepSeekChatCompletionResponse executeChatCompletionRequest( method buildChatCompletionRequest (line 291) | private Request buildChatCompletionRequest(String baseUrl, String apiK... method mergeUsage (line 301) | private void mergeUsage(Usage target, Usage usage) { method appendToolMessages (line 310) | private List appendToolMessages( method appendStreamToolMessages (line 321) | private List appendStreamToolMessages(List m... method appendToolResponses (line 328) | private void appendToolResponses(List messages, List appendToolMessages( method appendStreamToolMessages (line 321) | private List appendStreamToolMessages(List m... method appendToolResponses (line 328) | private void appendToolResponses(List messages, List appendToolMessages( method appendStreamToolMessages (line 303) | private List appendStreamToolMessages(List m... method appendToolResponses (line 310) | private void appendToolResponses(List messages, List appendToolMessages( method appendStreamToolMessages (line 322) | private List appendStreamToolMessages(List m... method appendToolResponses (line 329) | private void appendToolResponses(List messages, List appendToolMessages( method appendStreamToolMessages (line 331) | private List appendStreamToolMessages(List m... method appendToolResponses (line 338) | private void appendToolResponses(List messages, List ollamaMessagesToChatMessages(List con... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/ollama/embedding/entity/OllamaEmbeddingResponse.java class OllamaEmbeddingResponse (line 18) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/ollama/rerank/OllamaRerankService.java class OllamaRerankService (line 7) | public class OllamaRerankService extends StandardRerankService { method OllamaRerankService (line 9) | public OllamaRerankService(Configuration configuration) { method OllamaRerankService (line 13) | public OllamaRerankService(Configuration configuration, OllamaConfig o... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/audio/OpenAiAudioService.java class OpenAiAudioService (line 33) | public class OpenAiAudioService implements IAudioService { method OpenAiAudioService (line 40) | public OpenAiAudioService(Configuration configuration) { method OpenAiAudioService (line 45) | public OpenAiAudioService(Configuration configuration, OpenAiConfig op... method textToSpeech (line 51) | @Override method textToSpeech (line 80) | @Override method transcription (line 85) | @Override method transcription (line 108) | @Override method translation (line 113) | @Override method translation (line 133) | @Override method buildAuthorizedRequest (line 138) | private Request buildAuthorizedRequest(String baseUrl, String apiKey, ... method newAudioMultipartBuilder (line 146) | private MultipartBody.Builder newAudioMultipartBuilder(File file, Stri... method executeJsonRequest (line 154) | private T executeJsonRequest(Request request, Class responseTyp... method resolveBaseUrl (line 165) | private String resolveBaseUrl(String baseUrl) { method resolveApiKey (line 169) | private String resolveApiKey(String apiKey) { method closeQuietly (line 173) | private static void closeQuietly(Response response) { class ResponseInputStream (line 182) | private static final class ResponseInputStream extends FilterInputStre... method ResponseInputStream (line 185) | private ResponseInputStream(Response response, InputStream delegate) { method close (line 190) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/audio/entity/Segment.java class Segment (line 18) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/audio/entity/TextToSpeech.java class TextToSpeech (line 16) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/audio/entity/Transcription.java class Transcription (line 17) | @Data class TranscriptionBuilder (line 62) | public static class TranscriptionBuilder { method content (line 65) | public Transcription.TranscriptionBuilder content(File file){ method setFile (line 91) | public void setFile(@NonNull File file) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/audio/entity/TranscriptionResponse.java class TranscriptionResponse (line 16) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/audio/entity/Translation.java class Translation (line 17) | @Data class TranslationBuilder (line 57) | public static class TranslationBuilder { method content (line 60) | public Translation.TranslationBuilder content(File file){ method setFile (line 86) | public void setFile(@NonNull File file) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/audio/entity/TranslationResponse.java class TranslationResponse (line 16) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/audio/entity/Word.java class Word (line 15) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/audio/enums/AudioEnum.java class AudioEnum (line 13) | public class AudioEnum { type Voice (line 14) | @Getter type ResponseFormat (line 27) | @Getter FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/audio/enums/WhisperEnum.java class WhisperEnum (line 13) | public class WhisperEnum { type ResponseFormat (line 14) | @Getter FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/chat/OpenAiChatService.java class OpenAiChatService (line 29) | @Slf4j method OpenAiChatService (line 37) | public OpenAiChatService(Configuration configuration) { method OpenAiChatService (line 43) | public OpenAiChatService(Configuration configuration, OpenAiConfig ope... method chatCompletion (line 49) | @Override method chatCompletion (line 148) | @Override method chatCompletionStream (line 153) | @Override method chatCompletionStream (line 236) | @Override method jsonBody (line 241) | private RequestBody jsonBody(String json) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/chat/entity/ChatCompletion.java class ChatCompletion (line 20) | @Data method getExtraBody (line 192) | @JsonAnyGetter class ChatCompletionBuilder (line 198) | public static class ChatCompletionBuilder { method functions (line 202) | public ChatCompletion.ChatCompletionBuilder functions(String... func... method functions (line 210) | public ChatCompletion.ChatCompletionBuilder functions(List f... method mcpServices (line 220) | public ChatCompletion.ChatCompletionBuilder mcpServices(String... mc... method mcpServices (line 228) | public ChatCompletion.ChatCompletionBuilder mcpServices(List... method mcpService (line 238) | public ChatCompletion.ChatCompletionBuilder mcpService(String mcpSer... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/chat/entity/ChatCompletionResponse.java class ChatCompletionResponse (line 20) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/chat/entity/ChatMessage.java class ChatMessage (line 17) | @Data method ChatMessage (line 38) | public ChatMessage(String userMessage) { method ChatMessage (line 42) | public ChatMessage(ChatMessageType role, String message) { method ChatMessage (line 46) | public ChatMessage(String role, String message) { method withSystem (line 51) | public static ChatMessage withSystem(String content) { method withUser (line 55) | public static ChatMessage withUser(String content) { method withUser (line 58) | public static ChatMessage withUser(String content, String ...images) { method withAssistant (line 65) | public static ChatMessage withAssistant(String content) { method withAssistant (line 68) | public static ChatMessage withAssistant(List toolCalls) { method withAssistant (line 75) | public static ChatMessage withAssistant(String content, List... method withTool (line 83) | public static ChatMessage withTool(String content, String toolCallId) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/chat/entity/Choice.java class Choice (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/chat/entity/Content.java class Content (line 19) | @ToString method ofText (line 26) | public static Content ofText(String text) { method ofMultiModals (line 33) | public static Content ofMultiModals(List parts) { method toJson (line 40) | @JsonValue method getText (line 50) | public String getText() { return text; } method getMultiModals (line 51) | public List getMultiModals() { return multiModals; } class MultiModal (line 54) | @Data class ImageUrl (line 68) | @Data type Type (line 75) | @Getter method withMultiModal (line 85) | public static List withMultiModal(String text, String...... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/chat/entity/StreamOptions.java class StreamOptions (line 16) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/chat/enums/ChatMessageType.java type ChatMessageType (line 11) | @Getter FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/chat/serializer/ContentDeserializer.java class ContentDeserializer (line 18) | public class ContentDeserializer extends JsonDeserializer { method deserialize (line 19) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/embedding/OpenAiEmbeddingService.java class OpenAiEmbeddingService (line 18) | public class OpenAiEmbeddingService implements IEmbeddingService { method OpenAiEmbeddingService (line 23) | public OpenAiEmbeddingService(Configuration configuration) { method OpenAiEmbeddingService (line 28) | public OpenAiEmbeddingService(Configuration configuration, OpenAiConfi... method embedding (line 34) | @Override method embedding (line 52) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/embedding/entity/Embedding.java class Embedding (line 15) | @Data class EmbeddingBuilder (line 43) | public static class EmbeddingBuilder { method input (line 45) | private Embedding.EmbeddingBuilder input(Object input){ method input (line 50) | public Embedding.EmbeddingBuilder input(String input){ method input (line 55) | public Embedding.EmbeddingBuilder input(List content){ FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/embedding/entity/EmbeddingObject.java class EmbeddingObject (line 17) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/embedding/entity/EmbeddingResponse.java class EmbeddingResponse (line 18) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/image/OpenAiImageService.java class OpenAiImageService (line 34) | public class OpenAiImageService implements IImageService { method OpenAiImageService (line 41) | public OpenAiImageService(Configuration configuration) { method generate (line 47) | @Override method generate (line 74) | @Override method generateStream (line 79) | @Override method generateStream (line 104) | @Override method convertEventSource (line 109) | private EventSourceListener convertEventSource(ObjectMapper mapper, Im... method parseOpenAiEvent (line 148) | private ImageStreamEvent parseOpenAiEvent(ObjectMapper mapper, String ... method asText (line 179) | private String asText(JsonNode node, String field) { method asInt (line 184) | private Integer asInt(JsonNode node, String field) { method asLong (line 189) | private Long asLong(JsonNode node, String field) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/image/entity/ImageData.java class ImageData (line 15) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/image/entity/ImageGeneration.java class ImageGeneration (line 17) | @Data method getExtraBody (line 101) | @JsonAnyGetter FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/image/entity/ImageGenerationResponse.java class ImageGenerationResponse (line 16) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/image/entity/ImageStreamError.java class ImageStreamError (line 12) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/image/entity/ImageStreamEvent.java class ImageStreamEvent (line 12) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/image/entity/ImageUsage.java class ImageUsage (line 15) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/image/entity/ImageUsageDetails.java class ImageUsageDetails (line 15) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/realtime/OpenAiRealtimeService.java class OpenAiRealtimeService (line 17) | public class OpenAiRealtimeService implements IRealtimeService { method OpenAiRealtimeService (line 21) | public OpenAiRealtimeService(Configuration configuration) { method OpenAiRealtimeService (line 26) | public OpenAiRealtimeService(Configuration configuration, OpenAiConfig... method createRealtimeClient (line 32) | @Override method createRealtimeClient (line 47) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/realtime/RealtimeConstant.java class RealtimeConstant (line 8) | public class RealtimeConstant { class ClientEvent (line 20) | public static class ClientEvent { class ServerEvent (line 65) | public static class ServerEvent { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/realtime/entity/ConversationCreated.java class ConversationCreated (line 8) | public class ConversationCreated { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/realtime/entity/Session.java class Session (line 10) | public class Session { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/realtime/entity/SessionCreated.java class SessionCreated (line 8) | public class SessionCreated { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/realtime/entity/SessionUpdated.java class SessionUpdated (line 8) | public class SessionUpdated { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/OpenAiResponsesService.java class OpenAiResponsesService (line 36) | public class OpenAiResponsesService implements IResponsesService { method OpenAiResponsesService (line 68) | public OpenAiResponsesService(Configuration configuration) { method create (line 75) | @Override method create (line 87) | @Override method createStream (line 92) | @Override method createStream (line 113) | @Override method retrieve (line 118) | @Override method retrieve (line 128) | @Override method delete (line 133) | @Override method delete (line 143) | @Override method resolveUrl (line 148) | private String resolveUrl(String baseUrl, String path) { method resolveApiKey (line 153) | private String resolveApiKey(String apiKey) { method serializeRequest (line 157) | private String serializeRequest(ResponseRequest request) throws Except... method buildJsonPostRequest (line 161) | private Request buildJsonPostRequest(String url, String apiKey, String... method authorizedRequestBuilder (line 167) | private Request.Builder authorizedRequestBuilder(String url, String ap... method executeJsonRequest (line 173) | private T executeJsonRequest(Request request, Class responseTyp... method buildOpenAiPayload (line 182) | private Map buildOpenAiPayload(ResponseRequest request) { method convertEventSource (line 251) | private EventSourceListener convertEventSource(ResponseSseListener lis... method isTerminalEvent (line 288) | private boolean isTerminalEvent(String type) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/ResponseEventParser.java class ResponseEventParser (line 10) | public final class ResponseEventParser { method ResponseEventParser (line 12) | private ResponseEventParser() { method parse (line 15) | public static ResponseStreamEvent parse(ObjectMapper mapper, String da... method asText (line 37) | private static String asText(JsonNode node, String field) { method asInt (line 42) | private static Integer asInt(JsonNode node, String field) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ImagePixelLimit.java class ImagePixelLimit (line 8) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/Response.java class Response (line 12) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseContentPart.java class ResponseContentPart (line 13) | @Data method getExtraBody (line 52) | @JsonAnyGetter FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseContextEdit.java class ResponseContextEdit (line 9) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseContextManagement.java class ResponseContextManagement (line 11) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseDeleteResponse.java class ResponseDeleteResponse (line 8) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseError.java class ResponseError (line 8) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseIncompleteDetails.java class ResponseIncompleteDetails (line 8) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseItem.java class ResponseItem (line 14) | @Data method getExtraBody (line 48) | @JsonAnyGetter FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseRequest.java class ResponseRequest (line 17) | @Data method getExtraBody (line 88) | @JsonAnyGetter method getFunctions (line 93) | public List getFunctions() { method setFunctions (line 97) | public void setFunctions(List functions) { method getMcpServices (line 101) | public List getMcpServices() { method setMcpServices (line 105) | public void setMcpServices(List mcpServices) { class ResponseRequestBuilder (line 109) | public static class ResponseRequestBuilder { method functions (line 113) | public ResponseRequestBuilder functions(String... functions) { method functions (line 121) | public ResponseRequestBuilder functions(List functions) { method mcpServices (line 131) | public ResponseRequestBuilder mcpServices(String... mcpServices) { method mcpServices (line 139) | public ResponseRequestBuilder mcpServices(List mcpServices) { method mcpService (line 149) | public ResponseRequestBuilder mcpService(String mcpService) { method toolRegistry (line 157) | public ResponseRequestBuilder toolRegistry(List functions, L... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseStreamEvent.java class ResponseStreamEvent (line 10) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseSummary.java class ResponseSummary (line 8) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseToolUsage.java class ResponseToolUsage (line 9) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseToolUsageDetails.java class ResponseToolUsageDetails (line 9) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseUsage.java class ResponseUsage (line 9) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/ResponseUsageDetails.java class ResponseUsageDetails (line 9) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/response/entity/TranslationOptions.java class TranslationOptions (line 8) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/tool/Tool.java class Tool (line 18) | @Data class Function (line 31) | @Data class Parameter (line 55) | @Data class Property (line 76) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/tool/ToolCall.java class ToolCall (line 14) | @Data class Function (line 25) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/openai/usage/Usage.java class Usage (line 16) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/standard/rerank/StandardRerankService.java class StandardRerankService (line 26) | public class StandardRerankService implements IRerankService { method StandardRerankService (line 34) | public StandardRerankService(OkHttpClient okHttpClient, String apiHost... method rerank (line 41) | @Override method rerank (line 79) | @Override method toResponse (line 84) | protected RerankResponse toResponse(JsonNode root, RerankRequest reque... method parseUsage (line 107) | protected RerankUsage parseUsage(JsonNode usageNode) { method parseDocument (line 118) | protected RerankDocument parseDocument(JsonNode documentNode, RerankRe... method toRequestDocuments (line 145) | protected List toRequestDocuments(List documen... method resolveBaseUrl (line 184) | protected String resolveBaseUrl(String baseUrl) { method resolveApiKey (line 192) | protected String resolveApiKey(String baseUrlApiKey) { method resolveRerankUrl (line 196) | protected String resolveRerankUrl() { method text (line 203) | protected String text(JsonNode node, String fieldName) { method intValue (line 211) | protected Integer intValue(JsonNode node) { method parseJsonValue (line 218) | protected Object parseJsonValue(JsonNode node) { method firstNonBlank (line 253) | protected String firstNonBlank(String... values) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/platform/zhipu/chat/ZhipuChatService.java class ZhipuChatService (line 44) | public class ZhipuChatService implements IChatService, ParameterConvert<... method ZhipuChatService (line 54) | public ZhipuChatService(Configuration configuration) { method ZhipuChatService (line 61) | public ZhipuChatService(Configuration configuration, ZhipuConfig zhipu... method chatCompletion (line 68) | @Override method chatCompletion (line 123) | @Override method chatCompletionStream (line 128) | @Override method chatCompletionStream (line 171) | @Override method convertChatCompletionObject (line 176) | @Override method convertEventSource (line 197) | @Override method convertChatCompletionResponse (line 226) | @Override method serializeStreamResponse (line 237) | private String serializeStreamResponse(String data) { method prepareChatCompletion (line 249) | private void prepareChatCompletion(ChatCompletion chatCompletion, bool... method attachTools (line 257) | private void attachTools(ChatCompletion chatCompletion) { method hasPendingTools (line 270) | private boolean hasPendingTools(ChatCompletion chatCompletion) { method requiresFollowUp (line 275) | private boolean requiresFollowUp(String finishReason) { method executeChatCompletionRequest (line 279) | private ZhipuChatCompletionResponse executeChatCompletionRequest( method buildChatCompletionRequest (line 293) | private Request buildChatCompletionRequest(String baseUrl, String toke... method mergeUsage (line 303) | private void mergeUsage(Usage target, Usage usage) { method appendToolMessages (line 312) | private List appendToolMessages( method appendStreamToolMessages (line 323) | private List appendStreamToolMessages(List m... method appendToolResponses (line 330) | private void appendToolResponses(List messages, List scoreWithRawScores(List rawSco... method fallbackRankScores (line 29) | protected List fallbackRankScores(int size) { method hasVariance (line 37) | private boolean hasVariance(List rawScores) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/Bm25Retriever.java class Bm25Retriever (line 11) | public class Bm25Retriever implements Retriever { method Bm25Retriever (line 21) | public Bm25Retriever(List corpus) { method Bm25Retriever (line 25) | public Bm25Retriever(List corpus, TextTokenizer tokenizer, dou... method retrieve (line 35) | @Override method retrieverSource (line 65) | @Override method buildIndex (line 70) | private double buildIndex() { method scoreDocument (line 93) | private double scoreDocument(int index, List terms) { method copyWithScore (line 117) | private RagHit copyWithScore(RagHit hit, float score) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/DbsfFusionStrategy.java class DbsfFusionStrategy (line 6) | public class DbsfFusionStrategy extends AbstractScoreFusionStrategy { method scoreWithRawScores (line 8) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/DefaultRagContextAssembler.java class DefaultRagContextAssembler (line 7) | public class DefaultRagContextAssembler implements RagContextAssembler { method assemble (line 9) | @Override method appendSourceLabel (line 57) | private void appendSourceLabel(StringBuilder builder, RagCitation cita... method trimToNull (line 76) | private String trimToNull(String value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/DefaultRagService.java class DefaultRagService (line 7) | public class DefaultRagService implements RagService { method DefaultRagService (line 13) | public DefaultRagService(Retriever retriever) { method DefaultRagService (line 17) | public DefaultRagService(Retriever retriever, Reranker reranker, RagCo... method search (line 26) | @Override method trim (line 49) | private List trim(List hits, Integer finalTopK) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/DefaultTextTokenizer.java class DefaultTextTokenizer (line 8) | public class DefaultTextTokenizer implements TextTokenizer { method tokenize (line 10) | @Override method flushLatin (line 32) | private void flushLatin(List tokens, StringBuilder latin) { method isCjk (line 40) | private boolean isCjk(char ch) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/DenseRetriever.java class DenseRetriever (line 16) | public class DenseRetriever implements Retriever { method DenseRetriever (line 21) | public DenseRetriever(IEmbeddingService embeddingService, VectorStore ... method retrieve (line 32) | @Override method retrieverSource (line 88) | @Override method metadataValue (line 93) | private String metadataValue(Map metadata, String key) { method intValue (line 105) | private Integer intValue(Object value) { method firstNonBlank (line 119) | private String firstNonBlank(String... values) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/FusionStrategy.java type FusionStrategy (line 5) | public interface FusionStrategy { method scoreContributions (line 7) | List scoreContributions(List hits); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/HybridRetriever.java class HybridRetriever (line 10) | public class HybridRetriever implements Retriever { method HybridRetriever (line 15) | public HybridRetriever(List retrievers) { method HybridRetriever (line 19) | public HybridRetriever(List retrievers, int rankConstant) { method HybridRetriever (line 23) | public HybridRetriever(List retrievers, FusionStrategy fusi... method retrieve (line 28) | @Override method retrieverSource (line 86) | @Override method contributionOf (line 91) | private double contributionOf(List contributions, int index) { method keyOf (line 102) | private String keyOf(RagHit hit, int fallbackIndex) { method normalizeIndex (line 126) | private String normalizeIndex(Integer chunkIndex) { method retrievalScoreOf (line 130) | private Float retrievalScoreOf(RagHit hit) { class RankedHit (line 140) | private static class RankedHit { method RankedHit (line 146) | private RankedHit(RagHit hit) { method addDetail (line 152) | private void addDetail(String source, int rank, Float retrievalScore... method copyStatic (line 164) | private static RagHit copyStatic(RagHit hit) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ModelReranker.java class ModelReranker (line 17) | public class ModelReranker implements Reranker { method ModelReranker (line 26) | public ModelReranker(IRerankService rerankService, String model) { method ModelReranker (line 30) | public ModelReranker(IRerankService rerankService, method rerank (line 50) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/NoopReranker.java class NoopReranker (line 7) | public class NoopReranker implements Reranker { method rerank (line 9) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/RagChunk.java class RagChunk (line 10) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/RagCitation.java class RagCitation (line 8) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/RagContext.java class RagContext (line 11) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/RagContextAssembler.java type RagContextAssembler (line 5) | public interface RagContextAssembler { method assemble (line 7) | RagContext assemble(RagQuery query, List hits); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/RagDocument.java class RagDocument (line 10) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/RagEvaluation.java class RagEvaluation (line 8) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/RagEvaluator.java class RagEvaluator (line 9) | public class RagEvaluator { method evaluate (line 11) | public RagEvaluation evaluate(List hits, Collection re... method evaluate (line 16) | public RagEvaluation evaluate(List hits, Collection re... method normalize (line 58) | private Set normalize(Collection relevantIds) { method log2 (line 72) | private double log2(int value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/RagHit.java class RagHit (line 11) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/RagHitSupport.java class RagHitSupport (line 9) | final class RagHitSupport { method RagHitSupport (line 11) | private RagHitSupport() { method copyList (line 14) | static List copyList(List hits) { method copy (line 28) | static RagHit copy(RagHit hit) { method prepareRetrievedHits (line 53) | static List prepareRetrievedHits(List hits, String ret... method prepareRerankedHits (line 81) | static List prepareRerankedHits(List retrievedHits, Li... method assignRanks (line 111) | static void assignRanks(List hits) { method stableKey (line 123) | static String stableKey(RagHit hit, int fallbackIndex) { method stableKey (line 128) | static String stableKey(RagHit hit) { method normalizeEffectiveScore (line 153) | static void normalizeEffectiveScore(RagHit hit) { method merge (line 170) | private static RagHit merge(RagHit original, RagHit current) { method copyMetadata (line 232) | private static Map copyMetadata(Map me... method copyScoreDetails (line 239) | private static List copyScoreDetails(List rerank(String query, List hits) throws Exception; FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/Retriever.java type Retriever (line 5) | public interface Retriever { method retrieve (line 7) | List retrieve(RagQuery query) throws Exception; method retrieverSource (line 9) | default String retrieverSource() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/RrfFusionStrategy.java class RrfFusionStrategy (line 7) | public class RrfFusionStrategy implements FusionStrategy { method RrfFusionStrategy (line 11) | public RrfFusionStrategy() { method RrfFusionStrategy (line 15) | public RrfFusionStrategy(int rankConstant) { method scoreContributions (line 19) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/RsfFusionStrategy.java class RsfFusionStrategy (line 6) | public class RsfFusionStrategy extends AbstractScoreFusionStrategy { method scoreWithRawScores (line 8) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/TextTokenizer.java type TextTokenizer (line 5) | public interface TextTokenizer { method tokenize (line 7) | List tokenize(String text); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/Chunker.java type Chunker (line 11) | public interface Chunker { method chunk (line 13) | List chunk(RagDocument document, String content) throws Exce... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/DefaultMetadataEnricher.java class DefaultMetadataEnricher (line 12) | public class DefaultMetadataEnricher implements MetadataEnricher { method enrich (line 14) | @Override method putIfNotBlank (line 37) | private void putIfNotBlank(Map metadata, String key, S... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/DocumentLoader.java type DocumentLoader (line 6) | public interface DocumentLoader { method supports (line 8) | boolean supports(IngestionSource source); method load (line 10) | LoadedDocument load(IngestionSource source) throws Exception; FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/IngestionPipeline.java class IngestionPipeline (line 27) | public class IngestionPipeline { method IngestionPipeline (line 38) | public IngestionPipeline(IEmbeddingService embeddingService, VectorSto... method IngestionPipeline (line 49) | public IngestionPipeline(IEmbeddingService embeddingService, method IngestionPipeline (line 57) | public IngestionPipeline(IEmbeddingService embeddingService, method ingest (line 81) | public IngestionResult ingest(IngestionRequest request) throws Excepti... method load (line 133) | private LoadedDocument load(IngestionSource source) throws Exception { method resolveDocument (line 145) | private RagDocument resolveDocument(RagDocument requestedDocument, Ing... method normalizeChunks (line 201) | private List normalizeChunks(RagDocument document, List buildRecords(IngestionRequest request, method buildChunkMetadata (line 253) | private Map buildChunkMetadata(RagDocument document, method mergeEnrichers (line 271) | private List mergeEnrichers(List e... method mergeDocumentProcessors (line 279) | private List mergeDocumentProcessors(List> embed(List texts, String model, Inte... method extractEmbeddings (line 324) | private List> extractEmbeddings(EmbeddingResponse response... method buildChunkId (line 353) | private String buildChunkId(String documentId, Integer chunkIndex) { method copyMetadata (line 357) | private Map copyMetadata(Map metadata) { method stringValue (line 364) | private String stringValue(Object value) { method firstNonBlank (line 372) | private String firstNonBlank(String... values) { method isBlank (line 384) | private boolean isBlank(String value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/IngestionRequest.java class IngestionRequest (line 12) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/IngestionResult.java class IngestionResult (line 14) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/IngestionSource.java class IngestionSource (line 12) | @Data method text (line 31) | public static IngestionSource text(String content) { method file (line 35) | public static IngestionSource file(File file) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/LoadedDocument.java class LoadedDocument (line 11) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/LoadedDocumentProcessor.java type LoadedDocumentProcessor (line 7) | public interface LoadedDocumentProcessor { method process (line 9) | LoadedDocument process(IngestionSource source, LoadedDocument document... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/MetadataEnricher.java type MetadataEnricher (line 11) | public interface MetadataEnricher { method enrich (line 13) | void enrich(RagDocument document, RagChunk chunk, Map ... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/OcrNoiseCleaningDocumentProcessor.java class OcrNoiseCleaningDocumentProcessor (line 9) | public class OcrNoiseCleaningDocumentProcessor implements LoadedDocument... method process (line 11) | @Override method clean (line 31) | String clean(String content) { method collapseInnerWhitespace (line 59) | private String collapseInnerWhitespace(String value) { method looksLikeSpacedWord (line 63) | private boolean looksLikeSpacedWord(String line) { method isBlank (line 83) | private boolean isBlank(String value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/OcrTextExtractingDocumentProcessor.java class OcrTextExtractingDocumentProcessor (line 9) | public class OcrTextExtractingDocumentProcessor implements LoadedDocumen... method OcrTextExtractingDocumentProcessor (line 13) | public OcrTextExtractingDocumentProcessor(OcrTextExtractor extractor) { method process (line 20) | @Override method copyMetadata (line 40) | private Map copyMetadata(Map metadata) { method isBlank (line 48) | private boolean isBlank(String value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/OcrTextExtractor.java type OcrTextExtractor (line 6) | public interface OcrTextExtractor { method supports (line 8) | boolean supports(IngestionSource source, LoadedDocument document); method extractText (line 10) | String extractText(IngestionSource source, LoadedDocument document) th... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/RecursiveTextChunker.java class RecursiveTextChunker (line 14) | public class RecursiveTextChunker implements Chunker { method RecursiveTextChunker (line 18) | public RecursiveTextChunker(int chunkSize, int chunkOverlap) { method RecursiveTextChunker (line 22) | public RecursiveTextChunker(RecursiveCharacterTextSplitter splitter) { method chunk (line 29) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/TextDocumentLoader.java class TextDocumentLoader (line 6) | public class TextDocumentLoader implements DocumentLoader { method supports (line 8) | @Override method load (line 13) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/TikaDocumentLoader.java class TikaDocumentLoader (line 12) | public class TikaDocumentLoader implements DocumentLoader { method supports (line 14) | @Override method load (line 19) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rag/ingestion/WhitespaceNormalizingDocumentProcessor.java class WhitespaceNormalizingDocumentProcessor (line 9) | public class WhitespaceNormalizingDocumentProcessor implements LoadedDoc... method process (line 11) | @Override method normalize (line 31) | String normalize(String text) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rerank/entity/RerankDocument.java class RerankDocument (line 11) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rerank/entity/RerankRequest.java class RerankRequest (line 18) | @Data method getExtraBody (line 46) | @JsonAnyGetter FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rerank/entity/RerankResponse.java class RerankResponse (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rerank/entity/RerankResult.java class RerankResult (line 11) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/rerank/entity/RerankUsage.java class RerankUsage (line 11) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/AiConfig.java class AiConfig (line 8) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/Configuration.java class Configuration (line 17) | @Data method createRequestFactory (line 22) | public EventSource.Factory createRequestFactory() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/IAudioService.java type IAudioService (line 12) | public interface IAudioService { method textToSpeech (line 14) | InputStream textToSpeech(String baseUrl, String apiKey, TextToSpeech t... method textToSpeech (line 15) | InputStream textToSpeech(TextToSpeech textToSpeech); method transcription (line 17) | TranscriptionResponse transcription(String baseUrl, String apiKey, Tra... method transcription (line 18) | TranscriptionResponse transcription(Transcription transcription); method translation (line 20) | TranslationResponse translation(String baseUrl, String apiKey, Transla... method translation (line 21) | TranslationResponse translation(Translation translation); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/IChatService.java type IChatService (line 12) | public interface IChatService { method chatCompletion (line 14) | ChatCompletionResponse chatCompletion(String baseUrl, String apiKey, C... method chatCompletion (line 15) | ChatCompletionResponse chatCompletion(ChatCompletion chatCompletion) t... method chatCompletionStream (line 16) | void chatCompletionStream(String baseUrl, String apiKey, ChatCompletio... method chatCompletionStream (line 17) | void chatCompletionStream(ChatCompletion chatCompletion, SseListener e... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/IEmbeddingService.java type IEmbeddingService (line 11) | public interface IEmbeddingService { method embedding (line 13) | EmbeddingResponse embedding(String baseUrl, String apiKey, Embedding e... method embedding (line 14) | EmbeddingResponse embedding(Embedding embeddingReq) throws Exception ; FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/IImageService.java type IImageService (line 12) | public interface IImageService { method generate (line 14) | ImageGenerationResponse generate(String baseUrl, String apiKey, ImageG... method generate (line 16) | ImageGenerationResponse generate(ImageGeneration imageGeneration) thro... method generateStream (line 18) | void generateStream(String baseUrl, String apiKey, ImageGeneration ima... method generateStream (line 20) | void generateStream(ImageGeneration imageGeneration, ImageSseListener ... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/IRealtimeService.java type IRealtimeService (line 11) | public interface IRealtimeService { method createRealtimeClient (line 12) | WebSocket createRealtimeClient(String baseUrl, String apiKey, String m... method createRealtimeClient (line 13) | WebSocket createRealtimeClient(String model, RealtimeListener realtime... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/IRerankService.java type IRerankService (line 6) | public interface IRerankService { method rerank (line 8) | RerankResponse rerank(String baseUrl, String apiKey, RerankRequest req... method rerank (line 10) | RerankResponse rerank(RerankRequest request) throws Exception; FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/IResponsesService.java type IResponsesService (line 9) | public interface IResponsesService { method create (line 11) | Response create(String baseUrl, String apiKey, ResponseRequest request... method create (line 13) | Response create(ResponseRequest request) throws Exception; method createStream (line 15) | void createStream(String baseUrl, String apiKey, ResponseRequest reque... method createStream (line 17) | void createStream(ResponseRequest request, ResponseSseListener listene... method retrieve (line 19) | Response retrieve(String baseUrl, String apiKey, String responseId) th... method retrieve (line 21) | Response retrieve(String responseId) throws Exception; method delete (line 23) | ResponseDeleteResponse delete(String baseUrl, String apiKey, String re... method delete (line 25) | ResponseDeleteResponse delete(String responseId) throws Exception; FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/ModelType.java type ModelType (line 6) | @AllArgsConstructor FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/PlatformType.java type PlatformType (line 11) | @AllArgsConstructor method getPlatform (line 29) | public static PlatformType getPlatform(String value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/factory/AiService.java class AiService (line 47) | public class AiService { method AiService (line 53) | public AiService(Configuration configuration) { method getConfiguration (line 57) | public Configuration getConfiguration() { method getAgentFlow (line 61) | public AgentFlow getAgentFlow(AgentFlowConfig agentFlowConfig) { method getChatService (line 65) | public IChatService getChatService(PlatformType platform) { method webSearchEnhance (line 70) | public IChatService webSearchEnhance(IChatService chatService) { method createChatService (line 75) | private IChatService createChatService(PlatformType platform) { method getEmbeddingService (line 106) | public IEmbeddingService getEmbeddingService(PlatformType platform) { method createEmbeddingService (line 111) | private IEmbeddingService createEmbeddingService(PlatformType platform) { method getAudioService (line 122) | public IAudioService getAudioService(PlatformType platform) { method createAudioService (line 126) | private IAudioService createAudioService(PlatformType platform) { method getRealtimeService (line 135) | public IRealtimeService getRealtimeService(PlatformType platform) { method createRealtimeService (line 139) | private IRealtimeService createRealtimeService(PlatformType platform) { method getPineconeService (line 148) | public PineconeService getPineconeService() { method getPineconeVectorStore (line 152) | public VectorStore getPineconeVectorStore() { method getQdrantVectorStore (line 156) | public VectorStore getQdrantVectorStore() { method getMilvusVectorStore (line 160) | public VectorStore getMilvusVectorStore() { method getPgVectorStore (line 164) | public VectorStore getPgVectorStore() { method getImageService (line 168) | public IImageService getImageService(PlatformType platform) { method createImageService (line 172) | private IImageService createImageService(PlatformType platform) { method getResponsesService (line 184) | public IResponsesService getResponsesService(PlatformType platform) { method createResponsesService (line 188) | private IResponsesService createResponsesService(PlatformType platform) { method getRerankService (line 201) | public IRerankService getRerankService(PlatformType platform) { method createRerankService (line 205) | private IRerankService createRerankService(PlatformType platform) { method getRagService (line 218) | public RagService getRagService(PlatformType platform, VectorStore vec... method getIngestionPipeline (line 226) | public IngestionPipeline getIngestionPipeline(PlatformType platform, V... method getModelReranker (line 230) | public Reranker getModelReranker(PlatformType platform, String model) { method getModelReranker (line 234) | public Reranker getModelReranker(PlatformType platform, method getModelReranker (line 241) | public Reranker getModelReranker(PlatformType platform, method getPineconeRagService (line 257) | public RagService getPineconeRagService(PlatformType platform) { method getPineconeIngestionPipeline (line 261) | public IngestionPipeline getPineconeIngestionPipeline(PlatformType pla... FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/factory/AiServiceFactory.java type AiServiceFactory (line 8) | public interface AiServiceFactory { method create (line 10) | AiService create(Configuration configuration); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/factory/AiServiceRegistration.java class AiServiceRegistration (line 8) | public class AiServiceRegistration { method AiServiceRegistration (line 14) | public AiServiceRegistration(String id, PlatformType platformType, AiS... method getId (line 20) | public String getId() { method getPlatformType (line 24) | public PlatformType getPlatformType() { method getAiService (line 28) | public AiService getAiService() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/factory/AiServiceRegistry.java type AiServiceRegistry (line 20) | public interface AiServiceRegistry { method find (line 22) | AiServiceRegistration find(String id); method ids (line 24) | Set ids(); method contains (line 26) | default boolean contains(String id) { method get (line 30) | default AiServiceRegistration get(String id) { method getAiService (line 38) | default AiService getAiService(String id) { method getChatService (line 42) | default IChatService getChatService(String id) { method getEmbeddingService (line 47) | default IEmbeddingService getEmbeddingService(String id) { method getAudioService (line 52) | default IAudioService getAudioService(String id) { method getRealtimeService (line 57) | default IRealtimeService getRealtimeService(String id) { method getImageService (line 62) | default IImageService getImageService(String id) { method getResponsesService (line 67) | default IResponsesService getResponsesService(String id) { method getRerankService (line 72) | default IRerankService getRerankService(String id) { method getRagService (line 77) | default RagService getRagService(String id, VectorStore vectorStore) { method getPineconeRagService (line 82) | default RagService getPineconeRagService(String id) { method getIngestionPipeline (line 87) | default IngestionPipeline getIngestionPipeline(String id, VectorStore ... method getPineconeIngestionPipeline (line 92) | default IngestionPipeline getPineconeIngestionPipeline(String id) { method getModelReranker (line 97) | default Reranker getModelReranker(String id, String model) { method getModelReranker (line 102) | default Reranker getModelReranker(String id, method getModelReranker (line 115) | default Reranker getModelReranker(String id, FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/factory/DefaultAiServiceFactory.java class DefaultAiServiceFactory (line 8) | public class DefaultAiServiceFactory implements AiServiceFactory { method create (line 10) | @Override FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/factory/DefaultAiServiceRegistry.java class DefaultAiServiceRegistry (line 33) | public class DefaultAiServiceRegistry implements AiServiceRegistry { method DefaultAiServiceRegistry (line 37) | public DefaultAiServiceRegistry(Map reg... method empty (line 41) | public static DefaultAiServiceRegistry empty() { method from (line 45) | public static DefaultAiServiceRegistry from(Configuration configuratio... method from (line 49) | public static DefaultAiServiceRegistry from(Configuration configuratio... method find (line 70) | @Override method ids (line 75) | @Override method createScopedConfiguration (line 80) | private static Configuration createScopedConfiguration(Configuration s... method resolvePlatformType (line 87) | private static PlatformType resolvePlatformType(String rawPlatform, St... method applyPlatformConfig (line 101) | private static void applyPlatformConfig(Configuration target, AiPlatfo... method copy (line 144) | private static T copy(AiPlatform aiPlatform, Class type) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/factory/FreeAiService.java class FreeAiService (line 26) | @Deprecated method FreeAiService (line 34) | public FreeAiService(Configuration configuration, AiConfig aiConfig) { method FreeAiService (line 38) | public FreeAiService(Configuration configuration, AiConfig aiConfig, A... method FreeAiService (line 45) | public FreeAiService(AiServiceRegistry registry) { method init (line 52) | public void init() { method getChatService (line 61) | public static IChatService getChatService(String id) { method getAiService (line 66) | public static AiService getAiService(String id) { method getEmbeddingService (line 71) | public static IEmbeddingService getEmbeddingService(String id) { method getAudioService (line 76) | public static IAudioService getAudioService(String id) { method getRealtimeService (line 81) | public static IRealtimeService getRealtimeService(String id) { method getImageService (line 86) | public static IImageService getImageService(String id) { method getResponsesService (line 91) | public static IResponsesService getResponsesService(String id) { method getRerankService (line 96) | public static IRerankService getRerankService(String id) { method getRagService (line 101) | public static RagService getRagService(String id, VectorStore vectorSt... method getIngestionPipeline (line 106) | public static IngestionPipeline getIngestionPipeline(String id, Vector... method getPineconeIngestionPipeline (line 111) | public static IngestionPipeline getPineconeIngestionPipeline(String id) { method getModelReranker (line 116) | public static Reranker getModelReranker(String id, String model) { method getModelReranker (line 121) | public static Reranker getModelReranker(String id, method getModelReranker (line 129) | public static Reranker getModelReranker(String id, method contains (line 141) | public static boolean contains(String id) { method ids (line 145) | public static Set ids() { method getRegistry (line 149) | public static AiServiceRegistry getRegistry() { method setRegistry (line 153) | private static void setRegistry(AiServiceRegistry registry) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/service/spi/ServiceLoaderUtil.java class ServiceLoaderUtil (line 12) | @Slf4j method load (line 14) | public static T load(Class service) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/skill/SkillDescriptor.java class SkillDescriptor (line 8) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/skill/Skills.java class Skills (line 20) | public final class Skills { method Skills (line 24) | private Skills() { method discoverDefault (line 27) | public static DiscoveryResult discoverDefault(Path workspaceRoot) { method discoverDefault (line 31) | public static DiscoveryResult discoverDefault(String workspaceRoot, Li... method discoverDefault (line 35) | public static DiscoveryResult discoverDefault(Path workspaceRoot, List... method discover (line 41) | public static DiscoveryResult discover(Path workspaceRoot, List ... method createToolContext (line 65) | public static BuiltInToolContext createToolContext(Path workspaceRoot) { method createToolContext (line 70) | public static BuiltInToolContext createToolContext(Path workspaceRoot,... method appendAvailableSkillsPrompt (line 81) | public static String appendAvailableSkillsPrompt(String basePrompt, method appendAvailableSkillsPrompt (line 93) | public static void appendAvailableSkillsPrompt(StringBuilder builder, method buildAvailableSkillsPrompt (line 108) | public static String buildAvailableSkillsPrompt(List resolveSkillRoots(Path workspaceRoot, List discoverFromRoot(Path root, Path ... method resolveSkillFile (line 174) | private static Path resolveSkillFile(Path directory) { method buildDescriptor (line 183) | private static SkillDescriptor buildDescriptor(Path skillFile, Path sk... method resolveSource (line 203) | private static String resolveSource(Path skillRoot, Path workspaceRoot) { method normalizeWorkspaceRoot (line 210) | private static Path normalizeWorkspaceRoot(Path workspaceRoot) { method readQuietly (line 217) | private static String readQuietly(Path skillFile) { method parseFrontMatterValue (line 225) | private static String parseFrontMatterValue(String content, String key) { method parseHeading (line 250) | private static String parseHeading(String content) { method parseFirstParagraph (line 263) | private static String parseFirstParagraph(String content) { method inferName (line 290) | private static String inferName(Path skillFile) { method endsWithBlankLine (line 298) | private static boolean endsWithBlankLine(StringBuilder builder) { method normalizeKey (line 305) | private static String normalizeKey(String value) { method firstNonBlank (line 309) | private static String firstNonBlank(String... values) { method stripQuotes (line 321) | private static String stripQuotes(String value) { method isBlank (line 333) | private static boolean isBlank(String value) { class DiscoveryResult (line 337) | public static final class DiscoveryResult { method DiscoveryResult (line 342) | public DiscoveryResult(List skills, List al... method getSkills (line 347) | public List getSkills() { method getAllowedReadRoots (line 351) | public List getAllowedReadRoots() { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/token/TikTokensUtil.java class TikTokensUtil (line 22) | @Slf4j method tokens (line 48) | public static int tokens(EncodingType encodingType, String content){ method tokens (line 52) | public static int tokens(String modelName, String content) { method tokens (line 59) | public static int tokens(String modelName, List messages) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/tool/BuiltInProcessRegistry.java class BuiltInProcessRegistry (line 22) | final class BuiltInProcessRegistry { method BuiltInProcessRegistry (line 27) | BuiltInProcessRegistry(BuiltInToolContext context) { method start (line 31) | Map start(String command, String cwd) throws IOExcepti... method status (line 57) | Map status(String processId) { method list (line 61) | List> list() { method logs (line 77) | Map logs(String processId, Long offset, Integer limit) { method write (line 84) | int write(String processId, String input) throws IOException { method stop (line 93) | Map stop(String processId) { method getManagedProcess (line 99) | private ManagedProcess getManagedProcess(String processId) { method buildShellCommand (line 107) | private List buildShellCommand(String command) { method resolveShellCharset (line 114) | private Charset resolveShellCharset() { method firstSupportedCharset (line 134) | private Charset firstSupportedCharset(String[] candidates) { method isWindows (line 150) | private boolean isWindows() { method isBlank (line 154) | private boolean isBlank(String value) { method toLong (line 158) | private Long toLong(Object value) { class ManagedProcess (line 165) | private static final class ManagedProcess { method ManagedProcess (line 181) | private ManagedProcess(String processId, method startReaders (line 200) | private void startReaders() { method startWatcher (line 215) | private void startWatcher() { method snapshot (line 235) | private Map snapshot() { method readLogs (line 250) | private Map readLogs(long offset, int limit) { method stop (line 254) | private void stop() { method safePid (line 287) | private static Long safePid(Process process) { class StreamCollector (line 296) | private static final class StreamCollector implements Runnable { method StreamCollector (line 303) | private StreamCollector(InputStream inputStream, method run (line 313) | @Override class ProcessOutputBuffer (line 325) | private static final class ProcessOutputBuffer { method ProcessOutputBuffer (line 331) | private ProcessOutputBuffer(int maxChars) { method append (line 335) | private synchronized void append(String text) { method read (line 347) | private synchronized Map read(String processId, FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/tool/BuiltInToolContext.java class BuiltInToolContext (line 14) | @Data method getWorkspaceRootPath (line 46) | public Path getWorkspaceRootPath() { method resolveWorkspacePath (line 53) | public Path resolveWorkspacePath(String path) { method resolveReadablePath (line 69) | public Path resolveReadablePath(String path) { method getAllowedReadRootPaths (line 90) | public List getAllowedReadRootPaths() { method getOrCreateProcessRegistry (line 104) | BuiltInProcessRegistry getOrCreateProcessRegistry() { method isBlank (line 116) | private boolean isBlank(String value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/tool/BuiltInToolExecutor.java class BuiltInToolExecutor (line 25) | public final class BuiltInToolExecutor { method BuiltInToolExecutor (line 36) | private BuiltInToolExecutor() { method supports (line 39) | public static boolean supports(String functionName) { method invoke (line 43) | public static String invoke(String functionName, String argument, Buil... method readFile (line 67) | private static Map readFile(BuiltInToolContext context... method writeFile (line 121) | private static Map writeFile(BuiltInToolContext contex... method runBash (line 172) | private static Map runBash(BuiltInToolContext context,... method exec (line 210) | private static Map exec(BuiltInToolContext context, JS... method resolveShellCharset (line 264) | private static Charset resolveShellCharset() { method applyPatch (line 300) | private static Map applyPatch(BuiltInToolContext conte... method applyPatch (line 308) | private static Map applyPatch(BuiltInToolContext conte... method applyAddFile (line 361) | private static PatchOperation applyAddFile(BuiltInToolContext context, method applyUpdateFile (line 383) | private static PatchOperation applyUpdateFile(BuiltInToolContext context, method applyDeleteFile (line 410) | private static PatchOperation applyDeleteFile(BuiltInToolContext context, method applyUpdateBody (line 423) | private static String applyUpdateBody(String original, List bo... method parseHunks (line 471) | private static List> parseHunks(List body) { method resolveAnchor (line 502) | private static List resolveAnchor(List hunk) { method findAnchor (line 525) | private static int findAnchor(List originalLines, int cursor, ... method appendRange (line 544) | private static void appendRange(List output, List orig... method ensureMatch (line 550) | private static void ensureMatch(List originalLines, int curren... method countPrefixedLines (line 560) | private static int countPrefixedLines(List lines, char prefix) { method normalizeUpdateBody (line 570) | private static List normalizeUpdateBody(List body) { method writePatchFile (line 580) | private static void writePatchFile(Path file, String content) throws I... method splitContentLines (line 589) | private static List splitContentLines(String content) { method joinLines (line 605) | private static String joinLines(List lines) { method normalizeLines (line 619) | private static List normalizeLines(String text) { method parseDirective (line 632) | private static PatchDirective parseDirective(String line) { method parseArguments (line 654) | private static JSONObject parseArguments(String rawArguments) { method buildFileChange (line 661) | private static Map buildFileChange(String path, String... method normalizeRelativePath (line 670) | private static String normalizeRelativePath(String path) { method toDisplayPath (line 674) | private static String toDisplayPath(BuiltInToolContext context, Path f... method safeTrim (line 688) | private static String safeTrim(String value) { method firstNonBlank (line 692) | private static String firstNonBlank(String... values) { method isBlank (line 704) | private static boolean isBlank(String value) { class PatchDirective (line 708) | private static final class PatchDirective { method PatchDirective (line 713) | private PatchDirective(String operation, String path) { class PatchOperation (line 719) | private static final class PatchOperation { method PatchOperation (line 725) | private PatchOperation(int nextIndex, String path, Map codingTools() { method tools (line 99) | public static List tools(String... names) { method allCodingToolNames (line 113) | public static Set allCodingToolNames() { method readOnlyCodingToolNames (line 117) | public static Set readOnlyCodingToolNames() { method tool (line 121) | private static Tool tool(String name, method property (line 130) | private static Tool.Function.Property property(String type, String des... method property (line 134) | private static Tool.Function.Property property(String type, String des... method toolByName (line 138) | private static Tool toolByName(String name) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/tool/ResponseRequestToolResolver.java class ResponseRequestToolResolver (line 9) | public final class ResponseRequestToolResolver { method ResponseRequestToolResolver (line 11) | private ResponseRequestToolResolver() { method resolve (line 14) | public static ResponseRequest resolve(ResponseRequest request) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/tool/ToolUtil.java class ToolUtil (line 29) | public class ToolUtil { class McpToolInfo (line 55) | private static class McpToolInfo { method McpToolInfo (line 61) | McpToolInfo(String toolId, String description, Class serviceClass... method invoke (line 72) | public static String invoke(String functionName, String argument) { method invoke (line 76) | public static String invoke(String functionName, String argument, Buil... method invoke (line 105) | public static String invoke(String functionName, String argument, Stri... method pushBuiltInToolContext (line 113) | public static void pushBuiltInToolContext(BuiltInToolContext context) { method popBuiltInToolContext (line 125) | public static void popBuiltInToolContext() { method currentBuiltInToolContext (line 137) | private static BuiltInToolContext currentBuiltInToolContext() { method extractUserIdFromFunctionName (line 151) | private static String extractUserIdFromFunctionName(String functionNam... method callUserMcpTool (line 168) | private static String callUserMcpTool(String userId, String toolName, ... method callGlobalTool (line 186) | private static String callGlobalTool(String functionName, String argum... method extractActualToolName (line 217) | private static String extractActualToolName(String functionName) { method ensureInitialized (line 231) | private static void ensureInitialized() { method scanAndRegisterAllTools (line 245) | private static void scanAndRegisterAllTools() { method invokeMcpTool (line 261) | private static String invokeMcpTool(String functionName, String argume... method invokeFunctionTool (line 308) | private static String invokeFunctionTool(String functionName, String a... method callRemoteMcpService (line 338) | private static String callRemoteMcpService(String functionName, String... method getAllFunctionTools (line 383) | public static List getAllFunctionTools(List functionList) { method getAllMcpTools (line 426) | public static List getAllMcpTools(List mcpServerIds) { method getAllTools (line 476) | public static List getAllTools(List functionList, List getAllTools(List functionList, List getLocalMcpTools() { method getGlobalMcpTools (line 539) | private static List getGlobalMcpTools(List serviceIds) { method extractUserIdFromServiceIds (line 569) | private static String extractUserIdFromServiceIds(List service... method extractActualServiceIds (line 589) | private static List extractActualServiceIds(List servi... method getUserMcpTools (line 607) | private static List getUserMcpTools(List serviceIds, Str... method scanFunctionTools (line 636) | private static void scanFunctionTools() { method scanMcpTools (line 672) | private static void scanMcpTools() { method getToolEntity (line 714) | public static Tool getToolEntity(String functionName) { method createMcpToolEntity (line 737) | private static Tool createMcpToolEntity(McpToolInfo mcpTool) { method getFunctionEntity (line 778) | public static Tool.Function getFunctionEntity(String functionName) { method generateApiFunctionName (line 814) | private static String generateApiFunctionName(String serviceName, Stri... method getParameterName (line 840) | private static String getParameterName(Parameter param) { method convertParameterValue (line 851) | private static Object convertParameterValue(Object value, Class tar... method setFunctionParameters (line 882) | private static void setFunctionParameters(Tool.Function function, Clas... method createPropertyFromType (line 924) | private static Tool.Function.Property createPropertyFromType(Class ... method getArrayElementType (line 977) | private static Class getArrayElementType(Class arrayType) { method getEnumValues (line 989) | private static List getEnumValues(Class enumType) { method invokeUnified (line 1003) | @Deprecated method castToolFunctions (line 1008) | private static List castToolFunctions(Object value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/tools/ApplyPatchFunction.java class ApplyPatchFunction (line 13) | @FunctionCall(name = "apply_patch", description = "Apply a structured pa... method apply (line 16) | @Override class Request (line 25) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/tools/BashFunction.java class BashFunction (line 13) | @FunctionCall(name = "bash", description = "Execute non-interactive shel... method apply (line 16) | @Override class Request (line 25) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/tools/QueryTrainInfoFunction.java class QueryTrainInfoFunction (line 15) | @FunctionCall(name = "queryTrainInfo", description = "查询火车是否发车信息") class Request (line 18) | @Data type Type (line 24) | public enum Type{ method apply (line 29) | @Override class Response (line 36) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/tools/QueryWeatherFunction.java class QueryWeatherFunction (line 17) | @FunctionCall(name = "queryWeather", description = "查询目标地点的天气预报") method apply (line 19) | @Override class Request (line 52) | @Data type Type (line 63) | public enum Type{ FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/tools/ReadFileFunction.java class ReadFileFunction (line 13) | @FunctionCall(name = "read_file", description = "Read a text file from t... method apply (line 16) | @Override class Request (line 25) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/tools/WriteFileFunction.java class WriteFileFunction (line 13) | @FunctionCall(name = "write_file", description = "Create, overwrite, or ... method apply (line 16) | @Override class Request (line 25) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/VectorDataEntity.java class VectorDataEntity (line 14) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/pinecone/PineconeDelete.java class PineconeDelete (line 15) | @Builder FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/pinecone/PineconeInsert.java class PineconeInsert (line 16) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/pinecone/PineconeInsertResponse.java class PineconeInsertResponse (line 10) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/pinecone/PineconeQuery.java class PineconeQuery (line 16) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/pinecone/PineconeQueryResponse.java class PineconeQueryResponse (line 14) | @Data class Match (line 28) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/pinecone/PineconeVectors.java class PineconeVectors (line 16) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/service/PineconeService.java class PineconeService (line 26) | @Slf4j method PineconeService (line 34) | public PineconeService(Configuration configuration) { method PineconeService (line 39) | public PineconeService(Configuration configuration, PineconeConfig pin... method insert (line 45) | public Integer insert(PineconeInsert pineconeInsertReq){ method insert (line 68) | public Integer insert(VectorDataEntity vectorDataEntity, String namesp... method query (line 84) | public PineconeQueryResponse query(PineconeQuery pineconeQueryReq){ method query (line 107) | public String query(PineconeQuery pineconeQuery, String delimiter){ method delete (line 114) | public Boolean delete(PineconeDelete pineconeDeleteReq){ method generateIDs (line 136) | public List generateIDs(int count){ method generateContent (line 146) | public List> generateContent(List contents){ method jsonBody (line 157) | private RequestBody jsonBody(Object payload) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/store/VectorDeleteRequest.java class VectorDeleteRequest (line 11) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/store/VectorRecord.java class VectorRecord (line 11) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/store/VectorSearchRequest.java class VectorSearchRequest (line 11) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/store/VectorSearchResult.java class VectorSearchResult (line 11) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/store/VectorStore.java type VectorStore (line 8) | public interface VectorStore { method upsert (line 10) | int upsert(VectorUpsertRequest request) throws Exception; method search (line 12) | List search(VectorSearchRequest request) throws Ex... method delete (line 14) | boolean delete(VectorDeleteRequest request) throws Exception; method capabilities (line 16) | VectorStoreCapabilities capabilities(); FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/store/VectorStoreCapabilities.java class VectorStoreCapabilities (line 8) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/store/VectorUpsertRequest.java class VectorUpsertRequest (line 11) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/store/milvus/MilvusVectorStore.java class MilvusVectorStore (line 31) | public class MilvusVectorStore implements VectorStore { method MilvusVectorStore (line 38) | public MilvusVectorStore(Configuration configuration) { method MilvusVectorStore (line 42) | public MilvusVectorStore(Configuration configuration, MilvusConfig con... method upsert (line 53) | @Override method search (line 99) | @Override method delete (line 142) | @Override method capabilities (line 165) | @Override method applyCollectionScope (line 175) | private void applyCollectionScope(JSONObject body, String dataset) { method executePost (line 185) | private JSONObject executePost(String path, JSONObject payload) throws... method metadataFromResult (line 204) | private Map metadataFromResult(JSONObject item) { method scoreValue (line 224) | private Float scoreValue(JSONObject item) { method toFilterExpression (line 235) | private String toFilterExpression(Map filter) { method formatFilterValue (line 259) | private String formatFilterValue(Object value) { method join (line 269) | private String join(List values) { method joinWithAnd (line 280) | private String joinWithAnd(List values) { method requiredDataset (line 291) | private String requiredDataset(String dataset) { method resolveId (line 299) | private String resolveId(String id, int index) { method firstNonBlank (line 304) | private String firstNonBlank(String... values) { method stringValue (line 316) | private String stringValue(Object value) { method trimToNull (line 324) | private String trimToNull(String value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/store/pgvector/PgVectorStore.java class PgVectorStore (line 27) | public class PgVectorStore implements VectorStore { method PgVectorStore (line 31) | public PgVectorStore(Configuration configuration) { method PgVectorStore (line 35) | public PgVectorStore(PgVectorConfig config) { method upsert (line 42) | @Override method search (line 95) | @Override method delete (line 143) | @Override method capabilities (line 178) | @Override method appendMetadataFilters (line 188) | private void appendMetadataFilters(StringBuilder sql, List par... method connection (line 222) | private Connection connection() throws Exception { method bindParameters (line 229) | private void bindParameters(PreparedStatement statement, List ... method metadataJson (line 240) | private String metadataJson(VectorRecord record) { method parseMetadata (line 251) | private Map parseMetadata(String metadataJson) { method vectorLiteral (line 259) | private String vectorLiteral(List vector) { method safeMetadataKey (line 272) | private String safeMetadataKey(String key) { method identifier (line 283) | private String identifier(String identifier) { method requiredDataset (line 291) | private String requiredDataset(String dataset) { method resolveId (line 299) | private String resolveId(String id, int index) { method firstNonBlank (line 304) | private String firstNonBlank(String... values) { method stringValue (line 316) | private String stringValue(Object value) { method trimToNull (line 324) | private String trimToNull(String value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/store/pinecone/PineconeVectorStore.java class PineconeVectorStore (line 24) | public class PineconeVectorStore implements VectorStore { method PineconeVectorStore (line 28) | public PineconeVectorStore(PineconeService pineconeService) { method upsert (line 35) | @Override method search (line 70) | @Override method delete (line 105) | @Override method capabilities (line 119) | @Override method requiredDataset (line 129) | private String requiredDataset(String dataset) { method resolveId (line 137) | private String resolveId(String id, int index) { method stringifyMetadata (line 142) | private Map stringifyMetadata(Map metadata) { method objectMetadata (line 159) | private Map objectMetadata(Map metadat... method stringValue (line 172) | private String stringValue(Object value) { method trimToNull (line 180) | private String trimToNull(String value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/vector/store/qdrant/QdrantVectorStore.java class QdrantVectorStore (line 31) | public class QdrantVectorStore implements VectorStore { method QdrantVectorStore (line 38) | public QdrantVectorStore(Configuration configuration) { method QdrantVectorStore (line 42) | public QdrantVectorStore(Configuration configuration, QdrantConfig con... method upsert (line 53) | @Override method search (line 87) | @Override method delete (line 132) | @Override method capabilities (line 156) | @Override method payload (line 166) | private JSONObject payload(VectorRecord record) { method namedVector (line 182) | private Object namedVector(List vector) { method toFilter (line 191) | private JSONObject toFilter(Map filter) { method executePost (line 224) | private JSONObject executePost(String url, JSONObject payload) throws ... method vectorValue (line 243) | private List vectorValue(Object rawVector) { method payloadMap (line 263) | private Map payloadMap(JSONObject payload) { method url (line 274) | private String url(String template, String dataset) { method requiredDataset (line 278) | private String requiredDataset(String dataset) { method resolveId (line 286) | private String resolveId(String id, int index) { method trimToNull (line 291) | private String trimToNull(String value) { method stringValue (line 299) | private String stringValue(Object value) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/websearch/ChatWithWebSearchEnhance.java class ChatWithWebSearchEnhance (line 25) | public class ChatWithWebSearchEnhance implements IChatService { method ChatWithWebSearchEnhance (line 29) | public ChatWithWebSearchEnhance(IChatService chatService, Configuratio... method chatCompletion (line 35) | @Override method chatCompletion (line 40) | @Override method chatCompletionStream (line 45) | @Override method chatCompletionStream (line 50) | @Override method addWebSearchResults (line 56) | private ChatCompletion addWebSearchResults(ChatCompletion chatCompleti... method performWebSearch (line 73) | private String performWebSearch(String query) { FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/websearch/searxng/SearXNGConfig.java class SearXNGConfig (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/websearch/searxng/SearXNGRequest.java class SearXNGRequest (line 13) | @Data FILE: ai4j/src/main/java/io/github/lnyocly/ai4j/websearch/searxng/SearXNGResponse.java class SearXNGResponse (line 16) | @Data class Result (line 28) | @Data FILE: ai4j/src/test/java/io/github/lnyocly/BaichuanTest.java class BaichuanTest (line 29) | @Slf4j method test_init (line 34) | @Before method test_chatCompletions_common (line 65) | @Test method test_chatCompletions_multimodal (line 82) | @Test method test_chatCompletions_stream (line 101) | @Test method test_chatCompletions_function (line 128) | @Test method test_chatCompletions_stream_function (line 148) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/DashScopeTest.java class DashScopeTest (line 31) | @Slf4j method test_init (line 36) | @Before method test_chatCompletions_common (line 69) | @Test method test_chatCompletions_stream (line 88) | @Test method test_chatCompletions_function (line 115) | @Test method test_chatCompletions_stream_function (line 136) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/DeepSeekTest.java class DeepSeekTest (line 59) | @Slf4j method test_init (line 64) | @Before method test_chatCompletions_common (line 95) | @Test method test_chatCompletions_multimodal (line 112) | @Test method test_chatCompletions_stream (line 131) | @Test method test_chatCompletions_function (line 161) | @Test method test_chatCompletions_stream_function (line 181) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/DoubaoImageTest.java class DoubaoImageTest (line 27) | public class DoubaoImageTest { method test_init (line 31) | @Before method test_image_generate (line 64) | @Test method test_image_generate_stream (line 77) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/DoubaoResponsesTest.java class DoubaoResponsesTest (line 24) | public class DoubaoResponsesTest { method test_init (line 28) | @Before method test_responses_create (line 61) | @Test method test_responses_stream (line 72) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/DoubaoTest.java class DoubaoTest (line 26) | @Slf4j method test_init (line 31) | @Before method test_chatCompletions_common (line 64) | @Test method test_chatCompletions_stream (line 80) | @Test method test_chatCompletions_multimodal_stream (line 111) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/HunyuanTest.java class HunyuanTest (line 37) | @Slf4j method test_init (line 42) | @Before method isBlank (line 79) | private boolean isBlank(String value) { method test_chatCompletions_common (line 84) | @Test method test_chatCompletions_multimodal (line 101) | @Test method test_chatCompletions_stream (line 120) | @Test method test_chatCompletions_function (line 147) | @Test method test_chatCompletions_stream_function (line 167) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/LingyiTest.java class LingyiTest (line 36) | @Slf4j method test_init (line 41) | @Before method test_chatCompletions_common (line 73) | @Test method test_chatCompletions_multimodal (line 90) | @Test method test_chatCompletions_stream (line 109) | @Test method test_chatCompletions_function (line 136) | @Test method test_chatCompletions_stream_function (line 156) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/MinimaxTest.java class MinimaxTest (line 30) | @Slf4j method test_init (line 35) | @Before method test_chatCompletions_common (line 67) | @Test method test_chatCompletions_multimodal (line 84) | @Test method test_chatCompletions_stream (line 103) | @Test method test_chatCompletions_function (line 130) | @Test method test_chatCompletions_stream_function (line 150) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/MoonshotTest.java class MoonshotTest (line 36) | @Slf4j method test_init (line 41) | @Before method test_chatCompletions_common (line 74) | @Test method test_chatCompletions_multimodal (line 93) | @Test method test_chatCompletions_stream (line 111) | @Test method test_chatCompletions_function (line 138) | @Test method test_chatCompletions_stream_function (line 158) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/OllamaTest.java class OllamaTest (line 39) | @Slf4j method test_init (line 48) | @Before method test_chatCompletions_common (line 85) | @Test method test_chatCompletions_common_websearch_enhance (line 101) | @Test method test_chatCompletions_multimodal (line 118) | @Test method test_chatCompletions_multimodal_stream (line 137) | @Test method test_chatCompletions_stream (line 168) | @Test method test_chatCompletions_function (line 195) | @Test method test_chatCompletions_stream_function (line 215) | @Test method test_embedding (line 244) | @Test method test_embedding_multiple_input (line 250) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/OpenAiTest.java class OpenAiTest (line 65) | @Slf4j method test_init (line 77) | @Before method test_embed (line 132) | @Test method test_chatCompletions_common (line 148) | @Test method test_chatCompletions_history (line 165) | @Test method test_chatCompletions_common_websearch_enhance (line 201) | @Test method test_chatCompletions_multimodal (line 218) | @Test method test_chatCompletions_multimodal_stream (line 239) | @Test method test_chatCompletions_stream (line 268) | @Test method test_chatCompletions_stream_cancel (line 306) | @Test method test_chatCompletions_function (line 355) | @Test method test_chatCompletions_stream_function (line 377) | @Test method test_text_to_speech (line 407) | @Test method test_transcription (line 418) | @Test method test_translation (line 430) | @Test method test_create_websocket (line 443) | @Test method test__ (line 488) | @Test method test__query (line 551) | @Test method test__delet (line 589) | @Test method test__tika (line 601) | @Test method generateIDs (line 621) | private List generateIDs(int count) { method generateContent (line 631) | private List> generateContent(List content... class TestPushFilesFunction (line 642) | @FunctionCall(name = "test_push_files", description = "Test push multi... class Request (line 645) | @lombok.Data method apply (line 655) | @Override method testArraySchemaGeneration (line 661) | @org.junit.Test FILE: ai4j/src/test/java/io/github/lnyocly/OtherTest.java class OtherTest (line 15) | @Slf4j method test (line 18) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/ZhipuTest.java class ZhipuTest (line 36) | @Slf4j method test_init (line 41) | @Before method test_chatCompletions_common (line 74) | @Test method test_chatCompletions_multimodal (line 91) | @Test method test_chatCompletions_stream (line 110) | @Test method test_chatCompletions_function (line 137) | @Test method test_chatCompletions_stream_function (line 157) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/agentflow/AgentFlowTraceSupportTest.java class AgentFlowTraceSupportTest (line 17) | public class AgentFlowTraceSupportTest { method test_trace_listener_receives_lifecycle_events (line 19) | @Test method test_trace_listener_receives_error_and_does_not_break_call_path (line 49) | @Test method config (line 63) | private AgentFlowConfig config(AgentFlowTraceListener... listeners) { class TestAgentFlowSupport (line 77) | private static final class TestAgentFlowSupport extends AgentFlowSuppo... method TestAgentFlowSupport (line 79) | private TestAgentFlowSupport(AgentFlowConfig config) { method begin (line 83) | private AgentFlowTraceContext begin(String operation, boolean stream... method emitEvent (line 87) | private void emitEvent(AgentFlowTraceContext context, Object event) { method finish (line 91) | private void finish(AgentFlowTraceContext context, Object response) { method fail (line 95) | private void fail(AgentFlowTraceContext context, Throwable throwable) { method configuration (line 99) | private static Configuration configuration() { class RecordingTraceListener (line 106) | private static final class RecordingTraceListener implements AgentFlow... method onStart (line 113) | @Override method onEvent (line 118) | @Override method onComplete (line 125) | @Override method onError (line 132) | @Override class ThrowingTraceListener (line 138) | private static final class ThrowingTraceListener implements AgentFlowT... method onStart (line 140) | @Override method onEvent (line 145) | @Override method onComplete (line 150) | @Override method onError (line 155) | @Override FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/agentflow/CozeAgentFlowServiceTest.java class CozeAgentFlowServiceTest (line 28) | public class CozeAgentFlowServiceTest { method test_coze_chat_blocking (line 30) | @Test method test_coze_chat_streaming (line 57) | @Test method test_coze_workflow_blocking (line 99) | @Test method test_coze_workflow_streaming (line 121) | @Test method configuration (line 158) | private Configuration configuration() { method cozeConfig (line 166) | private AgentFlowConfig cozeConfig(MockWebServer server) { method jsonResponse (line 177) | private MockResponse jsonResponse(String body) { method sseResponse (line 184) | private MockResponse sseResponse(String body) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/agentflow/DifyAgentFlowServiceTest.java class DifyAgentFlowServiceTest (line 28) | public class DifyAgentFlowServiceTest { method test_dify_chat_blocking (line 30) | @Test method test_dify_chat_streaming (line 57) | @Test method test_dify_workflow_blocking (line 99) | @Test method test_dify_workflow_streaming (line 122) | @Test method configuration (line 162) | private Configuration configuration() { method difyConfig (line 170) | private AgentFlowConfig difyConfig(MockWebServer server) { method jsonResponse (line 179) | private MockResponse jsonResponse(String body) { method sseResponse (line 186) | private MockResponse sseResponse(String body) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/agentflow/N8nAgentFlowWorkflowServiceTest.java class N8nAgentFlowWorkflowServiceTest (line 19) | public class N8nAgentFlowWorkflowServiceTest { method test_n8n_workflow_blocking (line 21) | @Test method test_ai_service_exposes_agent_flow (line 51) | @Test method configuration (line 65) | private Configuration configuration() { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/function/TestFunction.java class TestFunction (line 10) | @FunctionCall(name = "weather", description = "获取指定城市的天气信息") method apply (line 13) | public WeatherResponse apply(WeatherRequest request) { class WeatherRequest (line 23) | @FunctionRequest class WeatherResponse (line 32) | public static class WeatherResponse { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/mcp/McpClientResponseSupportTest.java class McpClientResponseSupportTest (line 25) | public class McpClientResponseSupportTest { method shouldParseToolsListResponse (line 27) | @Test method shouldParseToolCallTextResponse (line 48) | @Test method shouldParseResourcesListResponse (line 66) | @Test method shouldParseResourceReadResponse (line 87) | @Test method shouldParsePromptsListResponse (line 105) | @Test method shouldParsePromptGetResponse (line 126) | @Test method shouldSupportResourceAndPromptApisThroughClient (line 148) | @Test method mapOf (line 201) | private static Map mapOf(Object... values) { class FakeTransport (line 209) | private static final class FakeTransport implements McpTransport { method respond (line 214) | private FakeTransport respond(String method, Object result) { method start (line 219) | @Override method stop (line 224) | @Override method sendMessage (line 229) | @Override method setMessageHandler (line 238) | @Override method isConnected (line 243) | @Override method needsHeartbeat (line 248) | @Override method getTransportType (line 253) | @Override FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/mcp/McpGatewaySupportTest.java class McpGatewaySupportTest (line 15) | public class McpGatewaySupportTest { method shouldBuildAndParseUserGatewayKeys (line 17) | @Test method shouldConvertMcpToolDefinitionToOpenAiFunction (line 28) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/mcp/McpServerTest.java class McpServerTest (line 19) | public class McpServerTest { method main (line 23) | public static void main(String[] args) { method testSseMcpServer (line 46) | private static void testSseMcpServer() { method testStdioMcpServer (line 86) | private static void testStdioMcpServer() { method testStreamableHttpMcpServer (line 109) | private static void testStreamableHttpMcpServer() { method showAvailableTools (line 148) | private static void showAvailableTools() { method testToolCall (line 177) | private static void testToolCall(String toolName, String arguments) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/mcp/McpTypeSupportTest.java class McpTypeSupportTest (line 14) | public class McpTypeSupportTest { method shouldNormalizeKnownAliases (line 16) | @Test method shouldCreateTransportConfigFromServerInfo (line 24) | @Test method shouldCreateStdioTransportConfigFromServerInfo (line 38) | @Test method shouldResolveTypeFromServerReference (line 52) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/mcp/TestMcpService.java class TestMcpService (line 10) | @McpService(name = "TestService", description = "测试MCP服务") method greet (line 16) | @McpTool(name = "greet", description = "向指定的人问候") method add (line 24) | @McpTool(name = "add", description = "计算两个数字的和") method reverse (line 34) | @McpTool(name = "reverse", description = "反转字符串") method getSystemInfo (line 45) | @McpTool(name = "systemInfo", description = "获取系统信息") class SystemInfo (line 58) | public static class SystemInfo { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/mcp/config/McpConfigManagerTest.java class McpConfigManagerTest (line 8) | public class McpConfigManagerTest { method shouldValidateSseConfigWithModernTypeField (line 10) | @Test method shouldRejectUnknownTransportType (line 21) | @Test method shouldNotifyListenerWhenUpdatingExistingConfig (line 32) | @Test method createStdioConfig (line 62) | private McpServerConfig.McpServerInfo createStdioConfig(String command) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/mcp/gateway/McpGatewayConfigSourceTest.java class McpGatewayConfigSourceTest (line 18) | public class McpGatewayConfigSourceTest { method shouldLoadConfigSourceOnlyOnceDuringInitialize (line 20) | @Test method shouldDisconnectPreviousClientWhenReplacingSameKey (line 37) | @Test method createStdioConfig (line 54) | private McpServerConfig.McpServerInfo createStdioConfig(String command) { class CountingClientFactory (line 62) | private static final class CountingClientFactory extends McpGatewayCli... method CountingClientFactory (line 66) | private CountingClientFactory(AtomicInteger createCount) { method create (line 70) | @Override class TestMcpClient (line 77) | private static final class TestMcpClient extends McpClient { method TestMcpClient (line 82) | private TestMcpClient(String clientName, String toolName) { method connect (line 90) | @Override method disconnect (line 96) | @Override method isConnected (line 102) | @Override method isInitialized (line 107) | @Override method getAvailableTools (line 112) | @Override class NoopTransport (line 118) | private static final class NoopTransport implements McpTransport { method start (line 120) | @Override method stop (line 125) | @Override method sendMessage (line 130) | @Override method setMessageHandler (line 135) | @Override method isConnected (line 139) | @Override method needsHeartbeat (line 144) | @Override method getTransportType (line 149) | @Override FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/mcp/transport/SseTransportTest.java class SseTransportTest (line 22) | public class SseTransportTest { method tearDown (line 26) | @After method receivesExplicitMessageEvents (line 34) | @Test method defaultsUnnamedEventsToMessageAndJoinsMultilineData (line 59) | @Test class CapturingHandler (line 84) | private static final class CapturingHandler implements McpTransport.Mc... method handleMessage (line 90) | @Override method onConnected (line 96) | @Override method onDisconnected (line 100) | @Override method onError (line 104) | @Override class RawSseFixture (line 111) | private static final class RawSseFixture implements Closeable { method RawSseFixture (line 124) | private RawSseFixture(boolean unnamedMessageEvent) throws IOException { method start (line 129) | private void start() { method getSseUrl (line 140) | private String getSseUrl() { method serve (line 144) | private void serve() { method handleSseConnection (line 155) | private void handleSseConnection(Socket socket) throws Exception { method handlePostConnection (line 179) | private void handlePostConnection(Socket socket, OutputStream sseOut... method drainHeaders (line 238) | private void drainHeaders(BufferedReader reader) throws IOException { method writeAscii (line 245) | private void writeAscii(OutputStream outputStream, String value) thr... method close (line 249) | @Override method closeQuietly (line 264) | private void closeQuietly(Socket socket) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/mcp/util/TestMcpService.java class TestMcpService (line 12) | @McpService( method addNumbers (line 19) | @McpTool( method greetUser (line 30) | @McpTool( method getCurrentTimestamp (line 41) | @McpTool( FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/memory/InMemoryChatMemoryTest.java class InMemoryChatMemoryTest (line 14) | public class InMemoryChatMemoryTest { method shouldKeepAllMessagesByDefault (line 16) | @Test method shouldRetainSystemMessagesAndTrimWindow (line 32) | @Test method shouldConvertToResponsesInputWithToolCallsAndOutputs (line 48) | @Test method shouldSupportSnapshotAndRestore (line 75) | @Test method shouldCompactMessagesWithSummaryPolicy (line 93) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/memory/JdbcChatMemoryTest.java class JdbcChatMemoryTest (line 10) | public class JdbcChatMemoryTest { method shouldPersistMessagesAcrossInstances (line 12) | @Test method shouldApplyConfiguredWindowPolicy (line 36) | @Test method shouldSupportSnapshotRestoreAndClear (line 56) | @Test method shouldPersistSummaryEntriesAcrossInstances (line 75) | @Test method jdbcUrl (line 124) | private String jdbcUrl(String suffix) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/memory/SummaryChatMemoryPolicyTest.java class SummaryChatMemoryPolicyTest (line 13) | public class SummaryChatMemoryPolicyTest { method shouldSummarizeOlderMessagesAndKeepRecentWindow (line 15) | @Test method shouldMergePreviousSummaryIntoNextCompaction (line 45) | @Test method shouldKeepOriginalItemsWhenSummaryOutputIsBlank (line 83) | @Test method items (line 112) | private List items(ChatMemoryItem... items) { class RecordingSummarizer (line 122) | private static class RecordingSummarizer implements ChatMemorySummariz... method summarize (line 127) | @Override method getInvocationCount (line 146) | public int getInvocationCount() { method getLastRequest (line 150) | public ChatMemorySummaryRequest getLastRequest() { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/platform/doubao/rerank/DoubaoRerankServiceTest.java class DoubaoRerankServiceTest (line 23) | public class DoubaoRerankServiceTest { method shouldConvertDoubaoKnowledgeRerankApi (line 25) | @Test method jsonHandler (line 74) | private HttpHandler jsonHandler(final String responseBody, method read (line 99) | private String read(InputStream inputStream) throws Exception { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/platform/jina/rerank/JinaRerankServiceTest.java class JinaRerankServiceTest (line 24) | public class JinaRerankServiceTest { method shouldCallJinaCompatibleRerankApi (line 26) | @Test method jsonHandler (line 72) | private HttpHandler jsonHandler(final String responseBody, method read (line 97) | private String read(InputStream inputStream) throws Exception { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/platform/minimax/chat/MinimaxChatServiceTest.java class MinimaxChatServiceTest (line 22) | public class MinimaxChatServiceTest { method chatCompletionShouldReturnProviderToolCallsWhenPassThroughEnabled (line 24) | @Test method tool (line 104) | private Tool tool(String name) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/platform/ollama/rerank/OllamaRerankServiceTest.java class OllamaRerankServiceTest (line 23) | public class OllamaRerankServiceTest { method shouldCallOllamaRerankEndpointWithoutAuthWhenApiKeyMissing (line 25) | @Test method jsonHandler (line 66) | private HttpHandler jsonHandler(final String responseBody, method read (line 91) | private String read(InputStream inputStream) throws Exception { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/platform/openai/audio/OpenAiAudioServiceTest.java class OpenAiAudioServiceTest (line 20) | public class OpenAiAudioServiceTest { method test_text_to_speech_stream_remains_readable_after_method_returns (line 22) | @Test method readAll (line 62) | private static byte[] readAll(InputStream inputStream) throws Exception { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/platform/openai/chat/OpenAiChatServicePassThroughTest.java class OpenAiChatServicePassThroughTest (line 22) | public class OpenAiChatServicePassThroughTest { method chatCompletionShouldReturnProviderToolCallsWhenPassThroughEnabled (line 24) | @Test method chatCompletionShouldKeepLegacyProviderToolLoopWhenPassThroughDisabled (line 73) | @Test method chatCompletionShouldKeepLegacyFunctionAutoLoopWorking (line 118) | @Test method configurationWithJsonResponse (line 191) | private Configuration configurationWithJsonResponse(String responseJso... method configurationWithJsonResponses (line 217) | private Configuration configurationWithJsonResponses(AtomicInteger req... method tool (line 252) | private Tool tool(String name) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/platform/openai/response/ResponseRequestToolResolverTest.java class ResponseRequestToolResolverTest (line 20) | public class ResponseRequestToolResolverTest { method shouldResolveAnnotatedFunctionsIntoResponsesTools (line 22) | @Test method shouldMergeManualToolsWithResolvedFunctions (line 39) | @Test class ResponsesTestWeatherFunction (line 59) | @FunctionCall(name = "responses_test_weather", description = "test wea... method apply (line 62) | @Override class Request (line 67) | @FunctionRequest method getLocation (line 72) | public String getLocation() { method setLocation (line 76) | public void setLocation(String location) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/rag/Bm25RetrieverTest.java class Bm25RetrieverTest (line 9) | public class Bm25RetrieverTest { method shouldRankExactKeywordMatchFirst (line 11) | @Test method shouldReturnEmptyWhenNoTermMatches (line 28) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/rag/DefaultRagServiceTest.java class DefaultRagServiceTest (line 10) | public class DefaultRagServiceTest { method shouldAssembleContextAndTrimFinalHits (line 12) | @Test method shouldExposeRerankScoresAndTrace (line 54) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/rag/DenseRetrieverTest.java class DenseRetrieverTest (line 20) | public class DenseRetrieverTest { method shouldConvertSearchResultsToRagHits (line 22) | @Test class FakeEmbeddingService (line 47) | private static class FakeEmbeddingService implements IEmbeddingService { method embedding (line 48) | @Override method embedding (line 53) | @Override class CapturingVectorStore (line 67) | private static class CapturingVectorStore implements VectorStore { method upsert (line 70) | @Override method search (line 75) | @Override method delete (line 92) | @Override method capabilities (line 97) | @Override method mapOf (line 103) | private static Map mapOf(Object... keyValues) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/rag/HybridRetrieverTest.java class HybridRetrieverTest (line 9) | public class HybridRetrieverTest { method shouldMergeResultsFromMultipleRetrievers (line 11) | @Test method shouldDeduplicateSameChunkWithoutExplicitId (line 41) | @Test method shouldSupportRelativeScoreFusion (line 78) | @Test method shouldSupportDistributionBasedScoreFusion (line 111) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/rag/IngestionPipelineTest.java class IngestionPipelineTest (line 37) | public class IngestionPipelineTest { method shouldIngestInlineTextWithMetadataAndEmbeddings (line 39) | @Test method shouldLoadLocalFileThroughTikaLoader (line 89) | @Test method shouldSupportOcrFallbackProcessor (line 121) | @Test method shouldCleanOcrNoiseBeforeChunking (line 163) | @Test class FakeEmbeddingService (line 185) | private static class FakeEmbeddingService implements IEmbeddingService { method embedding (line 187) | @Override method embedding (line 192) | @Override method extractInputs (line 210) | @SuppressWarnings("unchecked") class CapturingVectorStore (line 222) | private static class CapturingVectorStore implements VectorStore { method upsert (line 225) | @Override method search (line 231) | @Override method delete (line 236) | @Override method capabilities (line 241) | @Override class BlankDocumentLoader (line 252) | private static class BlankDocumentLoader implements DocumentLoader { method supports (line 254) | @Override method load (line 259) | @Override method mapOf (line 271) | private static Map mapOf(Object... keyValues) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/rag/ModelRerankerTest.java class ModelRerankerTest (line 13) | public class ModelRerankerTest { method shouldReorderHitsByModelScoresAndKeepTail (line 15) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/rag/RagEvaluatorTest.java class RagEvaluatorTest (line 9) | public class RagEvaluatorTest { method shouldComputeStandardRetrievalMetrics (line 11) | @Test method shouldHandleNoRelevantDocuments (line 33) | @Test FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/skill/SkillsIChatServiceTest.java class SkillsIChatServiceTest (line 31) | public class SkillsIChatServiceTest { method shouldDiscoverSkillsAndAssemblePromptForBasicChatUsage (line 36) | @Test method shouldAllowBasicIChatServiceToMountSkillsAndBuiltInTools (line 56) | @Test method shouldAutoInvokeBuiltInReadFileToolWhenContextConfigured (line 119) | @Test method shouldAllowLegacyFunctionsApiToUseBuiltInReadFile (line 203) | @Test method writeSkill (line 287) | private static Path writeSkill(Path skillFile, String content) throws ... method escapeJson (line 293) | private static String escapeJson(String value) { method configurationWithJsonResponse (line 297) | private static Configuration configurationWithJsonResponse(String resp... method configurationWithJsonResponses (line 323) | private static Configuration configurationWithJsonResponses(AtomicInte... method readRequestBody (line 354) | private static String readRequestBody(RequestBody body) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/tool/BuiltInToolExecutorTest.java class BuiltInToolExecutorTest (line 14) | public class BuiltInToolExecutorTest { method shouldExecuteReadWriteAndApplyPatchTools (line 19) | @Test method shouldExecuteBashToolsWithinContext (line 61) | @Test method isWindows (line 109) | private static boolean isWindows() { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/vector/store/milvus/MilvusVectorStoreTest.java class MilvusVectorStoreTest (line 28) | public class MilvusVectorStoreTest { method shouldUpsertAndSearchAgainstMilvusHttpApi (line 30) | @Test method jsonHandler (line 80) | private HttpHandler jsonHandler(final String responseBody, final Atomi... method read (line 102) | private String read(InputStream inputStream) throws Exception { method mapOf (line 112) | private static Map mapOf(Object... keyValues) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/vector/store/pinecone/PineconeVectorStoreTest.java class PineconeVectorStoreTest (line 24) | public class PineconeVectorStoreTest { method shouldConvertUpsertRecordsToPineconeRequest (line 26) | @Test method shouldConvertPineconeMatchesToVectorSearchResults (line 49) | @Test method shouldConvertDeleteRequestToPineconeDelete (line 70) | @Test class CapturingPineconeService (line 86) | private static class CapturingPineconeService extends PineconeService { method CapturingPineconeService (line 91) | private CapturingPineconeService() { method insert (line 95) | @Override method query (line 101) | @Override method delete (line 116) | @Override method mapOf (line 123) | private static Map mapOf(Object... keyValues) { FILE: ai4j/src/test/java/io/github/lnyocly/ai4j/vector/store/qdrant/QdrantVectorStoreTest.java class QdrantVectorStoreTest (line 30) | public class QdrantVectorStoreTest { method shouldUpsertAndSearchAgainstQdrantHttpApi (line 32) | @Test method jsonHandler (line 81) | private HttpHandler jsonHandler(final String responseBody, final Atomi... method read (line 103) | private String read(InputStream inputStream) throws Exception { method mapOf (line 113) | private static Map mapOf(Object... keyValues) { FILE: ai4j/src/test/java/io/github/lnyocly/interceptor/ErrorInterceptorTest.java class ErrorInterceptorTest (line 19) | public class ErrorInterceptorTest { method test_completed_response_with_text_error_keyword_should_not_throw (line 21) | @Test method test_hunyuan_error_shape_in_success_response_should_throw (line 34) | @Test(expected = CommonException.class) method buildResponse (line 44) | private Response buildResponse(Request request, int code, String messa... class FixedResponseChain (line 54) | private static class FixedResponseChain implements Interceptor.Chain { method FixedResponseChain (line 58) | private FixedResponseChain(Request request, Response response) { method request (line 63) | @Override method proceed (line 68) | @Override method connection (line 73) | @Override method call (line 78) | @Override method connectTimeoutMillis (line 83) | @Override method withConnectTimeout (line 88) | @Override method readTimeoutMillis (line 93) | @Override method withReadTimeout (line 98) | @Override method writeTimeoutMillis (line 103) | @Override method withWriteTimeout (line 108) | @Override FILE: ai4j/src/test/java/io/github/lnyocly/listener/SseListenerTest.java class SseListenerTest (line 12) | public class SseListenerTest { method shouldIgnoreEmptyToolCallDeltaWhenFinishReasonIsToolCalls (line 14) | @Test method shouldIgnoreToolCallDeltaWithoutFunctionPayload (line 22) | @Test method shouldFinalizeFragmentedToolCallArgumentsWhenFinishReasonArrivesWithoutDelta (line 31) | @Test method shouldAggregateMiniMaxStyleToolCallFragmentsIntoSingleCall (line 50) | @Test method shouldNotWriteBlankLinesToStdoutForEscapedNewlinePayloads (line 67) | @Test class RecordingSseListener (line 83) | private static final class RecordingSseListener extends SseListener { method send (line 84) | @Override FILE: ai4j/src/test/java/io/github/lnyocly/listener/StreamExecutionSupportTest.java class StreamExecutionSupportTest (line 13) | public class StreamExecutionSupportTest { method shouldRetryBeforeFirstEventAndStopAfterSuccess (line 15) | @Test method shouldNotRetryAfterFirstEventArrives (line 39) | @Test method shouldApplySafeDefaultTimeoutsWhenOptionsAreMissing (line 60) | @Test method shouldHonorConfiguredDefaultTimeoutOverrides (line 77) | @Test class RecordingManagedStreamListener (line 109) | private static final class RecordingManagedStreamListener implements M... method awaitCompletion (line 117) | @Override method getFailure (line 122) | @Override method recordFailure (line 127) | @Override method clearFailure (line 132) | @Override method prepareForRetry (line 137) | @Override method hasReceivedEvent (line 144) | @Override method isCancelRequested (line 149) | @Override method onRetrying (line 154) | @Override method restoreProperty (line 161) | private static void restoreProperty(String key, String value) { FILE: ai4j/src/test/java/io/github/lnyocly/service/AiServiceRegistryTest.java class AiServiceRegistryTest (line 29) | public class AiServiceRegistryTest { method shouldBuildRegistryFromConfiguredPlatforms (line 31) | @Test method shouldKeepFreeAiServiceAsCompatibilityShell (line 61) | @Test method shouldFailFastWhenPlatformIsUnsupported (line 83) | @Test method shouldExposeJinaCompatibleRerankServiceFromRegistry (line 103) | @Test method shouldExposeIngestionPipelineFromRegistryAndCompatibilityShell (line 137) | @Test class NoopVectorStore (line 161) | private static class NoopVectorStore implements VectorStore { method upsert (line 162) | @Override method search (line 167) | @Override method delete (line 172) | @Override method capabilities (line 177) | @Override FILE: docs-site/scripts/generate_agent_teams_api_docs.py class FieldInfo (line 78) | class FieldInfo: class MethodInfo (line 87) | class MethodInfo: class ClassInfo (line 98) | class ClassInfo: class StackEntry (line 109) | class StackEntry: function clean_modifiers (line 114) | def clean_modifiers(raw: str) -> str: function infer_field_description (line 119) | def infer_field_description(name: str, type_name: str) -> str: function infer_method_description (line 148) | def infer_method_description(name: str, is_constructor: bool, return_typ... function parse_java_file (line 186) | def parse_java_file(path: Path) -> List[ClassInfo]: function render_markdown (line 261) | def render_markdown(classes: List[ClassInfo]) -> str: function main (line 363) | def main() -> None: FILE: docs-site/src/components/HomepageFeatures/index.tsx type FeatureItem (line 6) | type FeatureItem = { function Feature (line 42) | function Feature({title, Svg, description}: FeatureItem) { function HomepageFeatures (line 56) | function HomepageFeatures(): ReactNode { FILE: docs-site/src/pages/index.tsx function HomepageHeader (line 11) | function HomepageHeader() { function Home (line 33) | function Home(): ReactNode { FILE: docs-site/src/theme/NotFound/Content/index.tsx function NotFoundContent (line 5) | function NotFoundContent(): React.ReactElement {