codegraph-engine 2.2.1__py3-none-any.whl → 3.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- codegraph/__init__.py +1 -1
- codegraph/agent_brain.py +172 -2
- codegraph/agent_capabilities.py +564 -6
- codegraph/agent_rules.py +1 -1
- codegraph/api_drift.py +455 -0
- codegraph/async_queue/__init__.py +50 -0
- codegraph/async_queue/detectors/__init__.py +48 -0
- codegraph/async_queue/detectors/celery.py +160 -0
- codegraph/async_queue/detectors/kafka.py +168 -0
- codegraph/async_queue/detectors/rabbitmq.py +116 -0
- codegraph/async_queue/detectors/redis.py +130 -0
- codegraph/async_queue/detectors/sqs.py +135 -0
- codegraph/async_queue/models.py +161 -0
- codegraph/async_queue/otel_models.py +74 -0
- codegraph/async_queue/otel_parser.py +337 -0
- codegraph/async_queue/reconciler.py +427 -0
- codegraph/async_queue/scanner.py +291 -0
- codegraph/async_queue/traversal.py +447 -0
- codegraph/branch_comparison.py +197 -0
- codegraph/change_impact.py +547 -0
- codegraph/cli.py +992 -3
- codegraph/cli_output.py +17 -2
- codegraph/context.py +38 -11
- codegraph/context_freshness.py +351 -0
- codegraph/database/__init__.py +14 -0
- codegraph/database/extractor.py +712 -17
- codegraph/database/interrogation.py +388 -2
- codegraph/database/schema_drift.py +862 -0
- codegraph/epistemic.py +7 -0
- codegraph/evidence_contract.py +21 -0
- codegraph/frameworks.py +171 -6
- codegraph/frameworks_nestjs.py +502 -0
- codegraph/frameworks_nextjs.py +337 -0
- codegraph/frameworks_react.py +457 -0
- codegraph/freshness.py +2 -0
- codegraph/frontend_html.py +109 -0
- codegraph/git.py +2 -0
- codegraph/git_state.py +545 -0
- codegraph/indexing/__init__.py +7 -1
- codegraph/indexing/indexer.py +291 -38
- codegraph/indexing/models.py +6 -0
- codegraph/indexing/parser.py +239 -0
- codegraph/indexing/pool.py +136 -0
- codegraph/indexing/scanner.py +6 -0
- codegraph/indexing/templates.py +418 -0
- codegraph/interrogation.py +128 -20
- codegraph/mcp/server.py +258 -27
- codegraph/models.py +7 -0
- codegraph/monorepo.py +3 -0
- codegraph/optimizer.py +42 -5
- codegraph/process_lifecycle.py +31 -13
- codegraph/refactor/__init__.py +36 -0
- codegraph/refactor/models.py +114 -0
- codegraph/refactor/renamer.py +844 -0
- codegraph/refactor/transactions.py +403 -0
- codegraph/resolver.py +1202 -159
- codegraph/retrieval_policy.py +6 -0
- codegraph/route_topology.py +172 -0
- codegraph/runtime/__init__.py +19 -0
- codegraph/runtime/collector.py +155 -0
- codegraph/runtime/db_watcher.py +191 -0
- codegraph/runtime/ingestor.py +30 -10
- codegraph/runtime/port_inspector.py +304 -0
- codegraph/runtime/runner.py +155 -6
- codegraph/runtime/trace_linker.py +175 -0
- codegraph/search/hybrid.py +26 -0
- codegraph/semantic_conflicts.py +270 -0
- codegraph/semantic_decorators.py +34 -3
- codegraph/structural_diff.py +542 -0
- codegraph/styles.py +144 -0
- codegraph/symbol_history.py +277 -0
- codegraph/tsconfig.py +236 -0
- codegraph/ui/__init__.py +6 -0
- codegraph/ui/server.py +715 -0
- codegraph/watcher.py +323 -0
- {codegraph_engine-2.2.1.dist-info → codegraph_engine-3.0.0.dist-info}/METADATA +257 -39
- codegraph_engine-3.0.0.dist-info/RECORD +129 -0
- codegraph_engine-2.2.1.dist-info/RECORD +0 -87
- {codegraph_engine-2.2.1.dist-info → codegraph_engine-3.0.0.dist-info}/WHEEL +0 -0
- {codegraph_engine-2.2.1.dist-info → codegraph_engine-3.0.0.dist-info}/entry_points.txt +0 -0
- {codegraph_engine-2.2.1.dist-info → codegraph_engine-3.0.0.dist-info}/licenses/LICENSE +0 -0
- {codegraph_engine-2.2.1.dist-info → codegraph_engine-3.0.0.dist-info}/top_level.txt +0 -0
codegraph/agent_capabilities.py
CHANGED
|
@@ -152,6 +152,14 @@ ROUTING_MANIFEST: dict[str, str] = {
|
|
|
152
152
|
"runtime_ingest": "ingest_runtime_traces",
|
|
153
153
|
"runtime_trace": "get_runtime_trace",
|
|
154
154
|
"runtime_reconcile": "reconcile_static_runtime",
|
|
155
|
+
"git_state": "get_git_state",
|
|
156
|
+
"git_diff": "compare_git",
|
|
157
|
+
"change_impact_deep": "get_change_impact",
|
|
158
|
+
"context_freshness": "check_context_freshness",
|
|
159
|
+
"symbol_history": "trace_symbol_history",
|
|
160
|
+
"semantic_conflicts": "detect_semantic_conflicts",
|
|
161
|
+
"safe_rename": "safe_rename",
|
|
162
|
+
"rollback_refactor": "rollback_refactor",
|
|
155
163
|
}
|
|
156
164
|
|
|
157
165
|
DEFAULT_AGENT_PROFILE_TOOLS: tuple[str, ...] = (
|
|
@@ -730,7 +738,7 @@ TOOL_CAPABILITY_REGISTRY: tuple[ToolCapabilitySpec, ...] = (
|
|
|
730
738
|
description=(
|
|
731
739
|
"Compile a token-bounded, coverage-optimized ContextPacket containing verified symbols, compressed relationships, routes, DI providers, packages, and related tests. "
|
|
732
740
|
"Primary input: `query` (natural-language question, symbol, or task description; `task` is also supported as a compatibility alias for string or structured TaskSpec dict). "
|
|
733
|
-
"Budget controls: `max_tokens` (default 4000, hard cap 20000), `max_files` (default
|
|
741
|
+
"Budget controls: `max_tokens` (default 4000, hard cap 20000), `max_files` (default 25, hard cap 40), `max_lines` (default 500, hard cap 1500). "
|
|
734
742
|
"Preserves UNKNOWN, POSSIBLE, and AMBIGUOUS states explicitly. "
|
|
735
743
|
"Does not return full raw files; use targeted get_file or read_file only if exact omitted lines are needed afterward."
|
|
736
744
|
),
|
|
@@ -784,7 +792,7 @@ TOOL_CAPABILITY_REGISTRY: tuple[ToolCapabilitySpec, ...] = (
|
|
|
784
792
|
),
|
|
785
793
|
profiles=("agent", "graph", "minimal", "developer", "full"),
|
|
786
794
|
minimal_invocation='get_context(query="Debug authentication failure in login_endpoint")',
|
|
787
|
-
advanced_invocation='get_context(query="Trace DI chain for get_current_user", intent="DEBUG", max_tokens=4000, max_files=
|
|
795
|
+
advanced_invocation='get_context(query="Trace DI chain for get_current_user", intent="DEBUG", max_tokens=4000, max_files=25, max_lines=500, explain=True)',
|
|
788
796
|
result_fields=("symbols", "relationships", "routes", "tests", "packages", "unknowns", "conflicts", "uncertainties", "freshness", "selected_tokens", "candidate_tokens", "selected_files", "selected_lines", "coverage_score", "truncated", "candidate_token_estimate", "selected_token_estimate", "context_reduction_pct", "coverage"),
|
|
789
797
|
typical_followup="get_file on specific line ranges if implementation details outside snippets are required",
|
|
790
798
|
common_mistakes=(
|
|
@@ -2390,6 +2398,542 @@ TOOL_CAPABILITY_REGISTRY: tuple[ToolCapabilitySpec, ...] = (
|
|
|
2390
2398
|
example_call='reconcile_static_runtime(route="/api/scan-bill")',
|
|
2391
2399
|
example_interpretation="Inspect confirmed_runtime_paths, static_runtime_conflicts, not_observed_at_runtime, and runtime_only_observed.",
|
|
2392
2400
|
),
|
|
2401
|
+
# 57. get_git_state
|
|
2402
|
+
ToolCapabilitySpec(
|
|
2403
|
+
tool_name="get_git_state",
|
|
2404
|
+
capability="git_state_tracking",
|
|
2405
|
+
description=(
|
|
2406
|
+
"Track current Git branch, HEAD commit, indexed commit, working tree modifications, staged files, and explicit freshness states (CLEAN, DIRTY, STALE, REINDEXING, ERROR). "
|
|
2407
|
+
"Use when asking if the index is up to date, which files changed, or what git branch is active. "
|
|
2408
|
+
"Does not perform a full repository scan when an incremental update is safe."
|
|
2409
|
+
),
|
|
2410
|
+
task_types=(
|
|
2411
|
+
AgentTaskCategory.DIAGNOSTIC.value,
|
|
2412
|
+
AgentTaskCategory.CHANGE_IMPACT.value,
|
|
2413
|
+
),
|
|
2414
|
+
required_inputs=(),
|
|
2415
|
+
optional_inputs=(),
|
|
2416
|
+
expected_output_type="GitStateReport",
|
|
2417
|
+
relationship_types_returned=(),
|
|
2418
|
+
evidence_guarantees="Deterministic Git rev-parse and status porcelain v1 inspection.",
|
|
2419
|
+
does_not_prove="Does not prove semantic impact; reports file-level and commit-level freshness.",
|
|
2420
|
+
useful_situations=(
|
|
2421
|
+
"Checking if repository has uncommitted changes or if re-indexing is required after pulling git commits",
|
|
2422
|
+
),
|
|
2423
|
+
avoid_when=(
|
|
2424
|
+
"You need symbol-level blast radius rather than repository freshness status",
|
|
2425
|
+
),
|
|
2426
|
+
profiles=("full",),
|
|
2427
|
+
minimal_invocation="get_git_state()",
|
|
2428
|
+
advanced_invocation="get_git_state()",
|
|
2429
|
+
result_fields=("is_git", "branch", "current_head", "indexed_head", "freshness", "working_tree", "reindex_required", "detail"),
|
|
2430
|
+
typical_followup="compare_git or get_change_impact if files were modified",
|
|
2431
|
+
common_mistakes=(
|
|
2432
|
+
"Assuming CLEAN means all tests pass; CLEAN only indicates index matches working tree and HEAD",
|
|
2433
|
+
),
|
|
2434
|
+
example_request="Is my CodeGraph index currently up to date with Git HEAD?",
|
|
2435
|
+
example_call="get_git_state()",
|
|
2436
|
+
example_interpretation="Inspect freshness (CLEAN, DIRTY, or STALE) and working_tree.modified_files.",
|
|
2437
|
+
),
|
|
2438
|
+
# 58. compare_git
|
|
2439
|
+
ToolCapabilitySpec(
|
|
2440
|
+
tool_name="compare_git",
|
|
2441
|
+
capability="structural_git_diff",
|
|
2442
|
+
description=(
|
|
2443
|
+
"Compare two Git revisions, commits, or branches structurally. "
|
|
2444
|
+
"Detects added/deleted/modified/renamed files, AST symbol changes, relationship diffs, routes, and affected tests. "
|
|
2445
|
+
"Use when comparing branches or commits structurally. "
|
|
2446
|
+
"Does not execute repository code."
|
|
2447
|
+
),
|
|
2448
|
+
task_types=(
|
|
2449
|
+
AgentTaskCategory.CHANGE_IMPACT.value,
|
|
2450
|
+
AgentTaskCategory.ARCHITECTURE.value,
|
|
2451
|
+
),
|
|
2452
|
+
required_inputs=(),
|
|
2453
|
+
optional_inputs=("base", "head", "branch_comparison"),
|
|
2454
|
+
expected_output_type="StructuralDiffResult",
|
|
2455
|
+
relationship_types_returned=("CALLS", "IMPORTS", "ROUTES_TO", "TESTS"),
|
|
2456
|
+
evidence_guarantees="AST parsing of before/after revisions with exact file:line citations and similarity scores.",
|
|
2457
|
+
does_not_prove="Does not execute code or run test assertions.",
|
|
2458
|
+
useful_situations=(
|
|
2459
|
+
"Understanding structural changes between two branches or commits without parsing raw diff text",
|
|
2460
|
+
),
|
|
2461
|
+
avoid_when=(
|
|
2462
|
+
"You only need high-level commit log summaries without AST symbol diffs",
|
|
2463
|
+
),
|
|
2464
|
+
profiles=("full",),
|
|
2465
|
+
minimal_invocation='compare_git(base="HEAD~1", head="HEAD")',
|
|
2466
|
+
advanced_invocation='compare_git(base="main", head="my-feature", branch_comparison=True)',
|
|
2467
|
+
result_fields=("base_ref", "head_ref", "added_files", "deleted_files", "modified_files", "renamed_files", "added_symbols", "removed_symbols", "changed_symbols", "changed_routes", "affected_tests"),
|
|
2468
|
+
typical_followup="get_change_impact to find downstream callers of changed symbols",
|
|
2469
|
+
common_mistakes=(
|
|
2470
|
+
"Expecting compare_git to format unified diff text; it outputs AST and structural symbol objects",
|
|
2471
|
+
),
|
|
2472
|
+
example_request="What symbols, routes, and tests changed structurally between main and this branch?",
|
|
2473
|
+
example_call='compare_git(base="main", head="HEAD", branch_comparison=True)',
|
|
2474
|
+
example_interpretation="Inspect packages, modules, changed_symbols, and changed_routes.",
|
|
2475
|
+
),
|
|
2476
|
+
# 59. get_change_impact
|
|
2477
|
+
ToolCapabilitySpec(
|
|
2478
|
+
tool_name="get_change_impact",
|
|
2479
|
+
capability="deep_change_impact_analysis",
|
|
2480
|
+
description=(
|
|
2481
|
+
"Compute deep downstream change impact across callers, callees, framework routes, covering tests, mutating database queries, and monorepo packages. "
|
|
2482
|
+
"Returns ranked entities with explicit confidence (FACT, POSSIBLE, UNKNOWN) and blast radius score. "
|
|
2483
|
+
"Use when evaluating ripple effects of git commits. "
|
|
2484
|
+
"Does not execute repository test suites."
|
|
2485
|
+
),
|
|
2486
|
+
task_types=(
|
|
2487
|
+
AgentTaskCategory.CHANGE_IMPACT.value,
|
|
2488
|
+
AgentTaskCategory.TEST_DISCOVERY.value,
|
|
2489
|
+
AgentTaskCategory.DEBUG.value,
|
|
2490
|
+
),
|
|
2491
|
+
required_inputs=(),
|
|
2492
|
+
optional_inputs=("base", "head", "max_depth", "max_results"),
|
|
2493
|
+
expected_output_type="DeepImpactResult",
|
|
2494
|
+
relationship_types_returned=("CALLS", "CALLED_BY", "ROUTES_TO", "TESTS", "WRITES_TABLE", "READS_TABLE", "DEPENDS_ON"),
|
|
2495
|
+
evidence_guarantees="Complete graph traversal connecting modified AST symbols to callers, routes, tests, and DB queries.",
|
|
2496
|
+
does_not_prove="Does not prove runtime execution frequencies; reports static graph reachability.",
|
|
2497
|
+
useful_situations=(
|
|
2498
|
+
"Evaluating what code, routes, database writes, and tests will break if git changes are merged",
|
|
2499
|
+
),
|
|
2500
|
+
avoid_when=(
|
|
2501
|
+
"No git changes exist and you are analyzing a single untouched function",
|
|
2502
|
+
),
|
|
2503
|
+
profiles=("full",),
|
|
2504
|
+
minimal_invocation="get_change_impact()",
|
|
2505
|
+
advanced_invocation='get_change_impact(base="HEAD~3", head="HEAD", max_depth=2, max_results=50)',
|
|
2506
|
+
result_fields=("base_ref", "head_ref", "changed_files", "changed_symbols", "direct_callers", "transitive_callers", "affected_routes", "affected_tests", "db_writers", "blast_radius_score"),
|
|
2507
|
+
typical_followup="find_tests or get_file on affected_routes / direct_callers",
|
|
2508
|
+
common_mistakes=(
|
|
2509
|
+
"Relying solely on textual search instead of graph reachability for blast radius analysis",
|
|
2510
|
+
),
|
|
2511
|
+
example_request="What is the blast radius and which routes, callers, and tests are affected by my branch?",
|
|
2512
|
+
example_call='get_change_impact(base="HEAD~1", head="HEAD")',
|
|
2513
|
+
example_interpretation="Inspect blast_radius_score, direct_callers, affected_routes, and affected_tests.",
|
|
2514
|
+
),
|
|
2515
|
+
# 60. check_context_freshness
|
|
2516
|
+
ToolCapabilitySpec(
|
|
2517
|
+
tool_name="check_context_freshness",
|
|
2518
|
+
capability="context_freshness_validation",
|
|
2519
|
+
description=(
|
|
2520
|
+
"Validate whether a previously compiled context packet or task context is still VALID, PARTIALLY_STALE, or STALE. "
|
|
2521
|
+
"Guarantees that changes to unrelated files keep context VALID. "
|
|
2522
|
+
"Use when checking if previously compiled context remains valid after edits. "
|
|
2523
|
+
"Does not invalidate context when only unrelated files change."
|
|
2524
|
+
),
|
|
2525
|
+
task_types=(
|
|
2526
|
+
AgentTaskCategory.DIAGNOSTIC.value,
|
|
2527
|
+
AgentTaskCategory.CHANGE_IMPACT.value,
|
|
2528
|
+
),
|
|
2529
|
+
required_inputs=(),
|
|
2530
|
+
optional_inputs=("task", "context_packet"),
|
|
2531
|
+
expected_output_type="ContextFreshnessResult",
|
|
2532
|
+
relationship_types_returned=(),
|
|
2533
|
+
evidence_guarantees="Intersection of Git diff line/file changes against exact symbol and file references in context packet.",
|
|
2534
|
+
does_not_prove="Does not recompile context; reports freshness validity and recommended action.",
|
|
2535
|
+
useful_situations=(
|
|
2536
|
+
"Checking if previously cached or generated AI context packet is still safe to use after editing files",
|
|
2537
|
+
),
|
|
2538
|
+
avoid_when=(
|
|
2539
|
+
"Compiling brand-new context from scratch for an initial prompt",
|
|
2540
|
+
),
|
|
2541
|
+
profiles=("full",),
|
|
2542
|
+
minimal_invocation='check_context_freshness(task="Fix auth timeout")',
|
|
2543
|
+
advanced_invocation="check_context_freshness(context_packet=my_packet)",
|
|
2544
|
+
result_fields=("status", "base_commit", "current_head", "repository_dirty", "context_files", "changed_relevant_files", "unrelated_changed_files", "invalidated_symbols", "reason", "recommended_action"),
|
|
2545
|
+
typical_followup="get_context if status is STALE or PARTIALLY_STALE",
|
|
2546
|
+
common_mistakes=(
|
|
2547
|
+
"Assuming any file change invalidates context; unrelated changes leave context VALID",
|
|
2548
|
+
),
|
|
2549
|
+
example_request="Is my current context packet still valid after my recent git modifications?",
|
|
2550
|
+
example_call='check_context_freshness(task="Fix auth timeout")',
|
|
2551
|
+
example_interpretation="Inspect status: VALID means safe to proceed, STALE means recompile required.",
|
|
2552
|
+
),
|
|
2553
|
+
# 61. trace_symbol_history
|
|
2554
|
+
ToolCapabilitySpec(
|
|
2555
|
+
tool_name="trace_symbol_history",
|
|
2556
|
+
capability="symbol_history_tracing",
|
|
2557
|
+
description=(
|
|
2558
|
+
"Trace deterministic symbol evolution across Git history: introduced, modified, moved across files, renamed, or deleted. "
|
|
2559
|
+
"Uses AST structure and body hashes to differentiate FACT from POSSIBLE/AMBIGUOUS renames. "
|
|
2560
|
+
"Use when discovering when a symbol was added, moved, or renamed. "
|
|
2561
|
+
"Does not guess ambiguous renames without evidence."
|
|
2562
|
+
),
|
|
2563
|
+
task_types=(
|
|
2564
|
+
AgentTaskCategory.SYMBOL_LOOKUP.value,
|
|
2565
|
+
AgentTaskCategory.CHANGE_IMPACT.value,
|
|
2566
|
+
),
|
|
2567
|
+
required_inputs=("symbol",),
|
|
2568
|
+
optional_inputs=("path", "max_commits"),
|
|
2569
|
+
expected_output_type="SymbolHistoryResult",
|
|
2570
|
+
relationship_types_returned=(),
|
|
2571
|
+
evidence_guarantees="Git log history correlated with AST body hashes and file rename metadata.",
|
|
2572
|
+
does_not_prove="Does not guarantee intent behind refactors; reports structural code evolution.",
|
|
2573
|
+
useful_situations=(
|
|
2574
|
+
"Tracing when a function was introduced, modified, moved to a different module, or renamed",
|
|
2575
|
+
),
|
|
2576
|
+
avoid_when=(
|
|
2577
|
+
"You only need current static callers and callees in the working tree",
|
|
2578
|
+
),
|
|
2579
|
+
profiles=("full",),
|
|
2580
|
+
minimal_invocation='trace_symbol_history(symbol="AuthService")',
|
|
2581
|
+
advanced_invocation='trace_symbol_history(symbol="AuthService", path="src/auth.py", max_commits=20)',
|
|
2582
|
+
result_fields=("symbol", "current_path", "events", "total_commits_evaluated", "status", "detail"),
|
|
2583
|
+
typical_followup="get_symbol or get_file on historical commit",
|
|
2584
|
+
common_mistakes=(
|
|
2585
|
+
"Assuming all renames are FACT; ambiguous renames are explicitly flagged as AMBIGUOUS or POSSIBLE",
|
|
2586
|
+
),
|
|
2587
|
+
example_request="Trace the history and renames of AuthService across git commits.",
|
|
2588
|
+
example_call='trace_symbol_history(symbol="AuthService")',
|
|
2589
|
+
example_interpretation="Inspect events list for INTRODUCED, MODIFIED, MOVED, or RENAMED occurrences.",
|
|
2590
|
+
),
|
|
2591
|
+
# 62. detect_semantic_conflicts
|
|
2592
|
+
ToolCapabilitySpec(
|
|
2593
|
+
tool_name="detect_semantic_conflicts",
|
|
2594
|
+
capability="semantic_merge_conflict_detection",
|
|
2595
|
+
description=(
|
|
2596
|
+
"Detect semantic and contract conflicts between Git branches (calling deleted symbols, broken call signatures, or missing route handlers). "
|
|
2597
|
+
"Use when verifying whether branches can be safely merged without semantic breakage. "
|
|
2598
|
+
"Does not report false conflicts when branches are structurally compatible."
|
|
2599
|
+
),
|
|
2600
|
+
task_types=(
|
|
2601
|
+
AgentTaskCategory.CHANGE_IMPACT.value,
|
|
2602
|
+
AgentTaskCategory.ARCHITECTURE.value,
|
|
2603
|
+
AgentTaskCategory.DEBUG.value,
|
|
2604
|
+
),
|
|
2605
|
+
required_inputs=(),
|
|
2606
|
+
optional_inputs=("base_branch", "head_branch"),
|
|
2607
|
+
expected_output_type="SemanticConflictResult",
|
|
2608
|
+
relationship_types_returned=("CALLS", "IMPORTS", "ROUTES_TO"),
|
|
2609
|
+
evidence_guarantees="Deterministic cross-branch AST call-site and definition verification.",
|
|
2610
|
+
does_not_prove="Does not execute code; reports contract incompatibility between revisions.",
|
|
2611
|
+
useful_situations=(
|
|
2612
|
+
"Checking if a feature branch introduces calls to symbols deleted or modified on main",
|
|
2613
|
+
"Pre-merge validation before merging PRs to prevent semantic regression",
|
|
2614
|
+
),
|
|
2615
|
+
avoid_when=(
|
|
2616
|
+
"Branches are known to be identical or when checking working tree cleanliness",
|
|
2617
|
+
),
|
|
2618
|
+
profiles=("full",),
|
|
2619
|
+
minimal_invocation='detect_semantic_conflicts(base_branch="main", head_branch="feature")',
|
|
2620
|
+
advanced_invocation='detect_semantic_conflicts(base_branch="main", head_branch="HEAD")',
|
|
2621
|
+
result_fields=("base_branch", "head_branch", "has_conflicts", "total_conflicts", "conflicts", "summary"),
|
|
2622
|
+
typical_followup="get_file or get_symbol on conflicted symbols",
|
|
2623
|
+
common_mistakes=(
|
|
2624
|
+
"Assuming Git text merge passes mean no semantic conflicts; semantic conflicts occur even with 0 text conflicts",
|
|
2625
|
+
),
|
|
2626
|
+
example_request="Are there any semantic merge conflicts between main and this branch?",
|
|
2627
|
+
example_call='detect_semantic_conflicts(base_branch="main", head_branch="HEAD")',
|
|
2628
|
+
example_interpretation="Inspect has_conflicts and conflicts list for DELETED_SYMBOL_REFERENCED or CALL_SIGNATURE_MISMATCH.",
|
|
2629
|
+
),
|
|
2630
|
+
# 49. safe_rename
|
|
2631
|
+
ToolCapabilitySpec(
|
|
2632
|
+
tool_name="safe_rename",
|
|
2633
|
+
capability="ast_symbol_refactor",
|
|
2634
|
+
description=(
|
|
2635
|
+
"Perform a deterministic, syntax-validated, transaction-safe AST rename of a symbol across the repository. "
|
|
2636
|
+
"Use when renaming a function, method, or class across multiple files safely with in-memory preview diffs. "
|
|
2637
|
+
"Does not prove runtime equivalence beyond AST syntax validation and statically verified references."
|
|
2638
|
+
),
|
|
2639
|
+
task_types=(
|
|
2640
|
+
AgentTaskCategory.CHANGE_IMPACT.value,
|
|
2641
|
+
),
|
|
2642
|
+
required_inputs=("target", "new_name"),
|
|
2643
|
+
optional_inputs=("dry_run", "force_uncertain"),
|
|
2644
|
+
expected_output_type="RefactorResult",
|
|
2645
|
+
relationship_types_returned=("DEFINES", "CALLS", "IMPORTS"),
|
|
2646
|
+
evidence_guarantees="Token-exact replacement with in-memory ast.parse syntax validation and atomic rollback manifest.",
|
|
2647
|
+
does_not_prove="Does not prove semantic preservation beyond AST syntax validation and statically verified references.",
|
|
2648
|
+
useful_situations=(
|
|
2649
|
+
"Renaming a function, method, or class safely across multiple files without breaking references",
|
|
2650
|
+
"Previewing exact diffs before executing an atomic codebase refactoring",
|
|
2651
|
+
),
|
|
2652
|
+
avoid_when=(
|
|
2653
|
+
"Trivial single-file edit of a local variable inside an already-open function",
|
|
2654
|
+
),
|
|
2655
|
+
profiles=("full",),
|
|
2656
|
+
minimal_invocation='safe_rename(target="AuthService", new_name="AuthenticationService", dry_run=True)',
|
|
2657
|
+
advanced_invocation='safe_rename(target="AuthService.verify", new_name="verify_token", dry_run=False, force_uncertain=False)',
|
|
2658
|
+
result_fields=("status", "target_symbol", "new_name", "risk", "files_changed", "spans_count", "diffs", "rollback_id", "errors"),
|
|
2659
|
+
typical_followup="rollback_refactor if undo needed, or find_tests to run affected test suite",
|
|
2660
|
+
common_mistakes=(
|
|
2661
|
+
"Applying without inspecting preview diffs when dry_run=True",
|
|
2662
|
+
"Using invalid Python identifiers with spaces or keywords",
|
|
2663
|
+
),
|
|
2664
|
+
example_request="Rename AuthService to AuthenticationService and preview all diffs.",
|
|
2665
|
+
example_call='safe_rename(target="AuthService", new_name="AuthenticationService", dry_run=True)',
|
|
2666
|
+
example_interpretation="Inspect status=='READY', diffs, risk=='LOW', and affected_tests before applying.",
|
|
2667
|
+
),
|
|
2668
|
+
# 50. rollback_refactor
|
|
2669
|
+
ToolCapabilitySpec(
|
|
2670
|
+
tool_name="rollback_refactor",
|
|
2671
|
+
capability="refactor_transaction_rollback",
|
|
2672
|
+
description=(
|
|
2673
|
+
"Atomically rollback an applied refactoring transaction using its rollback manifest ID. "
|
|
2674
|
+
"Use when reverting an applied refactoring transaction to restore original source files cleanly. "
|
|
2675
|
+
"Does not restore files if they were modified externally after refactoring was applied."
|
|
2676
|
+
),
|
|
2677
|
+
task_types=(
|
|
2678
|
+
AgentTaskCategory.CHANGE_IMPACT.value,
|
|
2679
|
+
),
|
|
2680
|
+
required_inputs=("transaction_id",),
|
|
2681
|
+
optional_inputs=(),
|
|
2682
|
+
expected_output_type="RefactorResult",
|
|
2683
|
+
relationship_types_returned=(),
|
|
2684
|
+
evidence_guarantees="Precondition SHA-256 validation and atomic file replacement with os.replace.",
|
|
2685
|
+
does_not_prove="Cannot rollback if files were modified externally after refactoring was applied.",
|
|
2686
|
+
useful_situations=(
|
|
2687
|
+
"Undoing an applied refactoring transaction cleanly to restore original code bytes",
|
|
2688
|
+
),
|
|
2689
|
+
avoid_when=(
|
|
2690
|
+
"Transaction was not applied or files have subsequent manual edits",
|
|
2691
|
+
),
|
|
2692
|
+
profiles=("full",),
|
|
2693
|
+
minimal_invocation='rollback_refactor(transaction_id="rf_abc123")',
|
|
2694
|
+
advanced_invocation='rollback_refactor(transaction_id="rf_abc123")',
|
|
2695
|
+
result_fields=("status", "target_symbol", "new_name", "files_changed", "rollback_id", "errors"),
|
|
2696
|
+
typical_followup="get_repository_status to verify repository state",
|
|
2697
|
+
common_mistakes=(
|
|
2698
|
+
"Calling rollback after modifying the files externally (which blocks rollback for safety)",
|
|
2699
|
+
),
|
|
2700
|
+
example_request="Undo the refactor with transaction ID rf_12345.",
|
|
2701
|
+
example_call='rollback_refactor(transaction_id="rf_12345")',
|
|
2702
|
+
example_interpretation="Inspect status=='ROLLED_BACK' and files_changed.",
|
|
2703
|
+
),
|
|
2704
|
+
# 65. get_live_services
|
|
2705
|
+
ToolCapabilitySpec(
|
|
2706
|
+
tool_name="get_live_services",
|
|
2707
|
+
capability="live_service_discovery",
|
|
2708
|
+
description=(
|
|
2709
|
+
"Detect and attribute active localhost services, ports, PIDs, frameworks, and workspace sub-packages with zero idle CPU. "
|
|
2710
|
+
"Use when diagnosing running dev servers or multi-service architectures. "
|
|
2711
|
+
"Does not prove live HTTP response payloads or application layer health."
|
|
2712
|
+
),
|
|
2713
|
+
task_types=(
|
|
2714
|
+
AgentTaskCategory.DIAGNOSTIC.value,
|
|
2715
|
+
AgentTaskCategory.DEBUG.value,
|
|
2716
|
+
AgentTaskCategory.ARCHITECTURE.value,
|
|
2717
|
+
),
|
|
2718
|
+
required_inputs=(),
|
|
2719
|
+
optional_inputs=(),
|
|
2720
|
+
expected_output_type="dict[str, Any]",
|
|
2721
|
+
relationship_types_returned=(),
|
|
2722
|
+
evidence_guarantees="Kernel socket table inspection and static configuration discovery with 5-second TTL cache.",
|
|
2723
|
+
does_not_prove="Does not prove live HTTP response payloads or application layer health.",
|
|
2724
|
+
useful_situations=(
|
|
2725
|
+
"Identifying running backend and frontend dev servers",
|
|
2726
|
+
"Attributing localhost ports to workspace sub-directories",
|
|
2727
|
+
),
|
|
2728
|
+
avoid_when=(
|
|
2729
|
+
"Dev servers are not running or only static AST analysis is required",
|
|
2730
|
+
),
|
|
2731
|
+
profiles=("full",),
|
|
2732
|
+
minimal_invocation="get_live_services()",
|
|
2733
|
+
advanced_invocation="get_live_services()",
|
|
2734
|
+
result_fields=("live_services", "configured_services", "count"),
|
|
2735
|
+
typical_followup="get_distributed_trace or list_routes",
|
|
2736
|
+
common_mistakes=(
|
|
2737
|
+
"Polling get_live_services in a rapid spin loop instead of relying on the 5-second TTL cache",
|
|
2738
|
+
),
|
|
2739
|
+
example_request="What dev servers are running on localhost?",
|
|
2740
|
+
example_call="get_live_services()",
|
|
2741
|
+
example_interpretation="Inspect live_services for active listening ports and PIDs.",
|
|
2742
|
+
),
|
|
2743
|
+
# 66. check_db_drift
|
|
2744
|
+
ToolCapabilitySpec(
|
|
2745
|
+
tool_name="check_db_drift",
|
|
2746
|
+
capability="database_schema_drift",
|
|
2747
|
+
description=(
|
|
2748
|
+
"Detect database schema drift between migration files, live database state, and code ORM models with zero idle CPU. "
|
|
2749
|
+
"Flags unmapped tables, missing columns, and migration version state. "
|
|
2750
|
+
"Use when verifying whether database migrations are up to date with code models. "
|
|
2751
|
+
"Does not execute SQL data assertions or validate column constraints against live row data."
|
|
2752
|
+
),
|
|
2753
|
+
task_types=(
|
|
2754
|
+
AgentTaskCategory.DEBUG.value,
|
|
2755
|
+
AgentTaskCategory.CHANGE_IMPACT.value,
|
|
2756
|
+
),
|
|
2757
|
+
required_inputs=(),
|
|
2758
|
+
optional_inputs=(),
|
|
2759
|
+
expected_output_type="dict[str, Any]",
|
|
2760
|
+
relationship_types_returned=(),
|
|
2761
|
+
evidence_guarantees="Comparison of SQLite/PostgreSQL schemas and migration folder state with 5-second TTL cache.",
|
|
2762
|
+
does_not_prove="Does not execute SQL data assertions or validate column constraints against live row data.",
|
|
2763
|
+
useful_situations=(
|
|
2764
|
+
"Verifying whether database migrations are up to date with code models",
|
|
2765
|
+
"Diagnosing missing table or column runtime errors",
|
|
2766
|
+
),
|
|
2767
|
+
avoid_when=(
|
|
2768
|
+
"Project does not utilize SQL databases or database models",
|
|
2769
|
+
),
|
|
2770
|
+
profiles=("full",),
|
|
2771
|
+
minimal_invocation="check_db_drift()",
|
|
2772
|
+
advanced_invocation="check_db_drift()",
|
|
2773
|
+
result_fields=("status", "unmapped_tables", "missing_columns", "migration_version", "is_drifted"),
|
|
2774
|
+
typical_followup="get_db_schema or find_db_tables",
|
|
2775
|
+
common_mistakes=(
|
|
2776
|
+
"Assuming check_db_drift executes database migrations rather than inspecting drift",
|
|
2777
|
+
),
|
|
2778
|
+
example_request="Check if our database schema has drifted from migrations.",
|
|
2779
|
+
example_call="check_db_drift()",
|
|
2780
|
+
example_interpretation="Check if is_drifted is true and review missing_columns.",
|
|
2781
|
+
),
|
|
2782
|
+
# 67. check_route_schema_drift
|
|
2783
|
+
ToolCapabilitySpec(
|
|
2784
|
+
tool_name="check_route_schema_drift",
|
|
2785
|
+
capability="route_schema_validation_drift",
|
|
2786
|
+
description=(
|
|
2787
|
+
"Use when detecting schema validation drift between a route/handler input schema (Pydantic BaseModel, Django Form, DRF Serializer) "
|
|
2788
|
+
"and destination database table columns. "
|
|
2789
|
+
"Flags MISSING_REQUIRED_COLUMN, NULLABILITY_MISMATCH, TYPE_INCOMPATIBILITY, LENGTH_CONSTRAINT_DRIFT, and UNUSED_SCHEMA_FIELD. "
|
|
2790
|
+
"Does not execute live requests."
|
|
2791
|
+
),
|
|
2792
|
+
task_types=(
|
|
2793
|
+
AgentTaskCategory.DEBUG.value,
|
|
2794
|
+
AgentTaskCategory.CHANGE_IMPACT.value,
|
|
2795
|
+
),
|
|
2796
|
+
required_inputs=(),
|
|
2797
|
+
optional_inputs=("route", "handler", "table", "schema"),
|
|
2798
|
+
expected_output_type="dict[str, Any]",
|
|
2799
|
+
relationship_types_returned=(),
|
|
2800
|
+
evidence_guarantees="Deterministic AST and database schema entity comparison.",
|
|
2801
|
+
does_not_prove="Does not execute live HTTP requests or live SQL transactions.",
|
|
2802
|
+
useful_situations=(
|
|
2803
|
+
"Validating route request payload models against destination database columns",
|
|
2804
|
+
"Preventing runtime NOT NULL constraint failures and type mismatches before deployment",
|
|
2805
|
+
),
|
|
2806
|
+
avoid_when=(
|
|
2807
|
+
"Inspecting static code symbols unrelated to HTTP routes or database persistence",
|
|
2808
|
+
),
|
|
2809
|
+
profiles=("full",),
|
|
2810
|
+
minimal_invocation='check_route_schema_drift(route="/api/v1/orders/checkout")',
|
|
2811
|
+
advanced_invocation='check_route_schema_drift(route="/api/v1/orders/checkout", table="orders", schema="CheckoutRequest")',
|
|
2812
|
+
result_fields=("status", "route_or_handler", "target_table", "schema_name", "drift_count", "critical_count", "warning_count", "info_count", "issues"),
|
|
2813
|
+
typical_followup="get_route_db_lineage or get_db_table",
|
|
2814
|
+
common_mistakes=(
|
|
2815
|
+
"Assuming check_route_schema_drift executes HTTP requests rather than inspecting static schemas",
|
|
2816
|
+
),
|
|
2817
|
+
example_request="Check for schema drift on our checkout route.",
|
|
2818
|
+
example_call='check_route_schema_drift(route="/api/v1/orders/checkout")',
|
|
2819
|
+
example_interpretation="Review issues for MISSING_REQUIRED_COLUMN or NULLABILITY_MISMATCH.",
|
|
2820
|
+
),
|
|
2821
|
+
# 68. get_distributed_trace
|
|
2822
|
+
ToolCapabilitySpec(
|
|
2823
|
+
tool_name="get_distributed_trace",
|
|
2824
|
+
capability="distributed_trace_reconstruction",
|
|
2825
|
+
description=(
|
|
2826
|
+
"Stitch and reconstruct multi-service distributed execution trees across frontend, backend, and database boundaries for a specific W3C trace ID. "
|
|
2827
|
+
"Use when tracing cross-service requests or debugging multi-service latency bottlenecks. "
|
|
2828
|
+
"Does not capture unobserved code paths or untraced sidecar requests."
|
|
2829
|
+
),
|
|
2830
|
+
task_types=(
|
|
2831
|
+
AgentTaskCategory.TRACE.value,
|
|
2832
|
+
AgentTaskCategory.DEBUG.value,
|
|
2833
|
+
),
|
|
2834
|
+
required_inputs=("trace_id",),
|
|
2835
|
+
optional_inputs=(),
|
|
2836
|
+
expected_output_type="dict[str, Any]",
|
|
2837
|
+
relationship_types_returned=(),
|
|
2838
|
+
evidence_guarantees="W3C traceparent stitching across multi-service runtime observations.",
|
|
2839
|
+
does_not_prove="Does not capture unobserved code paths or untraced sidecar requests.",
|
|
2840
|
+
useful_situations=(
|
|
2841
|
+
"Tracing an end-to-end user request from UI click to backend SQL execution",
|
|
2842
|
+
"Pinpointing which service failed in a distributed microservice workflow",
|
|
2843
|
+
),
|
|
2844
|
+
avoid_when=(
|
|
2845
|
+
"Static code traversal is sufficient or dev servers have not captured runtime traces",
|
|
2846
|
+
),
|
|
2847
|
+
profiles=("full",),
|
|
2848
|
+
minimal_invocation='get_distributed_trace(trace_id="4bf92f3577b34da6a3ce929d0e0e4736")',
|
|
2849
|
+
advanced_invocation='get_distributed_trace(trace_id="4bf92f3577b34da6a3ce929d0e0e4736")',
|
|
2850
|
+
result_fields=("trace_id", "status", "root_span", "total_spans", "services_involved", "timeline"),
|
|
2851
|
+
typical_followup="get_runtime_trace or reconcile_static_runtime",
|
|
2852
|
+
common_mistakes=(
|
|
2853
|
+
"Passing span_id instead of trace_id to get_distributed_trace",
|
|
2854
|
+
),
|
|
2855
|
+
example_request="Trace the distributed execution for trace ID 4bf92f3577b34da6a3ce929d0e0e4736.",
|
|
2856
|
+
example_call='get_distributed_trace(trace_id="4bf92f3577b34da6a3ce929d0e0e4736")',
|
|
2857
|
+
example_interpretation="Review timeline and services_involved to locate execution bottlenecks or failures.",
|
|
2858
|
+
),
|
|
2859
|
+
# 68. check_api_drift
|
|
2860
|
+
ToolCapabilitySpec(
|
|
2861
|
+
tool_name="check_api_drift",
|
|
2862
|
+
capability="client_server_api_drift",
|
|
2863
|
+
description=(
|
|
2864
|
+
"Detect client-server API contract drift between frontend fetch or axios calls and backend route registrations. "
|
|
2865
|
+
"Flags orphaned client endpoints (404s) and HTTP method mismatches (405s). "
|
|
2866
|
+
"Use when validating frontend API calls against backend endpoints before deployment. "
|
|
2867
|
+
"Does not execute live HTTP requests or validate dynamic URL strings constructed via runtime interpolation."
|
|
2868
|
+
),
|
|
2869
|
+
task_types=(
|
|
2870
|
+
AgentTaskCategory.ROUTE_DISCOVERY.value,
|
|
2871
|
+
AgentTaskCategory.CHANGE_IMPACT.value,
|
|
2872
|
+
AgentTaskCategory.DEBUG.value,
|
|
2873
|
+
),
|
|
2874
|
+
required_inputs=(),
|
|
2875
|
+
optional_inputs=(),
|
|
2876
|
+
expected_output_type="dict[str, Any]",
|
|
2877
|
+
relationship_types_returned=(),
|
|
2878
|
+
evidence_guarantees="Cross-layer AST static verification comparing frontend fetch calls with backend route trees.",
|
|
2879
|
+
does_not_prove="Does not execute live HTTP requests or validate dynamic URL concatenation at runtime.",
|
|
2880
|
+
useful_situations=(
|
|
2881
|
+
"Finding broken API endpoint paths in frontend client code",
|
|
2882
|
+
"Detecting HTTP method mismatches before deployment",
|
|
2883
|
+
),
|
|
2884
|
+
avoid_when=(
|
|
2885
|
+
"Frontend code does not use REST fetch/axios calls to backend routes",
|
|
2886
|
+
),
|
|
2887
|
+
profiles=("full",),
|
|
2888
|
+
minimal_invocation="check_api_drift()",
|
|
2889
|
+
advanced_invocation="check_api_drift()",
|
|
2890
|
+
result_fields=("status", "orphaned_client_routes", "method_mismatches", "verified_contracts_count"),
|
|
2891
|
+
typical_followup="find_routes or list_routes",
|
|
2892
|
+
common_mistakes=(
|
|
2893
|
+
"Assuming check_api_drift catches dynamic URL template literals constructed via arbitrary runtime string interpolation",
|
|
2894
|
+
),
|
|
2895
|
+
example_request="Check if any frontend API calls mismatch backend routes.",
|
|
2896
|
+
example_call="check_api_drift()",
|
|
2897
|
+
example_interpretation="Inspect orphaned_client_routes for potential 404s.",
|
|
2898
|
+
),
|
|
2899
|
+
# 69. get_monorepo_packages
|
|
2900
|
+
ToolCapabilitySpec(
|
|
2901
|
+
tool_name="get_monorepo_packages",
|
|
2902
|
+
capability="monorepo_package_discovery",
|
|
2903
|
+
description=(
|
|
2904
|
+
"Catalog monorepo workspace packages, tools (pnpm, Turborepo, npm/yarn workspaces), entry points, and inter-package dependencies. "
|
|
2905
|
+
"Use when mapping multi-package repository structure and package boundaries. "
|
|
2906
|
+
"Does not prove build system execution order or runtime dependency loading."
|
|
2907
|
+
),
|
|
2908
|
+
task_types=(
|
|
2909
|
+
AgentTaskCategory.PACKAGE.value,
|
|
2910
|
+
AgentTaskCategory.ARCHITECTURE.value,
|
|
2911
|
+
),
|
|
2912
|
+
required_inputs=(),
|
|
2913
|
+
optional_inputs=(),
|
|
2914
|
+
expected_output_type="dict[str, Any]",
|
|
2915
|
+
relationship_types_returned=(),
|
|
2916
|
+
evidence_guarantees="Deterministic workspace manifest analysis across pnpm, yarn, npm, Turborepo, Cargo, and Poetry.",
|
|
2917
|
+
does_not_prove="Does not prove build system execution order or runtime dependency loading.",
|
|
2918
|
+
useful_situations=(
|
|
2919
|
+
"Mapping multi-package repository structure and package boundaries",
|
|
2920
|
+
"Tracing internal dependency graph between workspace packages",
|
|
2921
|
+
),
|
|
2922
|
+
avoid_when=(
|
|
2923
|
+
"Repository is a single standalone package without workspaces",
|
|
2924
|
+
),
|
|
2925
|
+
profiles=("full",),
|
|
2926
|
+
minimal_invocation="get_monorepo_packages()",
|
|
2927
|
+
advanced_invocation="get_monorepo_packages()",
|
|
2928
|
+
result_fields=("tool", "packages", "dependency_graph", "root_path"),
|
|
2929
|
+
typical_followup="get_architecture or get_dependencies",
|
|
2930
|
+
common_mistakes=(
|
|
2931
|
+
"Expecting get_monorepo_packages to build or run package package.json scripts",
|
|
2932
|
+
),
|
|
2933
|
+
example_request="List all packages in this monorepo and their dependencies.",
|
|
2934
|
+
example_call="get_monorepo_packages()",
|
|
2935
|
+
example_interpretation="Inspect packages mapping to understand package names, root paths, and dependencies.",
|
|
2936
|
+
),
|
|
2393
2937
|
)
|
|
2394
2938
|
|
|
2395
2939
|
_TOOL_BY_NAME: dict[str, ToolCapabilitySpec] = {t.tool_name: t for t in TOOL_CAPABILITY_REGISTRY}
|
|
@@ -2449,10 +2993,10 @@ CAPABILITY_MATRIX: dict[AgentTaskCategory, TaskCapabilityRule] = {
|
|
|
2449
2993
|
category=AgentTaskCategory.CHANGE_IMPACT,
|
|
2450
2994
|
should_use_codegraph=True,
|
|
2451
2995
|
primary_tool="get_git_impact",
|
|
2452
|
-
acceptable_tools=("get_git_impact", "analyze_impact", "analyze_change_impact", "get_dependents", "get_callers", "find_related_tests", "find_tests", "get_context"),
|
|
2453
|
-
recommended_sequence=("
|
|
2996
|
+
acceptable_tools=("get_git_impact", "get_change_impact", "compare_git", "get_git_state", "check_context_freshness", "trace_symbol_history", "analyze_impact", "analyze_change_impact", "get_dependents", "get_callers", "find_related_tests", "find_tests", "get_context"),
|
|
2997
|
+
recommended_sequence=("get_git_state", "compare_git", "get_change_impact"),
|
|
2454
2998
|
direct_inspection_acceptable=False,
|
|
2455
|
-
rationale="Use
|
|
2999
|
+
rationale="Use get_git_state, compare_git, and get_change_impact to deterministically compute structural diffs, affected callers, routes, packages, and tests.",
|
|
2456
3000
|
),
|
|
2457
3001
|
AgentTaskCategory.TEST_DISCOVERY: TaskCapabilityRule(
|
|
2458
3002
|
category=AgentTaskCategory.TEST_DISCOVERY,
|
|
@@ -2696,12 +3240,18 @@ MCP_PROFILE_RECOMMENDATIONS: dict[str, dict[str, object]] = {
|
|
|
2696
3240
|
},
|
|
2697
3241
|
"full": {
|
|
2698
3242
|
"profile": "full",
|
|
2699
|
-
"tool_count":
|
|
3243
|
+
"tool_count": 70,
|
|
2700
3244
|
"recommended_for": "Complete diagnostic, database intelligence, runtime reconciliation, benchmark, and repository administration sessions",
|
|
2701
3245
|
"included_tools": [
|
|
2702
3246
|
"analyze_change_impact",
|
|
2703
3247
|
"analyze_impact",
|
|
3248
|
+
"check_api_drift",
|
|
3249
|
+
"check_context_freshness",
|
|
3250
|
+
"check_db_drift",
|
|
3251
|
+
"check_route_schema_drift",
|
|
3252
|
+
"compare_git",
|
|
2704
3253
|
"compile_task",
|
|
3254
|
+
"detect_semantic_conflicts",
|
|
2705
3255
|
"find_callees",
|
|
2706
3256
|
"find_callers",
|
|
2707
3257
|
"find_db_callers",
|
|
@@ -2721,6 +3271,7 @@ MCP_PROFILE_RECOMMENDATIONS: dict[str, dict[str, object]] = {
|
|
|
2721
3271
|
"get_call_graph",
|
|
2722
3272
|
"get_callees",
|
|
2723
3273
|
"get_callers",
|
|
3274
|
+
"get_change_impact",
|
|
2724
3275
|
"get_context",
|
|
2725
3276
|
"get_db_impact",
|
|
2726
3277
|
"get_db_schema",
|
|
@@ -2728,13 +3279,17 @@ MCP_PROFILE_RECOMMENDATIONS: dict[str, dict[str, object]] = {
|
|
|
2728
3279
|
"get_dependencies",
|
|
2729
3280
|
"get_dependency_graph",
|
|
2730
3281
|
"get_dependents",
|
|
3282
|
+
"get_distributed_trace",
|
|
2731
3283
|
"get_evidence",
|
|
2732
3284
|
"get_file",
|
|
2733
3285
|
"get_file_history",
|
|
2734
3286
|
"get_file_symbols",
|
|
2735
3287
|
"get_git_impact",
|
|
3288
|
+
"get_git_state",
|
|
2736
3289
|
"get_graph",
|
|
2737
3290
|
"get_imports",
|
|
3291
|
+
"get_live_services",
|
|
3292
|
+
"get_monorepo_packages",
|
|
2738
3293
|
"get_project_structure",
|
|
2739
3294
|
"get_recent_changes",
|
|
2740
3295
|
"get_references",
|
|
@@ -2748,12 +3303,15 @@ MCP_PROFILE_RECOMMENDATIONS: dict[str, dict[str, object]] = {
|
|
|
2748
3303
|
"read_file",
|
|
2749
3304
|
"reconcile_static_runtime",
|
|
2750
3305
|
"resolve_symbol",
|
|
3306
|
+
"rollback_refactor",
|
|
3307
|
+
"safe_rename",
|
|
2751
3308
|
"search_code",
|
|
2752
3309
|
"search_memory",
|
|
2753
3310
|
"search_symbols",
|
|
2754
3311
|
"trace_call",
|
|
2755
3312
|
"trace_flow",
|
|
2756
3313
|
"trace_path",
|
|
3314
|
+
"trace_symbol_history",
|
|
2757
3315
|
"verify_evidence",
|
|
2758
3316
|
],
|
|
2759
3317
|
},
|