Adding VoyageAI integration - #345

Open
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration
Open

Adding VoyageAI integration#345
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration

Conversation

@fzowl

@fzowlfzowl commented Nov 17, 2025

Copy link
Copy Markdown

Motivation and Context

VoyageAI provides state-of-the-art embeddings models

Description

Adding VoyageAI integration
MicrosoftDocs/semantic-kernel-docs#327

Contribution Checklist

@karianna

Copy link
Copy Markdown
Member

fzowl - test / build failures if you can PTAL?

@karianna

Copy link
Copy Markdown
Member

fzowl - seeing errors such as:

Error: Medium: Exception thrown in class com.microsoft.semantickernel.services.reranking.RerankResult at new com.microsoft.semantickernel.services.reranking.RerankResult(int, String, double) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. [com.microsoft.semantickernel.services.reranking.RerankResult, com.microsoft.semantickernel.services.reranking.RerankResult] At RerankResult.java:[line 21]At RerankResult.java:[line 21] CT_CONSTRUCTOR_THROW

fzowland others added 6 commits January 24, 2026 15:55
…CONSTRUCTOR_THROW
SpotBugs (bug-check profile) flagged CT_CONSTRUCTOR_THROW on classes whose
constructors throw validation exceptions while being non-final, which the
Java CI build treats as an error and fails merge-gatekeeper. Marking these
value/service classes final removes the finalizer-attack vector SpotBugs
warns about while preserving the existing constructor validation.
After merging upstream/main, the repository version advanced to
1.5.1-SNAPSHOT while the VoyageAI module still pinned the old
1.4.4-RC3-SNAPSHOT parent, which made the semantickernel-bom import
unresolvable and broke the reactor build.
The VoyageAIModels request/response DTOs expose their mutable list and
array fields directly through getters, setters and one constructor, which
SpotBugs (bug-check profile) flags as EI_EXPOSE_REP/EI_EXPOSE_REP2. These
are plain Jackson-mapped data holders, so annotate the individual accessors
with @SuppressFBWarnings, matching the pattern already used by the other
aiservices DTOs (e.g. HuggingFace, OpenAI, Google).
@fzowl

Copy link
Copy Markdown
Author

Thanks Martijn Verburg (@karianna) — pushed a fix. The bug-check profile was failing on SpotBugs in two stages:

  • CT_CONSTRUCTOR_THROW: RerankResult, the four VoyageAI service classes, and VoyageAIClient throw validation exceptions from their constructors. Marked those classes final so they can't be subclassed for a finalizer attack — the validation itself is unchanged. This was the failure that stopped the build at semantickernel-api.
  • EI_EXPOSE_REP / EI_EXPOSE_REP2: the VoyageAIModels Jackson DTO accessors expose mutable list/array fields, so I annotated the getters/setters/constructor with @SuppressFBWarnings, matching the existing HuggingFace/OpenAI DTOs. (This only surfaced once the first fix let the build reach the VoyageAI module.)

I also merged current main and bumped the module's parent from 1.4.4-RC3-SNAPSHOT to 1.5.1-SNAPSHOT — the old pin made the semantickernel-bom import unresolvable. A full ./mvnw -Pbug-check -Pcompile-jdk17 clean install reactor build is green locally now. PTAL.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@fzowl@karianna
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Adding VoyageAI integration - #345

Open
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration
Open

Adding VoyageAI integration#345
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration

Conversation

@fzowl

@fzowlfzowl commented Nov 17, 2025

Copy link
Copy Markdown

Motivation and Context

VoyageAI provides state-of-the-art embeddings models

Description

Adding VoyageAI integration
MicrosoftDocs/semantic-kernel-docs#327

Contribution Checklist

@karianna

Copy link
Copy Markdown
Member

fzowl - test / build failures if you can PTAL?

@karianna

Copy link
Copy Markdown
Member

fzowl - seeing errors such as:

Error: Medium: Exception thrown in class com.microsoft.semantickernel.services.reranking.RerankResult at new com.microsoft.semantickernel.services.reranking.RerankResult(int, String, double) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. [com.microsoft.semantickernel.services.reranking.RerankResult, com.microsoft.semantickernel.services.reranking.RerankResult] At RerankResult.java:[line 21]At RerankResult.java:[line 21] CT_CONSTRUCTOR_THROW

