Repository navigation
feat(settings): add Jev from the service chooser with a checked key - #1457
Merged
Merged
Conversation
The Jev card invited users to paste a TypeSafe key with no way to know whether it worked, and the classifier sat next to the AI service list as a special section instead of being one of the services. Jev is now offered by "Add service" in its own Classifiers group, on the add path only, because it owns no provider row and no model list: changing an existing row's service can never turn it into a classifier. Adding it is one action with two steps. The key is checked against the same TypeSafe System One address and classifier the Agent's `JevClassify` tool calls, and only a key that answered is stored and turns the classifier on, so an enabled Jev always has a key the Agent can spend. A refused key writes nothing and reports TypeSafe's status, and closing the dialog while the check is in flight cancels the whole action, so an abandoned dialog cannot leave a credential behind. The credential is an API key; this integration has no OAuth path. The card becomes the state of the integration rather than a second place to enter a key: the stored-key status, the Agent-mode switch, and the actions that add, replace or remove the key. Removing the key still turns Jev off before it is deleted.
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.
What
Redesigns the Jev (TypeSafe structured classifier) settings and folds it into
the Add service flow, so adding Jev means a checked key and an enabled
classifier.
(TypeSafe ·
api.typesafe.ai/v1/systemone). It is offered on the add pathonly, because Jev owns no provider row and no model list — changing an
existing row's service can never turn it into a classifier.
privacy notice, and the TypeSafe key. No model panes, no endpoint fields.
System One address and classifier the Agent's
JevClassifytool calls, andonly a key that answered is stored and turns
jevEnabledon. A refused keywrites nothing and reports TypeSafe's status.
an abandoned dialog cannot leave a credential behind.
enter a key: stored-key status, the Agent-mode switch, and add/replace/remove
key actions. Removing the key still turns Jev off before deleting it.
Files
electron/main/jev-probe.ts,electron/main/ipc/jev-ipc.ts,ipc/register.ts,mcp-control.ts(channel blocked from the MCP control surface)packages/shared/src/protocol.ts(jevTest),types/settings.ts(JevKeyCheckResult),secret-refs.ts(TypeSafe address + classifier id)settings/jev-config.ts(ordering),settings/jev-app-config.ts(wiring + key-status hook),settings/JevServiceForm.tsx,settings/JevSettingsCard.tsx,settings/service-catalog.ts,settings/ServiceChooser.tsx,settings/ProviderSetupDialog.tsx,settings/ModelConfigPage.tsx,lib/api.tschooserClassifiers+ the Jev key/save copy in all 9 localesVerification
tsc -p apps/desktop/tsconfig.json --noEmit(renderer + Electron main): cleanbiome lint,check-style-tokens.mjs,check-architecture.mjs: cleanelectron-vite build: passes (main + preload + renderer)node --test apps/desktop/test/jev-*.test.mjs apps/desktop/test/service-chooser.test.mjs apps/desktop/test/mcp-control-wiring.test.mjs: 26/26packages/sharedvitest: 1190 passed;agent-runtimeJev vitest: 5 passedcheck:pr-base: head contains currentorigin/main(rebased onto 7a47846)New/changed tests cover the probe contract (address, redaction, timeout,
unreachable), the ordering rules (check → store → enable, disable → delete,
cancel), the isolated-Electron user paths (card states, chooser offers Jev on
the add path only, check-then-save, refused key, close-while-checking).
Notes
pnpm test:e2e:jevnow runs the four Jev suites plus the session-launchsuite and the runtime's
JevClassifytests.