|
577 | 577 | } |
578 | 578 | } |
579 | 579 | }, |
| 580 | + { |
| 581 | + "type": "function", |
| 582 | + "function": { |
| 583 | + "name": "graph_manager", |
| 584 | + "description": "REQUIRED: Always specify 'op' parameter. Explore the Godot project graph (scene↔script relationships, signals, resources). Use this before editing to understand connected files.", |
| 585 | + "parameters": { |
| 586 | + "type": "object", |
| 587 | + "additionalProperties": False, |
| 588 | + "properties": { |
| 589 | + "op": { |
| 590 | + "type": "string", |
| 591 | + "enum": ["graph.neighbors", "graph.walk"], |
| 592 | + "description": "Graph operations. 'graph.neighbors' inspects a specific file; 'graph.walk' traverses multiple hops automatically." |
| 593 | + }, |
| 594 | + "file_path": {"type": "string", "description": "Primary file to explore (e.g., 'res://player.gd')."}, |
| 595 | + "file_paths": {"type": "array", "items": {"type": "string"}, "description": "Optional list of additional files to include."}, |
| 596 | + "start_file": {"type": "string", "description": "graph.walk: single starting file/scene."}, |
| 597 | + "start_files": {"type": "array", "items": {"type": "string"}, "description": "graph.walk: list of starting files/scenes."}, |
| 598 | + "project_root": {"type": "string", "description": "Project root path (used to derive project_id if not provided)."}, |
| 599 | + "project_id": {"type": "string", "description": "Project identifier (MD5 hash of project root)."}, |
| 600 | + "depth": {"type": "integer", "default": 1, "minimum": 1, "maximum": 3, "description": "Neighbor expansion depth (currently limited to 1-3)."}, |
| 601 | + "edge_types": {"type": "array", "items": {"type": "string"}, "description": "Filter to specific relationship types (e.g., ['attached_script','scene_ref'])."}, |
| 602 | + "max_nodes": {"type": "integer", "default": 12, "minimum": 1, "maximum": 50, "description": "Maximum nodes to return per file."}, |
| 603 | + "max_edges": {"type": "integer", "default": 24, "minimum": 1, "maximum": 200, "description": "Maximum edges to return per file."}, |
| 604 | + "graph_preview": {"type": "boolean", "default": True, "description": "Return trimmed preview for UI display."}, |
| 605 | + "include_summary": {"type": "boolean", "default": True, "description": "Include aggregate graph statistics."}, |
| 606 | + "include_raw": {"type": "boolean", "default": False, "description": "Return the full raw graph context (can be large)."} |
| 607 | + }, |
| 608 | + "required": ["op"] |
| 609 | + } |
| 610 | + } |
| 611 | + }, |
580 | 612 |
|
581 | 613 | { |
582 | 614 | "type": "function", |
|
592 | 624 | "scene_path": {"type": "string"}, |
593 | 625 | "clear_errors": {"type": "boolean", "default": True}, |
594 | 626 |
|
595 | | - "include_warnings": {"type": "boolean", "default": True}, |
596 | | - "file_filter": {"type": "string"}, |
597 | | - "max_count": {"type": "integer", "default": 20}, |
598 | | - "message_contains": {"type": "string"}, |
599 | | - "group_duplicates": {"type": "boolean", "default": True}, |
| 627 | + "include_warnings": { |
| 628 | + "type": "boolean", |
| 629 | + "default": True, |
| 630 | + "description": "errors.* ops: include warnings alongside errors when summarizing logs." |
| 631 | + }, |
| 632 | + "file_filter": { |
| 633 | + "type": "string", |
| 634 | + "description": "errors.* ops: only include entries whose file path contains this substring (e.g., 'player.gd')." |
| 635 | + }, |
| 636 | + "max_count": { |
| 637 | + "type": "integer", |
| 638 | + "default": 20, |
| 639 | + "description": "errors.* ops: limit number of error instances to return after filtering." |
| 640 | + }, |
| 641 | + "message_contains": { |
| 642 | + "type": "string", |
| 643 | + "description": "errors.* ops: only include messages that contain this substring." |
| 644 | + }, |
| 645 | + "group_duplicates": { |
| 646 | + "type": "boolean", |
| 647 | + "default": True, |
| 648 | + "description": "errors.summary: when true, collapse identical errors into a single entry with counts." |
| 649 | + }, |
600 | 650 |
|
601 | 651 | # Screenshot parameters (TEMP disabled) |
602 | 652 | # "filename": {"type": "string", "default": "screenshot_debug.png"}, |
603 | 653 | # "target": {"type": "string", "enum": ["editor", "game", "both"], "default": "game"}, |
604 | 654 | # "return_base64": {"type": "boolean", "default": True}, |
605 | 655 |
|
606 | 656 | # Console output parameters |
607 | | - "output_type": {"type": "string", "enum": ["all", "print", "error", "warning"], "default": "all"}, |
608 | | - "max_lines": {"type": "integer", "default": 50, "description": "Maximum console lines to retrieve"}, |
609 | | - "since_timestamp": {"type": "integer", "description": "Only get output since this timestamp (milliseconds)"}, |
| 657 | + "lookback_seconds": { |
| 658 | + "type": "number", |
| 659 | + "minimum": 0, |
| 660 | + "description": "errors.* ops: only include runtime errors from the last N seconds (0 = all history)." |
| 661 | + }, |
| 662 | + "output_type": { |
| 663 | + "type": "string", |
| 664 | + "enum": ["all", "print", "error", "warning"], |
| 665 | + "default": "all", |
| 666 | + "description": "console.get_output: which messages to return (filters by Godot log category)." |
| 667 | + }, |
| 668 | + "max_lines": { |
| 669 | + "type": "integer", |
| 670 | + "default": 50, |
| 671 | + "description": "console.get_output: maximum number of filtered game log lines to return." |
| 672 | + }, |
| 673 | + "since_timestamp": { |
| 674 | + "type": "integer", |
| 675 | + "description": "console.get_output: reserved for future incremental log streaming (currently ignored)." |
| 676 | + }, |
610 | 677 |
|
611 | 678 | # Input testing parameters |
612 | 679 | "action_name": {"type": "string", "description": "Input action name to test"}, |
|
733 | 800 | "required": ["op"] |
734 | 801 | } |
735 | 802 | } |
| 803 | + }, |
| 804 | + |
| 805 | + { |
| 806 | + "type": "function", |
| 807 | + "function": { |
| 808 | + "name": "todo_manager", |
| 809 | + "description": "Plan tracker for the AI. ONLY call after you've already run semantic search + graph.walk + file reads and need to organize the next steps.", |
| 810 | + "parameters": { |
| 811 | + "type": "object", |
| 812 | + "additionalProperties": False, |
| 813 | + "properties": { |
| 814 | + "op": { |
| 815 | + "type": "string", |
| 816 | + "enum": ["todo.list", "todo.add", "todo.add_batch", "todo.update", "todo.remove", "todo.clear"], |
| 817 | + "description": "Todo operation (list/add/update/remove/clear)." |
| 818 | + }, |
| 819 | + "project_root": {"type": "string", "description": "Project root/path used to scope the todo list."}, |
| 820 | + "content": {"type": "string", "description": "Todo text (required for todo.add)."}, |
| 821 | + "status": { |
| 822 | + "type": "string", |
| 823 | + "enum": ["pending", "in_progress", "completed", "cancelled"], |
| 824 | + "description": "Status for todo.add/todo.update (defaults to 'pending')." |
| 825 | + }, |
| 826 | + "items": { |
| 827 | + "type": "array", |
| 828 | + "items": { |
| 829 | + "type": "object", |
| 830 | + "properties": { |
| 831 | + "content": {"type": "string"}, |
| 832 | + "status": { |
| 833 | + "type": "string", |
| 834 | + "enum": ["pending", "in_progress", "completed", "cancelled"], |
| 835 | + "default": "pending" |
| 836 | + } |
| 837 | + }, |
| 838 | + "required": ["content"] |
| 839 | + }, |
| 840 | + "description": "Batch payload for todo.add_batch" |
| 841 | + }, |
| 842 | + "todo_id": {"type": "string", "description": "Todo identifier for update/remove operations."} |
| 843 | + }, |
| 844 | + "required": ["op"] |
| 845 | + } |
| 846 | + } |
736 | 847 | } |
737 | 848 | ] |
738 | 849 |
|
|
0 commit comments