fzowland others added 6 commits January 24, 2026 15:55
…CONSTRUCTOR_THROW
SpotBugs (bug-check profile) flagged CT_CONSTRUCTOR_THROW on classes whose
constructors throw validation exceptions while being non-final, which the
Java CI build treats as an error and fails merge-gatekeeper. Marking these
value/service classes final removes the finalizer-attack vector SpotBugs
warns about while preserving the existing constructor validation.
After merging upstream/main, the repository version advanced to
1.5.1-SNAPSHOT while the VoyageAI module still pinned the old
1.4.4-RC3-SNAPSHOT parent, which made the semantickernel-bom import
unresolvable and broke the reactor build.
The VoyageAIModels request/response DTOs expose their mutable list and
array fields directly through getters, setters and one constructor, which
SpotBugs (bug-check profile) flags as EI_EXPOSE_REP/EI_EXPOSE_REP2. These
are plain Jackson-mapped data holders, so annotate the individual accessors
with @SuppressFBWarnings, matching the pattern already used by the other
aiservices DTOs (e.g. HuggingFace, OpenAI, Google).
@fzowl

Copy link
Copy Markdown
Author

Thanks Martijn Verburg (@karianna) — pushed a fix. The bug-check profile was failing on SpotBugs in two stages:

  • CT_CONSTRUCTOR_THROW: RerankResult, the four VoyageAI service classes, and VoyageAIClient throw validation exceptions from their constructors. Marked those classes final so they can't be subclassed for a finalizer attack — the validation itself is unchanged. This was the failure that stopped the build at semantickernel-api.
  • EI_EXPOSE_REP / EI_EXPOSE_REP2: the VoyageAIModels Jackson DTO accessors expose mutable list/array fields, so I annotated the getters/setters/constructor with @SuppressFBWarnings, matching the existing HuggingFace/OpenAI DTOs. (This only surfaced once the first fix let the build reach the VoyageAI module.)

I also merged current main and bumped the module's parent from 1.4.4-RC3-SNAPSHOT to 1.5.1-SNAPSHOT — the old pin made the semantickernel-bom import unresolvable. A full ./mvnw -Pbug-check -Pcompile-jdk17 clean install reactor build is green locally now. PTAL.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@fzowl@karianna
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Adding VoyageAI integration - #345

Open
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration
Open

Adding VoyageAI integration#345
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration

Conversation

@fzowl

@fzowlfzowl commented Nov 17, 2025

Copy link
Copy Markdown

Motivation and Context

VoyageAI provides state-of-the-art embeddings models

Description

Adding VoyageAI integration
MicrosoftDocs/semantic-kernel-docs#327

Contribution Checklist

@karianna

Copy link
Copy Markdown
Member

fzowl - test / build failures if you can PTAL?

@karianna

Copy link
Copy Markdown
Member

fzowl - seeing errors such as:

Error: Medium: Exception thrown in class com.microsoft.semantickernel.services.reranking.RerankResult at new com.microsoft.semantickernel.services.reranking.RerankResult(int, String, double) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. [com.microsoft.semantickernel.services.reranking.RerankResult, com.microsoft.semantickernel.services.reranking.RerankResult] At RerankResult.java:[line 21]At RerankResult.java:[line 21] CT_CONSTRUCTOR_THROW

fzowland others added 6 commits January 24, 2026 15:55
…CONSTRUCTOR_THROW
SpotBugs (bug-check profile) flagged CT_CONSTRUCTOR_THROW on classes whose
constructors throw validation exceptions while being non-final, which the
Java CI build treats as an error and fails merge-gatekeeper. Marking these
value/service classes final removes the finalizer-attack vector SpotBugs
warns about while preserving the existing constructor validation.
After merging upstream/main, the repository version advanced to
1.5.1-SNAPSHOT while the VoyageAI module still pinned the old
1.4.4-RC3-SNAPSHOT parent, which made the semantickernel-bom import
unresolvable and broke the reactor build.
The VoyageAIModels request/response DTOs expose their mutable list and
array fields directly through getters, setters and one constructor, which
SpotBugs (bug-check profile) flags as EI_EXPOSE_REP/EI_EXPOSE_REP2. These
are plain Jackson-mapped data holders, so annotate the individual accessors
with @SuppressFBWarnings, matching the pattern already used by the other
aiservices DTOs (e.g. HuggingFace, OpenAI, Google).
@fzowl

Copy link
Copy Markdown
Author

