From cc3d157355c25ee1acc43158acda971736e57657 Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Tue, 10 Nov 2026 18:30:17 +0100 Subject: [PATCH 1/2] mason: adopt common-auth 0.43 and propose vault display names --- bun.lock | 8 ++++---- docs/setup.md | 4 +++- packages/core/package.json | 2 +- packages/opencode/package.json | 2 +- packages/opencode/src/setup.ts | 7 ++++++- packages/opencode/test/setup-harness.ts | 10 ++++++++-- packages/opencode/test/setup.test.ts | 21 +++++++++++++++++++++ packages/pi/package.json | 2 +- 8 files changed, 45 insertions(+), 11 deletions(-) diff --git a/bun.lock b/bun.lock index 3274f42..c03cfbb 100644 --- a/bun.lock +++ b/bun.lock @@ -20,7 +20,7 @@ "version": "0.0.0", "dependencies": { "@cortexkit/claustrum-client": "^0.16.0", - "@cortexkit/common-auth": "^0.41.1", + "@cortexkit/common-auth": "^0.43.0", "@cortexkit/private-files": "^0.2.2", "@cortexkit/subc-client": "^0.24.0", }, @@ -33,7 +33,7 @@ }, "dependencies": { "@cortexkit/claustrum-client": "^0.16.0", - "@cortexkit/common-auth": "^0.41.1", + "@cortexkit/common-auth": "^0.43.0", "@cortexkit/private-files": "^0.2.2", "@cortexkit/subc-client": "^0.24.0", }, @@ -54,7 +54,7 @@ "version": "0.2.0", "dependencies": { "@cortexkit/claustrum-client": "^0.16.0", - "@cortexkit/common-auth": "^0.41.1", + "@cortexkit/common-auth": "^0.43.0", "@cortexkit/private-files": "^0.2.2", "@cortexkit/subc-client": "^0.24.0", }, @@ -154,7 +154,7 @@ "@cortexkit/claustrum-client": ["@cortexkit/claustrum-client@0.16.0", "", { "dependencies": { "@cortexkit/store": "^0.2.3", "@cortexkit/subc-client": "^0.24.0" } }, "sha512-K2iY0j0pJscnmjs3Z5cXxL2sJPuAuf/EnaYM1/6CCmMGgenibp8yaaPu0ijxOztWxxyJwtzIrHCdVKtzMtdmSw=="], - "@cortexkit/common-auth": ["@cortexkit/common-auth@0.41.1", "", { "dependencies": { "@cortexkit/private-files": "^0.2.2", "jsonc-parser": "^3.3.1" }, "peerDependencies": { "@cortexkit/claustrum-client": ">=0.6.2", "@cortexkit/subc-client": "^0.16.0 || ^0.22.0 || ^0.24.0", "@opencode/plugin": ">=2.0.21", "@opentui/core": ">=0.4.5", "@opentui/solid": ">=0.4.5", "solid-js": ">=1.9.12 <2" }, "optionalPeers": ["@cortexkit/claustrum-client", "@cortexkit/subc-client", "@opencode/plugin", "@opentui/core", "@opentui/solid", "solid-js"] }, "sha512-P8yBv4Chqr9lAqbs3ndCFfDy5gWKnnqrNg7hcuJE3Tc60sbk9gji64IXyze2casSgLR3LVFC4kml5jJORJlg2A=="], + "@cortexkit/common-auth": ["@cortexkit/common-auth@0.43.0", "", { "dependencies": { "@cortexkit/private-files": "^0.2.2", "jsonc-parser": "^3.3.1" }, "peerDependencies": { "@cortexkit/claustrum-client": ">=0.6.2", "@cortexkit/opencode-sidebar": "~0.1.0", "@cortexkit/subc-client": "^0.16.0 || ^0.22.0 || ^0.24.0", "@opencode/plugin": ">=2.0.21", "@opentui/core": ">=0.4.5", "@opentui/solid": ">=0.4.5", "solid-js": ">=1.9.12 <2" }, "optionalPeers": ["@cortexkit/claustrum-client", "@cortexkit/opencode-sidebar", "@cortexkit/subc-client", "@opencode/plugin", "@opentui/core", "@opentui/solid", "solid-js"] }, "sha512-J0vA1VHliTdDhBghn/G5oR6oRcm5sA0ScL/6ghwqMEsQjlSZ5K8q40vYVbW15gZcw69hcmVuA6Gbq1/26yKR4A=="], "@cortexkit/opencode-claustrum-auth": ["@cortexkit/opencode-claustrum-auth@workspace:packages/opencode"], diff --git a/docs/setup.md b/docs/setup.md index 2ca2891..c2e047a 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -38,7 +38,9 @@ Vault mode is always on. `--claustrum` is accepted for compatibility; ## Approve enrollment and grant access -Approve each host's separate enrollment in `ck auth`. Setup prints the exact +Approve each host's separate enrollment in `ck auth`. The apps show +"Model API keys for OpenCode" or "Model API keys for Pi" when you approve the +connection. Setup prints the exact approval and grant commands and the resolved state paths. Enrollment alone does not grant credential access: follow the printed grant command for the `llm-provider` category before activating a provider. diff --git a/packages/core/package.json b/packages/core/package.json index 10d7d79..dc86a13 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -13,7 +13,7 @@ }, "dependencies": { "@cortexkit/claustrum-client": "^0.16.0", - "@cortexkit/common-auth": "^0.41.1", + "@cortexkit/common-auth": "^0.43.0", "@cortexkit/private-files": "^0.2.2", "@cortexkit/subc-client": "^0.24.0" } diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 859608f..411d240 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -34,7 +34,7 @@ }, "dependencies": { "@cortexkit/claustrum-client": "^0.16.0", - "@cortexkit/common-auth": "^0.41.1", + "@cortexkit/common-auth": "^0.43.0", "@cortexkit/private-files": "^0.2.2", "@cortexkit/subc-client": "^0.24.0" }, diff --git a/packages/opencode/src/setup.ts b/packages/opencode/src/setup.ts index 868ebd7..da1a613 100644 --- a/packages/opencode/src/setup.ts +++ b/packages/opencode/src/setup.ts @@ -103,9 +103,14 @@ export async function runClaustrumSetup( hosts: { opencode: { name: opencodeEnrollment, + displayName: 'Model API keys for OpenCode', paths: { stateDir: states.opencode, host: 'opencode' }, }, - pi: { name: piEnrollment, paths: { stateDir: '', host: 'pi' } }, + pi: { + name: piEnrollment, + displayName: 'Model API keys for Pi', + paths: { stateDir: '', host: 'pi' }, + }, }, }, beforeSignIn: async (host, context) => { diff --git a/packages/opencode/test/setup-harness.ts b/packages/opencode/test/setup-harness.ts index 4fccd31..c4e2e2d 100644 --- a/packages/opencode/test/setup-harness.ts +++ b/packages/opencode/test/setup-harness.ts @@ -1,6 +1,7 @@ import { existsSync, readFileSync, realpathSync, statSync } from 'node:fs' import path from 'node:path' import { Readable, Writable } from 'node:stream' +import type { ClaustrumEnrollmentClient } from '@cortexkit/common-auth/claustrum' import type { SetupIO } from '@cortexkit/common-auth/setup' import { bundleOptions } from '../../../scripts/build-options.ts' import type { runFixtureSetup } from '../setup-test-entry.ts' @@ -67,6 +68,9 @@ export function setupIO( PATH: bin, } const proposals: string[] = [] + const proposalInputs: Parameters< + ClaustrumEnrollmentClient['enrollPropose'] + >[0][] = [] const commands: { file: string; args: readonly string[] }[] = [] let output = '' const isLauncher = (file: string) => @@ -120,7 +124,9 @@ export function setupIO( }, }, connect: async () => ({ - async enrollPropose({ name }) { + async enrollPropose(input) { + proposalInputs.push(input) + const { name } = input proposals.push(name) return { requestId: name } }, @@ -135,5 +141,5 @@ export function setupIO( close() {}, }), } - return { io, env, proposals, commands, output: () => output } + return { io, env, proposals, proposalInputs, commands, output: () => output } } diff --git a/packages/opencode/test/setup.test.ts b/packages/opencode/test/setup.test.ts index 3901acd..2b2c8ca 100644 --- a/packages/opencode/test/setup.test.ts +++ b/packages/opencode/test/setup.test.ts @@ -298,6 +298,27 @@ test('test setup build enrolls once per host, discovers rows, prints provider ac ) }) +test('setup proposes a person-facing display name for each vault host', async () => { + const root = await profile() + const h = setupIO(root) + await runClaustrumSetup( + ['setup', '--yes', '--enroll-only', '--host=opencode', '--host=pi'], + h.io, + ) + expect(h.proposalInputs).toEqual([ + { + name: 'claustrum-auth-opencode', + displayName: 'Model API keys for OpenCode', + requestSecretHash: expect.stringMatching(/^[a-f0-9]{64}$/u), + }, + { + name: 'claustrum-auth-pi', + displayName: 'Model API keys for Pi', + requestSecretHash: expect.stringMatching(/^[a-f0-9]{64}$/u), + }, + ]) +}) + test('setup refuses local sign-in and delegates enroll-only without host registration or credential reads', async () => { const root = await profile() const h = setupIO(root) diff --git a/packages/pi/package.json b/packages/pi/package.json index af27990..020a927 100644 --- a/packages/pi/package.json +++ b/packages/pi/package.json @@ -32,7 +32,7 @@ }, "dependencies": { "@cortexkit/claustrum-client": "^0.16.0", - "@cortexkit/common-auth": "^0.41.1", + "@cortexkit/common-auth": "^0.43.0", "@cortexkit/private-files": "^0.2.2", "@cortexkit/subc-client": "^0.24.0" }, From f3ef25788af3a1ebb310e6bd7a2512e1e2f981ea Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Tue, 10 Nov 2026 18:36:00 +0100 Subject: [PATCH 2/2] mason: require claustrum-client 0.17 for display names --- bun.lock | 8 ++++---- packages/core/package.json | 2 +- packages/opencode/package.json | 2 +- packages/pi/package.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bun.lock b/bun.lock index c03cfbb..045a6c1 100644 --- a/bun.lock +++ b/bun.lock @@ -19,7 +19,7 @@ "name": "@cortexkit/claustrum-auth-core", "version": "0.0.0", "dependencies": { - "@cortexkit/claustrum-client": "^0.16.0", + "@cortexkit/claustrum-client": "^0.17.0", "@cortexkit/common-auth": "^0.43.0", "@cortexkit/private-files": "^0.2.2", "@cortexkit/subc-client": "^0.24.0", @@ -32,7 +32,7 @@ "claustrum-auth": "./dist/setup-bin.js", }, "dependencies": { - "@cortexkit/claustrum-client": "^0.16.0", + "@cortexkit/claustrum-client": "^0.17.0", "@cortexkit/common-auth": "^0.43.0", "@cortexkit/private-files": "^0.2.2", "@cortexkit/subc-client": "^0.24.0", @@ -53,7 +53,7 @@ "name": "@cortexkit/pi-claustrum-auth", "version": "0.2.0", "dependencies": { - "@cortexkit/claustrum-client": "^0.16.0", + "@cortexkit/claustrum-client": "^0.17.0", "@cortexkit/common-auth": "^0.43.0", "@cortexkit/private-files": "^0.2.2", "@cortexkit/subc-client": "^0.24.0", @@ -152,7 +152,7 @@ "@cortexkit/claustrum-auth-core": ["@cortexkit/claustrum-auth-core@workspace:packages/core"], - "@cortexkit/claustrum-client": ["@cortexkit/claustrum-client@0.16.0", "", { "dependencies": { "@cortexkit/store": "^0.2.3", "@cortexkit/subc-client": "^0.24.0" } }, "sha512-K2iY0j0pJscnmjs3Z5cXxL2sJPuAuf/EnaYM1/6CCmMGgenibp8yaaPu0ijxOztWxxyJwtzIrHCdVKtzMtdmSw=="], + "@cortexkit/claustrum-client": ["@cortexkit/claustrum-client@0.17.0", "", { "dependencies": { "@cortexkit/store": "^0.2.3", "@cortexkit/subc-client": "^0.24.0" } }, "sha512-8PF7fI8pnRyZWgLpzO8zeywc3dGaYYDIhU3ztrJtfwDkw+dq9o2UQtCaoHo776d2aHo+JPZXFfN+7E2VaG75vw=="], "@cortexkit/common-auth": ["@cortexkit/common-auth@0.43.0", "", { "dependencies": { "@cortexkit/private-files": "^0.2.2", "jsonc-parser": "^3.3.1" }, "peerDependencies": { "@cortexkit/claustrum-client": ">=0.6.2", "@cortexkit/opencode-sidebar": "~0.1.0", "@cortexkit/subc-client": "^0.16.0 || ^0.22.0 || ^0.24.0", "@opencode/plugin": ">=2.0.21", "@opentui/core": ">=0.4.5", "@opentui/solid": ">=0.4.5", "solid-js": ">=1.9.12 <2" }, "optionalPeers": ["@cortexkit/claustrum-client", "@cortexkit/opencode-sidebar", "@cortexkit/subc-client", "@opencode/plugin", "@opentui/core", "@opentui/solid", "solid-js"] }, "sha512-J0vA1VHliTdDhBghn/G5oR6oRcm5sA0ScL/6ghwqMEsQjlSZ5K8q40vYVbW15gZcw69hcmVuA6Gbq1/26yKR4A=="], diff --git a/packages/core/package.json b/packages/core/package.json index dc86a13..53f6165 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -12,7 +12,7 @@ "test": "bun test" }, "dependencies": { - "@cortexkit/claustrum-client": "^0.16.0", + "@cortexkit/claustrum-client": "^0.17.0", "@cortexkit/common-auth": "^0.43.0", "@cortexkit/private-files": "^0.2.2", "@cortexkit/subc-client": "^0.24.0" diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 411d240..811c138 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -33,7 +33,7 @@ "test": "bun test" }, "dependencies": { - "@cortexkit/claustrum-client": "^0.16.0", + "@cortexkit/claustrum-client": "^0.17.0", "@cortexkit/common-auth": "^0.43.0", "@cortexkit/private-files": "^0.2.2", "@cortexkit/subc-client": "^0.24.0" diff --git a/packages/pi/package.json b/packages/pi/package.json index 020a927..feb10e5 100644 --- a/packages/pi/package.json +++ b/packages/pi/package.json @@ -31,7 +31,7 @@ "test": "bun test" }, "dependencies": { - "@cortexkit/claustrum-client": "^0.16.0", + "@cortexkit/claustrum-client": "^0.17.0", "@cortexkit/common-auth": "^0.43.0", "@cortexkit/private-files": "^0.2.2", "@cortexkit/subc-client": "^0.24.0"