* refactor(config): parse capability settings into exact states * refactor(runtime): encode replay and process outcomes exactly * refactor: make analysis states unrepresentable * refactor(mcp): register canonical schemas with SDK * fix: preserve capability and catalog invariants * fix(build): remove stale compiled modules * fix(replay): update real verifier policy dependency * fix(package): verify the complete MCP catalog * fix(test): supply complete replay reload policy * refactor(contracts): centralize output schema lookup * refactor(mcp): delegate protocol boundaries to SDK * fix(browser): approve real source capture * fix(mcp): preserve catalog guidance
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import type { ClientFeatureAvailability } from "../contracts/toolOutputSchemaPrimitives.js";
|
|
|
|
type ClientFeatureName = keyof ClientFeatureAvailability;
|
|
|
|
/** Empty MCP client feature declaration used when the caller supplies none. */
|
|
export const NO_CLIENT_FEATURES: ClientFeatureAvailability = {
|
|
elicitation_form: false,
|
|
elicitation_url: false,
|
|
roots: false,
|
|
sampling: false,
|
|
};
|
|
|
|
const CLIENT_FEATURE_REQUIREMENTS: Readonly<
|
|
Record<
|
|
string,
|
|
{
|
|
readonly required: readonly ClientFeatureName[];
|
|
readonly optional: readonly ClientFeatureName[];
|
|
}
|
|
>
|
|
> = {
|
|
capture_process_scenario: {
|
|
required: [],
|
|
optional: ["elicitation_form"],
|
|
},
|
|
};
|
|
|
|
/** Project a tool's client requirements against the negotiated feature set. */
|
|
export const clientRequirementsFor = (
|
|
name: string,
|
|
clientFeatures: ClientFeatureAvailability,
|
|
) => {
|
|
const requirements = CLIENT_FEATURE_REQUIREMENTS[name] ?? {
|
|
required: [],
|
|
optional: [],
|
|
};
|
|
return {
|
|
required: [...requirements.required],
|
|
optional: [...requirements.optional],
|
|
missing_required: requirements.required.filter(
|
|
(feature) => !clientFeatures[feature],
|
|
),
|
|
missing_optional: requirements.optional.filter(
|
|
(feature) => !clientFeatures[feature],
|
|
),
|
|
};
|
|
};
|