Files
TREK/server/src/addons.ts
T
2026-10-04 12:59:55 +02:00

52 lines
1.6 KiB
TypeScript

export const ADDON_IDS = {
MCP: 'mcp',
PACKING: 'packing',
BUDGET: 'budget',
DOCUMENTS: 'documents',
VACAY: 'vacay',
ATLAS: 'atlas',
COLLAB: 'collab',
JOURNEY: 'journey',
AIRTRAIL: 'airtrail',
DAWARICH: 'dawarich',
LLM_PARSING: 'llm_parsing',
COLLECTIONS: 'collections',
ROADTRIP: 'roadtrip',
TOURS: 'tours',
} as const;
export type AddonId = typeof ADDON_IDS[keyof typeof ADDON_IDS];
/**
* The addons that gate an MCP surface, which is what decides whether switching
* one off has to tear down the live sessions.
*
* A `when:` gate is evaluated once per session, at attach time. A client that
* connected while an addon was on therefore keeps its tools registered and
* callable after an admin switches it off — the gate never re-runs — while the
* REST half answers 404 for the same user in the same moment. Only tearing the
* sessions down closes that.
*
* Stated here rather than collected at import time, so nothing depends on which
* modules a caller happens to have loaded, and guarded by a parity test that
* reads the gates out of the source: as a hand-kept list this had already
* drifted, and airtrail and collections were missing from it.
*
* MCP itself is on the list for a different reason — it gates the whole surface
* rather than any single tool.
*/
export const MCP_GATED_ADDON_IDS: readonly AddonId[] = [
ADDON_IDS.MCP,
ADDON_IDS.AIRTRAIL,
ADDON_IDS.ATLAS,
ADDON_IDS.BUDGET,
ADDON_IDS.COLLAB,
ADDON_IDS.COLLECTIONS,
ADDON_IDS.DAWARICH,
ADDON_IDS.DOCUMENTS,
ADDON_IDS.JOURNEY,
ADDON_IDS.PACKING,
ADDON_IDS.ROADTRIP,
ADDON_IDS.VACAY,
];