mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-21 06:26:26 +00:00
3efedd5e48
The prompts registrar is gone. Each prompt moves to the domain that owns its data instead of a shared file that had to import three bridges to serve them. packing-list goes to PackingMcp and budget-overview to BudgetMcp, both reusing the `when` addon gate their tools already carry — so a disabled addon keeps the prompt out of the listing, exactly as the `if (isAddonEnabled(...))` around the registration call did. Both keep taking the trip title through trips.bridge: TripsModule imports PackingModule and BudgetModule, so injecting TripsService would close a cycle. Same documented in-container exception as atlas.mcp.ts, and the registrar reached for it the same way. token_auth_notice goes to a new AuthMcp — it is a statement about how the session authenticated, not about trip data, and it injects nothing because the message is static. Its `if (isStaticToken)` guard becomes `when: (ctx) => ctx.isStaticToken`; the registry hands `when` the session context, so an OAuth 2.1 session never sees the prompt listed at all, which is what the registrar achieved by skipping registration. src/mcp/tools/ is down to _shared.ts and journey.ts. journey stays until services/journeyService folds, which waits on memories.
37 lines
1.5 KiB
TypeScript
37 lines
1.5 KiB
TypeScript
import { McpController, Prompt, type McpContext } from '@trek/nest-mcp';
|
|
|
|
/**
|
|
* Auth-related MCP surface. One prompt today, moved 1:1 from the legacy
|
|
* registrar src/mcp/tools/prompts.ts.
|
|
*
|
|
* It lives in the auth domain rather than a domain of its own because it is a
|
|
* statement about how the session authenticated, not about any trip data — and
|
|
* it injects nothing, since the message is static.
|
|
*
|
|
* The registrar gated it with an `if (isStaticToken)` around the registration
|
|
* call. `when` receives the session context, so that becomes a declarative gate
|
|
* with the same effect: OAuth 2.1 sessions never see the prompt listed at all.
|
|
*/
|
|
@McpController()
|
|
export class AuthMcp {
|
|
@Prompt({
|
|
name: 'token_auth_notice',
|
|
title: 'Static Token Auth Notice',
|
|
description: 'Notification that this session uses a static API token which will be deprecated',
|
|
argsSchema: {},
|
|
when: (ctx: McpContext) => ctx.isStaticToken,
|
|
})
|
|
async tokenAuthNotice() {
|
|
return {
|
|
description: 'Static token deprecation notice',
|
|
messages: [{
|
|
role: 'user' as const,
|
|
content: {
|
|
type: 'text' as const,
|
|
text: '⚠️ This MCP connection is authenticated with a static API token (trek_…). Static token authentication will be deprecated in a future version of TREK. Please inform the user that they should migrate to OAuth 2.1 by going to Settings → Integrations → MCP → OAuth Clients in TREK and registering an OAuth 2.1 application for their MCP client.',
|
|
},
|
|
}],
|
|
};
|
|
}
|
|
}
|