mcp-casual-interview
Version:
MCP server for casual interview preparation workflow management
47 lines • 2.08 kB
JavaScript
import { toStructuredCallToolResult, toCallToolResult } from '../util.js';
import { formatResetMessage, errorMessages } from './prompts.js';
// Effect layer imports
import { clearState, getCurrentState } from '../../../effect/workflow-state-storage.js';
/**
* Maps domain WorkflowState to schema WorkflowStateType
*/
const mapWorkflowStateToSchemaType = (domainState) => {
return domainState;
};
/**
* Workflow reset handler - clears all stored workflow state and resets to initial state
*/
export const workflowResetHandler = async (args) => {
try {
// 1. Get current state before reset for reporting purposes
const currentStateResult = await getCurrentState();
let previousState = null;
if (currentStateResult.isOk()) {
previousState = mapWorkflowStateToSchemaType(currentStateResult.value.state);
}
// 2. Clear all workflow state using existing clearState function
const resetResult = await clearState();
if (resetResult.isErr()) {
return toCallToolResult([errorMessages.resetFailed(resetResult.error.message)], true);
}
// 3. Extract reset data
const resetData = resetResult.value;
// 4. Map to output schema
const outputData = {
success: true,
previousState: previousState,
currentState: mapWorkflowStateToSchemaType(resetData.state),
notionPageUrl: resetData.notionPageUrl,
lastUpdated: resetData.lastUpdated,
message: 'ワークフローが正常にリセットされました。最初から準備を開始できます。'
};
// 5. Format for human consumption
const message = formatResetMessage(outputData);
return toStructuredCallToolResult([message], outputData, false);
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
return toCallToolResult([errorMessages.unexpectedError(errorMessage)], true);
}
};
//# sourceMappingURL=handler.js.map