mattcasters opened a new pull request, #8342: URL: https://github.com/apache/hop/pull/8342
Fixes #8330 Adds a pluggable, default-off AI advisory system and named AI Provider metadata so pipeline/workflow advice (and later hopper-edw modelers) can share one credential store without putting langchain4j in hop-core. ### What this delivers **SPI in hop-core (no langchain4j, no SWT)** - `IAiAdvisor` / `@AiAdvisorPlugin` with free-form **location** strings (`pipeline-graph`, `workflow-graph`, `perspective`, plus anything hopper-edw registers) - `IAiProvider` / `@AiProviderPlugin` for OpenAI-compatible, Anthropic, Ollama, Hugging Face, Mistral, Grok, Gemini - `HopGuiAiAdvisorOpenSession` extension point so other plugins can open a session without depending on hop-ui **`hop-tech-ai` plugin (removable)** - Named **AI Provider** metadata (Test button, secrets as passwords / variables) - Configuration tab: enable AI (off by default) and default provider name - Pipeline and workflow advisors: graph context, error diagnosis, optional `hop_proposals` apply with undo - Advisor perspective, floating window from the pipeline/workflow toolbar, shared session store - Sharing panel: share nothing extra by default; collapsible line of what will be sent; optional metadata picker - Provider `MetaSelectionLine` so a provider can be created from the advisor - Completions go through Language Model Chat (`classLoaderGroup = hop-ai`) **Language Model Chat** - Optional named AI Provider overlay (reflection, no Maven cycle) - Built on langchain4j 1.20.0 from #8341 - Jackson not shipped in the plugin lib (avoids `ObjectMapper` LinkageError) - JDK HTTP client constructed directly (avoids ServiceLoader “not a subtype” across classloaders) - Hugging Face dedicated endpoint URL may be entered as Base URL when Model name is empty **Privacy / docs** - XML/JSON secret redaction before prompts - User docs: secrets and project variables, minimum-send checkboxes, screenshots - Developer docs: how to add an advisor plugin at a new location ### GUI notes - Ctrl/Cmd+Enter sends (GTK debounce so it does not immediately cancel) - Toolbar Help opens a **floating** window so the pipeline/workflow stays visible - Failed turns stay out of conversation history (Anthropic role alternation) - Errors (including `Error` subclasses) clear “Waiting for the model…” instead of hanging ------------------------ Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily: - [x] Run `mvn clean install apache-rat:check` to make sure basic checks pass. A more thorough check will be performed on your pull request automatically. - [x] If you have a group of commits related to the same change, please squash your commits into one and force push your branch using `git rebase -i`. - [x] Mention the appropriate issue in your description (for example: `addresses #123`), if applicable. To make clear that you license your contribution under the [Apache License Version 2.0, January 2004](http://www.apache.org/licenses/LICENSE-2.0) you have to acknowledge this by using the following check-box. - [x] I hereby declare this contribution to be licensed under the [Apache License Version 2.0, January 2004](http://www.apache.org/licenses/LICENSE-2.0) - [ ] In any other case, please file an [Apache Individual Contributor License Agreement](https://www.apache.org/licenses/icla.pdf). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
