flzxsqc-demo 1.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (598) hide show
  1. package/README.md +2 -0
  2. package/agent-backend/ARCHITECTURE.md +768 -0
  3. package/agent-backend/docs/async-analysis-aggregation-report-generalization.md +486 -0
  4. package/agent-backend/docs/harness-implementation-architecture.md +547 -0
  5. package/agent-backend/docs/harness-main-flow-code-references.md +664 -0
  6. package/agent-backend/docs/harness-requirements.md +212 -0
  7. package/agent-backend/docs/session-semantic-clustering-tool-design.md +337 -0
  8. package/agent-backend/pom.xml +130 -0
  9. package/agent-backend/src/main/java/com/example/agent/AgentApplication.java +20 -0
  10. package/agent-backend/src/main/java/com/example/agent/application/harness/analysis/AnalysisOutputParser.java +93 -0
  11. package/agent-backend/src/main/java/com/example/agent/application/harness/analysis/AnalysisPromptCompiler.java +76 -0
  12. package/agent-backend/src/main/java/com/example/agent/application/harness/analysis/PerRecordAnalysisContract.java +27 -0
  13. package/agent-backend/src/main/java/com/example/agent/application/harness/binding/BindingResolver.java +7 -0
  14. package/agent-backend/src/main/java/com/example/agent/application/harness/binding/DefaultBindingResolver.java +30 -0
  15. package/agent-backend/src/main/java/com/example/agent/application/harness/memory/AdminAuditRepository.java +119 -0
  16. package/agent-backend/src/main/java/com/example/agent/application/harness/memory/HarnessBestPracticeRepository.java +99 -0
  17. package/agent-backend/src/main/java/com/example/agent/application/harness/memory/HarnessBestPracticeSynthesisService.java +264 -0
  18. package/agent-backend/src/main/java/com/example/agent/application/harness/memory/HarnessErrorPatternRepository.java +112 -0
  19. package/agent-backend/src/main/java/com/example/agent/application/harness/memory/HarnessMemoryService.java +137 -0
  20. package/agent-backend/src/main/java/com/example/agent/application/harness/memory/HarnessReviewService.java +34 -0
  21. package/agent-backend/src/main/java/com/example/agent/application/harness/memory/SkillImprovementCandidateRepository.java +57 -0
  22. package/agent-backend/src/main/java/com/example/agent/application/harness/memory/SkillVersionRepository.java +121 -0
  23. package/agent-backend/src/main/java/com/example/agent/application/harness/planning/CompletionDecision.java +41 -0
  24. package/agent-backend/src/main/java/com/example/agent/application/harness/planning/CompletionPolicy.java +5 -0
  25. package/agent-backend/src/main/java/com/example/agent/application/harness/planning/FinalAnswerGuardService.java +276 -0
  26. package/agent-backend/src/main/java/com/example/agent/application/harness/planning/LoopGuardPolicy.java +47 -0
  27. package/agent-backend/src/main/java/com/example/agent/application/harness/planning/StructuredCompletionPolicy.java +160 -0
  28. package/agent-backend/src/main/java/com/example/agent/application/harness/policy/LlmRoleContext.java +33 -0
  29. package/agent-backend/src/main/java/com/example/agent/application/harness/policy/ModelRole.java +8 -0
  30. package/agent-backend/src/main/java/com/example/agent/application/harness/policy/ToolPolicyEngine.java +75 -0
  31. package/agent-backend/src/main/java/com/example/agent/application/harness/prompt/RuntimeInstructionFactory.java +149 -0
  32. package/agent-backend/src/main/java/com/example/agent/application/harness/recovery/DefaultFailureClassifier.java +106 -0
  33. package/agent-backend/src/main/java/com/example/agent/application/harness/recovery/FailureClassifier.java +5 -0
  34. package/agent-backend/src/main/java/com/example/agent/application/harness/recovery/FailureContext.java +25 -0
  35. package/agent-backend/src/main/java/com/example/agent/application/harness/recovery/FailureDecision.java +45 -0
  36. package/agent-backend/src/main/java/com/example/agent/application/harness/recovery/FailurePhase.java +6 -0
  37. package/agent-backend/src/main/java/com/example/agent/application/harness/report/ReportBlueprintContract.java +107 -0
  38. package/agent-backend/src/main/java/com/example/agent/application/harness/requirements/SkillQuestionRequirementService.java +210 -0
  39. package/agent-backend/src/main/java/com/example/agent/application/harness/schema/HarnessJsonSchemaValidator.java +197 -0
  40. package/agent-backend/src/main/java/com/example/agent/application/harness/state/AsyncCallbackContext.java +25 -0
  41. package/agent-backend/src/main/java/com/example/agent/application/harness/state/AsyncCallbackPayloadBuilder.java +7 -0
  42. package/agent-backend/src/main/java/com/example/agent/application/harness/state/DefaultAsyncCallbackPayloadBuilder.java +55 -0
  43. package/agent-backend/src/main/java/com/example/agent/application/harness/telemetry/HarnessMetricsService.java +47 -0
  44. package/agent-backend/src/main/java/com/example/agent/application/harness/tool/ToolInvocationGuard.java +171 -0
  45. package/agent-backend/src/main/java/com/example/agent/application/harness/workflow/HarnessPhase.java +17 -0
  46. package/agent-backend/src/main/java/com/example/agent/application/harness/workflow/HarnessWorkflowService.java +47 -0
  47. package/agent-backend/src/main/java/com/example/agent/application/service/AgentCompletionFlowService.java +114 -0
  48. package/agent-backend/src/main/java/com/example/agent/application/service/AgentDomainProfileService.java +25 -0
  49. package/agent-backend/src/main/java/com/example/agent/application/service/AgentSessionStore.java +256 -0
  50. package/agent-backend/src/main/java/com/example/agent/application/service/AgentStrategyService.java +146 -0
  51. package/agent-backend/src/main/java/com/example/agent/application/service/AgentTimeContextService.java +211 -0
  52. package/agent-backend/src/main/java/com/example/agent/application/service/AgentToolCallSupportService.java +120 -0
  53. package/agent-backend/src/main/java/com/example/agent/application/service/AgentToolFlowService.java +287 -0
  54. package/agent-backend/src/main/java/com/example/agent/application/service/AgentToolObservationService.java +69 -0
  55. package/agent-backend/src/main/java/com/example/agent/application/service/AgentTurnRunner.java +321 -0
  56. package/agent-backend/src/main/java/com/example/agent/application/service/AgentWaitingFlowService.java +321 -0
  57. package/agent-backend/src/main/java/com/example/agent/application/service/AnalysisResultAssembler.java +95 -0
  58. package/agent-backend/src/main/java/com/example/agent/application/service/ContextBudgetService.java +131 -0
  59. package/agent-backend/src/main/java/com/example/agent/application/service/ConversationSummarizer.java +64 -0
  60. package/agent-backend/src/main/java/com/example/agent/application/service/DslCompilerService.java +769 -0
  61. package/agent-backend/src/main/java/com/example/agent/application/service/DslRuntimeService.java +407 -0
  62. package/agent-backend/src/main/java/com/example/agent/application/service/FinalAnswerSynthesisService.java +156 -0
  63. package/agent-backend/src/main/java/com/example/agent/application/service/InternalAsyncCallbackService.java +116 -0
  64. package/agent-backend/src/main/java/com/example/agent/application/service/LlmSkillRouter.java +126 -0
  65. package/agent-backend/src/main/java/com/example/agent/application/service/PlanRuntimeService.java +27 -0
  66. package/agent-backend/src/main/java/com/example/agent/application/service/PromptAssembler.java +100 -0
  67. package/agent-backend/src/main/java/com/example/agent/application/service/ReportAssemblyService.java +395 -0
  68. package/agent-backend/src/main/java/com/example/agent/application/service/RuleBasedSkillSelector.java +14 -0
  69. package/agent-backend/src/main/java/com/example/agent/application/service/RuntimeEventBus.java +120 -0
  70. package/agent-backend/src/main/java/com/example/agent/application/service/SkillAdminService.java +183 -0
  71. package/agent-backend/src/main/java/com/example/agent/application/service/SkillRegistry.java +85 -0
  72. package/agent-backend/src/main/java/com/example/agent/application/service/SkillSelector.java +48 -0
  73. package/agent-backend/src/main/java/com/example/agent/application/service/TokenEstimateService.java +31 -0
  74. package/agent-backend/src/main/java/com/example/agent/application/service/ToolExecutionPipeline.java +252 -0
  75. package/agent-backend/src/main/java/com/example/agent/application/service/ToolMessageCompactor.java +142 -0
  76. package/agent-backend/src/main/java/com/example/agent/application/service/ToolRegistry.java +154 -0
  77. package/agent-backend/src/main/java/com/example/agent/application/service/localtool/AnalysisJobService.java +160 -0
  78. package/agent-backend/src/main/java/com/example/agent/application/service/localtool/AnalysisResultAggregationService.java +388 -0
  79. package/agent-backend/src/main/java/com/example/agent/application/service/localtool/AnalysisResultClusteringService.java +609 -0
  80. package/agent-backend/src/main/java/com/example/agent/application/service/localtool/AnalysisResultQueryService.java +37 -0
  81. package/agent-backend/src/main/java/com/example/agent/application/service/localtool/AnalysisWorkerService.java +376 -0
  82. package/agent-backend/src/main/java/com/example/agent/application/service/localtool/ClusterLabelService.java +190 -0
  83. package/agent-backend/src/main/java/com/example/agent/application/service/localtool/CustomerSessionQueryService.java +35 -0
  84. package/agent-backend/src/main/java/com/example/agent/application/service/localtool/LocalPerRecordAnalysisExecutor.java +80 -0
  85. package/agent-backend/src/main/java/com/example/agent/application/service/localtool/PerRecordAnalysisExecutor.java +42 -0
  86. package/agent-backend/src/main/java/com/example/agent/application/service/localtool/QueryHandleService.java +139 -0
  87. package/agent-backend/src/main/java/com/example/agent/application/service/localtool/RemotePerRecordAnalysisExecutor.java +100 -0
  88. package/agent-backend/src/main/java/com/example/agent/application/service/localtool/SphericalKMeansClusterer.java +287 -0
  89. package/agent-backend/src/main/java/com/example/agent/application/service/localtool/TextFeatureVectorizer.java +233 -0
  90. package/agent-backend/src/main/java/com/example/agent/application/service/tool/argument/CompanyStructuredQueryToolArgumentResolver.java +169 -0
  91. package/agent-backend/src/main/java/com/example/agent/application/service/tool/argument/DefaultToolArgumentResolver.java +21 -0
  92. package/agent-backend/src/main/java/com/example/agent/application/service/tool/argument/PerRecordAnalysisApiToolArgumentResolver.java +93 -0
  93. package/agent-backend/src/main/java/com/example/agent/application/service/tool/argument/ReportToolArgumentResolver.java +502 -0
  94. package/agent-backend/src/main/java/com/example/agent/application/service/tool/argument/ToolArgumentResolver.java +12 -0
  95. package/agent-backend/src/main/java/com/example/agent/application/service/tool/argument/ToolArgumentResolverRegistry.java +31 -0
  96. package/agent-backend/src/main/java/com/example/agent/application/service/tool/response/RemoteAnalysisAsyncResponseNormalizer.java +64 -0
  97. package/agent-backend/src/main/java/com/example/agent/application/service/tool/response/StandardToolResponseNormalizer.java +53 -0
  98. package/agent-backend/src/main/java/com/example/agent/application/service/tool/response/ToolResponseNormalizer.java +12 -0
  99. package/agent-backend/src/main/java/com/example/agent/application/service/tool/response/ToolResponseNormalizerRegistry.java +26 -0
  100. package/agent-backend/src/main/java/com/example/agent/domain/model/AgentExecutedStep.java +82 -0
  101. package/agent-backend/src/main/java/com/example/agent/domain/model/AgentSession.java +50 -0
  102. package/agent-backend/src/main/java/com/example/agent/domain/model/AgentSessionStatus.java +9 -0
  103. package/agent-backend/src/main/java/com/example/agent/domain/model/AgentSessionSummary.java +21 -0
  104. package/agent-backend/src/main/java/com/example/agent/domain/model/AgentSessionType.java +6 -0
  105. package/agent-backend/src/main/java/com/example/agent/domain/model/AgentStrategy.java +18 -0
  106. package/agent-backend/src/main/java/com/example/agent/domain/model/AgentTurn.java +13 -0
  107. package/agent-backend/src/main/java/com/example/agent/domain/model/AgentTurnStatus.java +9 -0
  108. package/agent-backend/src/main/java/com/example/agent/domain/model/CustomerSessionRecord.java +97 -0
  109. package/agent-backend/src/main/java/com/example/agent/domain/model/ExecutableDslInputBinding.java +10 -0
  110. package/agent-backend/src/main/java/com/example/agent/domain/model/ExecutableDslSnapshot.java +19 -0
  111. package/agent-backend/src/main/java/com/example/agent/domain/model/ExecutableDslStep.java +18 -0
  112. package/agent-backend/src/main/java/com/example/agent/domain/model/RenderedReport.java +14 -0
  113. package/agent-backend/src/main/java/com/example/agent/domain/model/ReportBlockBlueprint.java +27 -0
  114. package/agent-backend/src/main/java/com/example/agent/domain/model/ReportBlueprint.java +57 -0
  115. package/agent-backend/src/main/java/com/example/agent/domain/model/ReportSectionBlueprint.java +16 -0
  116. package/agent-backend/src/main/java/com/example/agent/domain/model/ReportSourceRef.java +38 -0
  117. package/agent-backend/src/main/java/com/example/agent/domain/model/ReportTableColumnBlueprint.java +11 -0
  118. package/agent-backend/src/main/java/com/example/agent/domain/model/RiskLevel.java +7 -0
  119. package/agent-backend/src/main/java/com/example/agent/domain/model/RuntimeEvent.java +17 -0
  120. package/agent-backend/src/main/java/com/example/agent/domain/model/RuntimeEventType.java +19 -0
  121. package/agent-backend/src/main/java/com/example/agent/domain/model/SkillDefinition.java +19 -0
  122. package/agent-backend/src/main/java/com/example/agent/domain/model/TimeNormalizationMode.java +7 -0
  123. package/agent-backend/src/main/java/com/example/agent/domain/model/ToolCommand.java +60 -0
  124. package/agent-backend/src/main/java/com/example/agent/domain/model/ToolDefinition.java +31 -0
  125. package/agent-backend/src/main/java/com/example/agent/domain/model/ToolExecutionFailedException.java +55 -0
  126. package/agent-backend/src/main/java/com/example/agent/domain/model/ToolExecutionResult.java +76 -0
  127. package/agent-backend/src/main/java/com/example/agent/domain/model/ToolOutputContract.java +16 -0
  128. package/agent-backend/src/main/java/com/example/agent/domain/model/ToolPrecondition.java +12 -0
  129. package/agent-backend/src/main/java/com/example/agent/domain/model/ToolResult.java +21 -0
  130. package/agent-backend/src/main/java/com/example/agent/domain/model/ToolResultType.java +10 -0
  131. package/agent-backend/src/main/java/com/example/agent/domain/model/ToolValidationException.java +53 -0
  132. package/agent-backend/src/main/java/com/example/agent/domain/model/chat/ChatMessage.java +26 -0
  133. package/agent-backend/src/main/java/com/example/agent/domain/model/chat/ChatRole.java +36 -0
  134. package/agent-backend/src/main/java/com/example/agent/domain/model/chat/ToolCall.java +14 -0
  135. package/agent-backend/src/main/java/com/example/agent/domain/model/chat/ToolFunctionCall.java +15 -0
  136. package/agent-backend/src/main/java/com/example/agent/domain/port/LlmClient.java +38 -0
  137. package/agent-backend/src/main/java/com/example/agent/domain/port/ToolExecutor.java +50 -0
  138. package/agent-backend/src/main/java/com/example/agent/infrastructure/config/AgentAsyncConfig.java +23 -0
  139. package/agent-backend/src/main/java/com/example/agent/infrastructure/config/ElasticsearchConfig.java +17 -0
  140. package/agent-backend/src/main/java/com/example/agent/infrastructure/es/ContentIndexes.java +17 -0
  141. package/agent-backend/src/main/java/com/example/agent/infrastructure/es/ContentPreviews.java +19 -0
  142. package/agent-backend/src/main/java/com/example/agent/infrastructure/es/ElasticsearchLargeContentStore.java +128 -0
  143. package/agent-backend/src/main/java/com/example/agent/infrastructure/es/LargeContentStore.java +20 -0
  144. package/agent-backend/src/main/java/com/example/agent/infrastructure/llm/DummyLlmClient.java +305 -0
  145. package/agent-backend/src/main/java/com/example/agent/infrastructure/llm/LlmProperties.java +46 -0
  146. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/AgentEventMapper.java +16 -0
  147. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/AgentSessionMapper.java +12 -0
  148. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/AsyncJobMapper.java +7 -0
  149. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/DslExecutionLogMapper.java +7 -0
  150. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/DslInstanceMapper.java +7 -0
  151. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/DslStepMapper.java +7 -0
  152. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/IsapStrategyMapper.java +24 -0
  153. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/SessionMapper.java +11 -0
  154. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/SkillDefinitionMapper.java +7 -0
  155. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/ToolDefinitionMapper.java +7 -0
  156. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/harness/HarnessMemoryMapper.java +51 -0
  157. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/localtool/AnalysisJobMapper.java +15 -0
  158. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/localtool/AnalysisRecordResultMapper.java +15 -0
  159. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/localtool/CustomerSessionMapper.java +13 -0
  160. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/localtool/QueryInstanceMapper.java +17 -0
  161. package/agent-backend/src/main/java/com/example/agent/infrastructure/mapper/model/AgentEventRow.java +13 -0
  162. package/agent-backend/src/main/java/com/example/agent/infrastructure/persistence/po/AgentSessionPo.java +64 -0
  163. package/agent-backend/src/main/java/com/example/agent/infrastructure/persistence/po/AsyncJobPo.java +41 -0
  164. package/agent-backend/src/main/java/com/example/agent/infrastructure/persistence/po/DslExecutionLogPo.java +27 -0
  165. package/agent-backend/src/main/java/com/example/agent/infrastructure/persistence/po/DslInstancePo.java +32 -0
  166. package/agent-backend/src/main/java/com/example/agent/infrastructure/persistence/po/DslStepPo.java +40 -0
  167. package/agent-backend/src/main/java/com/example/agent/infrastructure/persistence/po/IsapStrategyPo.java +18 -0
  168. package/agent-backend/src/main/java/com/example/agent/infrastructure/persistence/po/SkillDefinitionPo.java +29 -0
  169. package/agent-backend/src/main/java/com/example/agent/infrastructure/persistence/po/ToolDefinitionPo.java +54 -0
  170. package/agent-backend/src/main/java/com/example/agent/infrastructure/persistence/po/localtool/AnalysisJobPo.java +45 -0
  171. package/agent-backend/src/main/java/com/example/agent/infrastructure/persistence/po/localtool/AnalysisResultPo.java +32 -0
  172. package/agent-backend/src/main/java/com/example/agent/infrastructure/persistence/po/localtool/QueryInstancePo.java +33 -0
  173. package/agent-backend/src/main/java/com/example/agent/infrastructure/persistence/po/localtool/QueryResultItemPo.java +25 -0
  174. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/AgentEventRepository.java +60 -0
  175. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/AgentSessionRepository.java +178 -0
  176. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/AsyncJobRepository.java +145 -0
  177. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/DslExecutionLogRepository.java +75 -0
  178. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/DslInstanceRepository.java +106 -0
  179. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/DslStepRepository.java +121 -0
  180. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/IsapStrategyRepository.java +91 -0
  181. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/SessionRepository.java +49 -0
  182. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/SkillDefinitionRepository.java +59 -0
  183. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/ToolDefinitionRepository.java +32 -0
  184. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/localtool/AnalysisClusterRepository.java +81 -0
  185. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/localtool/AnalysisJobRepository.java +155 -0
  186. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/localtool/AnalysisRecordResultRepository.java +85 -0
  187. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/localtool/CustomerSessionMysqlRepository.java +362 -0
  188. package/agent-backend/src/main/java/com/example/agent/infrastructure/repository/localtool/QueryInstanceRepository.java +133 -0
  189. package/agent-backend/src/main/java/com/example/agent/infrastructure/tool/DateExpressionParser.java +96 -0
  190. package/agent-backend/src/main/java/com/example/agent/infrastructure/tool/SampleSessionItem.java +17 -0
  191. package/agent-backend/src/main/java/com/example/agent/infrastructure/tool/ToolHttpAuthProperties.java +16 -0
  192. package/agent-backend/src/main/java/com/example/agent/infrastructure/tool/ToolHttpAuthSupport.java +41 -0
  193. package/agent-backend/src/main/java/com/example/agent/infrastructure/tool/ToolsApiToolExecutor.java +195 -0
  194. package/agent-backend/src/main/java/com/example/agent/interfaces/rest/AgentApiExceptionHandler.java +32 -0
  195. package/agent-backend/src/main/java/com/example/agent/interfaces/rest/AgentRuntimeController.java +65 -0
  196. package/agent-backend/src/main/java/com/example/agent/interfaces/rest/AgentSessionController.java +120 -0
  197. package/agent-backend/src/main/java/com/example/agent/interfaces/rest/AgentStrategyController.java +78 -0
  198. package/agent-backend/src/main/java/com/example/agent/interfaces/rest/CustomerSessionController.java +23 -0
  199. package/agent-backend/src/main/java/com/example/agent/interfaces/rest/SkillAdminController.java +113 -0
  200. package/agent-backend/src/main/java/com/example/agent/interfaces/rest/ToolValidationExceptionHandler.java +17 -0
  201. package/agent-backend/src/main/java/com/example/agent/interfaces/rest/ToolsController.java +396 -0
  202. package/agent-backend/src/main/java/com/example/agent/interfaces/rest/dto/CustomerSessionAggregationSpec.java +10 -0
  203. package/agent-backend/src/main/java/com/example/agent/interfaces/rest/dto/CustomerSessionQueryRequest.java +19 -0
  204. package/agent-backend/src/main/java/com/example/agent/interfaces/rest/dto/CustomerSessionQueryResponse.java +16 -0
  205. package/agent-backend/src/main/resources/application.yml +111 -0
  206. package/agent-backend/src/main/resources/data.sql +930 -0
  207. package/agent-backend/src/main/resources/es/large-content-index.json +26 -0
  208. package/agent-backend/src/main/resources/mappers/AgentEventMapper.xml +28 -0
  209. package/agent-backend/src/main/resources/mappers/AgentSessionMapper.xml +30 -0
  210. package/agent-backend/src/main/resources/mappers/IsapStrategyMapper.xml +70 -0
  211. package/agent-backend/src/main/resources/mappers/SessionMapper.xml +25 -0
  212. package/agent-backend/src/main/resources/mappers/harness/HarnessMemoryMapper.xml +194 -0
  213. package/agent-backend/src/main/resources/mappers/localtool/AnalysisJobMapper.xml +50 -0
  214. package/agent-backend/src/main/resources/mappers/localtool/AnalysisRecordResultMapper.xml +43 -0
  215. package/agent-backend/src/main/resources/mappers/localtool/CustomerSessionMapper.xml +119 -0
  216. package/agent-backend/src/main/resources/mappers/localtool/QueryInstanceMapper.xml +34 -0
  217. package/agent-backend/src/main/resources/schema.sql +917 -0
  218. package/agent-backend/src/test/java/com/example/agent/application/harness/analysis/AnalysisOutputParserTest.java +28 -0
  219. package/agent-backend/src/test/java/com/example/agent/application/harness/analysis/AnalysisPromptCompilerTest.java +20 -0
  220. package/agent-backend/src/test/java/com/example/agent/application/harness/binding/DefaultBindingResolverTest.java +23 -0
  221. package/agent-backend/src/test/java/com/example/agent/application/harness/memory/HarnessBestPracticeRepositoryTest.java +43 -0
  222. package/agent-backend/src/test/java/com/example/agent/application/harness/memory/HarnessBestPracticeSynthesisServiceTest.java +141 -0
  223. package/agent-backend/src/test/java/com/example/agent/application/harness/memory/HarnessMemoryServiceTest.java +54 -0
  224. package/agent-backend/src/test/java/com/example/agent/application/harness/planning/FinalAnswerGuardServiceTest.java +109 -0
  225. package/agent-backend/src/test/java/com/example/agent/application/harness/planning/LoopGuardPolicyTest.java +42 -0
  226. package/agent-backend/src/test/java/com/example/agent/application/harness/planning/StructuredCompletionPolicyTest.java +51 -0
  227. package/agent-backend/src/test/java/com/example/agent/application/harness/prompt/RuntimeInstructionFactoryTest.java +75 -0
  228. package/agent-backend/src/test/java/com/example/agent/application/harness/report/ReportBlueprintContractTest.java +36 -0
  229. package/agent-backend/src/test/java/com/example/agent/application/harness/requirements/SkillQuestionRequirementServiceTest.java +85 -0
  230. package/agent-backend/src/test/java/com/example/agent/application/harness/state/DefaultAsyncCallbackPayloadBuilderTest.java +33 -0
  231. package/agent-backend/src/test/java/com/example/agent/application/harness/telemetry/HarnessMetricsServiceTest.java +55 -0
  232. package/agent-backend/src/test/java/com/example/agent/application/harness/tool/ToolInvocationGuardTest.java +79 -0
  233. package/agent-backend/src/test/java/com/example/agent/application/service/AgentSessionStoreTest.java +135 -0
  234. package/agent-backend/src/test/java/com/example/agent/application/service/AgentStrategyServiceTest.java +70 -0
  235. package/agent-backend/src/test/java/com/example/agent/application/service/AgentTimeContextServiceTest.java +78 -0
  236. package/agent-backend/src/test/java/com/example/agent/application/service/AgentTurnRunnerIntegrationTest.java +686 -0
  237. package/agent-backend/src/test/java/com/example/agent/application/service/AgentWaitingFlowServiceTest.java +72 -0
  238. package/agent-backend/src/test/java/com/example/agent/application/service/ContextBudgetServiceTest.java +95 -0
  239. package/agent-backend/src/test/java/com/example/agent/application/service/CustomerSessionQueryServiceTest.java +94 -0
  240. package/agent-backend/src/test/java/com/example/agent/application/service/DslCompilerServiceTest.java +403 -0
  241. package/agent-backend/src/test/java/com/example/agent/application/service/LiveRealLlmDatabaseE2ETest.java +104 -0
  242. package/agent-backend/src/test/java/com/example/agent/application/service/QueryHandleServiceIntegrationTest.java +41 -0
  243. package/agent-backend/src/test/java/com/example/agent/application/service/ReportAssemblyServiceTest.java +705 -0
  244. package/agent-backend/src/test/java/com/example/agent/application/service/SkillSelectorTest.java +65 -0
  245. package/agent-backend/src/test/java/com/example/agent/application/service/ToolExecutionPipelineTest.java +136 -0
  246. package/agent-backend/src/test/java/com/example/agent/application/service/ToolMessageCompactorTest.java +34 -0
  247. package/agent-backend/src/test/java/com/example/agent/application/service/localtool/AnalysisResultAggregationServiceTest.java +113 -0
  248. package/agent-backend/src/test/java/com/example/agent/application/service/localtool/AnalysisResultClusteringServiceTest.java +97 -0
  249. package/agent-backend/src/test/java/com/example/agent/application/service/localtool/ClusterLabelServiceTest.java +46 -0
  250. package/agent-backend/src/test/java/com/example/agent/application/service/localtool/SphericalKMeansClustererTest.java +30 -0
  251. package/agent-backend/src/test/java/com/example/agent/application/service/localtool/TextFeatureVectorizerTest.java +23 -0
  252. package/agent-backend/src/test/java/com/example/agent/application/service/tool/argument/CompanyStructuredQueryToolArgumentResolverTest.java +105 -0
  253. package/agent-backend/src/test/java/com/example/agent/application/service/tool/argument/PerRecordAnalysisApiToolArgumentResolverTest.java +42 -0
  254. package/agent-backend/src/test/java/com/example/agent/application/service/tool/response/RemoteAnalysisAsyncResponseNormalizerTest.java +28 -0
  255. package/agent-backend/src/test/java/com/example/agent/application/service/tool/response/StandardToolResponseNormalizerTest.java +35 -0
  256. package/agent-backend/src/test/java/com/example/agent/infrastructure/llm/DummyLlmClientTest.java +152 -0
  257. package/agent-backend/src/test/java/com/example/agent/infrastructure/tool/DateExpressionParserTest.java +42 -0
  258. package/agent-backend/src/test/resources/application.yml +25 -0
  259. package/agent-backend/target/classes/application.yml +111 -0
  260. package/agent-backend/target/classes/com/example/agent/application/harness/analysis/AnalysisOutputParser$1.class +0 -0
  261. package/agent-backend/target/classes/com/example/agent/application/harness/analysis/AnalysisOutputParser.class +0 -0
  262. package/agent-backend/target/classes/com/example/agent/application/harness/analysis/AnalysisPromptCompiler.class +0 -0
  263. package/agent-backend/target/classes/com/example/agent/application/harness/analysis/PerRecordAnalysisContract.class +0 -0
  264. package/agent-backend/target/classes/com/example/agent/application/harness/binding/BindingResolver.class +0 -0
  265. package/agent-backend/target/classes/com/example/agent/application/harness/binding/DefaultBindingResolver.class +0 -0
  266. package/agent-backend/target/classes/com/example/agent/application/harness/memory/AdminAuditRepository$AuditRecord.class +0 -0
  267. package/agent-backend/target/classes/com/example/agent/application/harness/memory/AdminAuditRepository.class +0 -0
  268. package/agent-backend/target/classes/com/example/agent/application/harness/memory/HarnessBestPracticeRepository$RecoveredPracticeInsert.class +0 -0
  269. package/agent-backend/target/classes/com/example/agent/application/harness/memory/HarnessBestPracticeRepository.class +0 -0
  270. package/agent-backend/target/classes/com/example/agent/application/harness/memory/HarnessBestPracticeSynthesisService$1.class +0 -0
  271. package/agent-backend/target/classes/com/example/agent/application/harness/memory/HarnessBestPracticeSynthesisService$BestPracticeDraft.class +0 -0
  272. package/agent-backend/target/classes/com/example/agent/application/harness/memory/HarnessBestPracticeSynthesisService$RecoveryExample.class +0 -0
  273. package/agent-backend/target/classes/com/example/agent/application/harness/memory/HarnessBestPracticeSynthesisService.class +0 -0
  274. package/agent-backend/target/classes/com/example/agent/application/harness/memory/HarnessErrorPatternRepository$ErrorPatternRecord.class +0 -0
  275. package/agent-backend/target/classes/com/example/agent/application/harness/memory/HarnessErrorPatternRepository.class +0 -0
  276. package/agent-backend/target/classes/com/example/agent/application/harness/memory/HarnessMemoryService$HarnessMemoryReadback.class +0 -0
  277. package/agent-backend/target/classes/com/example/agent/application/harness/memory/HarnessMemoryService.class +0 -0
  278. package/agent-backend/target/classes/com/example/agent/application/harness/memory/HarnessReviewService.class +0 -0
  279. package/agent-backend/target/classes/com/example/agent/application/harness/memory/SkillImprovementCandidateRepository.class +0 -0
  280. package/agent-backend/target/classes/com/example/agent/application/harness/memory/SkillVersionRepository$SkillVersionRecord.class +0 -0
  281. package/agent-backend/target/classes/com/example/agent/application/harness/memory/SkillVersionRepository.class +0 -0
  282. package/agent-backend/target/classes/com/example/agent/application/harness/planning/CompletionDecision$DecisionType.class +0 -0
  283. package/agent-backend/target/classes/com/example/agent/application/harness/planning/CompletionDecision.class +0 -0
  284. package/agent-backend/target/classes/com/example/agent/application/harness/planning/CompletionPolicy.class +0 -0
  285. package/agent-backend/target/classes/com/example/agent/application/harness/planning/FinalAnswerGuardService$1.class +0 -0
  286. package/agent-backend/target/classes/com/example/agent/application/harness/planning/FinalAnswerGuardService$2.class +0 -0
  287. package/agent-backend/target/classes/com/example/agent/application/harness/planning/FinalAnswerGuardService$3.class +0 -0
  288. package/agent-backend/target/classes/com/example/agent/application/harness/planning/FinalAnswerGuardService$4.class +0 -0
  289. package/agent-backend/target/classes/com/example/agent/application/harness/planning/FinalAnswerGuardService$UserReplyDecision.class +0 -0
  290. package/agent-backend/target/classes/com/example/agent/application/harness/planning/FinalAnswerGuardService.class +0 -0
  291. package/agent-backend/target/classes/com/example/agent/application/harness/planning/LoopGuardPolicy.class +0 -0
  292. package/agent-backend/target/classes/com/example/agent/application/harness/planning/StructuredCompletionPolicy$1.class +0 -0
  293. package/agent-backend/target/classes/com/example/agent/application/harness/planning/StructuredCompletionPolicy$CompletionSignal.class +0 -0
  294. package/agent-backend/target/classes/com/example/agent/application/harness/planning/StructuredCompletionPolicy.class +0 -0
  295. package/agent-backend/target/classes/com/example/agent/application/harness/policy/LlmRoleContext.class +0 -0
  296. package/agent-backend/target/classes/com/example/agent/application/harness/policy/ModelRole.class +0 -0
  297. package/agent-backend/target/classes/com/example/agent/application/harness/policy/ToolPolicyEngine.class +0 -0
  298. package/agent-backend/target/classes/com/example/agent/application/harness/prompt/RuntimeInstructionFactory.class +0 -0
  299. package/agent-backend/target/classes/com/example/agent/application/harness/recovery/DefaultFailureClassifier.class +0 -0
  300. package/agent-backend/target/classes/com/example/agent/application/harness/recovery/FailureClassifier.class +0 -0
  301. package/agent-backend/target/classes/com/example/agent/application/harness/recovery/FailureContext.class +0 -0
  302. package/agent-backend/target/classes/com/example/agent/application/harness/recovery/FailureDecision.class +0 -0
  303. package/agent-backend/target/classes/com/example/agent/application/harness/recovery/FailurePhase.class +0 -0
  304. package/agent-backend/target/classes/com/example/agent/application/harness/report/ReportBlueprintContract.class +0 -0
  305. package/agent-backend/target/classes/com/example/agent/application/harness/requirements/SkillQuestionRequirementService$1.class +0 -0
  306. package/agent-backend/target/classes/com/example/agent/application/harness/requirements/SkillQuestionRequirementService$2.class +0 -0
  307. package/agent-backend/target/classes/com/example/agent/application/harness/requirements/SkillQuestionRequirementService$RequirementCheckResult.class +0 -0
  308. package/agent-backend/target/classes/com/example/agent/application/harness/requirements/SkillQuestionRequirementService.class +0 -0
  309. package/agent-backend/target/classes/com/example/agent/application/harness/schema/HarnessJsonSchemaValidator.class +0 -0
  310. package/agent-backend/target/classes/com/example/agent/application/harness/state/AsyncCallbackContext.class +0 -0
  311. package/agent-backend/target/classes/com/example/agent/application/harness/state/AsyncCallbackPayloadBuilder.class +0 -0
  312. package/agent-backend/target/classes/com/example/agent/application/harness/state/DefaultAsyncCallbackPayloadBuilder$1.class +0 -0
  313. package/agent-backend/target/classes/com/example/agent/application/harness/state/DefaultAsyncCallbackPayloadBuilder.class +0 -0
  314. package/agent-backend/target/classes/com/example/agent/application/harness/telemetry/HarnessMetricsService.class +0 -0
  315. package/agent-backend/target/classes/com/example/agent/application/harness/tool/ToolInvocationGuard.class +0 -0
  316. package/agent-backend/target/classes/com/example/agent/application/harness/workflow/HarnessPhase.class +0 -0
  317. package/agent-backend/target/classes/com/example/agent/application/harness/workflow/HarnessWorkflowService.class +0 -0
  318. package/agent-backend/target/classes/com/example/agent/application/service/AgentCompletionFlowService.class +0 -0
  319. package/agent-backend/target/classes/com/example/agent/application/service/AgentSessionStore$1.class +0 -0
  320. package/agent-backend/target/classes/com/example/agent/application/service/AgentSessionStore$2.class +0 -0
  321. package/agent-backend/target/classes/com/example/agent/application/service/AgentSessionStore$3.class +0 -0
  322. package/agent-backend/target/classes/com/example/agent/application/service/AgentSessionStore$4.class +0 -0
  323. package/agent-backend/target/classes/com/example/agent/application/service/AgentSessionStore.class +0 -0
  324. package/agent-backend/target/classes/com/example/agent/application/service/AgentStrategyService$DuplicateNameException.class +0 -0
  325. package/agent-backend/target/classes/com/example/agent/application/service/AgentStrategyService$NotFoundException.class +0 -0
  326. package/agent-backend/target/classes/com/example/agent/application/service/AgentStrategyService$StrategyUpdateCommand.class +0 -0
  327. package/agent-backend/target/classes/com/example/agent/application/service/AgentStrategyService.class +0 -0
  328. package/agent-backend/target/classes/com/example/agent/application/service/AgentTimeContextService$LocalDateRange.class +0 -0
  329. package/agent-backend/target/classes/com/example/agent/application/service/AgentTimeContextService.class +0 -0
  330. package/agent-backend/target/classes/com/example/agent/application/service/AgentToolCallSupportService.class +0 -0
  331. package/agent-backend/target/classes/com/example/agent/application/service/AgentToolFlowService$ToolCallContext.class +0 -0
  332. package/agent-backend/target/classes/com/example/agent/application/service/AgentToolFlowService$ToolCallOutcome.class +0 -0
  333. package/agent-backend/target/classes/com/example/agent/application/service/AgentToolFlowService.class +0 -0
  334. package/agent-backend/target/classes/com/example/agent/application/service/AgentToolObservationService.class +0 -0
  335. package/agent-backend/target/classes/com/example/agent/application/service/AgentTurnRunner$1.class +0 -0
  336. package/agent-backend/target/classes/com/example/agent/application/service/AgentTurnRunner.class +0 -0
  337. package/agent-backend/target/classes/com/example/agent/application/service/AgentWaitingFlowService$UserInputWait.class +0 -0
  338. package/agent-backend/target/classes/com/example/agent/application/service/AgentWaitingFlowService.class +0 -0
  339. package/agent-backend/target/classes/com/example/agent/application/service/ContextBudgetService.class +0 -0
  340. package/agent-backend/target/classes/com/example/agent/application/service/ConversationSummarizer.class +0 -0
  341. package/agent-backend/target/classes/com/example/agent/application/service/DslCompilerService$BindingCandidate.class +0 -0
  342. package/agent-backend/target/classes/com/example/agent/application/service/DslCompilerService$CompiledStepContext.class +0 -0
  343. package/agent-backend/target/classes/com/example/agent/application/service/DslCompilerService$CompiledStepOutput.class +0 -0
  344. package/agent-backend/target/classes/com/example/agent/application/service/DslCompilerService$DataBindingSearch.class +0 -0
  345. package/agent-backend/target/classes/com/example/agent/application/service/DslCompilerService$ToolScopedPath.class +0 -0
  346. package/agent-backend/target/classes/com/example/agent/application/service/DslCompilerService$ToolSourceRef.class +0 -0
  347. package/agent-backend/target/classes/com/example/agent/application/service/DslCompilerService.class +0 -0
  348. package/agent-backend/target/classes/com/example/agent/application/service/DslRuntimeService$ReplayExecutionState.class +0 -0
  349. package/agent-backend/target/classes/com/example/agent/application/service/DslRuntimeService.class +0 -0
  350. package/agent-backend/target/classes/com/example/agent/application/service/FinalAnswerSynthesisService.class +0 -0
  351. package/agent-backend/target/classes/com/example/agent/application/service/InternalAsyncCallbackService.class +0 -0
  352. package/agent-backend/target/classes/com/example/agent/application/service/LlmSkillRouter.class +0 -0
  353. package/agent-backend/target/classes/com/example/agent/application/service/PlanRuntimeService.class +0 -0
  354. package/agent-backend/target/classes/com/example/agent/application/service/PromptAssembler.class +0 -0
  355. package/agent-backend/target/classes/com/example/agent/application/service/ReportAssemblyService$1.class +0 -0
  356. package/agent-backend/target/classes/com/example/agent/application/service/ReportAssemblyService$2.class +0 -0
  357. package/agent-backend/target/classes/com/example/agent/application/service/ReportAssemblyService$3.class +0 -0
  358. package/agent-backend/target/classes/com/example/agent/application/service/ReportAssemblyService.class +0 -0
  359. package/agent-backend/target/classes/com/example/agent/application/service/RuleBasedSkillSelector.class +0 -0
  360. package/agent-backend/target/classes/com/example/agent/application/service/RuntimeEventBus$1.class +0 -0
  361. package/agent-backend/target/classes/com/example/agent/application/service/RuntimeEventBus.class +0 -0
  362. package/agent-backend/target/classes/com/example/agent/application/service/SkillAdminService$SkillUpsertCommand.class +0 -0
  363. package/agent-backend/target/classes/com/example/agent/application/service/SkillAdminService.class +0 -0
  364. package/agent-backend/target/classes/com/example/agent/application/service/SkillRegistry$1.class +0 -0
  365. package/agent-backend/target/classes/com/example/agent/application/service/SkillRegistry$2.class +0 -0
  366. package/agent-backend/target/classes/com/example/agent/application/service/SkillRegistry.class +0 -0
  367. package/agent-backend/target/classes/com/example/agent/application/service/SkillSelector.class +0 -0
  368. package/agent-backend/target/classes/com/example/agent/application/service/TokenEstimateService.class +0 -0
  369. package/agent-backend/target/classes/com/example/agent/application/service/ToolExecutionPipeline$FailedToolExecution.class +0 -0
  370. package/agent-backend/target/classes/com/example/agent/application/service/ToolExecutionPipeline$ToolExecutionRequest.class +0 -0
  371. package/agent-backend/target/classes/com/example/agent/application/service/ToolExecutionPipeline.class +0 -0
  372. package/agent-backend/target/classes/com/example/agent/application/service/ToolMessageCompactor$1.class +0 -0
  373. package/agent-backend/target/classes/com/example/agent/application/service/ToolMessageCompactor.class +0 -0
  374. package/agent-backend/target/classes/com/example/agent/application/service/ToolRegistry$1.class +0 -0
  375. package/agent-backend/target/classes/com/example/agent/application/service/ToolRegistry$2.class +0 -0
  376. package/agent-backend/target/classes/com/example/agent/application/service/ToolRegistry$3.class +0 -0
  377. package/agent-backend/target/classes/com/example/agent/application/service/ToolRegistry.class +0 -0
  378. package/agent-backend/target/classes/com/example/agent/application/service/localtool/AnalysisJobService$AnalysisRequestContext.class +0 -0
  379. package/agent-backend/target/classes/com/example/agent/application/service/localtool/AnalysisJobService.class +0 -0
  380. package/agent-backend/target/classes/com/example/agent/application/service/localtool/AnalysisResultAggregationService$AggregatedItem.class +0 -0
  381. package/agent-backend/target/classes/com/example/agent/application/service/localtool/AnalysisResultAggregationService.class +0 -0
  382. package/agent-backend/target/classes/com/example/agent/application/service/localtool/AnalysisResultClusteringService$AnalysisDocument.class +0 -0
  383. package/agent-backend/target/classes/com/example/agent/application/service/localtool/AnalysisResultClusteringService.class +0 -0
  384. package/agent-backend/target/classes/com/example/agent/application/service/localtool/AnalysisWorkerService$AnalysisExecutionContext.class +0 -0
  385. package/agent-backend/target/classes/com/example/agent/application/service/localtool/AnalysisWorkerService$SubmittedPerRecordJob.class +0 -0
  386. package/agent-backend/target/classes/com/example/agent/application/service/localtool/AnalysisWorkerService.class +0 -0
  387. package/agent-backend/target/classes/com/example/agent/application/service/localtool/ClusterLabelService$1.class +0 -0
  388. package/agent-backend/target/classes/com/example/agent/application/service/localtool/ClusterLabelService$LabelRequest.class +0 -0
  389. package/agent-backend/target/classes/com/example/agent/application/service/localtool/ClusterLabelService$LabelResult.class +0 -0
  390. package/agent-backend/target/classes/com/example/agent/application/service/localtool/ClusterLabelService.class +0 -0
  391. package/agent-backend/target/classes/com/example/agent/application/service/localtool/CustomerSessionQueryService.class +0 -0
  392. package/agent-backend/target/classes/com/example/agent/application/service/localtool/LocalPerRecordAnalysisExecutor.class +0 -0
  393. package/agent-backend/target/classes/com/example/agent/application/service/localtool/PerRecordAnalysisExecutor$AnalysisSubmitRequest.class +0 -0
  394. package/agent-backend/target/classes/com/example/agent/application/service/localtool/PerRecordAnalysisExecutor$RawAnalysisRecordOutput.class +0 -0
  395. package/agent-backend/target/classes/com/example/agent/application/service/localtool/PerRecordAnalysisExecutor$SubmittedAnalysisJob.class +0 -0
  396. package/agent-backend/target/classes/com/example/agent/application/service/localtool/PerRecordAnalysisExecutor.class +0 -0
  397. package/agent-backend/target/classes/com/example/agent/application/service/localtool/QueryHandleService.class +0 -0
  398. package/agent-backend/target/classes/com/example/agent/application/service/localtool/RemotePerRecordAnalysisExecutor.class +0 -0
  399. package/agent-backend/target/classes/com/example/agent/application/service/localtool/SphericalKMeansClusterer$ClusterResult.class +0 -0
  400. package/agent-backend/target/classes/com/example/agent/application/service/localtool/SphericalKMeansClusterer.class +0 -0
  401. package/agent-backend/target/classes/com/example/agent/application/service/localtool/TextFeatureVectorizer$DocumentVector.class +0 -0
  402. package/agent-backend/target/classes/com/example/agent/application/service/localtool/TextFeatureVectorizer$VectorizedText.class +0 -0
  403. package/agent-backend/target/classes/com/example/agent/application/service/localtool/TextFeatureVectorizer.class +0 -0
  404. package/agent-backend/target/classes/com/example/agent/application/service/tool/argument/CompanyStructuredQueryToolArgumentResolver.class +0 -0
  405. package/agent-backend/target/classes/com/example/agent/application/service/tool/argument/DefaultToolArgumentResolver.class +0 -0
  406. package/agent-backend/target/classes/com/example/agent/application/service/tool/argument/PerRecordAnalysisApiToolArgumentResolver.class +0 -0
  407. package/agent-backend/target/classes/com/example/agent/application/service/tool/argument/ReportToolArgumentResolver.class +0 -0
  408. package/agent-backend/target/classes/com/example/agent/application/service/tool/argument/ToolArgumentResolver.class +0 -0
  409. package/agent-backend/target/classes/com/example/agent/application/service/tool/argument/ToolArgumentResolverRegistry.class +0 -0
  410. package/agent-backend/target/classes/com/example/agent/application/service/tool/response/RemoteAnalysisAsyncResponseNormalizer.class +0 -0
  411. package/agent-backend/target/classes/com/example/agent/application/service/tool/response/StandardToolResponseNormalizer.class +0 -0
  412. package/agent-backend/target/classes/com/example/agent/application/service/tool/response/ToolResponseNormalizer.class +0 -0
  413. package/agent-backend/target/classes/com/example/agent/application/service/tool/response/ToolResponseNormalizerRegistry.class +0 -0
  414. package/agent-backend/target/classes/com/example/agent/domain/model/AgentExecutedStep$ExecutionRef.class +0 -0
  415. package/agent-backend/target/classes/com/example/agent/domain/model/AgentExecutedStep.class +0 -0
  416. package/agent-backend/target/classes/com/example/agent/domain/model/AgentSession.class +0 -0
  417. package/agent-backend/target/classes/com/example/agent/domain/model/AgentSessionStatus.class +0 -0
  418. package/agent-backend/target/classes/com/example/agent/domain/model/AgentSessionSummary.class +0 -0
  419. package/agent-backend/target/classes/com/example/agent/domain/model/AgentSessionType.class +0 -0
  420. package/agent-backend/target/classes/com/example/agent/domain/model/AgentStrategy.class +0 -0
  421. package/agent-backend/target/classes/com/example/agent/domain/model/AgentTurn.class +0 -0
  422. package/agent-backend/target/classes/com/example/agent/domain/model/AgentTurnStatus.class +0 -0
  423. package/agent-backend/target/classes/com/example/agent/domain/model/ReportBlockBlueprint.class +0 -0
  424. package/agent-backend/target/classes/com/example/agent/domain/model/ReportBlueprint.class +0 -0
  425. package/agent-backend/target/classes/com/example/agent/domain/model/ReportSectionBlueprint.class +0 -0
  426. package/agent-backend/target/classes/com/example/agent/domain/model/ReportTableColumnBlueprint.class +0 -0
  427. package/agent-backend/target/classes/com/example/agent/domain/model/RuntimeEvent.class +0 -0
  428. package/agent-backend/target/classes/com/example/agent/domain/model/RuntimeEventType.class +0 -0
  429. package/agent-backend/target/classes/com/example/agent/domain/model/SkillDefinition.class +0 -0
  430. package/agent-backend/target/classes/com/example/agent/domain/model/ToolCommand$ExecutionContext.class +0 -0
  431. package/agent-backend/target/classes/com/example/agent/domain/model/ToolCommand.class +0 -0
  432. package/agent-backend/target/classes/com/example/agent/domain/model/ToolDefinition.class +0 -0
  433. package/agent-backend/target/classes/com/example/agent/domain/model/ToolExecutionFailedException$ToolFailureDetails.class +0 -0
  434. package/agent-backend/target/classes/com/example/agent/domain/model/ToolExecutionFailedException.class +0 -0
  435. package/agent-backend/target/classes/com/example/agent/domain/model/ToolExecutionResult.class +0 -0
  436. package/agent-backend/target/classes/com/example/agent/domain/model/ToolOutputContract.class +0 -0
  437. package/agent-backend/target/classes/com/example/agent/domain/model/ToolPrecondition.class +0 -0
  438. package/agent-backend/target/classes/com/example/agent/domain/model/ToolResult.class +0 -0
  439. package/agent-backend/target/classes/com/example/agent/domain/model/chat/ChatMessage.class +0 -0
  440. package/agent-backend/target/classes/com/example/agent/domain/model/chat/ChatRole.class +0 -0
  441. package/agent-backend/target/classes/com/example/agent/domain/port/LlmClient.class +0 -0
  442. package/agent-backend/target/classes/com/example/agent/domain/port/ToolExecutor.class +0 -0
  443. package/agent-backend/target/classes/com/example/agent/infrastructure/config/AgentAsyncConfig.class +0 -0
  444. package/agent-backend/target/classes/com/example/agent/infrastructure/es/ElasticsearchLargeContentStore.class +0 -0
  445. package/agent-backend/target/classes/com/example/agent/infrastructure/llm/DummyLlmClient$ResolvedModel.class +0 -0
  446. package/agent-backend/target/classes/com/example/agent/infrastructure/llm/DummyLlmClient.class +0 -0
  447. package/agent-backend/target/classes/com/example/agent/infrastructure/llm/LlmProperties$Model.class +0 -0
  448. package/agent-backend/target/classes/com/example/agent/infrastructure/llm/LlmProperties$Retry.class +0 -0
  449. package/agent-backend/target/classes/com/example/agent/infrastructure/llm/LlmProperties.class +0 -0
  450. package/agent-backend/target/classes/com/example/agent/infrastructure/mapper/AgentEventMapper.class +0 -0
  451. package/agent-backend/target/classes/com/example/agent/infrastructure/mapper/AgentSessionMapper.class +0 -0
  452. package/agent-backend/target/classes/com/example/agent/infrastructure/mapper/IsapStrategyMapper.class +0 -0
  453. package/agent-backend/target/classes/com/example/agent/infrastructure/mapper/SessionMapper.class +0 -0
  454. package/agent-backend/target/classes/com/example/agent/infrastructure/mapper/SkillDefinitionMapper.class +0 -0
  455. package/agent-backend/target/classes/com/example/agent/infrastructure/mapper/ToolDefinitionMapper.class +0 -0
  456. package/agent-backend/target/classes/com/example/agent/infrastructure/mapper/harness/HarnessMemoryMapper.class +0 -0
  457. package/agent-backend/target/classes/com/example/agent/infrastructure/persistence/po/AgentSessionPo.class +0 -0
  458. package/agent-backend/target/classes/com/example/agent/infrastructure/persistence/po/IsapStrategyPo.class +0 -0
  459. package/agent-backend/target/classes/com/example/agent/infrastructure/persistence/po/SkillDefinitionPo.class +0 -0
  460. package/agent-backend/target/classes/com/example/agent/infrastructure/persistence/po/ToolDefinitionPo.class +0 -0
  461. package/agent-backend/target/classes/com/example/agent/infrastructure/repository/AgentEventRepository.class +0 -0
  462. package/agent-backend/target/classes/com/example/agent/infrastructure/repository/AgentSessionRepository$AgentSessionUpsert.class +0 -0
  463. package/agent-backend/target/classes/com/example/agent/infrastructure/repository/AgentSessionRepository.class +0 -0
  464. package/agent-backend/target/classes/com/example/agent/infrastructure/repository/DslExecutionLogRepository.class +0 -0
  465. package/agent-backend/target/classes/com/example/agent/infrastructure/repository/IsapStrategyRepository.class +0 -0
  466. package/agent-backend/target/classes/com/example/agent/infrastructure/repository/SessionRepository.class +0 -0
  467. package/agent-backend/target/classes/com/example/agent/infrastructure/repository/SkillDefinitionRepository$SkillDefinitionUpsert.class +0 -0
  468. package/agent-backend/target/classes/com/example/agent/infrastructure/repository/SkillDefinitionRepository.class +0 -0
  469. package/agent-backend/target/classes/com/example/agent/infrastructure/repository/ToolDefinitionRepository.class +0 -0
  470. package/agent-backend/target/classes/com/example/agent/infrastructure/repository/localtool/AnalysisClusterRepository.class +0 -0
  471. package/agent-backend/target/classes/com/example/agent/infrastructure/repository/localtool/CustomerSessionMysqlRepository.class +0 -0
  472. package/agent-backend/target/classes/com/example/agent/infrastructure/tool/DateExpressionParser.class +0 -0
  473. package/agent-backend/target/classes/com/example/agent/infrastructure/tool/SampleSessionItem.class +0 -0
  474. package/agent-backend/target/classes/com/example/agent/infrastructure/tool/ToolHttpAuthProperties.class +0 -0
  475. package/agent-backend/target/classes/com/example/agent/infrastructure/tool/ToolHttpAuthSupport.class +0 -0
  476. package/agent-backend/target/classes/com/example/agent/infrastructure/tool/ToolsApiToolExecutor.class +0 -0
  477. package/agent-backend/target/classes/com/example/agent/interfaces/rest/AgentApiExceptionHandler.class +0 -0
  478. package/agent-backend/target/classes/com/example/agent/interfaces/rest/AgentRuntimeController$AnalysisProviderCallbackRequest.class +0 -0
  479. package/agent-backend/target/classes/com/example/agent/interfaces/rest/AgentRuntimeController$ToolCallbackRequest.class +0 -0
  480. package/agent-backend/target/classes/com/example/agent/interfaces/rest/AgentRuntimeController.class +0 -0
  481. package/agent-backend/target/classes/com/example/agent/interfaces/rest/AgentSessionController$MessageRequest.class +0 -0
  482. package/agent-backend/target/classes/com/example/agent/interfaces/rest/AgentSessionController$SessionRequest.class +0 -0
  483. package/agent-backend/target/classes/com/example/agent/interfaces/rest/AgentSessionController.class +0 -0
  484. package/agent-backend/target/classes/com/example/agent/interfaces/rest/AgentStrategyController$StrategyRequest.class +0 -0
  485. package/agent-backend/target/classes/com/example/agent/interfaces/rest/AgentStrategyController.class +0 -0
  486. package/agent-backend/target/classes/com/example/agent/interfaces/rest/CustomerSessionController.class +0 -0
  487. package/agent-backend/target/classes/com/example/agent/interfaces/rest/SkillAdminController$SkillUpsertRequest.class +0 -0
  488. package/agent-backend/target/classes/com/example/agent/interfaces/rest/SkillAdminController.class +0 -0
  489. package/agent-backend/target/classes/com/example/agent/interfaces/rest/ToolsController.class +0 -0
  490. package/agent-backend/target/classes/data.sql +930 -0
  491. package/agent-backend/target/classes/es/large-content-index.json +26 -0
  492. package/agent-backend/target/classes/mappers/AgentEventMapper.xml +28 -0
  493. package/agent-backend/target/classes/mappers/AgentSessionMapper.xml +30 -0
  494. package/agent-backend/target/classes/mappers/IsapStrategyMapper.xml +70 -0
  495. package/agent-backend/target/classes/mappers/SessionMapper.xml +25 -0
  496. package/agent-backend/target/classes/mappers/harness/HarnessMemoryMapper.xml +194 -0
  497. package/agent-backend/target/classes/mappers/localtool/AnalysisJobMapper.xml +50 -0
  498. package/agent-backend/target/classes/mappers/localtool/AnalysisRecordResultMapper.xml +43 -0
  499. package/agent-backend/target/classes/mappers/localtool/CustomerSessionMapper.xml +119 -0
  500. package/agent-backend/target/classes/mappers/localtool/QueryInstanceMapper.xml +34 -0
  501. package/agent-backend/target/classes/schema.sql +917 -0
  502. package/agent-backend/target/test-classes/application.yml +25 -0
  503. package/agent-backend/target/test-classes/com/example/agent/application/harness/analysis/AnalysisOutputParserTest.class +0 -0
  504. package/agent-backend/target/test-classes/com/example/agent/application/harness/analysis/AnalysisPromptCompilerTest.class +0 -0
  505. package/agent-backend/target/test-classes/com/example/agent/application/harness/binding/DefaultBindingResolverTest$1.class +0 -0
  506. package/agent-backend/target/test-classes/com/example/agent/application/harness/binding/DefaultBindingResolverTest.class +0 -0
  507. package/agent-backend/target/test-classes/com/example/agent/application/harness/memory/HarnessBestPracticeRepositoryTest.class +0 -0
  508. package/agent-backend/target/test-classes/com/example/agent/application/harness/memory/HarnessBestPracticeSynthesisServiceTest.class +0 -0
  509. package/agent-backend/target/test-classes/com/example/agent/application/harness/memory/HarnessMemoryServiceTest.class +0 -0
  510. package/agent-backend/target/test-classes/com/example/agent/application/harness/planning/FinalAnswerGuardServiceTest$1.class +0 -0
  511. package/agent-backend/target/test-classes/com/example/agent/application/harness/planning/FinalAnswerGuardServiceTest$2.class +0 -0
  512. package/agent-backend/target/test-classes/com/example/agent/application/harness/planning/FinalAnswerGuardServiceTest$3.class +0 -0
  513. package/agent-backend/target/test-classes/com/example/agent/application/harness/planning/FinalAnswerGuardServiceTest.class +0 -0
  514. package/agent-backend/target/test-classes/com/example/agent/application/harness/planning/LoopGuardPolicyTest$1.class +0 -0
  515. package/agent-backend/target/test-classes/com/example/agent/application/harness/planning/LoopGuardPolicyTest.class +0 -0
  516. package/agent-backend/target/test-classes/com/example/agent/application/harness/planning/StructuredCompletionPolicyTest.class +0 -0
  517. package/agent-backend/target/test-classes/com/example/agent/application/harness/prompt/RuntimeInstructionFactoryTest.class +0 -0
  518. package/agent-backend/target/test-classes/com/example/agent/application/harness/report/ReportBlueprintContractTest.class +0 -0
  519. package/agent-backend/target/test-classes/com/example/agent/application/harness/requirements/SkillQuestionRequirementServiceTest$1.class +0 -0
  520. package/agent-backend/target/test-classes/com/example/agent/application/harness/requirements/SkillQuestionRequirementServiceTest.class +0 -0
  521. package/agent-backend/target/test-classes/com/example/agent/application/harness/state/DefaultAsyncCallbackPayloadBuilderTest$1.class +0 -0
  522. package/agent-backend/target/test-classes/com/example/agent/application/harness/state/DefaultAsyncCallbackPayloadBuilderTest.class +0 -0
  523. package/agent-backend/target/test-classes/com/example/agent/application/harness/telemetry/HarnessMetricsServiceTest$1.class +0 -0
  524. package/agent-backend/target/test-classes/com/example/agent/application/harness/telemetry/HarnessMetricsServiceTest.class +0 -0
  525. package/agent-backend/target/test-classes/com/example/agent/application/harness/tool/ToolInvocationGuardTest.class +0 -0
  526. package/agent-backend/target/test-classes/com/example/agent/application/service/AgentSessionStoreTest.class +0 -0
  527. package/agent-backend/target/test-classes/com/example/agent/application/service/AgentStrategyServiceTest.class +0 -0
  528. package/agent-backend/target/test-classes/com/example/agent/application/service/AgentTimeContextServiceTest.class +0 -0
  529. package/agent-backend/target/test-classes/com/example/agent/application/service/AgentTurnRunnerIntegrationTest$1.class +0 -0
  530. package/agent-backend/target/test-classes/com/example/agent/application/service/AgentTurnRunnerIntegrationTest.class +0 -0
  531. package/agent-backend/target/test-classes/com/example/agent/application/service/AgentWaitingFlowServiceTest.class +0 -0
  532. package/agent-backend/target/test-classes/com/example/agent/application/service/ContextBudgetServiceTest.class +0 -0
  533. package/agent-backend/target/test-classes/com/example/agent/application/service/CustomerSessionQueryServiceTest.class +0 -0
  534. package/agent-backend/target/test-classes/com/example/agent/application/service/DslCompilerServiceTest.class +0 -0
  535. package/agent-backend/target/test-classes/com/example/agent/application/service/LiveRealLlmDatabaseE2ETest.class +0 -0
  536. package/agent-backend/target/test-classes/com/example/agent/application/service/QueryHandleServiceIntegrationTest.class +0 -0
  537. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$1$1$1.class +0 -0
  538. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$1$1.class +0 -0
  539. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$1.class +0 -0
  540. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$2$1$1.class +0 -0
  541. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$2$1.class +0 -0
  542. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$2.class +0 -0
  543. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$3$1$1$1.class +0 -0
  544. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$3$1$1.class +0 -0
  545. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$3$1.class +0 -0
  546. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$3.class +0 -0
  547. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$4$1$1.class +0 -0
  548. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$4$1.class +0 -0
  549. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$4.class +0 -0
  550. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$5$1$1.class +0 -0
  551. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$5$1.class +0 -0
  552. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest$5.class +0 -0
  553. package/agent-backend/target/test-classes/com/example/agent/application/service/ReportAssemblyServiceTest.class +0 -0
  554. package/agent-backend/target/test-classes/com/example/agent/application/service/SkillSelectorTest.class +0 -0
  555. package/agent-backend/target/test-classes/com/example/agent/application/service/ToolExecutionPipelineTest.class +0 -0
  556. package/agent-backend/target/test-classes/com/example/agent/application/service/ToolMessageCompactorTest.class +0 -0
  557. package/agent-backend/target/test-classes/com/example/agent/application/service/localtool/AnalysisResultAggregationServiceTest.class +0 -0
  558. package/agent-backend/target/test-classes/com/example/agent/application/service/localtool/AnalysisResultClusteringServiceTest$1.class +0 -0
  559. package/agent-backend/target/test-classes/com/example/agent/application/service/localtool/AnalysisResultClusteringServiceTest.class +0 -0
  560. package/agent-backend/target/test-classes/com/example/agent/application/service/localtool/ClusterLabelServiceTest.class +0 -0
  561. package/agent-backend/target/test-classes/com/example/agent/application/service/localtool/SphericalKMeansClustererTest.class +0 -0
  562. package/agent-backend/target/test-classes/com/example/agent/application/service/localtool/TextFeatureVectorizerTest.class +0 -0
  563. package/agent-backend/target/test-classes/com/example/agent/application/service/tool/argument/CompanyStructuredQueryToolArgumentResolverTest$1.class +0 -0
  564. package/agent-backend/target/test-classes/com/example/agent/application/service/tool/argument/CompanyStructuredQueryToolArgumentResolverTest$2.class +0 -0
  565. package/agent-backend/target/test-classes/com/example/agent/application/service/tool/argument/CompanyStructuredQueryToolArgumentResolverTest$3.class +0 -0
  566. package/agent-backend/target/test-classes/com/example/agent/application/service/tool/argument/CompanyStructuredQueryToolArgumentResolverTest$4.class +0 -0
  567. package/agent-backend/target/test-classes/com/example/agent/application/service/tool/argument/CompanyStructuredQueryToolArgumentResolverTest.class +0 -0
  568. package/agent-backend/target/test-classes/com/example/agent/application/service/tool/argument/PerRecordAnalysisApiToolArgumentResolverTest$1$1.class +0 -0
  569. package/agent-backend/target/test-classes/com/example/agent/application/service/tool/argument/PerRecordAnalysisApiToolArgumentResolverTest$1.class +0 -0
  570. package/agent-backend/target/test-classes/com/example/agent/application/service/tool/argument/PerRecordAnalysisApiToolArgumentResolverTest.class +0 -0
  571. package/agent-backend/target/test-classes/com/example/agent/application/service/tool/response/RemoteAnalysisAsyncResponseNormalizerTest.class +0 -0
  572. package/agent-backend/target/test-classes/com/example/agent/application/service/tool/response/StandardToolResponseNormalizerTest.class +0 -0
  573. package/agent-backend/target/test-classes/com/example/agent/infrastructure/llm/DummyLlmClientTest$1.class +0 -0
  574. package/agent-backend/target/test-classes/com/example/agent/infrastructure/llm/DummyLlmClientTest$2.class +0 -0
  575. package/agent-backend/target/test-classes/com/example/agent/infrastructure/llm/DummyLlmClientTest$3.class +0 -0
  576. package/agent-backend/target/test-classes/com/example/agent/infrastructure/llm/DummyLlmClientTest.class +0 -0
  577. package/agent-backend/target/test-classes/com/example/agent/infrastructure/tool/DateExpressionParserTest.class +0 -0
  578. package/agent-front-react/index.html +12 -0
  579. package/agent-front-react/package.json +25 -0
  580. package/agent-front-react/src/App.tsx +78 -0
  581. package/agent-front-react/src/api/client.ts +138 -0
  582. package/agent-front-react/src/hooks/useEventStream.ts +61 -0
  583. package/agent-front-react/src/main.tsx +14 -0
  584. package/agent-front-react/src/pages/AnalysisTaskPage.tsx +1020 -0
  585. package/agent-front-react/src/pages/DslReplayPage.tsx +199 -0
  586. package/agent-front-react/src/pages/SkillManagementPage.tsx +261 -0
  587. package/agent-front-react/src/pages/StrategyManagementPage.tsx +201 -0
  588. package/agent-front-react/src/storage/taskRegistry.ts +36 -0
  589. package/agent-front-react/src/styles.css +790 -0
  590. package/agent-front-react/src/types.ts +150 -0
  591. package/agent-front-react/src/utils/json.ts +11 -0
  592. package/agent-front-react/tsconfig.json +21 -0
  593. package/agent-front-react/tsconfig.node.json +9 -0
  594. package/agent-front-react/tsconfig.node.tsbuildinfo +1 -0
  595. package/agent-front-react/tsconfig.tsbuildinfo +1 -0
  596. package/agent-front-react/vite.config.d.ts +2 -0
  597. package/agent-front-react/vite.config.js +14 -0
  598. package/package.json +15 -0