Thanks Martijn Verburg (@karianna) — pushed a fix. The bug-check profile was failing on SpotBugs in two stages:

  • CT_CONSTRUCTOR_THROW: RerankResult, the four VoyageAI service classes, and VoyageAIClient throw validation exceptions from their constructors. Marked those classes final so they can't be subclassed for a finalizer attack — the validation itself is unchanged. This was the failure that stopped the build at semantickernel-api.
  • EI_EXPOSE_REP / EI_EXPOSE_REP2: the VoyageAIModels Jackson DTO accessors expose mutable list/array fields, so I annotated the getters/setters/constructor with @SuppressFBWarnings, matching the existing HuggingFace/OpenAI DTOs. (This only surfaced once the first fix let the build reach the VoyageAI module.)

I also merged current main and bumped the module's parent from 1.4.4-RC3-SNAPSHOT to 1.5.1-SNAPSHOT — the old pin made the semantickernel-bom import unresolvable. A full ./mvnw -Pbug-check -Pcompile-jdk17 clean install reactor build is green locally now. PTAL.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@fzowl@karianna
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Adding VoyageAI integration - #345

Open
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration
Open

Adding VoyageAI integration#345
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration

Conversation

@fzowl

@fzowlfzowl commented Nov 17, 2025

Copy link
Copy Markdown

Motivation and Context

VoyageAI provides state-of-the-art embeddings models

Description

Adding VoyageAI integration
MicrosoftDocs/semantic-kernel-docs#327

Contribution Checklist

@karianna

Copy link
Copy Markdown
Member

fzowl - test / build failures if you can PTAL?

@karianna

Copy link
Copy Markdown
Member

fzowl - seeing errors such as:

Error: Medium: Exception thrown in class com.microsoft.semantickernel.services.reranking.RerankResult at new com.microsoft.semantickernel.services.reranking.RerankResult(int, String, double) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. [com.microsoft.semantickernel.services.reranking.RerankResult, com.microsoft.semantickernel.services.reranking.RerankResult] At RerankResult.java:[line 21]At RerankResult.java:[line 21] CT_CONSTRUCTOR_THROW

fzowland others added 6 commits January 24, 2026 15:55
…CONSTRUCTOR_THROW
SpotBugs (bug-check profile) flagged CT_CONSTRUCTOR_THROW on classes whose
constructors throw validation exceptions while being non-final, which the
Java CI build treats as an error and fails merge-gatekeeper. Marking these
value/service classes final removes the finalizer-attack vector SpotBugs
warns about while preserving the existing constructor validation.
After merging upstream/main, the repository version advanced to
1.5.1-SNAPSHOT while the VoyageAI module still pinned the old
1.4.4-RC3-SNAPSHOT parent, which made the semantickernel-bom import
unresolvable and broke the reactor build.
The VoyageAIModels request/response DTOs expose their mutable list and
array fields directly through getters, setters and one constructor, which
SpotBugs (bug-check profile) flags as EI_EXPOSE_REP/EI_EXPOSE_REP2. These
are plain Jackson-mapped data holders, so annotate the individual accessors
with @SuppressFBWarnings, matching the pattern already used by the other
aiservices DTOs (e.g. HuggingFace, OpenAI, Google).
@fzowl

Copy link
Copy Markdown
Author

Thanks Martijn Verburg (@karianna) — pushed a fix. The bug-check profile was failing on SpotBugs in two stages:

  • CT_CONSTRUCTOR_THROW: RerankResult, the four VoyageAI service classes, and VoyageAIClient throw validation exceptions from their constructors. Marked those classes final so they can't be subclassed for a finalizer attack — the validation itself is unchanged. This was the failure that stopped the build at semantickernel-api.
  • EI_EXPOSE_REP / EI_EXPOSE_REP2: the VoyageAIModels Jackson DTO accessors expose mutable list/array fields, so I annotated the getters/setters/constructor with @SuppressFBWarnings, matching the existing HuggingFace/OpenAI DTOs. (This only surfaced once the first fix let the build reach the VoyageAI module.)

I also merged current main and bumped the module's parent from 1.4.4-RC3-SNAPSHOT to 1.5.1-SNAPSHOT — the old pin made the semantickernel-bom import unresolvable. A full ./mvnw -Pbug-check -Pcompile-jdk17 clean install reactor build is green locally now. PTAL.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@fzowl@karianna
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Adding VoyageAI integration - #345

