Branch: refs/heads/main Home: https://github.com/xwiki-contrib/ai-llm Commit: 00920e20a9947a2e5b82e53e88f0e2f07a78ed73 https://github.com/xwiki-contrib/ai-llm/commit/00920e20a9947a2e5b82e53e88f0e... Author: Paul Pantiru <[email protected]> Date: 2026-05-19 (Tue, 19 May 2026) Changed paths: M application-ai-llm-index/application-ai-llm-index-api/pom.xml A application-ai-llm-index/application-ai-llm-index-api/src/main/java/org/xwiki/contrib/llm/internal/mcp/MCPListCollectionsTool.java A application-ai-llm-index/application-ai-llm-index-api/src/main/java/org/xwiki/contrib/llm/internal/mcp/MCPSearchCollectionsTool.java M application-ai-llm-index/application-ai-llm-index-api/src/main/resources/META-INF/components.txt A application-ai-llm-index/application-ai-llm-index-api/src/test/java/org/xwiki/contrib/llm/internal/mcp/MCPListCollectionsToolTest.java A application-ai-llm-index/application-ai-llm-index-api/src/test/java/org/xwiki/contrib/llm/internal/mcp/MCPSearchCollectionsToolTest.java A application-ai-llm-mcp/application-ai-llm-mcp-api/pom.xml A application-ai-llm-mcp/application-ai-llm-mcp-api/src/main/java/org/xwiki/contrib/llm/mcp/MCPTool.java M application-ai-llm-mcp/application-ai-llm-mcp-server/pom.xml A application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPConfigChangeEventListener.java A application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPServerConfiguration.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/XWikiMCPServerManager.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/resources/META-INF/components.txt A application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPConfigChangeEventListenerTest.java A application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPServerConfigurationTest.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/XWikiMCPServerManagerTest.java A application-ai-llm-mcp/application-ai-llm-mcp-ui/pom.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/MCPServerConfig.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/MCPServerConfigClass.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/MCPServerConfigSheet.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/WebHome.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/WebHome.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/WebPreferences.xml M application-ai-llm-mcp/pom.xml Log Message: ----------- LLMAI-136: Dependency inversion * Introduce an MCP API module exposing MCPTool so apps can contribute tools without coupling the MCP server to their implementation modules. * Move the index MCP tools into index-api, wire them as XWiki components, and let the MCP server discover enabled tools dynamically from the context component manager (prep for per-tool configs). * Add MCP server admin configuration for the advertised server name and instructions, including live rebuilds on config document changes. * Bumpted MCP SDK dependencies to the latest steble - 1.1.2 * Renamed xwiki_search tool to search_collections to avoid confusion with the upcoming search_pages (standard solr search tool) Commit: c0f2e25f8c78c48bc3c8f09144ac9d3317d05f6d https://github.com/xwiki-contrib/ai-llm/commit/c0f2e25f8c78c48bc3c8f09144ac9... Author: Paul Pantiru <[email protected]> Date: 2026-05-19 (Tue, 19 May 2026) Changed paths: M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPConfigChangeEventListener.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPConfigChangeEventListenerTest.java Log Message: ----------- LLMAI-136: Fix MCP config save rebuild listener * Compare saved config documents by local document reference instead of serialized strings, and read the document reference directly from document events when available. This makes MCP server metadata rebuild immediately after saving the config page. Commit: 24fc1716946922f47553b226271629e6d91757f0 https://github.com/xwiki-contrib/ai-llm/commit/24fc1716946922f47553b22627162... Author: Paul Pantiru <[email protected]> Date: 2026-05-19 (Tue, 19 May 2026) Changed paths: M application-ai-llm-index/application-ai-llm-index-api/src/main/java/org/xwiki/contrib/llm/internal/mcp/MCPListCollectionsTool.java M application-ai-llm-index/application-ai-llm-index-api/src/test/java/org/xwiki/contrib/llm/internal/mcp/MCPListCollectionsToolTest.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPConfigChangeEventListener.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPServerConfiguration.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/XWikiMCPServerManager.java M application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/MCPServerConfig.xml M application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/MCPServerConfigClass.xml M application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/WebPreferences.xml Log Message: ----------- LLMAI-136: Additional improvements * dispose() now releases the write lock before blocking on closeGracefully(), consistent with the rebuildServer() pattern * Clarified the server name null/blank guard in rebuildServer(): simplified to isBlank() and updated the comment to explain it also protects against Mockito mocks returning null by default during tests * list_collections returns "No collections found." instead of an empty string when the user has access to no collections, matching search_collections behavior * @since tags corrected to 0.9 on MCPServerConfiguration and MCPConfigChangeEventListener * Arrays.asList replaced with List.of in MCPServerConfiguration Commit: ba02bd2f7ccb1dfa17aa81a0748a10b4a4d6d6f2 https://github.com/xwiki-contrib/ai-llm/commit/ba02bd2f7ccb1dfa17aa81a0748a1... Author: Paul Pantiru <[email protected]> Date: 2026-05-19 (Tue, 19 May 2026) Changed paths: M pom.xml Log Message: ----------- [Misc] Bump the managed version to satisfy RequireUpperBoundDeps Commit: 0d3c5019fb297ddb771dbbc13b43d674cf78ce09 https://github.com/xwiki-contrib/ai-llm/commit/0d3c5019fb297ddb771dbbc13b43d... Author: Paul Pantiru <[email protected]> Date: 2026-05-21 (Thu, 21 May 2026) Changed paths: M application-ai-llm-index/application-ai-llm-index-api/src/main/java/org/xwiki/contrib/llm/internal/mcp/MCPListCollectionsTool.java M application-ai-llm-index/application-ai-llm-index-api/src/main/java/org/xwiki/contrib/llm/internal/mcp/MCPSearchCollectionsTool.java M application-ai-llm-index/application-ai-llm-index-api/src/test/java/org/xwiki/contrib/llm/internal/mcp/MCPListCollectionsToolTest.java M application-ai-llm-index/application-ai-llm-index-api/src/test/java/org/xwiki/contrib/llm/internal/mcp/MCPSearchCollectionsToolTest.java M application-ai-llm-mcp/application-ai-llm-mcp-api/src/main/java/org/xwiki/contrib/llm/mcp/MCPTool.java M application-ai-llm-mcp/application-ai-llm-mcp-server/pom.xml M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPConfigChangeEventListener.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/XWikiMCPServerManager.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPConfigChangeEventListenerTest.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/XWikiMCPServerManagerTest.java M application-ai-llm-mcp/application-ai-llm-mcp-ui/pom.xml M application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/MCPServerConfig.xml M application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/MCPServerConfigClass.xml M application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/MCPServerConfigSheet.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/Translations.xml M application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/WebHome.xml M application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/WebHome.xml M application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/WebPreferences.xml Log Message: ----------- LLMAI-136: Requested chages * Removed getId() — superfluous since the component hint already identifies the tool * Made isEnabled() a default method returning true — removes boilerplate from every tool implementation; tools override only if they need custom logic * Removed McpTransportContext from execute() — no tool used it; XWiki's ExecutionContext (propagated via the Reactor scheduler hook) provides everything tools need * Replaced ReentrantReadWriteLock with AtomicReference<HttpServletStatelessServerTransport> — simpler and correct: the transport is swapped atomically, closeGracefully() drains any in-flight requests on the old server before discarding it; handleRequest is now a single line * Removed @Named("context") from ComponentManager — plain injection gives farm scope, keeping tools and server in the same classloader; wiki-scoped tools are explicitly not supported * Warning logs now use ExceptionUtils.getRootCauseMessage(e) at WARN + full exception at DEBUG * getServerVersion() uses StringUtils.isNotBlank() and has comments explaining which source (MANIFEST.MF vs pom.properties) works in which environment * Injected WikiDescriptorManager and compares a full DocumentReference (wiki included) so only a change to the config doc on the main wiki triggers a rebuild — sub-wiki saves are ignored * Exported full WebPreference page * WebHome.xml — fixed the admin panel link * MCPServerConfigSheet.xml — field labels now use getTranslatedPrettyName() and getHint() from PropertyClass instead of hardcoded English strings * mcp-ui/pom.xml — extension name → MCP Server (BETA); added wiki:xwiki namespace so it can only be installed on the main wiki * mcp-server/pom.xml — extension name → MCP Server - Core Module (BETA) to signal it's a backend dependency * Removed the useless initializeWithNoToolsDoesNotThrow test (covered implicitly by every other test) * Added verify(disabledTool, never()).getToolDefinition() to the disabled-tool rebuild test * Added WikiDescriptorManager mock and a processLocalEventIgnoresSubWikiConfigDoc test to MCPConfigChangeEventListenerTest * Removed getIdReturnsStableToolId tests (method no longer exists on the interface) * Updated all execute() call sites to remove the McpTransportContext argument * Deferred: own wrapper types for McpSchema.Tool, McpSchema.CallToolRequest, and McpSchema.CallToolResult; deeper test improvements (mocking McpServer.sync statically) Commit: f7f3432ee62cadb8c3a9a9c76da379183e76daed https://github.com/xwiki-contrib/ai-llm/commit/f7f3432ee62cadb8c3a9a9c76da37... Author: Paul Pantiru <[email protected]> Date: 2026-05-22 (Fri, 22 May 2026) Changed paths: M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/XWikiMCPServerManager.java Log Message: ----------- LLMAI-136: Comment cleanup Commit: e42d1eb0cdfb0d428605a5fa71ae04eb1391e4bf https://github.com/xwiki-contrib/ai-llm/commit/e42d1eb0cdfb0d428605a5fa71ae0... Author: Paul Pantiru <[email protected]> Date: 2026-05-22 (Fri, 22 May 2026) Changed paths: M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPConfigChangeEventListener.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/XWikiMCPServerManager.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPConfigChangeEventListenerTest.java Log Message: ----------- LLMAI-136: Drop second version source entirely because it's not useful, and fix the envent listener Commit: 291b0493a1aa3c72f80ca0616b66372845ea664c https://github.com/xwiki-contrib/ai-llm/commit/291b0493a1aa3c72f80ca0616b663... Author: Paul Pantiru <[email protected]> Date: 2026-05-22 (Fri, 22 May 2026) Changed paths: M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/XWikiMCPServerManagerTest.java Log Message: ----------- LLMAI-136: Follow-up test improvement * Strengthen XWikiMCPServerManagerTest by intercepting McpServer.sync statically (Mockito 5 MockedStatic): verify server name, instructions, and tool definitions forwarded correctly to the SDK; * Verify disabled tools are not registered; verify closeGracefully() is called on the replaced server to prove no resource leak on repeated rebuilds Commit: 56453235b3cc650da38680492136899a00d9ca13 https://github.com/xwiki-contrib/ai-llm/commit/56453235b3cc650da386804921368... Author: Paul Panțiru <[email protected]> Date: 2026-05-26 (Tue, 26 May 2026) Changed paths: M application-ai-llm-index/application-ai-llm-index-api/pom.xml A application-ai-llm-index/application-ai-llm-index-api/src/main/java/org/xwiki/contrib/llm/internal/mcp/MCPListCollectionsTool.java A application-ai-llm-index/application-ai-llm-index-api/src/main/java/org/xwiki/contrib/llm/internal/mcp/MCPSearchCollectionsTool.java M application-ai-llm-index/application-ai-llm-index-api/src/main/resources/META-INF/components.txt A application-ai-llm-index/application-ai-llm-index-api/src/test/java/org/xwiki/contrib/llm/internal/mcp/MCPListCollectionsToolTest.java A application-ai-llm-index/application-ai-llm-index-api/src/test/java/org/xwiki/contrib/llm/internal/mcp/MCPSearchCollectionsToolTest.java A application-ai-llm-mcp/application-ai-llm-mcp-api/pom.xml A application-ai-llm-mcp/application-ai-llm-mcp-api/src/main/java/org/xwiki/contrib/llm/mcp/MCPTool.java M application-ai-llm-mcp/application-ai-llm-mcp-server/pom.xml A application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPConfigChangeEventListener.java A application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPServerConfiguration.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/XWikiMCPServerManager.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/resources/META-INF/components.txt A application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPConfigChangeEventListenerTest.java A application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPServerConfigurationTest.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/XWikiMCPServerManagerTest.java A application-ai-llm-mcp/application-ai-llm-mcp-ui/pom.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/MCPServerConfig.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/MCPServerConfigClass.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/MCPServerConfigSheet.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/Translations.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/WebHome.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/WebHome.xml A application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/WebPreferences.xml M application-ai-llm-mcp/pom.xml M pom.xml Log Message: ----------- Merge pull request #5 from IdentityOverflow/main LLMAI-136: Dependency inversion and dynamic tool registration Compare: https://github.com/xwiki-contrib/ai-llm/compare/2282126b0656...56453235b3cc To unsubscribe from these emails, change your notification settings at https://github.com/xwiki-contrib/ai-llm/settings/notifications