Refactor MCP tree server: dispatch table, caching, validation, subprocess cleanup
Break up the 1735-line handle_tool match into 45 individual handler functions with hashtable-based dispatch. Add mtime-based file parse caching (AST + CST), consolidated run_command helper replacing 9 bare open_process_in patterns, require_file/require_dir input validation, and pagination (limit/offset) for sx_find_across, sx_comp_list, sx_comp_usage. Also includes pending VM changes: rest-arity support, hyperscript parser, compiler/transpiler updates. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -941,7 +941,19 @@ let () =
|
||||
| [f; Nil] -> call f []
|
||||
| _ -> raise (Eval_error "apply: function and list"));
|
||||
register "identical?" (fun args ->
|
||||
match args with [a; b] -> Bool (a == b) | _ -> raise (Eval_error "identical?: 2 args"));
|
||||
match args with
|
||||
| [a; b] ->
|
||||
(* Physical identity for reference types, structural for values.
|
||||
Numbers/strings/booleans from different constant pools must
|
||||
compare equal when their values match. *)
|
||||
let identical = match a, b with
|
||||
| Number x, Number y -> x = y
|
||||
| String x, String y -> x = y (* String.equal *)
|
||||
| Bool x, Bool y -> x = y
|
||||
| Nil, Nil -> true
|
||||
| _ -> a == b (* reference identity for dicts, lists, etc. *)
|
||||
in Bool identical
|
||||
| _ -> raise (Eval_error "identical?: 2 args"));
|
||||
register "make-spread" (fun args ->
|
||||
match args with
|
||||
| [Dict d] ->
|
||||
|
||||
Reference in New Issue
Block a user