@bevel-software/platform-core-backend 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/create-core-services.d.ts.map +1 -1
- package/dist/core/create-core-services.js +5 -0
- package/dist/core/create-core-services.js.map +1 -1
- package/dist/modules/auth/account.routes.d.ts +2 -2
- package/dist/modules/auth/account.routes.d.ts.map +1 -1
- package/dist/modules/auth/account.routes.js +3 -0
- package/dist/modules/auth/account.routes.js.map +1 -1
- package/dist/modules/mcp/manual-failure-memo.d.ts +53 -0
- package/dist/modules/mcp/manual-failure-memo.d.ts.map +1 -0
- package/dist/modules/mcp/manual-failure-memo.js +87 -0
- package/dist/modules/mcp/manual-failure-memo.js.map +1 -0
- package/dist/modules/mcp/mcp.service.d.ts +12 -0
- package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
- package/dist/modules/mcp/mcp.service.js +41 -4
- package/dist/modules/mcp/mcp.service.js.map +1 -1
- package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts +3 -0
- package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts.map +1 -1
- package/dist/modules/secrets-vault/db-secrets-vault.service.js +33 -0
- package/dist/modules/secrets-vault/db-secrets-vault.service.js.map +1 -1
- package/package.json +2 -2
- package/src/core/create-core-services.ts +5 -0
- package/src/modules/auth/__tests__/account.routes.test.ts +16 -3
- package/src/modules/auth/account.routes.ts +8 -2
- package/src/modules/mcp/__tests__/manual-failure-memo.test.ts +70 -0
- package/src/modules/mcp/manual-failure-memo.ts +89 -0
- package/src/modules/mcp/mcp.service.ts +44 -6
- package/src/modules/secrets-vault/__tests__/db-secrets-vault.oauth.test.ts +39 -0
- package/src/modules/secrets-vault/db-secrets-vault.service.ts +35 -0
|
@@ -54,6 +54,25 @@ export class DbSecretsVaultService {
|
|
|
54
54
|
}
|
|
55
55
|
return this.cryptoInstance;
|
|
56
56
|
}
|
|
57
|
+
// ── Mutation listeners ─────────────────────────────────────────────────────
|
|
58
|
+
// Notified after any secret mutation: `userId` for a per-user secret, null
|
|
59
|
+
// for a SHARED one (affects every user). Lets caches keyed on credential
|
|
60
|
+
// validity (e.g. the MCP proxy's manual-failure memo) invalidate the moment
|
|
61
|
+
// a credential changes instead of waiting out a TTL.
|
|
62
|
+
mutationListeners = [];
|
|
63
|
+
onMutation(listener) {
|
|
64
|
+
this.mutationListeners.push(listener);
|
|
65
|
+
}
|
|
66
|
+
notifyMutation(userId) {
|
|
67
|
+
for (const listener of this.mutationListeners) {
|
|
68
|
+
try {
|
|
69
|
+
listener(userId);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
console.warn('[vault] mutation listener failed:', err instanceof Error ? err.message : err);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
57
76
|
async list(userId) {
|
|
58
77
|
const rows = await this.db
|
|
59
78
|
.select()
|
|
@@ -86,6 +105,7 @@ export class DbSecretsVaultService {
|
|
|
86
105
|
set: { kind: 'static', label, valueEncrypted, oauthMeta: null, updatedAt: new Date() },
|
|
87
106
|
})
|
|
88
107
|
.returning();
|
|
108
|
+
this.notifyMutation(userId);
|
|
89
109
|
return this.toSummary(row);
|
|
90
110
|
}
|
|
91
111
|
async createOAuth(input) {
|
|
@@ -106,6 +126,7 @@ export class DbSecretsVaultService {
|
|
|
106
126
|
set: { kind: 'oauth', label, valueEncrypted, oauthMeta, updatedAt: new Date() },
|
|
107
127
|
})
|
|
108
128
|
.returning();
|
|
129
|
+
this.notifyMutation(userId);
|
|
109
130
|
return this.toSummary(row);
|
|
110
131
|
}
|
|
111
132
|
async remove(userId, id) {
|
|
@@ -115,6 +136,7 @@ export class DbSecretsVaultService {
|
|
|
115
136
|
.returning({ id: secrets.id });
|
|
116
137
|
if (res.length === 0)
|
|
117
138
|
throw new SecretNotFoundError(id);
|
|
139
|
+
this.notifyMutation(userId);
|
|
118
140
|
}
|
|
119
141
|
async putSharedStatic(input) {
|
|
120
142
|
const key = this.requireKey(input.key);
|
|
@@ -137,6 +159,7 @@ export class DbSecretsVaultService {
|
|
|
137
159
|
set: { kind: 'static', label, valueEncrypted, oauthMeta: null, updatedAt: new Date() },
|
|
138
160
|
})
|
|
139
161
|
.returning();
|
|
162
|
+
this.notifyMutation(null);
|
|
140
163
|
return this.toSummary(row);
|
|
141
164
|
}
|
|
142
165
|
async removeShared(key) {
|
|
@@ -146,6 +169,7 @@ export class DbSecretsVaultService {
|
|
|
146
169
|
.returning({ id: secrets.id });
|
|
147
170
|
if (res.length === 0)
|
|
148
171
|
throw new SecretNotFoundError(key);
|
|
172
|
+
this.notifyMutation(null);
|
|
149
173
|
}
|
|
150
174
|
async removeUserByKey(userId, key) {
|
|
151
175
|
const res = await this.db
|
|
@@ -154,6 +178,7 @@ export class DbSecretsVaultService {
|
|
|
154
178
|
.returning({ id: secrets.id });
|
|
155
179
|
if (res.length === 0)
|
|
156
180
|
throw new SecretNotFoundError(key);
|
|
181
|
+
this.notifyMutation(userId);
|
|
157
182
|
}
|
|
158
183
|
async statusFor(userId, keys) {
|
|
159
184
|
if (keys.length === 0)
|
|
@@ -272,6 +297,8 @@ export class DbSecretsVaultService {
|
|
|
272
297
|
.update(secrets)
|
|
273
298
|
.set({ valueEncrypted: this.crypto().encrypt(JSON.stringify(next)), updatedAt: new Date() })
|
|
274
299
|
.where(and(eq(secrets.id, id), eq(secrets.userId, userId)));
|
|
300
|
+
// Fresh tokens just landed — let credential-validity caches retry NOW.
|
|
301
|
+
this.notifyMutation(userId);
|
|
275
302
|
}
|
|
276
303
|
async putSharedOAuthClientSecret(input) {
|
|
277
304
|
const key = this.requireKey(input.key);
|
|
@@ -293,6 +320,7 @@ export class DbSecretsVaultService {
|
|
|
293
320
|
targetWhere: isNull(secrets.userId),
|
|
294
321
|
set: { kind: 'oauth', valueEncrypted, oauthMeta, updatedAt: new Date() },
|
|
295
322
|
});
|
|
323
|
+
this.notifyMutation(null);
|
|
296
324
|
}
|
|
297
325
|
async beginToolOAuthByKey(input) {
|
|
298
326
|
const userId = this.requireUserId(input.userId);
|
|
@@ -494,6 +522,10 @@ export class DbSecretsVaultService {
|
|
|
494
522
|
.update(secrets)
|
|
495
523
|
.set({ valueEncrypted: this.crypto().encrypt(JSON.stringify(next)), updatedAt: new Date() })
|
|
496
524
|
.where(and(eq(secrets.id, row.id), eq(secrets.valueEncrypted, row.valueEncrypted)));
|
|
525
|
+
// A successful refresh is a credential repair — notify so dependent caches
|
|
526
|
+
// (the MCP proxy's manual-failure memo) retry immediately. `row.userId` is
|
|
527
|
+
// null for a shared (admin-scope) row, which maps to "affects everyone".
|
|
528
|
+
this.notifyMutation(row.userId);
|
|
497
529
|
return refreshed.access_token;
|
|
498
530
|
}
|
|
499
531
|
async putSharedOAuthProvider(input) {
|
|
@@ -516,6 +548,7 @@ export class DbSecretsVaultService {
|
|
|
516
548
|
targetWhere: isNull(secrets.userId),
|
|
517
549
|
set: { kind: 'oauth', valueEncrypted, oauthMeta, updatedAt: new Date() },
|
|
518
550
|
});
|
|
551
|
+
this.notifyMutation(null);
|
|
519
552
|
}
|
|
520
553
|
async getSharedOAuthProvider(key) {
|
|
521
554
|
const [shared] = await this.db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-secrets-vault.service.js","sourceRoot":"","sources":["../../../src/modules/secrets-vault/db-secrets-vault.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db-secrets-vault.service.js","sourceRoot":"","sources":["../../../src/modules/secrets-vault/db-secrets-vault.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bevel-software/platform-core-backend",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Open-source core backend of the Bevel platform: git-backed knowledge workspace, workflow (branches/change requests/locks/SSE), skills, tools, secrets vault, access control and the remote MCP surface.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"pg": "^8.20.0",
|
|
46
46
|
"yaml": "^2.9.0",
|
|
47
47
|
"zod": "^3.24.0",
|
|
48
|
-
"@bevel-software/platform-shared": "0.3.
|
|
48
|
+
"@bevel-software/platform-shared": "0.3.2"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@types/adm-zip": "^0.5.8",
|
|
@@ -387,6 +387,11 @@ export async function createCoreServices(
|
|
|
387
387
|
// the binding is only dereferenced at call time, long after boot).
|
|
388
388
|
(bearer) => mcpOAuthProvider.revokeByAccessToken(bearer),
|
|
389
389
|
);
|
|
390
|
+
// A changed secret invalidates the proxy's remembered manual failures for
|
|
391
|
+
// that user (null = shared secret → everyone), so a just-repaired
|
|
392
|
+
// credential is retried on the very next session build instead of waiting
|
|
393
|
+
// out the failure memo's TTL.
|
|
394
|
+
secretsVaultService.onMutation((changedUserId) => mcpService.clearManualFailures(changedUserId));
|
|
390
395
|
// MCP OAuth 2.1 authorization server (our own AS): lets MCP clients with no
|
|
391
396
|
// pre-shared connection key connect via the standard 401 → discovery → DCR →
|
|
392
397
|
// authorize (PKCE) flow. The authorize step routes the browser to /connect
|
|
@@ -3,7 +3,6 @@ import express from 'express';
|
|
|
3
3
|
import type { Server } from 'node:http';
|
|
4
4
|
import { createAccountRoutes } from '../account.routes.js';
|
|
5
5
|
import type { AuthService } from '../auth.service.js';
|
|
6
|
-
import type { AccountErasureService } from '../account-erasure.service.js';
|
|
7
6
|
import type { IAdminAccessService } from '../../admin/admin.interface.js';
|
|
8
7
|
|
|
9
8
|
const authService = {
|
|
@@ -13,9 +12,11 @@ const authService = {
|
|
|
13
12
|
createAccount: vi.fn(async (email: string) => ({ id: 'u2', email, name: 'B' })),
|
|
14
13
|
} as unknown as AuthService;
|
|
15
14
|
|
|
15
|
+
// Satisfies the route's narrow Pick<IAccountErasureService, 'eraseUser'>
|
|
16
|
+
// contract directly — no concrete-service cast needed.
|
|
16
17
|
const accountErasure = {
|
|
17
|
-
eraseUser: vi.fn(async () => true),
|
|
18
|
-
}
|
|
18
|
+
eraseUser: vi.fn(async (_userId: string) => true),
|
|
19
|
+
};
|
|
19
20
|
|
|
20
21
|
function makeApp(opts: { admin: boolean; email?: string }) {
|
|
21
22
|
const adminAccess: IAdminAccessService = {
|
|
@@ -100,6 +101,18 @@ describe('account routes — admin gate', () => {
|
|
|
100
101
|
expect(accountErasure.eraseUser).toHaveBeenLastCalledWith('u2');
|
|
101
102
|
});
|
|
102
103
|
|
|
104
|
+
it('erasure failure → 500 with a generic body (no internal error text)', async () => {
|
|
105
|
+
const base = await listen(makeApp({ admin: true }));
|
|
106
|
+
vi.mocked(accountErasure.eraseUser).mockRejectedValueOnce(
|
|
107
|
+
new Error('relation "users" does not exist'),
|
|
108
|
+
);
|
|
109
|
+
const res = await fetch(`${base}/api/admin/accounts/u2`, { method: 'DELETE' });
|
|
110
|
+
expect(res.status).toBe(500);
|
|
111
|
+
const body = (await res.json()) as { error: string };
|
|
112
|
+
expect(body.error).toBe('Failed to erase user');
|
|
113
|
+
expect(JSON.stringify(body)).not.toContain('relation');
|
|
114
|
+
});
|
|
115
|
+
|
|
103
116
|
it('400s on missing fields and surfaces service validation errors', async () => {
|
|
104
117
|
const base = await listen(makeApp({ admin: true }));
|
|
105
118
|
const missing = await fetch(`${base}/api/admin/accounts`, {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
2
|
import type { AuthService } from './auth.service.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { IAccountErasureService } from './account-erasure.service.js';
|
|
4
4
|
import type { IAdminAccessService } from '../admin/admin.interface.js';
|
|
5
5
|
import './auth.middleware.js'; // Express Request augmentation
|
|
6
6
|
|
|
@@ -16,7 +16,7 @@ import './auth.middleware.js'; // Express Request augmentation
|
|
|
16
16
|
export function createAccountRoutes(
|
|
17
17
|
authService: AuthService,
|
|
18
18
|
adminAccess: IAdminAccessService,
|
|
19
|
-
accountErasure:
|
|
19
|
+
accountErasure: Pick<IAccountErasureService, 'eraseUser'>,
|
|
20
20
|
): express.Router {
|
|
21
21
|
const router = express.Router();
|
|
22
22
|
|
|
@@ -69,6 +69,12 @@ export function createAccountRoutes(
|
|
|
69
69
|
}
|
|
70
70
|
try {
|
|
71
71
|
const erased = await accountErasure.eraseUser(userId);
|
|
72
|
+
// Accountability record for the destructive path: WHO erased WHOM, by
|
|
73
|
+
// id only — the target's email must not outlive the erasure in logs.
|
|
74
|
+
console.log(
|
|
75
|
+
'[accounts] erasure audit:',
|
|
76
|
+
JSON.stringify({ action: 'erase-user', actorUserId: req.userId, targetUserId: userId, erased }),
|
|
77
|
+
);
|
|
72
78
|
if (!erased) {
|
|
73
79
|
res.status(404).json({ error: 'No such user' });
|
|
74
80
|
return;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { ManualFailureMemo } from '../manual-failure-memo.js';
|
|
3
|
+
|
|
4
|
+
describe('ManualFailureMemo', () => {
|
|
5
|
+
it('remembers a failure per (user, manual) until the TTL expires', () => {
|
|
6
|
+
let now = 0;
|
|
7
|
+
const memo = new ManualFailureMemo(1000, () => now);
|
|
8
|
+
memo.recordFailure('u1', 'notion', 'invalid_token');
|
|
9
|
+
expect(memo.recentFailure('u1', 'notion')).toBe('invalid_token');
|
|
10
|
+
// Scoped: a DIFFERENT user's notion (their own credential) is unaffected.
|
|
11
|
+
expect(memo.recentFailure('u2', 'notion')).toBeUndefined();
|
|
12
|
+
// Same user, different manual — unaffected.
|
|
13
|
+
expect(memo.recentFailure('u1', 'granola')).toBeUndefined();
|
|
14
|
+
// Expiry restores retries (a repaired credential gets picked up).
|
|
15
|
+
now = 1001;
|
|
16
|
+
expect(memo.recentFailure('u1', 'notion')).toBeUndefined();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('clear() forgets immediately (successful registration path)', () => {
|
|
20
|
+
const memo = new ManualFailureMemo(60_000, () => 0);
|
|
21
|
+
memo.recordFailure('u1', 'notion', 'invalid_token');
|
|
22
|
+
memo.clear('u1', 'notion');
|
|
23
|
+
expect(memo.recentFailure('u1', 'notion')).toBeUndefined();
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('clearUser() forgets ONLY that user (a secrets change retries immediately)', () => {
|
|
27
|
+
const memo = new ManualFailureMemo(60_000, () => 0);
|
|
28
|
+
memo.recordFailure('u1', 'notion', 'invalid_token');
|
|
29
|
+
memo.recordFailure('u1', 'granola', 'expired');
|
|
30
|
+
memo.recordFailure('u2', 'notion', 'invalid_token');
|
|
31
|
+
memo.clearUser('u1');
|
|
32
|
+
expect(memo.recentFailure('u1', 'notion')).toBeUndefined();
|
|
33
|
+
expect(memo.recentFailure('u1', 'granola')).toBeUndefined();
|
|
34
|
+
expect(memo.recentFailure('u2', 'notion')).toBe('invalid_token');
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('clearAll() forgets everything (a shared secret changed)', () => {
|
|
38
|
+
const memo = new ManualFailureMemo(60_000, () => 0);
|
|
39
|
+
memo.recordFailure('u1', 'notion', 'x');
|
|
40
|
+
memo.recordFailure('u2', 'granola', 'y');
|
|
41
|
+
memo.clearAll();
|
|
42
|
+
expect(memo.recentFailure('u1', 'notion')).toBeUndefined();
|
|
43
|
+
expect(memo.recentFailure('u2', 'granola')).toBeUndefined();
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('an out-of-order completion after a clear cannot resurrect the failure', () => {
|
|
47
|
+
const memo = new ManualFailureMemo(60_000, () => 0);
|
|
48
|
+
// A registration attempt captures the generation, then awaits its (slow)
|
|
49
|
+
// network call…
|
|
50
|
+
const generation = memo.currentGeneration;
|
|
51
|
+
// …meanwhile the user repairs their credential (secrets change → clear).
|
|
52
|
+
memo.clearUser('u1');
|
|
53
|
+
// The stale attempt completes with a failure from the OLD credential —
|
|
54
|
+
// recording against the captured generation is a no-op.
|
|
55
|
+
memo.recordFailure('u1', 'notion', 'invalid_token (stale)', generation);
|
|
56
|
+
expect(memo.recentFailure('u1', 'notion')).toBeUndefined();
|
|
57
|
+
// A FRESH attempt (current generation) records normally.
|
|
58
|
+
memo.recordFailure('u1', 'notion', 'still broken', memo.currentGeneration);
|
|
59
|
+
expect(memo.recentFailure('u1', 'notion')).toBe('still broken');
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('prunes expired entries so the map stays bounded', () => {
|
|
63
|
+
let now = 0;
|
|
64
|
+
const memo = new ManualFailureMemo(1000, () => now);
|
|
65
|
+
for (let i = 0; i < 50; i++) memo.recordFailure(`u${i}`, 'notion', 'x');
|
|
66
|
+
now = 2000;
|
|
67
|
+
memo.recentFailure('u0', 'notion');
|
|
68
|
+
expect((memo as unknown as { failures: Map<string, unknown> }).failures.size).toBe(0);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Short-lived memo of manual-registration FAILURES, keyed per (user, manual).
|
|
3
|
+
*
|
|
4
|
+
* Registering a `.tool` manual with a present-but-broken credential (an
|
|
5
|
+
* expired OAuth session, a revoked key) fails with a live network round-trip —
|
|
6
|
+
* and sessions are rebuilt constantly (every external MCP connection runs a
|
|
7
|
+
* full discovery), so one stale credential otherwise re-dials its provider on
|
|
8
|
+
* every build, forever. Besides the log noise, each failed attempt on the
|
|
9
|
+
* MCP transport layer's long-lived shared session leaks an abort listener
|
|
10
|
+
* upstream — the memo starves that loop.
|
|
11
|
+
*
|
|
12
|
+
* Failures are remembered for a few minutes only: a repaired credential is
|
|
13
|
+
* picked up at the next build after expiry (or immediately after a restart).
|
|
14
|
+
* Successes are never cached here — this is a circuit breaker, not a catalog
|
|
15
|
+
* cache. Expired entries are pruned opportunistically so the map stays
|
|
16
|
+
* bounded by the number of DISTINCT recently-failing (user, manual) pairs.
|
|
17
|
+
*/
|
|
18
|
+
export class ManualFailureMemo {
|
|
19
|
+
private readonly failures = new Map<string, { message: string; expiresAt: number }>();
|
|
20
|
+
/**
|
|
21
|
+
* Advanced by every clear operation. A registration attempt captures the
|
|
22
|
+
* generation BEFORE its (slow, awaited) network call and hands it back to
|
|
23
|
+
* {@link recordFailure} — if a clear happened in between (the user just
|
|
24
|
+
* repaired the credential), the stale in-flight failure is discarded instead
|
|
25
|
+
* of resurrecting a memo entry the clear was meant to remove.
|
|
26
|
+
*/
|
|
27
|
+
private generation = 0;
|
|
28
|
+
|
|
29
|
+
constructor(
|
|
30
|
+
private readonly ttlMs: number = 5 * 60_000,
|
|
31
|
+
private readonly now: () => number = Date.now,
|
|
32
|
+
) {}
|
|
33
|
+
|
|
34
|
+
/** Capture before an awaited registration attempt; pass to {@link recordFailure}. */
|
|
35
|
+
get currentGeneration(): number {
|
|
36
|
+
return this.generation;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private key(userId: string, manualName: string): string {
|
|
40
|
+
return `${userId} ${manualName}`;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** The remembered failure message when (user, manual) failed recently; undefined otherwise. */
|
|
44
|
+
recentFailure(userId: string, manualName: string): string | undefined {
|
|
45
|
+
const now = this.now();
|
|
46
|
+
for (const [k, entry] of this.failures) {
|
|
47
|
+
if (entry.expiresAt <= now) this.failures.delete(k);
|
|
48
|
+
}
|
|
49
|
+
return this.failures.get(this.key(userId, manualName))?.message;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Record a failure — unless `generation` (captured before the attempt) is
|
|
54
|
+
* stale, meaning a clear ran while the attempt was in flight. Dropping the
|
|
55
|
+
* record is the conservative direction: the worst case is one extra retry.
|
|
56
|
+
*/
|
|
57
|
+
recordFailure(userId: string, manualName: string, message: string, generation?: number): void {
|
|
58
|
+
if (generation !== undefined && generation !== this.generation) return;
|
|
59
|
+
this.failures.set(this.key(userId, manualName), {
|
|
60
|
+
message,
|
|
61
|
+
expiresAt: this.now() + this.ttlMs,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** Forget a pair (e.g. after a successful registration proves the credential works again). */
|
|
66
|
+
clear(userId: string, manualName: string): void {
|
|
67
|
+
this.generation += 1;
|
|
68
|
+
this.failures.delete(this.key(userId, manualName));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Forget every failure for one user — called when their secrets change, so a
|
|
73
|
+
* just-repaired credential is retried on the VERY NEXT build instead of
|
|
74
|
+
* waiting out the TTL.
|
|
75
|
+
*/
|
|
76
|
+
clearUser(userId: string): void {
|
|
77
|
+
this.generation += 1;
|
|
78
|
+
const prefix = `${userId} `;
|
|
79
|
+
for (const k of this.failures.keys()) {
|
|
80
|
+
if (k.startsWith(prefix)) this.failures.delete(k);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** Forget everything — a SHARED secret changed, which can affect any user. */
|
|
85
|
+
clearAll(): void {
|
|
86
|
+
this.generation += 1;
|
|
87
|
+
this.failures.clear();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -32,6 +32,7 @@ import type { SpillStore } from '../workspace/spill-store.js';
|
|
|
32
32
|
import { seedBevelHostedManualVars } from '../../shared/utcp-namespace.js';
|
|
33
33
|
import type { McpSessionStore } from './mcp-session-store.js';
|
|
34
34
|
import type { InternalTokenService } from '../tool-auth/internal-token.service.js';
|
|
35
|
+
import { ManualFailureMemo } from './manual-failure-memo.js';
|
|
35
36
|
|
|
36
37
|
/**
|
|
37
38
|
* Configuration for the loopback proxy. `loopbackBaseUrl` is the backend's own
|
|
@@ -173,6 +174,19 @@ function skillPromptText(skill: LoadedSkill): string {
|
|
|
173
174
|
* as the session's loopback bearer instead.
|
|
174
175
|
*/
|
|
175
176
|
export class McpService {
|
|
177
|
+
// Circuit breaker for manuals whose credentials just failed — see the memo.
|
|
178
|
+
private readonly manualFailures = new ManualFailureMemo();
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Invalidate remembered manual failures — wired to the secrets vault's
|
|
182
|
+
* mutation listener, so a just-repaired credential is retried on the very
|
|
183
|
+
* next session build. `null` = a shared secret changed (affects everyone).
|
|
184
|
+
*/
|
|
185
|
+
clearManualFailures(userId: string | null): void {
|
|
186
|
+
if (userId === null) this.manualFailures.clearAll();
|
|
187
|
+
else this.manualFailures.clearUser(userId);
|
|
188
|
+
}
|
|
189
|
+
|
|
176
190
|
constructor(
|
|
177
191
|
private readonly sessionStore: McpSessionStore,
|
|
178
192
|
private readonly opts: McpProxyOptions,
|
|
@@ -231,7 +245,7 @@ export class McpService {
|
|
|
231
245
|
// lives ONCE behind the REST surface.
|
|
232
246
|
const manuals = await this.fetchManualTemplates(loopbackBearer);
|
|
233
247
|
const client = await this.buildClient(loopbackBearer, userId, manuals);
|
|
234
|
-
const tools = await this.discoverTools(client, manuals);
|
|
248
|
+
const tools = await this.discoverTools(client, manuals, userId);
|
|
235
249
|
// Confirms the MCP session was built for a connecting client (vs. an
|
|
236
250
|
// in-process agent code-mode client, which never runs createSession) and
|
|
237
251
|
// how many tools discovery yielded before listing/filtering.
|
|
@@ -505,24 +519,48 @@ export class McpService {
|
|
|
505
519
|
* the proxy's advertised shape. A failure registering a user `.tool` is
|
|
506
520
|
* isolated (logged + skipped) so one broken manual never breaks the session;
|
|
507
521
|
* the KB manual failing is fatal (the core toolset is unusable).
|
|
522
|
+
*
|
|
523
|
+
* Failures are memoized per (user, manual) for a few minutes (see
|
|
524
|
+
* {@link ManualFailureMemo}): sessions rebuild constantly, and a manual with
|
|
525
|
+
* a broken credential (expired OAuth, revoked key) would otherwise re-dial
|
|
526
|
+
* its provider on every single build.
|
|
508
527
|
*/
|
|
509
|
-
private async discoverTools(
|
|
528
|
+
private async discoverTools(
|
|
529
|
+
client: CodeModeUtcpClient,
|
|
530
|
+
manuals: CallTemplate[],
|
|
531
|
+
userId: string,
|
|
532
|
+
): Promise<ProxiedTool[]> {
|
|
510
533
|
for (const m of manuals) {
|
|
511
534
|
const isKb = m.name === EXTERNAL_KB_MANUAL_NAME;
|
|
535
|
+
const name = String(m.name);
|
|
536
|
+
if (!isKb) {
|
|
537
|
+
const recent = this.manualFailures.recentFailure(userId, name);
|
|
538
|
+
if (recent !== undefined) {
|
|
539
|
+
console.warn(`[mcp] skipping manual "${name}" (recent failure, not retried): ${recent}`);
|
|
540
|
+
continue;
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
// Captured BEFORE the awaited attempt: if a secrets change clears the
|
|
544
|
+
// memo while registration is in flight, the stale failure from the OLD
|
|
545
|
+
// credential must not resurrect an entry the clear removed.
|
|
546
|
+
const generation = this.manualFailures.currentGeneration;
|
|
512
547
|
try {
|
|
513
548
|
const result = await client.registerManual(m);
|
|
514
549
|
if (result && result.success === false) {
|
|
515
550
|
const errs = Array.isArray(result.errors) ? result.errors.join('; ') : 'unknown error';
|
|
516
551
|
if (isKb) throw new Error(`Bevel tool discovery failed: ${errs}`);
|
|
517
|
-
|
|
552
|
+
this.manualFailures.recordFailure(userId, name, errs, generation);
|
|
553
|
+
console.warn(`[mcp] skipping manual "${name}": ${errs}`);
|
|
554
|
+
} else if (!isKb) {
|
|
555
|
+
this.manualFailures.clear(userId, name);
|
|
518
556
|
}
|
|
519
557
|
} catch (err) {
|
|
520
558
|
// Registration (network/discovery) failure — the templates are already
|
|
521
559
|
// validated, so this is a runtime, not a schema, problem.
|
|
522
560
|
if (isKb) throw err;
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
);
|
|
561
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
562
|
+
this.manualFailures.recordFailure(userId, name, message, generation);
|
|
563
|
+
console.warn(`[mcp] skipping manual "${name}": ${message}`);
|
|
526
564
|
}
|
|
527
565
|
}
|
|
528
566
|
const utcpTools = await client.getTools();
|
|
@@ -188,6 +188,45 @@ describe('DbSecretsVaultService — dead-grant detection on refresh', () => {
|
|
|
188
188
|
expect(stored.tokens).toBeUndefined();
|
|
189
189
|
});
|
|
190
190
|
|
|
191
|
+
it('a SUCCESSFUL refresh notifies mutation listeners with the row user (cache repair signal)', async () => {
|
|
192
|
+
const { db } = makeFakeDb([
|
|
193
|
+
[userRow()], // resolve row lookup
|
|
194
|
+
undefined, // refreshed-token persist
|
|
195
|
+
]);
|
|
196
|
+
const svc = new DbSecretsVaultService(db, ENC_KEY, undefined, userScope);
|
|
197
|
+
const onMutation = vi.fn();
|
|
198
|
+
svc.onMutation(onMutation);
|
|
199
|
+
vi.stubGlobal(
|
|
200
|
+
'fetch',
|
|
201
|
+
vi.fn(async () =>
|
|
202
|
+
new Response(
|
|
203
|
+
JSON.stringify({ access_token: 'fresh-at', refresh_token: 'rt-2', expires_in: 3600 }),
|
|
204
|
+
{ status: 200 },
|
|
205
|
+
),
|
|
206
|
+
),
|
|
207
|
+
);
|
|
208
|
+
|
|
209
|
+
await expect(svc.resolve('user-1', KEY)).resolves.toBe('fresh-at');
|
|
210
|
+
expect(onMutation).toHaveBeenCalledWith('user-1');
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
it('putSharedOAuthProvider notifies mutation listeners with null (shared → everyone)', async () => {
|
|
214
|
+
const { db } = makeFakeDb([undefined]); // provider upsert
|
|
215
|
+
const svc = new DbSecretsVaultService(db, ENC_KEY);
|
|
216
|
+
const onMutation = vi.fn();
|
|
217
|
+
svc.onMutation(onMutation);
|
|
218
|
+
await svc.putSharedOAuthProvider({
|
|
219
|
+
key: KEY,
|
|
220
|
+
provider: {
|
|
221
|
+
clientId: 'client-1',
|
|
222
|
+
authorizationUrl: 'https://idp.example.com/authorize',
|
|
223
|
+
tokenUrl: 'https://idp.example.com/token',
|
|
224
|
+
scopes: ['mcp.read'],
|
|
225
|
+
},
|
|
226
|
+
});
|
|
227
|
+
expect(onMutation).toHaveBeenCalledWith(null);
|
|
228
|
+
});
|
|
229
|
+
|
|
191
230
|
it('a transient failure (network / 5xx) keeps the tokens and returns the stale one', async () => {
|
|
192
231
|
for (const impl of [
|
|
193
232
|
async () => new Response('bad gateway', { status: 502 }),
|