Open
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration
Open

Adding VoyageAI integration#345
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration

Conversation

@fzowl

@fzowlfzowl commented Nov 17, 2025

Copy link
Copy Markdown

Motivation and Context

VoyageAI provides state-of-the-art embeddings models

Description

Adding VoyageAI integration
MicrosoftDocs/semantic-kernel-docs#327

Contribution Checklist

@karianna

Copy link
Copy Markdown
Member

fzowl - test / build failures if you can PTAL?

@karianna

Copy link
Copy Markdown
Member

fzowl - seeing errors such as:

Error: Medium: Exception thrown in class com.microsoft.semantickernel.services.reranking.RerankResult at new com.microsoft.semantickernel.services.reranking.RerankResult(int, String, double) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. [com.microsoft.semantickernel.services.reranking.RerankResult, com.microsoft.semantickernel.services.reranking.RerankResult] At RerankResult.java:[line 21]At RerankResult.java:[line 21] CT_CONSTRUCTOR_THROW

fzowland others added 6 commits January 24, 2026 15:55
…CONSTRUCTOR_THROW
SpotBugs (bug-check profile) flagged CT_CONSTRUCTOR_THROW on classes whose
constructors throw validation exceptions while being non-final, which the
Java CI build treats as an error and fails merge-gatekeeper. Marking these
value/service classes final removes the finalizer-attack vector SpotBugs
warns about while preserving the existing constructor validation.
After merging upstream/main, the repository version advanced to
1.5.1-SNAPSHOT while the VoyageAI module still pinned the old
1.4.4-RC3-SNAPSHOT parent, which made the semantickernel-bom import
unresolvable and broke the reactor build.
The VoyageAIModels request/response DTOs expose their mutable list and
array fields directly through getters, setters and one constructor, which
SpotBugs (bug-check profile) flags as EI_EXPOSE_REP/EI_EXPOSE_REP2. These
are plain Jackson-mapped data holders, so annotate the individual accessors
with @SuppressFBWarnings, matching the pattern already used by the other
aiservices DTOs (e.g. HuggingFace, OpenAI, Google).
@fzowl

Copy link
Copy Markdown
Author

Thanks Martijn Verburg (@karianna) — pushed a fix. The bug-check profile was failing on SpotBugs in two stages:

  • CT_CONSTRUCTOR_THROW: RerankResult, the four VoyageAI service classes, and VoyageAIClient throw validation exceptions from their constructors. Marked those classes final so they can't be subclassed for a finalizer attack — the validation itself is unchanged. This was the failure that stopped the build at semantickernel-api.
  • EI_EXPOSE_REP / EI_EXPOSE_REP2: the VoyageAIModels Jackson DTO accessors expose mutable list/array fields, so I annotated the getters/setters/constructor with @SuppressFBWarnings, matching the existing HuggingFace/OpenAI DTOs. (This only surfaced once the first fix let the build reach the VoyageAI module.)

I also merged current main and bumped the module's parent from 1.4.4-RC3-SNAPSHOT to 1.5.1-SNAPSHOT — the old pin made the semantickernel-bom import unresolvable. A full ./mvnw -Pbug-check -Pcompile-jdk17 clean install reactor build is green locally now. PTAL.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@fzowl@karianna
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Adding VoyageAI integration - #345

Open
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration
Open

Adding VoyageAI integration#345
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration

Conversation

@fzowl

@fzowlfzowl commented Nov 17, 2025

Copy link
Copy Markdown

Motivation and Context

VoyageAI provides state-of-the-art embeddings models

Description

Adding VoyageAI integration
MicrosoftDocs/semantic-kernel-docs#327

Contribution Checklist

@karianna

Copy link
Copy Markdown
Member

fzowl - test / build failures if you can PTAL?

@karianna

Copy link
Copy Markdown
Member

fzowl - seeing errors such as:

Error: Medium: Exception thrown in class com.microsoft.semantickernel.services.reranking.RerankResult at new com.microsoft.semantickernel.services.reranking.RerankResult(int, String, double) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. [com.microsoft.semantickernel.services.reranking.RerankResult, com.microsoft.semantickernel.services.reranking.RerankResult] At RerankResult.java:[line 21]At RerankResult.java:[line 21] CT_CONSTRUCTOR_THROW

