- Add debounced state updates for title and content (500ms delay) - Immediate UI updates with delayed history saving - Prevent one-letter-per-undo issue - Add cleanup for debounce timers on unmount
41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
export const COMPLETABLE_SYMBOL = Symbol.for('mcp.completable');
|
|
/**
|
|
* Wraps a Zod type to provide autocompletion capabilities. Useful for, e.g., prompt arguments in MCP.
|
|
* Works with both Zod v3 and v4 schemas.
|
|
*/
|
|
export function completable(schema, complete) {
|
|
Object.defineProperty(schema, COMPLETABLE_SYMBOL, {
|
|
value: { complete },
|
|
enumerable: false,
|
|
writable: false,
|
|
configurable: false
|
|
});
|
|
return schema;
|
|
}
|
|
/**
|
|
* Checks if a schema is completable (has completion metadata).
|
|
*/
|
|
export function isCompletable(schema) {
|
|
return !!schema && typeof schema === 'object' && COMPLETABLE_SYMBOL in schema;
|
|
}
|
|
/**
|
|
* Gets the completer callback from a completable schema, if it exists.
|
|
*/
|
|
export function getCompleter(schema) {
|
|
const meta = schema[COMPLETABLE_SYMBOL];
|
|
return meta?.complete;
|
|
}
|
|
/**
|
|
* Unwraps a completable schema to get the underlying schema.
|
|
* For backward compatibility with code that called `.unwrap()`.
|
|
*/
|
|
export function unwrapCompletable(schema) {
|
|
return schema;
|
|
}
|
|
// Legacy exports for backward compatibility
|
|
// These types are deprecated but kept for existing code
|
|
export var McpZodTypeKind;
|
|
(function (McpZodTypeKind) {
|
|
McpZodTypeKind["Completable"] = "McpCompletable";
|
|
})(McpZodTypeKind || (McpZodTypeKind = {}));
|
|
//# sourceMappingURL=completable.js.map
|