preference.reset
Reset or permanently delete user preference profiles and associated signals in ReftrixMCP's design analysis system, supporting GDPR compliance requirements.
Instructions
嗜好プロファイルをリセットします。confirm: trueが必須です。preference_signalsもCASCADE削除されます。Reset preference profile. confirm: true is required. preference_signals are CASCADE deleted.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| profile_id | Yes | プロファイルID(必須) / Profile ID (required) | |
| confirm | Yes | リセット確認フラグ(trueでリセット実行) / Reset confirmation flag (true to execute reset) | |
| hard_delete | No | 完全削除フラグ(trueでプロファイルとシグナルを完全に削除、GDPR忘れられる権利対応) / Hard delete flag (true to permanently delete profile and signals, GDPR Right to Erasure) |
Implementation Reference
- Handler function that executes the preference.reset tool, including validation, confirmation check, and calling the preference service to reset or delete the profile.
export async function preferenceResetHandler(input: unknown): Promise<PreferenceResetOutput> { if (isDevelopment()) { logger.info("[MCP Tool] preference.reset called", { profileId: truncateId((input as Record<string, unknown>)?.profile_id as string | undefined), }); } // 入力バリデーション / Input validation let validated: PreferenceResetInput; try { validated = preferenceResetInputSchema.parse(input); } catch (error) { if (error instanceof ZodError) { const errorMessage = error.errors.map((e) => `${e.path.join(".")}: ${e.message}`).join(", "); logger.warn("[MCP Tool] preference.reset validation error", { errors: error.errors, }); return { success: false, error: { code: PREFERENCE_MCP_ERROR_CODES.VALIDATION_ERROR, message: `Validation error: ${errorMessage}`, }, }; } throw error; } // confirm チェック / Confirm check if (!validated.confirm) { if (isDevelopment()) { logger.info("[MCP Tool] preference.reset rejected: confirm is false"); } return { success: false, error: { code: PREFERENCE_MCP_ERROR_CODES.RESET_NOT_CONFIRMED, message: "Reset not confirmed. Set confirm: true to proceed with profile reset.", }, }; } // サービスファクトリーチェック / Service factory check if (!preferenceServiceFactory) { logger.warn("[MCP Tool] preference.reset service factory not set"); return { success: false, error: { code: PREFERENCE_MCP_ERROR_CODES.SERVICE_UNAVAILABLE, message: "Preference service is not available", }, }; } const service = preferenceServiceFactory(); try { // hard_delete: true → プロファイル完全削除(GDPR忘れられる権利) // hard_delete: true → permanently delete profile (GDPR Right to Erasure) if (validated.hard_delete) { const result = await service.deleteProfile(validated.profile_id); if (isDevelopment()) { logger.info("[MCP Tool] preference.reset hard delete completed", { profileId: truncateId(result.profile_id), deleted: result.deleted, }); } return { success: true, data: { reset: true, profile_id: result.profile_id }, }; } const result = await service.resetProfile(validated.profile_id); if (isDevelopment()) { logger.info("[MCP Tool] preference.reset completed", { profileId: truncateId(result.profile_id), reset: result.reset, }); } return { success: true, data: result, }; } catch (error) { const errorInstance = error instanceof Error ? error : new Error(String(error)); const errorCode = mapErrorToCode(errorInstance); // 全環境でログ出力(isDevelopmentガードなし) // Log in all environments (no isDevelopment guard) logger.warn("[MCP Tool] preference.reset error", { code: errorCode, error: errorInstance.message, }); return { success: false, error: { code: errorCode, message: sanitizeErrorMessage(errorCode), }, }; } } - Definition for the preference.reset MCP tool, including its name, description, and input schema.
export const preferenceResetToolDefinition = { name: "preference.reset", description: "嗜好プロファイルをリセットします。confirm: trueが必須です。preference_signalsもCASCADE削除されます。" + "Reset preference profile. confirm: true is required. preference_signals are CASCADE deleted.", annotations: { title: "Preference Reset", readOnlyHint: false, idempotentHint: true, openWorldHint: false, }, inputSchema: { type: "object" as const, properties: { profile_id: { type: "string", format: "uuid", description: "プロファイルID(必須) / Profile ID (required)", }, confirm: { type: "boolean", description: "リセット確認フラグ(trueでリセット実行) / Reset confirmation flag (true to execute reset)", }, hard_delete: { type: "boolean", description: "完全削除フラグ(trueでプロファイルとシグナルを完全に削除、GDPR忘れられる権利対応) / " + "Hard delete flag (true to permanently delete profile and signals, GDPR Right to Erasure)", }, }, required: ["profile_id", "confirm"], }, };