fzowland others added 6 commits January 24, 2026 15:55
…CONSTRUCTOR_THROW
SpotBugs (bug-check profile) flagged CT_CONSTRUCTOR_THROW on classes whose
constructors throw validation exceptions while being non-final, which the
Java CI build treats as an error and fails merge-gatekeeper. Marking these
value/service classes final removes the finalizer-attack vector SpotBugs
warns about while preserving the existing constructor validation.
After merging upstream/main, the repository version advanced to
1.5.1-SNAPSHOT while the VoyageAI module still pinned the old
1.4.4-RC3-SNAPSHOT parent, which made the semantickernel-bom import
unresolvable and broke the reactor build.
The VoyageAIModels request/response DTOs expose their mutable list and
array fields directly through getters, setters and one constructor, which
SpotBugs (bug-check profile) flags as EI_EXPOSE_REP/EI_EXPOSE_REP2. These
are plain Jackson-mapped data holders, so annotate the individual accessors
with @SuppressFBWarnings, matching the pattern already used by the other
aiservices DTOs (e.g. HuggingFace, OpenAI, Google).
@fzowl

Copy link
Copy Markdown
Author

Thanks Martijn Verburg (@karianna) — pushed a fix. The bug-check profile was failing on SpotBugs in two stages:

  • CT_CONSTRUCTOR_THROW: RerankResult, the four VoyageAI service classes, and VoyageAIClient throw validation exceptions from their constructors. Marked those classes final so they can't be subclassed for a finalizer attack — the validation itself is unchanged. This was the failure that stopped the build at semantickernel-api.
  • EI_EXPOSE_REP / EI_EXPOSE_REP2: the VoyageAIModels Jackson DTO accessors expose mutable list/array fields, so I annotated the getters/setters/constructor with @SuppressFBWarnings, matching the existing HuggingFace/OpenAI DTOs. (This only surfaced once the first fix let the build reach the VoyageAI module.)

I also merged current main and bumped the module's parent from 1.4.4-RC3-SNAPSHOT to 1.5.1-SNAPSHOT — the old pin made the semantickernel-bom import unresolvable. A full ./mvnw -Pbug-check -Pcompile-jdk17 clean install reactor build is green locally now. PTAL.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@fzowl@karianna
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Adding VoyageAI integration - #345

Open
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration
Open

Adding VoyageAI integration#345
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration

Conversation

@fzowl

@fzowlfzowl commented Nov 17, 2025

Copy link
Copy Markdown

Motivation and Context

VoyageAI provides state-of-the-art embeddings models

Description

Adding VoyageAI integration
MicrosoftDocs/semantic-kernel-docs#327

Contribution Checklist

@karianna

Copy link
Copy Markdown
Member

fzowl - test / build failures if you can PTAL?

@karianna

Copy link
Copy Markdown
Member

fzowl - seeing errors such as:

Error: Medium: Exception thrown in class com.microsoft.semantickernel.services.reranking.RerankResult at new com.microsoft.semantickernel.services.reranking.RerankResult(int, String, double) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. [com.microsoft.semantickernel.services.reranking.RerankResult, com.microsoft.semantickernel.services.reranking.RerankResult] At RerankResult.java:[line 21]At RerankResult.java:[line 21] CT_CONSTRUCTOR_THROW

fzowland others added 6 commits January 24, 2026 15:55
…CONSTRUCTOR_THROW
SpotBugs (bug-check profile) flagged CT_CONSTRUCTOR_THROW on classes whose
constructors throw validation exceptions while being non-final, which the
Java CI build treats as an error and fails merge-gatekeeper. Marking these
value/service classes final removes the finalizer-attack vector SpotBugs
warns about while preserving the existing constructor validation.
After merging upstream/main, the repository version advanced to
1.5.1-SNAPSHOT while the VoyageAI module still pinned the old
1.4.4-RC3-SNAPSHOT parent, which made the semantickernel-bom import
unresolvable and broke the reactor build.
The VoyageAIModels request/response DTOs expose their mutable list and
array fields directly through getters, setters and one constructor, which
SpotBugs (bug-check profile) flags as EI_EXPOSE_REP/EI_EXPOSE_REP2. These
are plain Jackson-mapped data holders, so annotate the individual accessors
with @SuppressFBWarnings, matching the pattern already used by the other
aiservices DTOs (e.g. HuggingFace, OpenAI, Google).
@fzowl

Copy link
Copy Markdown
Author