@@ -0,0 +1,768 @@
1
+ # zy-agent-backend Architecture
2
+
3
+ ## 1. Overview
4
+
5
+ `zy-agent-backend` is now a session-driven vertical agent backend for finance customer-support analysis.
6
+
7
+ The current runtime no longer uses the old one-shot plan builder or step-loop orchestrator. The active design is:
8
+
9
+ 1. Receive a user request and create or resume an `AgentSession`
10
+ 2. Select skills through `LLM skill routing` with `rule fallback`
11
+ 3. Assemble a system prompt from runtime metadata, skill markdown, and allowed tools
12
+ 4. Let the LLM decide the next action in a turn loop
13
+ 5. If the LLM requests tools, execute them through a unified tool pipeline
14
+ 6. Feed tool results back into the same transcript
15
+ 7. Continue until the LLM returns a final assistant answer or an async tool waits for callback
16
+ 8. When a task succeeds, compile the successful tool trajectory into a replayable DSL snapshot
17
+
18
+ The active runtime entry is:
19
+
20
+ - `src/main/java/com/example/agent/interfaces/rest/AgentSessionController.java`
21
+ - `src/main/java/com/example/agent/interfaces/rest/AgentRuntimeController.java`
22
+
23
+ The core orchestrator is:
24
+
25
+ - `src/main/java/com/example/agent/application/service/AgentTurnRunner.java`
26
+
27
+ ---
28
+
29
+ ## 2. Active API Surface
30
+
31
+ ### 2.1 Agent session APIs
32
+
33
+ Defined in:
34
+
35
+ - `src/main/java/com/example/agent/interfaces/rest/AgentSessionController.java`
36
+
37
+ Endpoints:
38
+
39
+ #### `POST /api/agent/sessions`
40
+
41
+ Create a new agent session and immediately start the first turn.
42
+
43
+ Request body:
44
+
45
+ ```json
46
+ {
47
+ "message": "请分析最近30天贵金属规则调整相关的客服问题并生成报告",
48
+ "globalContext": {
49
+ "tenantId": "finance-demo",
50
+ "businessLine": "precious-metal",
51
+ "operator": "alice",
52
+ "channel": "app"
53
+ }
54
+ }
55
+ ```
56
+
57
+ Response:
58
+
59
+ - Full `AgentSession`
60
+
61
+ #### `POST /api/agent/sessions/{sessionId}/messages`
62
+
63
+ Append a user message to an existing session and continue the loop.
64
+
65
+ Request body:
66
+
67
+ ```json
68
+ {
69
+ "message": "只分析高净值客户,并按渠道拆分"
70
+ }
71
+ ```
72
+
73
+ Response:
74
+
75
+ - Updated `AgentSession`
76
+
77
+ #### `POST /api/agent/sessions/{sessionId}/resume`
78
+
79
+ Resume a session after an async tool has completed or when an external caller explicitly wants to continue.
80
+
81
+ Response:
82
+
83
+ - Updated `AgentSession`
84
+
85
+ #### `GET /api/agent/sessions/{sessionId}`
86
+
87
+ Load the current session snapshot from persistence.
88
+
89
+ Response:
90
+
91
+ - Full `AgentSession`
92
+
93
+ #### `GET /api/agent/sessions/{sessionId}/events`
94
+
95
+ SSE event stream for runtime events.
96
+
97
+ Produced events come from:
98
+
99
+ - `src/main/java/com/example/agent/domain/model/RuntimeEventType.java`
100
+
101
+ Current event types:
102
+
103
+ - `SESSION_STARTED`
104
+ - `TURN_STARTED`
105
+ - `MODEL_DECISION`
106
+ - `TOOL_CALL_REQUESTED`
107
+ - `TOOL_EXECUTION_STARTED`
108
+ - `TOOL_CALLBACK_RECEIVED`
109
+ - `TOOL_EXECUTION_FINISHED`
110
+ - `TOOL_EXECUTION_FAILED`
111
+ - `WAITING_ASYNC_CALLBACK`
112
+ - `ASSISTANT_MESSAGE`
113
+ - `TURN_FINISHED`
114
+ - `DSL_COMPILED`
115
+
116
+ #### `GET /api/agent/dsl/{dslId}`
117
+
118
+ Load a compiled DSL snapshot.
119
+
120
+ Response:
121
+
122
+ - `ExecutableDslSnapshot`
123
+
124
+ #### `POST /api/agent/dsl/{dslId}/execute`
125
+
126
+ Replay a compiled DSL using optional runtime overrides.
127
+
128
+ Request body:
129
+
130
+ ```json
131
+ {
132
+ "top_n": 20,
133
+ "business_line": "precious-metal"
134
+ }
135
+ ```
136
+
137
+ Response:
138
+
139
+ - DSL replay result with per-step outputs
140
+
141
+ ---
142
+
143
+ ### 2.2 Agent runtime APIs
144
+
145
+ Defined in:
146
+
147
+ - `src/main/java/com/example/agent/interfaces/rest/AgentRuntimeController.java`
148
+
149
+ Endpoints:
150
+
151
+ #### `POST /api/agent/tool-callback`
152
+
153
+ Receive an external async tool callback, update the matching tool result, emit callback events, and resume the session.
154
+
155
+ Request body:
156
+
157
+ ```json
158
+ {
159
+ "externalJobId": "job-123",
160
+ "status": "SUCCEEDED",
161
+ "payload": {
162
+ "artifacts": {
163
+ "analysis_job_id": "job-123",
164
+ "keywords": ["保证金", "交易规则", "手续费"]
165
+ }
166
+ }
167
+ }
168
+ ```
169
+
170
+ Response:
171
+
172
+ ```json
173
+ {
174
+ "ok": true
175
+ }
176
+ ```
177
+
178
+ If no matching async job exists:
179
+
180
+ ```json
181
+ {
182
+ "error": "async job not found"
183
+ }
184
+ ```
185
+
186
+ #### `GET /api/agent/sessions/{sessionId}/runtime`
187
+
188
+ Return the persisted session row and event history snapshot.
189
+
190
+ ---
191
+
192
+ ### 2.3 Direct customer-session query API
193
+
194
+ Defined in:
195
+
196
+ - `src/main/java/com/example/agent/interfaces/rest/CustomerSessionController.java`
197
+
198
+ Endpoint:
199
+
200
+ #### `POST /api/customer-sessions/query`
201
+
202
+ Request:
203
+
204
+ ```json
205
+ {
206
+ "keywords": ["保证金", "规则调整"],
207
+ "businessLine": "precious-metal",
208
+ "channel": "app",
209
+ "customerId": "C10001",
210
+ "startTime": "2026-03-01 00:00:00",
211
+ "endTime": "2026-03-14 23:59:59",
212
+ "limit": 20
213
+ }
214
+ ```
215
+
216
+ Response:
217
+
218
+ ```json
219
+ {
220
+ "total": 2,
221
+ "records": [
222
+ {
223
+ "id": 1,
224
+ "sessionCode": "CS202603130001",
225
+ "channel": "app",
226
+ "customerId": "C10001",
227
+ "agentId": "A20001",
228
+ "businessLine": "precious-metal",
229
+ "userMessage": "...",
230
+ "agentReply": "...",
231
+ "tags": "规则调整,保证金",
232
+ "occurredAt": "2026-03-13T10:00:00"
233
+ }
234
+ ]
235
+ }
236
+ ```
237
+
238
+ ---
239
+
240
+ ### 2.4 Internal tool APIs
241
+
242
+ Defined in:
243
+
244
+ - `src/main/java/com/example/agent/interfaces/rest/ToolsController.java`
245
+
246
+ These endpoints are internal tool surfaces called by `ToolsApiToolExecutor`.
247
+
248
+ Endpoints:
249
+
250
+ - `POST /tools/sample-sessions-by-keywords`
251
+ - `POST /tools/query-sessions-handle`
252
+ - `POST /tools/analyze-keywords-async`
253
+ - `POST /tools/build-keyword-report`
254
+ - `POST /tools/query-customer-sessions-mysql`
255
+
256
+ ---
257
+
258
+ ## 3. Main Planning and Execution Flow
259
+
260
+ ### 3.1 Entry flow
261
+
262
+ The first request enters through:
263
+
264
+ - `AgentSessionController.createSession(...)`
265
+
266
+ This method calls:
267
+
268
+ - `AgentTurnRunner.startSession(...)`
269
+
270
+ `startSession(...)` does:
271
+
272
+ 1. Create a new `AgentSession`
273
+ 2. Copy `message` into `title` and `query`
274
+ 3. Copy `globalContext`
275
+ 4. Select skills through `SkillSelector.select(...)`
276
+ 5. Build the initial transcript through `PromptAssembler.buildInitialTranscript(...)`
277
+ 6. Persist the session through `AgentSessionStore.save(...)`
278
+ 7. Publish `SESSION_STARTED`
279
+ 8. Enter the execution loop through `runTurn(...)`
280
+
281
+ ### 3.2 Skill selection flow
282
+
283
+ Relevant classes:
284
+
285
+ - `src/main/java/com/example/agent/application/service/SkillSelector.java`
286
+ - `src/main/java/com/example/agent/application/service/LlmSkillRouter.java`
287
+ - `src/main/java/com/example/agent/application/service/RuleBasedSkillSelector.java`
288
+ - `src/main/java/com/example/agent/application/service/SkillRegistry.java`
289
+
290
+ Logic:
291
+
292
+ 1. `SkillRegistry` loads all enabled skills from:
293
+ - `src/main/resources/skills/*/SKILL.md`
294
+ 2. `SkillSelector.select(...)` first calls:
295
+ - `LlmSkillRouter.route(query, globalContext, allSkills)`
296
+ 3. `LlmSkillRouter` sends a lightweight router prompt to `LlmClient`
297
+ 4. The model returns JSON:
298
+
299
+ ```json
300
+ {
301
+ "selectedSkillIds": [
302
+ "finance-semantic-analysis",
303
+ "finance-reporting"
304
+ ],
305
+ "reason": "analysis and report requested"
306
+ }
307
+ ```
308
+
309
+ 5. If routing fails, returns empty, or returns invalid skill ids, `SkillSelector` falls back to:
310
+ - `RuleBasedSkillSelector.select(...)`
311
+
312
+ Important point:
313
+
314
+ - The LLM does not directly open every tool by default
315
+ - It first chooses skills
316
+ - Skills then constrain the allowed tool set
317
+
318
+ ### 3.3 Prompt assembly
319
+
320
+ Relevant class:
321
+
322
+ - `src/main/java/com/example/agent/application/service/PromptAssembler.java`
323
+
324
+ `PromptAssembler.systemPrompt(...)` builds the system prompt from:
325
+
326
+ 1. Base agent instructions
327
+ 2. Runtime metadata
328
+ 3. Full markdown content of selected `SKILL.md` files
329
+ 4. Allowed tool list from `ToolRegistry`
330
+
331
+ So the active prompt structure is:
332
+
333
+ 1. Base runtime rules
334
+ 2. User/tenant/channel metadata
335
+ 3. Selected skill markdown
336
+ 4. Tool whitelist
337
+
338
+ ### 3.4 Turn loop
339
+
340
+ Relevant class:
341
+
342
+ - `src/main/java/com/example/agent/application/service/AgentTurnRunner.java`
343
+
344
+ Core method:
345
+
346
+ - `runTurn(AgentSession session, String userMessage, boolean resumed)`
347
+
348
+ Loop logic:
349
+
350
+ 1. Publish `TURN_STARTED`
351
+ 2. Resolve selected skills again for the session
352
+ 3. Derive allowed tools from selected skills
353
+ 4. Ensure transcript[0] contains the latest system prompt
354
+ 5. Call:
355
+ - `llmClient.chat(session.getTranscript(), allowedTools)`
356
+ 6. Publish `MODEL_DECISION`
357
+ 7. If the model returned `tool_calls`:
358
+ - append assistant tool-call message
359
+ - for each tool call:
360
+ - publish `TOOL_CALL_REQUESTED`
361
+ - parse JSON arguments
362
+ - execute through `ToolExecutionPipeline.execute(...)`
363
+ - append the tool result as a `tool` message
364
+ - if async:
365
+ - mark session `WAITING_ASYNC_CALLBACK`
366
+ - publish `TURN_FINISHED`
367
+ - return
368
+ - otherwise continue next loop round
369
+ 8. If the model returned plain assistant content:
370
+ - append final assistant message
371
+ - set session status `SUCCEEDED`
372
+ - publish `ASSISTANT_MESSAGE`
373
+ - if tool steps exist, compile DSL
374
+ - publish `DSL_COMPILED`
375
+ - publish `TURN_FINISHED`
376
+ - return
377
+ 9. If max rounds exceeded:
378
+ - mark session `FAILED`
379
+ - publish `TURN_FINISHED`
380
+
381
+ ---
382
+
383
+ ## 4. Tool Execution Logic
384
+
385
+ ### 4.1 Tool registry
386
+
387
+ Relevant class:
388
+
389
+ - `src/main/java/com/example/agent/application/service/ToolRegistry.java`
390
+
391
+ Current registered tools:
392
+
393
+ - `sample_sessions_by_keywords`
394
+ - `query_customer_sessions_mysql`
395
+ - `query_sessions_handle`
396
+ - `analyze_keywords_async`
397
+ - `build_keyword_report`
398
+
399
+ Each tool defines:
400
+
401
+ - `toolId`
402
+ - `description`
403
+ - `endpoint`
404
+ - `resultType`
405
+ - `async`
406
+ - `inputSchema`
407
+
408
+ ### 4.2 Tool execution pipeline
409
+
410
+ Relevant class:
411
+
412
+ - `src/main/java/com/example/agent/application/service/ToolExecutionPipeline.java`
413
+
414
+ Main method:
415
+
416
+ - `execute(session, turnId, toolCallId, toolName, args, allowedTools)`
417
+
418
+ Execution steps:
419
+
420
+ 1. Create `ToolExecutionResult`
421
+ 2. Publish `TOOL_EXECUTION_STARTED`
422
+ 3. Validate that `toolName` is in the allowed tool set
423
+ 4. Validate required args from schema
424
+ 5. Build a `ToolCommand`
425
+ 6. Call `ToolExecutor.execute(...)`
426
+ 7. Normalize tool result into a standard payload
427
+ 8. Record an `AgentExecutedStep`
428
+ 9. If result is async:
429
+ - insert pending async job into `AsyncJobRepository`
430
+ - set `session.waitingExternalJobId`
431
+ - publish `WAITING_ASYNC_CALLBACK`
432
+ 10. Else:
433
+ - publish `TOOL_EXECUTION_FINISHED`
434
+
435
+ ### 4.3 Tool executor implementation
436
+
437
+ Relevant class:
438
+
439
+ - `src/main/java/com/example/agent/infrastructure/tool/ToolsApiToolExecutor.java`
440
+
441
+ This is the active `ToolExecutor`.
442
+
443
+ Behavior:
444
+
445
+ 1. Resolve tool metadata from `ToolRegistry`
446
+ 2. If `tools.base-url=local://tools`
447
+ - call `ToolsController` directly in-process
448
+ 3. Else
449
+ - call the configured HTTP tool endpoint
450
+ 4. Convert the controller response into `ToolResult`
451
+ 5. For `analyze_keywords_async`, optionally schedule auto callback in local test/demo mode
452
+
453
+ ### 4.4 Tool controller mapping
454
+
455
+ Relevant class:
456
+
457
+ - `src/main/java/com/example/agent/interfaces/rest/ToolsController.java`
458
+
459
+ Mappings:
460
+
461
+ - `sample_sessions_by_keywords`
462
+ - uses `SessionRepository.sampleSessionsByKeywords(...)`
463
+ - `query_customer_sessions_mysql`
464
+ - uses `CustomerSessionQueryService.query(...)`
465
+ - `query_sessions_handle`
466
+ - currently generates a mock handle id
467
+ - `analyze_keywords_async`
468
+ - currently generates a mock async job id
469
+ - `build_keyword_report`
470
+ - currently generates a mock report id and keyword list
471
+
472
+ Important note:
473
+
474
+ - The main planning/execution loop is real
475
+ - Some tools are still demo implementations, especially:
476
+ - `query_sessions_handle`
477
+ - `analyze_keywords_async`
478
+ - `build_keyword_report`
479
+
480
+ ---
481
+
482
+ ## 5. Async Callback and Resume Flow
483
+
484
+ Relevant classes:
485
+
486
+ - `src/main/java/com/example/agent/interfaces/rest/AgentRuntimeController.java`
487
+ - `src/main/java/com/example/agent/application/service/AgentTurnRunner.java`
488
+ - `src/main/java/com/example/agent/infrastructure/repository/AsyncJobRepository.java`
489
+
490
+ Flow:
491
+
492
+ 1. `analyze_keywords_async` returns `ASYNC_JOB`
493
+ 2. `ToolExecutionPipeline` stores a pending job in `async_job`
494
+ 3. Session status becomes `WAITING_ASYNC_CALLBACK`
495
+ 4. External system posts callback to:
496
+ - `POST /api/agent/tool-callback`
497
+ 5. `AgentRuntimeController.toolCallback(...)`:
498
+ - loads pending job by `externalJobId`
499
+ - publishes `TOOL_CALLBACK_RECEIVED`
500
+ - calls `AgentTurnRunner.appendToolObservation(...)`
501
+ - publishes `TOOL_EXECUTION_FINISHED`
502
+ - calls `AgentTurnRunner.resumeSession(...)`
503
+ 6. `appendToolObservation(...)` updates the existing `tool` message by `toolCallId`
504
+ 7. `resumeSession(...)` restarts the same turn loop with updated transcript state
505
+
506
+ This avoids the invalid message ordering bug where multiple unrelated `tool` messages followed a single assistant tool-call message.
507
+
508
+ ---
509
+
510
+ ## 6. DSL Compilation and Replay
511
+
512
+ ### 6.1 Compilation
513
+
514
+ Relevant class:
515
+
516
+ - `src/main/java/com/example/agent/application/service/DslCompilerService.java`
517
+
518
+ Compilation trigger:
519
+
520
+ - after a turn succeeds and `session.executedSteps` is not empty
521
+
522
+ Compilation logic:
523
+
524
+ 1. Create `ExecutableDslSnapshot`
525
+ 2. Copy session metadata
526
+ 3. Walk `session.executedSteps`
527
+ 4. Keep only successful steps
528
+ 5. Convert them to ordered `ExecutableDslStep` list
529
+ 6. Persist snapshot through:
530
+ - `DslInstanceRepository`
531
+ - `DslStepRepository`
532
+
533
+ ### 6.2 Replay
534
+
535
+ Relevant class:
536
+
537
+ - `src/main/java/com/example/agent/application/service/DslRuntimeService.java`
538
+
539
+ Replay logic:
540
+
541
+ 1. Load DSL instance and steps
542
+ 2. Create a replay-only `AgentSession`
543
+ 3. Execute each DSL step through `ToolExecutionPipeline`
544
+ 4. Persist replay execution result through `DslExecutionLogRepository`
545
+
546
+ Important point:
547
+
548
+ - DSL replay does not invoke the LLM
549
+ - It directly replays the persisted tool trajectory
550
+
551
+ ---
552
+
553
+ ## 7. Persistence Model
554
+
555
+ ### 7.1 Session and event persistence
556
+
557
+ Relevant repositories:
558
+
559
+ - `src/main/java/com/example/agent/infrastructure/repository/AgentSessionRepository.java`
560
+ - `src/main/java/com/example/agent/infrastructure/repository/AgentEventRepository.java`
561
+ - `src/main/java/com/example/agent/infrastructure/repository/AsyncJobRepository.java`
562
+
563
+ These persist:
564
+
565
+ - agent session snapshots
566
+ - event history
567
+ - pending async jobs
568
+
569
+ ### 7.2 DSL persistence
570
+
571
+ Relevant repositories:
572
+
573
+ - `src/main/java/com/example/agent/infrastructure/repository/DslInstanceRepository.java`
574
+ - `src/main/java/com/example/agent/infrastructure/repository/DslStepRepository.java`
575
+ - `src/main/java/com/example/agent/infrastructure/repository/DslExecutionLogRepository.java`
576
+
577
+ These persist:
578
+
579
+ - DSL metadata
580
+ - ordered replay steps
581
+ - replay logs
582
+
583
+ ### 7.3 Customer session data access
584
+
585
+ Relevant repositories:
586
+
587
+ - `src/main/java/com/example/agent/infrastructure/repository/CustomerSessionMysqlRepository.java`
588
+ - `src/main/java/com/example/agent/infrastructure/repository/SessionRepository.java`
589
+
590
+ Split:
591
+
592
+ - `CustomerSessionMysqlRepository`
593
+ - real MySQL customer session table
594
+ - `SessionRepository`
595
+ - current sample-session data source for `sample_sessions_by_keywords`
596
+
597
+ ---
598
+
599
+ ## 8. LLM Layer
600
+
601
+ Relevant classes:
602
+
603
+ - `src/main/java/com/example/agent/domain/port/LlmClient.java`
604
+ - `src/main/java/com/example/agent/infrastructure/llm/DummyLlmClient.java`
605
+
606
+ Despite the class name, `DummyLlmClient` is the real active OpenAI-compatible HTTP client.
607
+
608
+ It is configured by:
609
+
610
+ - `src/main/resources/application.yml`
611
+
612
+ Main config:
613
+
614
+ ```yaml
615
+ llm:
616
+ provider: deepseek
617
+ api-key: ${DEEPSEEK_API_KEY:}
618
+ base-url: https://api.deepseek.com/v1/chat/completions
619
+ model: deepseek-chat
620
+ routing:
621
+ enabled: true
622
+ ```
623
+
624
+ Qwen example:
625
+
626
+ ```yaml
627
+ llm:
628
+ provider: qwen
629
+ api-key: ${QWEN_API_KEY:}
630
+ base-url: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
631
+ model: qwen3-235b-a22b
632
+ routing:
633
+ enabled: true
634
+ ```
635
+
636
+ The same client is used for:
637
+
638
+ - skill routing
639
+ - main turn planning and tool selection
640
+
641
+ ---
642
+
643
+ ## 9. Current Call Graph
644
+
645
+ ### 9.1 High-level runtime graph
646
+
647
+ ```mermaid
648
+ flowchart TD
649
+ A["POST /api/agent/sessions"] --> B["AgentSessionController.createSession"]
650
+ B --> C["AgentTurnRunner.startSession"]
651
+ C --> D["SkillSelector.select"]
652
+ D --> E["LlmSkillRouter.route"]
653
+ D --> F["RuleBasedSkillSelector.select (fallback)"]
654
+ C --> G["PromptAssembler.buildInitialTranscript"]
655
+ C --> H["AgentSessionStore.save"]
656
+ C --> I["AgentTurnRunner.runTurn"]
657
+ I --> J["LlmClient.chat"]
658
+ J --> K{"tool_calls?"}
659
+ K -->|yes| L["ToolExecutionPipeline.execute"]
660
+ L --> M["ToolsApiToolExecutor.execute"]
661
+ M --> N["ToolsController / HTTP tools"]
662
+ L --> O["AsyncJobRepository.insertPendingAgentJob"]
663
+ L --> P["RuntimeEventBus.publish"]
664
+ O --> Q{"async?"}
665
+ Q -->|yes| R["WAITING_ASYNC_CALLBACK"]
666
+ Q -->|no| I
667
+ K -->|no| S["Assistant final answer"]
668
+ S --> T["DslCompilerService.compile"]
669
+ T --> U["DslInstanceRepository + DslStepRepository"]
670
+ ```
671
+
672
+ ### 9.2 Async callback graph
673
+
674
+ ```mermaid
675
+ flowchart TD
676
+ A["POST /api/agent/tool-callback"] --> B["AgentRuntimeController.toolCallback"]
677
+ B --> C["AsyncJobRepository.findByExternalJobId"]
678
+ C --> D["RuntimeEventBus.publish(TOOL_CALLBACK_RECEIVED)"]
679
+ D --> E["AgentTurnRunner.appendToolObservation"]
680
+ E --> F["Update existing tool message by toolCallId"]
681
+ F --> G["AgentTurnRunner.resumeSession"]
682
+ G --> H["AgentTurnRunner.runTurn"]
683
+ H --> I["LlmClient.chat with updated transcript"]
684
+ ```
685
+
686
+ ### 9.3 DSL replay graph
687
+
688
+ ```mermaid
689
+ flowchart TD
690
+ A["POST /api/agent/dsl/{dslId}/execute"] --> B["AgentSessionController.executeDsl"]
691
+ B --> C["DslRuntimeService.execute"]
692
+ C --> D["DslInstanceRepository.findById"]
693
+ C --> E["DslStepRepository.findByDslId"]
694
+ C --> F["Create replay AgentSession"]
695
+ C --> G["ToolExecutionPipeline.execute (for each step)"]
696
+ G --> H["ToolsApiToolExecutor.execute"]
697
+ C --> I["DslExecutionLogRepository.insert"]
698
+ ```
699
+
700
+ ---
701
+
702
+ ## 10. Class Responsibilities Summary
703
+
704
+ ### Runtime orchestration
705
+
706
+ - `AgentTurnRunner`
707
+ - owns the turn loop
708
+ - `SkillSelector`
709
+ - chooses skills
710
+ - `PromptAssembler`
711
+ - builds system prompt and initial transcript
712
+ - `ToolExecutionPipeline`
713
+ - validates, runs, normalizes, and records tool calls
714
+ - `RuntimeEventBus`
715
+ - emits and streams runtime events
716
+
717
+ ### Persistence
718
+
719
+ - `AgentSessionStore`
720
+ - serializes/deserializes `AgentSession`
721
+ - `PlanRuntimeService`
722
+ - returns session runtime snapshot
723
+ - `DslCompilerService`
724
+ - compiles successful sessions into DSL
725
+ - `DslRuntimeService`
726
+ - replays DSL
727
+
728
+ ### LLM and skill routing
729
+
730
+ - `DummyLlmClient`
731
+ - active OpenAI-compatible LLM HTTP client
732
+ - `LlmSkillRouter`
733
+ - asks the model to choose skills
734
+ - `RuleBasedSkillSelector`
735
+ - deterministic fallback
736
+ - `SkillRegistry`
737
+ - loads `SKILL.md`
738
+
739
+ ### Tool access
740
+
741
+ - `ToolRegistry`
742
+ - tool metadata and schema
743
+ - `ToolsApiToolExecutor`
744
+ - actual tool invocation bridge
745
+ - `ToolsController`
746
+ - local/internal tool endpoints
747
+ - `CustomerSessionQueryService`
748
+ - real MySQL customer session query service
749
+
750
+ ---
751
+
752
+ ## 11. Known Limitations
753
+
754
+ 1. Tool streaming is event-level, not token-level LLM streaming
755
+ 2. `query_sessions_handle`, `analyze_keywords_async`, and `build_keyword_report` are still mock-style business implementations
756
+ 3. `DummyLlmClient` is badly named for a real LLM client and should be renamed
757
+ 4. `sample_sessions_by_keywords` still uses the demo `session_table`, while `query_customer_sessions_mysql` uses the real MySQL table
758
+ 5. DSL replay only replays tools; it does not replay LLM decisions
759
+
760
+ ---
761
+
762
+ ## 12. Recommended Next Refactors
763
+
764
+ 1. Rename `DummyLlmClient` to `OpenAiCompatibleLlmClient`
765
+ 2. Replace mock tool implementations with real business services
766
+ 3. Unify `sample_sessions_by_keywords` onto the real MySQL or warehouse source
767
+ 4. Add token-level LLM streaming and expose it through SSE
768
+ 5. Add stronger tool policy controls, timeout policies, and retry policies per tool