feat: embeddings path and 0.9.0 first stable - #121
Merged
Merged
Conversation
Gateway autoloads POST /v1/embeddings, BYOM import omits chat templates for embedding folders, and the sidecar exposes embedTexts. Full RAG stays after 1.0; this is the 1.0.1 companion path. The native scanner discovers a Name-only inference_model.json. # Conflicts: # sidecar/gateway.js # sidecar/gateway.test.ts
joelst
force-pushed
the
feat/embeddings-foundation
branch
from
September 18, 2026 08:17
7653acc to
8ce434c
Compare
Skip 0.8.0. Waves 1-9, including the embeddings path, land as 0.9.0 so the in-app updater can be proven from 0.7.0 evaluation. 1.0.0 is a later stable after that upgrade and bugfixes.
12 tasks
Require a passing /v1/models envelope before Flint-verified, round-trip listed model ids, bound self-test fetches, and abort disconnect only after a stream has started. Restore the Foundry native cache after npm extract via ci:deps. Fail startup if the native tray cannot install. Debounce background stream archive writes.
…er starts Headers-only fetch timeouts still left json/text hanging. Disconnect could pass on a request that never left the client. Fail restore when a Foundry cache exists but dest is empty. Clear the background archive save timer on unmount.
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The endpoint self-test can misclassify or falsely verify models, introduces a type error, and the CI wrapper can overlook process-launch failures.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Introduces the embeddings path and prepares Flint 0.9.0 as the first stable updater release.
Changes:
- Adds embedding BYOM import, IPC generation, gateway autoload, diagnostics, and tests.
- Improves conversation persistence and Foundry native-cache restoration.
- Updates versions, release workflows, changelog, and documentation.
File summaries
| File | Description |
|---|---|
src/routes/+page.svelte |
Adds embedding diagnostics, BYOM UI, and deferred saves. |
src/lib/sdk.ts |
Exposes embedding IPC and inspection types. |
src/lib/operation-outcome.ts |
Classifies embedding generation as effectful. |
src/lib/ipc-deadlines.ts |
Makes embedding IPC unbounded. |
src/lib/ipc-contracts.ts |
Adds the embedding command contract. |
src/lib/integrations.ts |
Updates Continue limitations. |
src/lib/endpoint-self-test.ts |
Expands endpoint diagnostics. |
src/lib/endpoint-self-test.test.ts |
Tests expanded diagnostics. |
src-tauri/tauri.conf.json |
Sets version 0.9.0. |
src-tauri/src/lib.rs |
Fails startup without the tray. |
src-tauri/Cargo.toml |
Sets crate version 0.9.0. |
src-tauri/Cargo.lock |
Synchronizes the crate lock version. |
sidecar/gateway.test.ts |
Tests embedding proxy behavior. |
sidecar/gateway.js |
Classifies embedding traffic. |
sidecar/foundry-sidecar.test.ts |
Tests embedding command validation. |
sidecar/foundry-sidecar.js |
Implements embedding generation and import hardening. |
sidecar/byom-import.test.ts |
Tests embedding model detection. |
sidecar/byom-import.js |
Supports template-free embedding imports. |
sidecar/byom-import.e2e.test.ts |
Tests embedding import and discovery. |
scripts/hydrate-foundry-native.test.js |
Tests native-cache restoration. |
scripts/hydrate-foundry-native.cjs |
Restores into missing destinations. |
scripts/ci-npm-ci.cjs |
Adds staged CI dependency installation. |
RELEASE_ROADMAP.md |
Defines the 0.9.0 release sequence. |
README.md |
Documents the first stable release. |
package.json |
Sets 0.9.0 and adds ci:deps. |
docs/USER_GUIDE.md |
Documents embedding imports and autoload. |
docs/PRODUCT_PLAN.md |
Adds the embeddings wave. |
docs/DEVELOPMENT.md |
Updates CI and release commands. |
docs/BACKLOG.md |
Refocuses remaining embedding work. |
docs/ADMIN.md |
Adds embedding operations guidance. |
CHANGELOG.md |
Adds 0.9.0 release notes. |
.github/workflows/version.yml |
Uses staged CI dependency installation. |
.github/workflows/release.yml |
Uses staged CI dependency installation. |
.github/workflows/ci.yml |
Uses staged CI dependency installation. |
.github/copilot-instructions.md |
Records embedding invariants. |
.changeset/embeddings-foundation.md |
Records the stable-release change. |
Review details
- Files reviewed: 35/36 changed files
- Comments generated: 8
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+245
to
+249
| const chatIds = ids.filter(isChatModelId); | ||
| const embedIds = ids.filter(isEmbeddingModelId); | ||
| // The check is "a returned ID round-trips into chat". Never send an unlisted UI alias. | ||
| const modelId = pickListedId(chatIds, requestedModel); | ||
| const embeddingModelId = pickListedId(embedIds, options.embeddingModelId?.trim() || null); |
Owner
Author
There was a problem hiding this comment.
Agreed. If the UI supplies an embedding alias, we match it against every listed /v1/models id first (so my-model works), then exclude that id from chat candidates. c70b086.
… self-test Preserve smoke/process exit codes through quit-flush. Treat spawnSync null status as failure. Classify chat/embeddings as path segments. Pick a requested embedding id even without embed in the name, validate every vector element, and only pass disconnect if the body reader settles. Show Flint-verified per model.
joelst
added this pull request to stack #123
September 18, 2026 19:37
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Land the post-0.7.0 waves, including the embeddings path, as 0.9.0 — the first stable channel release (skip 0.8.0). That publish is the in-app updater test from 0.7.0 evaluation. 1.0.0 is a later stable after that upgrade is proven and 0.9.0 bugfixes land.
Stacked on #120. Do not cut 1.0.0 as the first
releases/latestpointer. Full RAG stays after 1.0. There is still no Flint-tested real embedding ONNX recipe — do not mark Continue's indexer verified.Flint seam
Touched: embeddings path as before, plus version bump to 0.9.0 in
package.json/tauri.conf.json/Cargo.toml, CHANGELOG, and sequencing (PRODUCT_PLAN Wave 8/9, ROADMAP, ADMIN updater).Safety and compatibility
embedTexts{ model, inputs }— 37 commands total.noteActivityinFlight fencing as chat.~/.flintas today.channel=stable(not a prerelease) or the updater will not see it.Validation
npm run verify:release -- 0.9.0 --channel=stablenpm run verify:markdown-links— 154 linksnpm run verify:ipc-contracts— 37 commands (embeddings commit)npm run verify:bundle— not needed for this versioning commitgit diff --checkThis stacked PR will not get GitHub checks until #120 lands and the base is retargeted to
main.Handoff
v0.9.0and run the Release workflow with channel=stable. Leave “Set as a pre-release” unchecked.op-ssh-signfailed here). Amend with--gpg-signif required.