Thanks Martijn Verburg (@karianna) — pushed a fix. The bug-check profile was failing on SpotBugs in two stages:

  • CT_CONSTRUCTOR_THROW: RerankResult, the four VoyageAI service classes, and VoyageAIClient throw validation exceptions from their constructors. Marked those classes final so they can't be subclassed for a finalizer attack — the validation itself is unchanged. This was the failure that stopped the build at semantickernel-api.
  • EI_EXPOSE_REP / EI_EXPOSE_REP2: the VoyageAIModels Jackson DTO accessors expose mutable list/array fields, so I annotated the getters/setters/constructor with @SuppressFBWarnings, matching the existing HuggingFace/OpenAI DTOs. (This only surfaced once the first fix let the build reach the VoyageAI module.)

I also merged current main and bumped the module's parent from 1.4.4-RC3-SNAPSHOT to 1.5.1-SNAPSHOT — the old pin made the semantickernel-bom import unresolvable. A full ./mvnw -Pbug-check -Pcompile-jdk17 clean install reactor build is green locally now. PTAL.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@fzowl@karianna
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Adding VoyageAI integration - #345

Open
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration
Open

Adding VoyageAI integration#345
fzowl wants to merge 9 commits into
microsoft:mainfrom
fzowl:voyageai_integration

Conversation

@fzowl

@fzowlfzowl commented Nov 17, 2025

Copy link
Copy Markdown

Motivation and Context

VoyageAI provides state-of-the-art embeddings models

Description

Adding VoyageAI integration
MicrosoftDocs/semantic-kernel-docs#327

Contribution Checklist

@karianna

Copy link
Copy Markdown
Member

fzowl - test / build failures if you can PTAL?

@karianna

Copy link
Copy Markdown
Member

fzowl - seeing errors such as:

Error: Medium: Exception thrown in class com.microsoft.semantickernel.services.reranking.RerankResult at new com.microsoft.semantickernel.services.reranking.RerankResult(int, String, double) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. [com.microsoft.semantickernel.services.reranking.RerankResult, com.microsoft.semantickernel.services.reranking.RerankResult] At RerankResult.java:[line 21]At RerankResult.java:[line 21] CT_CONSTRUCTOR_THROW

fzowland others added 6 commits January 24, 2026 15:55
…CONSTRUCTOR_THROW
SpotBugs (bug-check profile) flagged CT_CONSTRUCTOR_THROW on classes whose
constructors throw validation exceptions while being non-final, which the
Java CI build treats as an error and fails merge-gatekeeper. Marking these
value/service classes final removes the finalizer-attack vector SpotBugs
warns about while preserving the existing constructor validation.
After merging upstream/main, the repository version advanced to
1.5.1-SNAPSHOT while the VoyageAI module still pinned the old
1.4.4-RC3-SNAPSHOT parent, which made the semantickernel-bom import
unresolvable and broke the reactor build.
The VoyageAIModels request/response DTOs expose their mutable list and
array fields directly through getters, setters and one constructor, which
SpotBugs (bug-check profile) flags as EI_EXPOSE_REP/EI_EXPOSE_REP2. These
are plain Jackson-mapped data holders, so annotate the individual accessors
with @SuppressFBWarnings, matching the pattern already used by the other
aiservices DTOs (e.g. HuggingFace, OpenAI, Google).
@fzowl

Copy link
Copy Markdown
Author

Thanks Martijn Verburg (@karianna) — pushed a fix. The bug-check profile was failing on SpotBugs in two stages:

  • CT_CONSTRUCTOR_THROW: RerankResult, the four VoyageAI service classes, and VoyageAIClient throw validation exceptions from their constructors. Marked those classes final so they can't be subclassed for a finalizer attack — the validation itself is unchanged. This was the failure that stopped the build at semantickernel-api.
  • EI_EXPOSE_REP / EI_EXPOSE_REP2: the VoyageAIModels Jackson DTO accessors expose mutable list/array fields, so I annotated the getters/setters/constructor with @SuppressFBWarnings, matching the existing HuggingFace/OpenAI DTOs. (This only surfaced once the first fix let the build reach the VoyageAI module.)

I also merged current main and bumped the module's parent from 1.4.4-RC3-SNAPSHOT to 1.5.1-SNAPSHOT — the old pin made the semantickernel-bom import unresolvable. A full ./mvnw -Pbug-check -Pcompile-jdk17 clean install reactor build is green locally now. PTAL.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@fzowl@karianna