diff --git a/.config/rustqual/baseline-dry.json b/.config/rustqual/baseline-dry.json new file mode 100644 index 000000000..b844dc085 --- /dev/null +++ b/.config/rustqual/baseline-dry.json @@ -0,0 +1,4369 @@ +{ + "version": 2, + "quality_score": 0.6506185173027932, + "iosp_score": 0.8116445796219857, + "violations": 867, + "total": 6459, + "complexity_warnings": 0, + "magic_number_warnings": 0, + "nesting_depth_warnings": 0, + "function_length_warnings": 0, + "unsafe_warnings": 0, + "error_handling_warnings": 0, + "duplicate_groups": 29, + "dead_code_warnings": 264, + "dead_type_warnings": 28, + "fragment_groups": 58, + "boilerplate_warnings": 0, + "srp_struct_warnings": 0, + "srp_module_warnings": 0, + "wildcard_import_warnings": 10, + "sdp_violations": 0, + "coupling_warnings": 0, + "coupling_cycles": 0, + "tq_no_assertion_warnings": 0, + "tq_no_sut_warnings": 0, + "tq_untested_warnings": 0, + "tq_uncovered_warnings": 0, + "tq_untested_logic_warnings": 0, + "structural_srp_warnings": 0, + "structural_coupling_warnings": 0, + "total_findings": 1291, + "violation_details": [ + { + "name": "ConversationStream::config_unsets", + "file": "crates/jp_conversation/src/stream.rs", + "line": 247 + }, + { + "name": "ConversationStream::trim_chat_request", + "file": "crates/jp_conversation/src/stream.rs", + "line": 281 + }, + { + "name": "ConversationStream::current_turn_mut", + "file": "crates/jp_conversation/src/stream.rs", + "line": 583 + }, + { + "name": "ConversationStream::pop_while", + "file": "crates/jp_conversation/src/stream.rs", + "line": 816 + }, + { + "name": "ConversationStream::remove_orphaned_inquiry_responses", + "file": "crates/jp_conversation/src/stream.rs", + "line": 995 + }, + { + "name": "ConversationStream::remove_orphaned_inquiry_requests", + "file": "crates/jp_conversation/src/stream.rs", + "line": 1037 + }, + { + "name": "ConversationStream::normalize_turn_starts", + "file": "crates/jp_conversation/src/stream.rs", + "line": 1084 + }, + { + "name": "ConversationStream::sanitize_orphaned_tool_calls", + "file": "crates/jp_conversation/src/stream.rs", + "line": 1171 + }, + { + "name": "ConversationStream::from_legacy_events", + "file": "crates/jp_conversation/src/stream.rs", + "line": 1580 + }, + { + "name": "strip_schema", + "file": "crates/jp_conversation/src/compat.rs", + "line": 295 + }, + { + "name": "strip_schema_type", + "file": "crates/jp_conversation/src/compat.rs", + "line": 314 + }, + { + "name": "strip_struct", + "file": "crates/jp_conversation/src/compat.rs", + "line": 487 + }, + { + "name": "Documents::try_to_xml", + "file": "crates/jp_conversation/src/thread.rs", + "line": 236 + }, + { + "name": "IterTurns<'a>::new", + "file": "crates/jp_conversation/src/stream/turn_iter.rs", + "line": 66 + }, + { + "name": "ConversationStream::extend", + "file": "crates/jp_conversation/src/stream/iter.rs", + "line": 44 + }, + { + "name": "deserialize", + "file": "crates/jp_conversation/src/stream/config_delta.rs", + "line": 200 + }, + { + "name": "fold", + "file": "crates/jp_conversation/src/stream/config_delta.rs", + "line": 249 + }, + { + "name": "apply", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 162 + }, + { + "name": "affected_items", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 295 + }, + { + "name": "apply_mechanical", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 389 + }, + { + "name": "collect_turn_origins", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 444 + }, + { + "name": "assign_turn_indices", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 476 + }, + { + "name": "strip_tool_request", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 630 + }, + { + "name": "build_tool_calls", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 685 + }, + { + "name": "EventPayload::deserialize", + "file": "crates/jp_conversation/src/stream/entry.rs", + "line": 152 + }, + { + "name": "StoredEvent::deserialize", + "file": "crates/jp_conversation/src/stream/entry.rs", + "line": 305 + }, + { + "name": "EventId::random", + "file": "crates/jp_conversation/src/event_id.rs", + "line": 81 + }, + { + "name": "decode_event_value", + "file": "crates/jp_conversation/src/storage.rs", + "line": 99 + }, + { + "name": "decode_string", + "file": "crates/jp_conversation/src/storage.rs", + "line": 137 + }, + { + "name": "decode_map_strings", + "file": "crates/jp_conversation/src/storage.rs", + "line": 157 + }, + { + "name": "ToolCallResponse::deserialize", + "file": "crates/jp_conversation/src/event/tool_call.rs", + "line": 98 + }, + { + "name": "TerminalCapability::detect", + "file": "crates/jp_printer/src/region.rs", + "line": 135 + }, + { + "name": "WindowBuffer::push", + "file": "crates/jp_printer/src/region.rs", + "line": 538 + }, + { + "name": "RegionEntry::rows", + "file": "crates/jp_printer/src/region.rs", + "line": 753 + }, + { + "name": "RegionStack::release", + "file": "crates/jp_printer/src/region.rs", + "line": 978 + }, + { + "name": "RegionStack::resume", + "file": "crates/jp_printer/src/region.rs", + "line": 1038 + }, + { + "name": "RegionStack::erase", + "file": "crates/jp_printer/src/region.rs", + "line": 1061 + }, + { + "name": "RegionStack::redraw", + "file": "crates/jp_printer/src/region.rs", + "line": 1087 + }, + { + "name": "RegionStack::redraw_if_top", + "file": "crates/jp_printer/src/region.rs", + "line": 1166 + }, + { + "name": "filter_line", + "file": "crates/jp_printer/src/region.rs", + "line": 1210 + }, + { + "name": "visible_sgr", + "file": "crates/jp_printer/src/region.rs", + "line": 1245 + }, + { + "name": "truncate_row", + "file": "crates/jp_printer/src/region.rs", + "line": 1330 + }, + { + "name": "main", + "file": "crates/jp_printer/src/bin/region_probe.rs", + "line": 38 + }, + { + "name": "Printer::status_region", + "file": "crates/jp_printer/src/printer.rs", + "line": 286 + }, + { + "name": "Printer::error_println", + "file": "crates/jp_printer/src/printer.rs", + "line": 472 + }, + { + "name": "Printer::send_error", + "file": "crates/jp_printer/src/printer.rs", + "line": 491 + }, + { + "name": "Printer::track_pending", + "file": "crates/jp_printer/src/printer.rs", + "line": 736 + }, + { + "name": "Printer::send", + "file": "crates/jp_printer/src/printer.rs", + "line": 799 + }, + { + "name": "Worker::run", + "file": "crates/jp_printer/src/printer.rs", + "line": 1171 + }, + { + "name": "Worker::process_task_instant", + "file": "crates/jp_printer/src/printer.rs", + "line": 1292 + }, + { + "name": "Worker::process_task", + "file": "crates/jp_printer/src/printer.rs", + "line": 1341 + }, + { + "name": "Worker::write_task", + "file": "crates/jp_printer/src/printer.rs", + "line": 1357 + }, + { + "name": "Sink::new", + "file": "crates/jp_printer/src/printer.rs", + "line": 1446 + }, + { + "name": "DelayControl::effective_delay", + "file": "crates/jp_printer/src/printer.rs", + "line": 1758 + }, + { + "name": "Content::fmt", + "file": "crates/jp_attachment_internal/src/selector.rs", + "line": 47 + }, + { + "name": "Selector::from_str", + "file": "crates/jp_attachment_internal/src/selector.rs", + "line": 171 + }, + { + "name": "Entry::to_url", + "file": "crates/jp_attachment_internal/src/lib.rs", + "line": 89 + }, + { + "name": "fetch_conversation", + "file": "crates/jp_attachment_internal/src/lib.rs", + "line": 201 + }, + { + "name": "uri_to_entry", + "file": "crates/jp_attachment_internal/src/lib.rs", + "line": 301 + }, + { + "name": "render_stream", + "file": "crates/jp_attachment_internal/src/lib.rs", + "line": 331 + }, + { + "name": "AnsiState::update", + "file": "crates/jp_term/src/ansi.rs", + "line": 114 + }, + { + "name": "AnsiState::restore_sequence", + "file": "crates/jp_term/src/ansi.rs", + "line": 187 + }, + { + "name": "visible_text", + "file": "crates/jp_term/src/ansi.rs", + "line": 343 + }, + { + "name": "advance_column", + "file": "crates/jp_term/src/ansi.rs", + "line": 370 + }, + { + "name": "list", + "file": "crates/jp_term/src/table.rs", + "line": 120 + }, + { + "name": "details", + "file": "crates/jp_term/src/table.rs", + "line": 230 + }, + { + "name": "detail_pretty_row", + "file": "crates/jp_term/src/table.rs", + "line": 269 + }, + { + "name": "details_markdown", + "file": "crates/jp_term/src/table.rs", + "line": 292 + }, + { + "name": "detail_markdown_rows", + "file": "crates/jp_term/src/table.rs", + "line": 323 + }, + { + "name": "md_row", + "file": "crates/jp_term/src/table.rs", + "line": 349 + }, + { + "name": "truncate_to_width", + "file": "crates/jp_term/src/width.rs", + "line": 65 + }, + { + "name": "wrap_ranges", + "file": "crates/jp_term/src/width.rs", + "line": 132 + }, + { + "name": "Storage::persist_conversation", + "file": "crates/jp_storage/src/lib.rs", + "line": 208 + }, + { + "name": "Storage::sync_projection", + "file": "crates/jp_storage/src/lib.rs", + "line": 448 + }, + { + "name": "adopt_partition", + "file": "crates/jp_storage/src/lib.rs", + "line": 818 + }, + { + "name": "adopt_conversation_dir", + "file": "crates/jp_storage/src/lib.rs", + "line": 839 + }, + { + "name": "import_external_copy", + "file": "crates/jp_storage/src/lib.rs", + "line": 889 + }, + { + "name": "import_conversation_dir", + "file": "crates/jp_storage/src/lib.rs", + "line": 913 + }, + { + "name": "copy_dir_all", + "file": "crates/jp_storage/src/lib.rs", + "line": 980 + }, + { + "name": "FsStorageBackend::sanitize", + "file": "crates/jp_storage/src/backend/fs.rs", + "line": 284 + }, + { + "name": "deep_merge_values", + "file": "crates/jp_storage/src/value.rs", + "line": 36 + }, + { + "name": "Storage::load_conversation_stream", + "file": "crates/jp_storage/src/load.rs", + "line": 179 + }, + { + "name": "Storage::load_conversation_metadata_batch", + "file": "crates/jp_storage/src/load.rs", + "line": 289 + }, + { + "name": "Storage::validate_conversations", + "file": "crates/jp_storage/src/validate.rs", + "line": 116 + }, + { + "name": "collapse_blank_lines", + "file": "crates/jp_attachment_http_content/src/lib.rs", + "line": 180 + }, + { + "name": "Registry::from", + "file": "crates/jp_plugin/src/registry.rs", + "line": 46 + }, + { + "name": "PluginKind::binaries", + "file": "crates/jp_plugin/src/registry.rs", + "line": 169 + }, + { + "name": "ProtocolLogLayer::on_event", + "file": "crates/plugins/command/serve-web/src/log_layer.rs", + "line": 94 + }, + { + "name": "PluginClient::start_conversation", + "file": "crates/plugins/command/serve-web/src/client.rs", + "line": 201 + }, + { + "name": "render_events", + "file": "crates/plugins/command/serve-web/src/render.rs", + "line": 158 + }, + { + "name": "run_server", + "file": "crates/plugins/command/serve-web/src/lib.rs", + "line": 95 + }, + { + "name": "serve", + "file": "crates/plugins/command/serve-web/src/routes.rs", + "line": 127 + }, + { + "name": "TurnForm::parse", + "file": "crates/plugins/command/serve-web/src/routes.rs", + "line": 366 + }, + { + "name": "start_turn", + "file": "crates/plugins/command/serve-web/src/routes.rs", + "line": 400 + }, + { + "name": "NewConversationForm::parse", + "file": "crates/plugins/command/serve-web/src/routes.rs", + "line": 662 + }, + { + "name": "start_conversation", + "file": "crates/plugins/command/serve-web/src/routes.rs", + "line": 699 + }, + { + "name": "SystemLauncher::launch", + "file": "crates/plugins/command/gui/src/launch.rs", + "line": 41 + }, + { + "name": "handle_command", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 310 + }, + { + "name": "compose_missing", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 411 + }, + { + "name": "with_show_alias", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 803 + }, + { + "name": "migrate", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 937 + }, + { + "name": "execute", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 1170 + }, + { + "name": "vocabulary_listing", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 1450 + }, + { + "name": "row", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 1624 + }, + { + "name": "read_message", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 1684 + }, + { + "name": "project_turns", + "file": "crates/jp_ffi/src/display.rs", + "line": 83 + }, + { + "name": "PartialRequestConfig::assign", + "file": "crates/jp_config/src/assistant/request.rs", + "line": 157 + }, + { + "name": "MaxResponseBytes::from", + "file": "crates/jp_config/src/assistant/request.rs", + "line": 332 + }, + { + "name": "PartialInstructionsConfig::assign", + "file": "crates/jp_config/src/assistant/instructions.rs", + "line": 57 + }, + { + "name": "InstructionsConfig::to_section", + "file": "crates/jp_config/src/assistant/instructions.rs", + "line": 114 + }, + { + "name": "PartialExampleConfig::assign", + "file": "crates/jp_config/src/assistant/instructions.rs", + "line": 180 + }, + { + "name": "PartialContrastConfig::assign", + "file": "crates/jp_config/src/assistant/instructions.rs", + "line": 231 + }, + { + "name": "PartialSectionConfigOrString::assign", + "file": "crates/jp_config/src/assistant/sections.rs", + "line": 41 + }, + { + "name": "SectionConfig::render", + "file": "crates/jp_config/src/assistant/sections.rs", + "line": 143 + }, + { + "name": "PartialSectionConfig::assign", + "file": "crates/jp_config/src/assistant/sections.rs", + "line": 166 + }, + { + "name": "wrap_cdata_if_needed", + "file": "crates/jp_config/src/assistant/sections.rs", + "line": 223 + }, + { + "name": "PartialExtendingRelativePath::assign", + "file": "crates/jp_config/src/types/extending_path.rs", + "line": 93 + }, + { + "name": "PartialExtendingRelativePath::delta", + "file": "crates/jp_config/src/types/extending_path.rs", + "line": 107 + }, + { + "name": "PartialRelativePathWithStrategy::assign", + "file": "crates/jp_config/src/types/extending_path.rs", + "line": 138 + }, + { + "name": "PartialCommandConfigOrString::assign", + "file": "crates/jp_config/src/types/command.rs", + "line": 76 + }, + { + "name": "PartialCommandConfigOrString::from_str", + "file": "crates/jp_config/src/types/command.rs", + "line": 141 + }, + { + "name": "CommandConfigOrString::command", + "file": "crates/jp_config/src/types/command.rs", + "line": 181 + }, + { + "name": "PartialCommandConfig::assign", + "file": "crates/jp_config/src/types/command.rs", + "line": 300 + }, + { + "name": "split_command_words", + "file": "crates/jp_config/src/types/command.rs", + "line": 347 + }, + { + "name": "mask_template_spans", + "file": "crates/jp_config/src/types/command.rs", + "line": 370 + }, + { + "name": "restore_spans", + "file": "crates/jp_config/src/types/command.rs", + "line": 462 + }, + { + "name": "PolicySpec

::deserialize", + "file": "crates/jp_config/src/types/policy_spec.rs", + "line": 103 + }, + { + "name": "PolicySpec

::from_str", + "file": "crates/jp_config/src/types/policy_spec.rs", + "line": 161 + }, + { + "name": "PartialMergeableVec::delta", + "file": "crates/jp_config/src/types/vec.rs", + "line": 273 + }, + { + "name": "PartialMergeableString::assign", + "file": "crates/jp_config/src/types/string.rs", + "line": 82 + }, + { + "name": "PartialMergeableString::delta", + "file": "crates/jp_config/src/types/string.rs", + "line": 110 + }, + { + "name": "PartialMergedString::assign", + "file": "crates/jp_config/src/types/string.rs", + "line": 240 + }, + { + "name": "PartialMergeableMap::delta", + "file": "crates/jp_config/src/types/map.rs", + "line": 226 + }, + { + "name": "merge_values", + "file": "crates/jp_config/src/types/json_value.rs", + "line": 97 + }, + { + "name": "merge_as_map", + "file": "crates/jp_config/src/types/json_value.rs", + "line": 142 + }, + { + "name": "merge_as_vec", + "file": "crates/jp_config/src/types/json_value.rs", + "line": 173 + }, + { + "name": "strip_annotations", + "file": "crates/jp_config/src/types/json_value.rs", + "line": 238 + }, + { + "name": "JsonValue::assign", + "file": "crates/jp_config/src/types/json_value.rs", + "line": 280 + }, + { + "name": "render_available", + "file": "crates/jp_config/src/types/api_key_env.rs", + "line": 63 + }, + { + "name": "PartialInterruptConfig::assign", + "file": "crates/jp_config/src/interrupt.rs", + "line": 319 + }, + { + "name": "PartialStreamingInterruptConfig::assign", + "file": "crates/jp_config/src/interrupt.rs", + "line": 335 + }, + { + "name": "PartialToolInterruptConfig::assign", + "file": "crates/jp_config/src/interrupt.rs", + "line": 348 + }, + { + "name": "PartialConversationConfig::assign", + "file": "crates/jp_config/src/conversation.rs", + "line": 120 + }, + { + "name": "PartialInquiryConfig::assign", + "file": "crates/jp_config/src/conversation.rs", + "line": 241 + }, + { + "name": "collect_config_segments", + "file": "crates/jp_config/src/util.rs", + "line": 207 + }, + { + "name": "load_partial_at_path_with_max_depth", + "file": "crates/jp_config/src/util.rs", + "line": 293 + }, + { + "name": "PartialAssistantConfig::assign", + "file": "crates/jp_config/src/assistant.rs", + "line": 98 + }, + { + "name": "PartialCommandPluginConfig::assign", + "file": "crates/jp_config/src/plugins/command.rs", + "line": 86 + }, + { + "name": "AuthEntry::validate_chain", + "file": "crates/jp_config/src/providers/llm.rs", + "line": 166 + }, + { + "name": "PartialLlmProviderConfig::assign", + "file": "crates/jp_config/src/providers/llm.rs", + "line": 295 + }, + { + "name": "PartialGoogleConfig::assign", + "file": "crates/jp_config/src/providers/llm/google.rs", + "line": 75 + }, + { + "name": "PartialOpenrouterConfig::assign", + "file": "crates/jp_config/src/providers/llm/openrouter.rs", + "line": 84 + }, + { + "name": "PartialVllmConfig::assign", + "file": "crates/jp_config/src/providers/llm/vllm.rs", + "line": 87 + }, + { + "name": "PartialCerebrasConfig::assign", + "file": "crates/jp_config/src/providers/llm/cerebras.rs", + "line": 99 + }, + { + "name": "PartialOllamaConfig::assign", + "file": "crates/jp_config/src/providers/llm/ollama.rs", + "line": 25 + }, + { + "name": "PartialLlamacppConfig::assign", + "file": "crates/jp_config/src/providers/llm/llamacpp.rs", + "line": 25 + }, + { + "name": "PartialDeepseekConfig::assign", + "file": "crates/jp_config/src/providers/llm/deepseek.rs", + "line": 75 + }, + { + "name": "PartialAnthropicConfig::assign", + "file": "crates/jp_config/src/providers/llm/anthropic.rs", + "line": 157 + }, + { + "name": "PartialOpenaiConfig::assign", + "file": "crates/jp_config/src/providers/llm/openai.rs", + "line": 122 + }, + { + "name": "PartialStdioConfig::assign", + "file": "crates/jp_config/src/providers/mcp.rs", + "line": 168 + }, + { + "name": "PartialChecksumConfig::assign", + "file": "crates/jp_config/src/providers/mcp.rs", + "line": 225 + }, + { + "name": "PartialAppConfig::assign", + "file": "crates/jp_config/src/lib.rs", + "line": 235 + }, + { + "name": "AppConfig::fields", + "file": "crates/jp_config/src/lib.rs", + "line": 501 + }, + { + "name": "AppConfig::addressable", + "file": "crates/jp_config/src/lib.rs", + "line": 542 + }, + { + "name": "PartialStyleConfig::assign", + "file": "crates/jp_config/src/style.rs", + "line": 100 + }, + { + "name": "PartialPluginsConfig::assign", + "file": "crates/jp_config/src/plugins.rs", + "line": 44 + }, + { + "name": "PartialCodeConfig::assign", + "file": "crates/jp_config/src/style/code.rs", + "line": 62 + }, + { + "name": "PartialLockWaitConfig::assign", + "file": "crates/jp_config/src/style/lock_wait.rs", + "line": 45 + }, + { + "name": "PartialTypewriterConfig::assign", + "file": "crates/jp_config/src/style/typewriter.rs", + "line": 60 + }, + { + "name": "DelayDuration::deserialize", + "file": "crates/jp_config/src/style/typewriter.rs", + "line": 149 + }, + { + "name": "PartialMcpStartupConfig::assign", + "file": "crates/jp_config/src/style/mcp_startup.rs", + "line": 72 + }, + { + "name": "PartialInlineCodeConfig::assign", + "file": "crates/jp_config/src/style/inline_code.rs", + "line": 31 + }, + { + "name": "PartialToolCallConfig::assign", + "file": "crates/jp_config/src/style/tool_call.rs", + "line": 123 + }, + { + "name": "PartialToolProgressConfig::assign", + "file": "crates/jp_config/src/style/tool_call.rs", + "line": 137 + }, + { + "name": "PartialPreparingConfig::assign", + "file": "crates/jp_config/src/style/tool_call.rs", + "line": 152 + }, + { + "name": "PartialProgressConfig::assign", + "file": "crates/jp_config/src/style/streaming.rs", + "line": 58 + }, + { + "name": "PartialStreamingConfig::assign", + "file": "crates/jp_config/src/style/streaming.rs", + "line": 104 + }, + { + "name": "PartialMarkdownConfig::assign", + "file": "crates/jp_config/src/style/markdown.rs", + "line": 103 + }, + { + "name": "PartialReasoningConfig::assign", + "file": "crates/jp_config/src/style/reasoning.rs", + "line": 75 + }, + { + "name": "PartialUserConfig::assign", + "file": "crates/jp_config/src/user.rs", + "line": 32 + }, + { + "name": "PartialEditorConfig::assign", + "file": "crates/jp_config/src/editor.rs", + "line": 116 + }, + { + "name": "PartialInlineEditorConfig::assign", + "file": "crates/jp_config/src/editor.rs", + "line": 172 + }, + { + "name": "PartialModelIdOrAliasConfig::assign", + "file": "crates/jp_config/src/model/id.rs", + "line": 44 + }, + { + "name": "PartialModelIdOrAliasConfig::delta", + "file": "crates/jp_config/src/model/id.rs", + "line": 63 + }, + { + "name": "PartialModelIdOrAliasConfig::finalize_in_place", + "file": "crates/jp_config/src/model/id.rs", + "line": 235 + }, + { + "name": "resolve_alias_chain", + "file": "crates/jp_config/src/model/id.rs", + "line": 297 + }, + { + "name": "resolve_partial_alias_chain", + "file": "crates/jp_config/src/model/id.rs", + "line": 324 + }, + { + "name": "PartialModelIdConfig::assign", + "file": "crates/jp_config/src/model/id.rs", + "line": 364 + }, + { + "name": "deserialize", + "file": "crates/jp_config/src/model/id/alias.rs", + "line": 20 + }, + { + "name": "PartialParametersConfig::assign", + "file": "crates/jp_config/src/model/parameters.rs", + "line": 215 + }, + { + "name": "PartialReasoningConfig::assign", + "file": "crates/jp_config/src/model/parameters.rs", + "line": 388 + }, + { + "name": "PartialCustomReasoningConfig::assign", + "file": "crates/jp_config/src/model/parameters.rs", + "line": 467 + }, + { + "name": "ConfigFile::merge_delta", + "file": "crates/jp_config/src/fs.rs", + "line": 155 + }, + { + "name": "deep_merge_toml", + "file": "crates/jp_config/src/fs.rs", + "line": 203 + }, + { + "name": "PartialTemplateConfig::assign", + "file": "crates/jp_config/src/template.rs", + "line": 29 + }, + { + "name": "KvAssignment::assign_to_entry", + "file": "crates/jp_config/src/assignment.rs", + "line": 293 + }, + { + "name": "KvAssignment::assign_to_mergeable_entry", + "file": "crates/jp_config/src/assignment.rs", + "line": 398 + }, + { + "name": "KvAssignment::try_from_env", + "file": "crates/jp_config/src/assignment.rs", + "line": 452 + }, + { + "name": "KvAssignment::try_merge_object", + "file": "crates/jp_config/src/assignment.rs", + "line": 642 + }, + { + "name": "KvAssignment::try_some_mergeable_vec", + "file": "crates/jp_config/src/assignment.rs", + "line": 1163 + }, + { + "name": "KvAssignment::try_vec_of_nested", + "file": "crates/jp_config/src/assignment.rs", + "line": 1231 + }, + { + "name": "flatten_recursive", + "file": "crates/jp_config/src/assignment.rs", + "line": 1338 + }, + { + "name": "missing_key", + "file": "crates/jp_config/src/assignment.rs", + "line": 1600 + }, + { + "name": "PartialProviderConfig::assign", + "file": "crates/jp_config/src/providers.rs", + "line": 60 + }, + { + "name": "PartialModelConfig::assign", + "file": "crates/jp_config/src/model.rs", + "line": 43 + }, + { + "name": "PartialGenerateConfig::assign", + "file": "crates/jp_config/src/conversation/title/generate.rs", + "line": 40 + }, + { + "name": "PartialToolsConfig::assign", + "file": "crates/jp_config/src/conversation/tool.rs", + "line": 58 + }, + { + "name": "PartialToolsDefaultsConfig::assign", + "file": "crates/jp_config/src/conversation/tool.rs", + "line": 377 + }, + { + "name": "PartialToolConfig::assign", + "file": "crates/jp_config/src/conversation/tool.rs", + "line": 639 + }, + { + "name": "PartialToolParameterConfig::assign", + "file": "crates/jp_config/src/conversation/tool.rs", + "line": 882 + }, + { + "name": "PartialEnableConfig::assign", + "file": "crates/jp_config/src/conversation/tool.rs", + "line": 1897 + }, + { + "name": "PartialFanOutConfig::assign", + "file": "crates/jp_config/src/conversation/tool.rs", + "line": 2117 + }, + { + "name": "PartialTitleConfig::assign", + "file": "crates/jp_config/src/conversation/title.rs", + "line": 40 + }, + { + "name": "LabelConfig::run", + "file": "crates/jp_config/src/conversation/label.rs", + "line": 124 + }, + { + "name": "PartialLabelConfig::assign", + "file": "crates/jp_config/src/conversation/label.rs", + "line": 302 + }, + { + "name": "PartialLabelObject::assign", + "file": "crates/jp_config/src/conversation/label.rs", + "line": 391 + }, + { + "name": "PartialLabelValue::assign", + "file": "crates/jp_config/src/conversation/label.rs", + "line": 441 + }, + { + "name": "PartialLabelCommand::assign", + "file": "crates/jp_config/src/conversation/label.rs", + "line": 483 + }, + { + "name": "PartialApplyOn::assign", + "file": "crates/jp_config/src/conversation/label.rs", + "line": 511 + }, + { + "name": "PartialCompactionConfig::assign", + "file": "crates/jp_config/src/conversation/compaction.rs", + "line": 76 + }, + { + "name": "PartialCompactionConfig::delta", + "file": "crates/jp_config/src/conversation/compaction.rs", + "line": 88 + }, + { + "name": "PartialCompactionRuleConfig::assign", + "file": "crates/jp_config/src/conversation/compaction.rs", + "line": 291 + }, + { + "name": "PartialSummaryConfig::assign", + "file": "crates/jp_config/src/conversation/compaction.rs", + "line": 377 + }, + { + "name": "PartialAccessConfig::assign", + "file": "crates/jp_config/src/conversation/tool/access.rs", + "line": 107 + }, + { + "name": "PartialFsRuleConfig::assign", + "file": "crates/jp_config/src/conversation/tool/access.rs", + "line": 208 + }, + { + "name": "PartialEnvRuleConfig::assign", + "file": "crates/jp_config/src/conversation/tool/access.rs", + "line": 286 + }, + { + "name": "PartialDisplayStyleConfig::assign", + "file": "crates/jp_config/src/conversation/tool/style.rs", + "line": 153 + }, + { + "name": "PartialErrorStyleConfig::assign", + "file": "crates/jp_config/src/conversation/tool/style.rs", + "line": 274 + }, + { + "name": "InlineResults::deserialize", + "file": "crates/jp_config/src/conversation/tool/style.rs", + "line": 370 + }, + { + "name": "PartialAttachmentConfig::assign", + "file": "crates/jp_config/src/conversation/attachment.rs", + "line": 31 + }, + { + "name": "PartialAttachmentObjectConfig::assign", + "file": "crates/jp_config/src/conversation/attachment.rs", + "line": 127 + }, + { + "name": "Workspace::resolvable_history", + "file": "crates/jp_workspace/src/session_mapping.rs", + "line": 132 + }, + { + "name": "Workspace::cleanup_stale_files", + "file": "crates/jp_workspace/src/session_mapping.rs", + "line": 295 + }, + { + "name": "generate_id_from_timestamp", + "file": "crates/jp_workspace/src/id.rs", + "line": 126 + }, + { + "name": "Workspace::open_inner", + "file": "crates/jp_workspace/src/lib.rs", + "line": 210 + }, + { + "name": "Workspace::load_conversation_index", + "file": "crates/jp_workspace/src/lib.rs", + "line": 369 + }, + { + "name": "Workspace::eager_load_conversation", + "file": "crates/jp_workspace/src/lib.rs", + "line": 470 + }, + { + "name": "Workspace::unarchive_conversation", + "file": "crates/jp_workspace/src/lib.rs", + "line": 947 + }, + { + "name": "Workspace::sync_conversation", + "file": "crates/jp_workspace/src/lib.rs", + "line": 1055 + }, + { + "name": "Workspace::ensure_all_metadata_loaded", + "file": "crates/jp_workspace/src/lib.rs", + "line": 1090 + }, + { + "name": "Workspace::test_lock", + "file": "crates/jp_workspace/src/lib.rs", + "line": 1121 + }, + { + "name": "maybe_init_conversation", + "file": "crates/jp_workspace/src/lib.rs", + "line": 1163 + }, + { + "name": "maybe_init_events", + "file": "crates/jp_workspace/src/lib.rs", + "line": 1184 + }, + { + "name": "upsert_root", + "file": "crates/jp_workspace/src/roots.rs", + "line": 79 + }, + { + "name": "migrate_legacy_symlink", + "file": "crates/jp_workspace/src/roots.rs", + "line": 149 + }, + { + "name": "run", + "file": "crates/internal/build-registry/src/main.rs", + "line": 87 + }, + { + "name": "create", + "file": "crates/internal/ticket/src/store.rs", + "line": 174 + }, + { + "name": "vocabulary", + "file": "crates/internal/ticket/src/store.rs", + "line": 296 + }, + { + "name": "import", + "file": "crates/internal/ticket/src/store.rs", + "line": 399 + }, + { + "name": "slug", + "file": "crates/internal/ticket/src/store.rs", + "line": 728 + }, + { + "name": "escape", + "file": "crates/internal/ticket/src/import.rs", + "line": 51 + }, + { + "name": "unescaped", + "file": "crates/internal/ticket/src/parse.rs", + "line": 95 + }, + { + "name": "metadata", + "file": "crates/internal/ticket/src/parse.rs", + "line": 273 + }, + { + "name": "FileContent::add", + "file": "crates/jp_attachment_file_content/src/lib.rs", + "line": 38 + }, + { + "name": "FileContent::get", + "file": "crates/jp_attachment_file_content/src/lib.rs", + "line": 95 + }, + { + "name": "uri_to_pattern", + "file": "crates/jp_attachment_file_content/src/lib.rs", + "line": 304 + }, + { + "name": "Command::to_uri", + "file": "crates/jp_attachment_cmd_output/src/lib.rs", + "line": 31 + }, + { + "name": "Commands::get", + "file": "crates/jp_attachment_cmd_output/src/lib.rs", + "line": 108 + }, + { + "name": "Labels::from_tokens_lossy", + "file": "crates/jp_label/src/labels.rs", + "line": 194 + }, + { + "name": "ValueSetVisitor::visit_seq", + "file": "crates/jp_label/src/labels.rs", + "line": 358 + }, + { + "name": "Vocabulary::parse", + "file": "crates/jp_label/src/vocabulary.rs", + "line": 105 + }, + { + "name": "Vocabulary::resolve_against", + "file": "crates/jp_label/src/vocabulary.rs", + "line": 248 + }, + { + "name": "InlineSelect::prompt", + "file": "crates/jp_inquire/src/inline_select.rs", + "line": 108 + }, + { + "name": "InlineSelect::build_help_text", + "file": "crates/jp_inquire/src/inline_select.rs", + "line": 170 + }, + { + "name": "Vcr::cassette", + "file": "crates/jp_test/src/mock.rs", + "line": 78 + }, + { + "name": "modify_fixture", + "file": "crates/jp_test/src/mock.rs", + "line": 142 + }, + { + "name": "Client::post_stream", + "file": "crates/contrib/async-anthropic/src/client.rs", + "line": 277 + }, + { + "name": "handle_response", + "file": "crates/contrib/async-anthropic/src/client.rs", + "line": 322 + }, + { + "name": "response_error", + "file": "crates/contrib/async-anthropic/src/client.rs", + "line": 337 + }, + { + "name": "UnifiedRateLimit::is_empty", + "file": "crates/contrib/async-anthropic/src/errors.rs", + "line": 204 + }, + { + "name": "request_id", + "file": "crates/contrib/async-anthropic/src/bearer.rs", + "line": 100 + }, + { + "name": "merge_betas", + "file": "crates/contrib/async-anthropic/src/bearer.rs", + "line": 125 + }, + { + "name": "partialize_schema", + "file": "crates/contrib/schematic/src/internal.rs", + "line": 147 + }, + { + "name": "JsoncTemplateRenderer::render_array", + "file": "crates/contrib/schematic/src/schema/renderers/jsonc_template.rs", + "line": 43 + }, + { + "name": "JsoncTemplateRenderer::render_object", + "file": "crates/contrib/schematic/src/schema/renderers/jsonc_template.rs", + "line": 84 + }, + { + "name": "TomlTemplateRenderer::extract_sections", + "file": "crates/contrib/schematic/src/schema/renderers/toml_template.rs", + "line": 47 + }, + { + "name": "TomlTemplateRenderer::render_array", + "file": "crates/contrib/schematic/src/schema/renderers/toml_template.rs", + "line": 100 + }, + { + "name": "TomlTemplateRenderer::render_object", + "file": "crates/contrib/schematic/src/schema/renderers/toml_template.rs", + "line": 136 + }, + { + "name": "TomlTemplateRenderer::render", + "file": "crates/contrib/schematic/src/schema/renderers/toml_template.rs", + "line": 218 + }, + { + "name": "YamlTemplateRenderer::render_array", + "file": "crates/contrib/schematic/src/schema/renderers/yaml_template.rs", + "line": 41 + }, + { + "name": "YamlTemplateRenderer::render_object", + "file": "crates/contrib/schematic/src/schema/renderers/yaml_template.rs", + "line": 89 + }, + { + "name": "TemplateContext::indent", + "file": "crates/contrib/schematic/src/schema/renderers/template.rs", + "line": 117 + }, + { + "name": "TemplateContext::create_field_comment", + "file": "crates/contrib/schematic/src/schema/renderers/template.rs", + "line": 133 + }, + { + "name": "TemplateContext::get_stack_key", + "file": "crates/contrib/schematic/src/schema/renderers/template.rs", + "line": 209 + }, + { + "name": "TemplateContext::is_hidden", + "file": "crates/contrib/schematic/src/schema/renderers/template.rs", + "line": 234 + }, + { + "name": "SchemaGenerator::add_schema", + "file": "crates/contrib/schematic/src/schema/generator.rs", + "line": 26 + }, + { + "name": "Toc::parse", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 66 + }, + { + "name": "read_run", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 105 + }, + { + "name": "read_info", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 134 + }, + { + "name": "read_target", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 154 + }, + { + "name": "read_summary", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 184 + }, + { + "name": "read_processes", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 238 + }, + { + "name": "read_data", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 264 + }, + { + "name": "skip_to_end", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 338 + }, + { + "name": "TraceBundle::open", + "file": "crates/contrib/xct2cli/src/trace/mod.rs", + "line": 31 + }, + { + "name": "QueryResult::parse", + "file": "crates/contrib/xct2cli/src/trace/mod.rs", + "line": 81 + }, + { + "name": "CallgraphBuilder<'a>::build_symbolicator", + "file": "crates/contrib/xct2cli/src/analysis/callgraph.rs", + "line": 121 + }, + { + "name": "CallgraphBuilder<'a>::top_inclusive", + "file": "crates/contrib/xct2cli/src/analysis/callgraph.rs", + "line": 164 + }, + { + "name": "CallgraphBuilder<'a>::callees_of", + "file": "crates/contrib/xct2cli/src/analysis/callgraph.rs", + "line": 206 + }, + { + "name": "TraceBundle::pc_samples", + "file": "crates/contrib/xct2cli/src/analysis/samples.rs", + "line": 32 + }, + { + "name": "TraceBundle::callstacks", + "file": "crates/contrib/xct2cli/src/analysis/samples.rs", + "line": 88 + }, + { + "name": "HotspotsBuilder<'a>::run", + "file": "crates/contrib/xct2cli/src/analysis/hotspots.rs", + "line": 138 + }, + { + "name": "Xctrace::discover", + "file": "crates/contrib/xct2cli/src/xctrace.rs", + "line": 34 + }, + { + "name": "Xctrace::run", + "file": "crates/contrib/xct2cli/src/xctrace.rs", + "line": 64 + }, + { + "name": "Xctrace::run_args", + "file": "crates/contrib/xct2cli/src/xctrace.rs", + "line": 73 + }, + { + "name": "Symbolicator::resolve", + "file": "crates/contrib/xct2cli/src/symbol/macho.rs", + "line": 84 + }, + { + "name": "BinaryInfo::enumerate_slides", + "file": "crates/contrib/xct2cli/src/symbol/macho.rs", + "line": 224 + }, + { + "name": "TraceBundle::image_loads", + "file": "crates/contrib/xct2cli/src/symbol/macho.rs", + "line": 336 + }, + { + "name": "decode_dyld_map_a", + "file": "crates/contrib/xct2cli/src/symbol/macho.rs", + "line": 355 + }, + { + "name": "demangle", + "file": "crates/contrib/xct2cli/src/symbol/swift.rs", + "line": 41 + }, + { + "name": "load", + "file": "crates/contrib/xct2cli/src/symbol/swift.rs", + "line": 91 + }, + { + "name": "candidate_paths", + "file": "crates/contrib/xct2cli/src/symbol/swift.rs", + "line": 122 + }, + { + "name": "developer_dir", + "file": "crates/contrib/xct2cli/src/symbol/swift.rs", + "line": 139 + }, + { + "name": "RowReader::next_event", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 61 + }, + { + "name": "RowReader::read_node_prelude", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 128 + }, + { + "name": "RowReader::read_schema_body", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 180 + }, + { + "name": "RowReader::read_column", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 212 + }, + { + "name": "RowReader::read_row", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 259 + }, + { + "name": "RowReader::parse_cell_start", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 287 + }, + { + "name": "RowReader::parse_cell_empty", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 347 + }, + { + "name": "strip_environment", + "file": "crates/contrib/xct2cli/src/redact.rs", + "line": 30 + }, + { + "name": "format_markdown_with", + "file": "crates/contrib/comfort/src/format.rs", + "line": 130 + }, + { + "name": "format_source_impl", + "file": "crates/contrib/comfort/src/format.rs", + "line": 179 + }, + { + "name": "canonicalize_markdown", + "file": "crates/contrib/comfort/src/format.rs", + "line": 239 + }, + { + "name": "trim_blank_prefix_lines", + "file": "crates/contrib/comfort/src/format.rs", + "line": 276 + }, + { + "name": "collect_verbatim_block_ranges", + "file": "crates/contrib/comfort/src/format.rs", + "line": 323 + }, + { + "name": "align_tables", + "file": "crates/contrib/comfort/src/format.rs", + "line": 351 + }, + { + "name": "collect_table_replacements", + "file": "crates/contrib/comfort/src/format.rs", + "line": 391 + }, + { + "name": "render_aligned_table", + "file": "crates/contrib/comfort/src/format.rs", + "line": 471 + }, + { + "name": "extract_reference_links", + "file": "crates/contrib/comfort/src/format.rs", + "line": 609 + }, + { + "name": "prune_unused_reference_definitions", + "file": "crates/contrib/comfort/src/format.rs", + "line": 699 + }, + { + "name": "collect_referenced_labels", + "file": "crates/contrib/comfort/src/format.rs", + "line": 742 + }, + { + "name": "collect_inline_link_replacements", + "file": "crates/contrib/comfort/src/format.rs", + "line": 921 + }, + { + "name": "extract_existing_reference_definitions", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1010 + }, + { + "name": "collect_reference_definition_spans", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1064 + }, + { + "name": "collect_excluded_ranges_for_refdefs", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1128 + }, + { + "name": "parse_reference_definition", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1163 + }, + { + "name": "parse_quoted_title", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1298 + }, + { + "name": "protect_reference_form_links", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1362 + }, + { + "name": "collect_reference_form_link_ranges", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1462 + }, + { + "name": "reflow_markdown", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1569 + }, + { + "name": "ResolveIntraDocLinks::resolve", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1633 + }, + { + "name": "collect_paragraphs", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1713 + }, + { + "name": "continuation_prefix_from_ancestors", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1795 + }, + { + "name": "strip_block_quote_markers", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1865 + }, + { + "name": "walk_paragraphs_for_atomic_ranges", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1942 + }, + { + "name": "walk_inline_for_atomic_ranges", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1960 + }, + { + "name": "reflow_paragraph", + "file": "crates/contrib/comfort/src/format.rs", + "line": 2005 + }, + { + "name": "cli_main", + "file": "crates/contrib/comfort/src/lib.rs", + "line": 45 + }, + { + "name": "run", + "file": "crates/contrib/comfort/src/run.rs", + "line": 27 + }, + { + "name": "run_stdin", + "file": "crates/contrib/comfort/src/run.rs", + "line": 75 + }, + { + "name": "Block::reassemble", + "file": "crates/contrib/comfort/src/extract.rs", + "line": 60 + }, + { + "name": "find_blocks", + "file": "crates/contrib/comfort/src/extract.rs", + "line": 88 + }, + { + "name": "split_sentences", + "file": "crates/contrib/comfort/src/sentence.rs", + "line": 102 + }, + { + "name": "fold_line_breaks", + "file": "crates/contrib/comfort/src/sentence.rs", + "line": 207 + }, + { + "name": "collapse_whitespace", + "file": "crates/contrib/comfort/src/sentence.rs", + "line": 226 + }, + { + "name": "merge_abbreviation_splits", + "file": "crates/contrib/comfort/src/sentence.rs", + "line": 254 + }, + { + "name": "merge_quoted_punct_splits", + "file": "crates/contrib/comfort/src/sentence.rs", + "line": 274 + }, + { + "name": "workspace_files", + "file": "crates/contrib/comfort/src/walk.rs", + "line": 19 + }, + { + "name": "expand_path", + "file": "crates/contrib/comfort/src/walk.rs", + "line": 55 + }, + { + "name": "walk_files", + "file": "crates/contrib/comfort/src/walk.rs", + "line": 63 + }, + { + "name": "SchemaType::get_default", + "file": "crates/contrib/schematic_types/src/schema_type.rs", + "line": 55 + }, + { + "name": "SchemaType::add_field", + "file": "crates/contrib/schematic_types/src/schema_type.rs", + "line": 137 + }, + { + "name": "EnumType::from_schemas", + "file": "crates/contrib/schematic_types/src/enums.rs", + "line": 38 + }, + { + "name": "Schema::nullify", + "file": "crates/contrib/schematic_types/src/schema.rs", + "line": 134 + }, + { + "name": "Schema::partialize", + "file": "crates/contrib/schematic_types/src/schema.rs", + "line": 166 + }, + { + "name": "is_default", + "file": "crates/contrib/schematic_types/src/schema.rs", + "line": 278 + }, + { + "name": "SchemaBuilder::build_root", + "file": "crates/contrib/schematic_types/src/schema_builder.rs", + "line": 34 + }, + { + "name": "SchemaBuilder::infer", + "file": "crates/contrib/schematic_types/src/schema_builder.rs", + "line": 184 + }, + { + "name": "Field<'_>::generate_from_partial_value", + "file": "crates/contrib/schematic_macros/src/config/field.rs", + "line": 149 + }, + { + "name": "Variant<'_>::generate_is_empty", + "file": "crates/contrib/schematic_macros/src/config/variant.rs", + "line": 28 + }, + { + "name": "Variant<'_>::generate_finalize_statement", + "file": "crates/contrib/schematic_macros/src/config/variant.rs", + "line": 124 + }, + { + "name": "Variant<'_>::generate_merge_statement", + "file": "crates/contrib/schematic_macros/src/config/variant.rs", + "line": 155 + }, + { + "name": "Variant<'_>::generate_from_partial_value", + "file": "crates/contrib/schematic_macros/src/config/variant.rs", + "line": 248 + }, + { + "name": "ConfigMacro<'_>::to_tokens", + "file": "crates/contrib/schematic_macros/src/config/mod.rs", + "line": 29 + }, + { + "name": "emit_schematic_impls", + "file": "crates/contrib/schematic_macros/src/config/mod.rs", + "line": 177 + }, + { + "name": "emit_config_impls", + "file": "crates/contrib/schematic_macros/src/config/mod.rs", + "line": 277 + }, + { + "name": "Container<'_>::generate_from_partial", + "file": "crates/contrib/schematic_macros/src/config/container.rs", + "line": 303 + }, + { + "name": "Container<'_>::generate_untagged_deserialize", + "file": "crates/contrib/schematic_macros/src/config/container.rs", + "line": 521 + }, + { + "name": "Field<'_>::from", + "file": "crates/contrib/schematic_macros/src/common/field.rs", + "line": 94 + }, + { + "name": "Field<'_>::get_name", + "file": "crates/contrib/schematic_macros/src/common/field.rs", + "line": 218 + }, + { + "name": "Field<'_>::get_aliases", + "file": "crates/contrib/schematic_macros/src/common/field.rs", + "line": 238 + }, + { + "name": "Field<'_>::generate_schema_type", + "file": "crates/contrib/schematic_macros/src/common/field.rs", + "line": 414 + }, + { + "name": "extract_inner_type", + "file": "crates/contrib/schematic_macros/src/common/field_value.rs", + "line": 18 + }, + { + "name": "FieldValue::nested", + "file": "crates/contrib/schematic_macros/src/common/field_value.rs", + "line": 92 + }, + { + "name": "Macro<'l>::from", + "file": "crates/contrib/schematic_macros/src/common/macros.rs", + "line": 105 + }, + { + "name": "Container<'_>::generate_schema", + "file": "crates/contrib/schematic_macros/src/common/container.rs", + "line": 93 + }, + { + "name": "generate_enum_schema", + "file": "crates/contrib/schematic_macros/src/common/container.rs", + "line": 173 + }, + { + "name": "extract_deprecated", + "file": "crates/contrib/schematic_macros/src/utils.rs", + "line": 139 + }, + { + "name": "Variant<'_>::from", + "file": "crates/contrib/schematic_macros/src/config_enum/variant.rs", + "line": 63 + }, + { + "name": "Variant<'_>::get_schema_type", + "file": "crates/contrib/schematic_macros/src/config_enum/variant.rs", + "line": 180 + }, + { + "name": "macro_impl", + "file": "crates/contrib/schematic_macros/src/config_enum/mod.rs", + "line": 33 + }, + { + "name": "collect_variant_tokens", + "file": "crates/contrib/schematic_macros/src/config_enum/mod.rs", + "line": 115 + }, + { + "name": "emit_enum_schematic_impl", + "file": "crates/contrib/schematic_macros/src/config_enum/mod.rs", + "line": 288 + }, + { + "name": "query_table", + "file": "crates/contrib/grizzly/src/fts.rs", + "line": 101 + }, + { + "name": "GrizzlyService::note_get", + "file": "crates/contrib/grizzly/src/server.rs", + "line": 149 + }, + { + "name": "GrizzlyService::note_search", + "file": "crates/contrib/grizzly/src/server.rs", + "line": 190 + }, + { + "name": "GrizzlyService::note_create", + "file": "crates/contrib/grizzly/src/server.rs", + "line": 224 + }, + { + "name": "urlencoded", + "file": "crates/contrib/grizzly/src/server.rs", + "line": 267 + }, + { + "name": "BearDb::open", + "file": "crates/contrib/grizzly/src/db.rs", + "line": 32 + }, + { + "name": "BearDb::open_readonly", + "file": "crates/contrib/grizzly/src/db.rs", + "line": 129 + }, + { + "name": "Note::to_xml_with_lines", + "file": "crates/contrib/grizzly/src/note.rs", + "line": 66 + }, + { + "name": "run", + "file": "crates/contrib/grizzly/src/main.rs", + "line": 103 + }, + { + "name": "execute", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 303 + }, + { + "name": "execute_fts", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 330 + }, + { + "name": "push_filters", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 375 + }, + { + "name": "get_filtered_note_ids", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 427 + }, + { + "name": "execute_like", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 460 + }, + { + "name": "build_match", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 567 + }, + { + "name": "extract_hits_and_snippet", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 608 + }, + { + "name": "make_snippet", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 677 + }, + { + "name": "fetch_metadata", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 716 + }, + { + "name": "merge_into_object", + "file": "crates/contrib/json_edit/src/merge.rs", + "line": 20 + }, + { + "name": "Object::set", + "file": "crates/contrib/json_edit/src/ast.rs", + "line": 111 + }, + { + "name": "Object::insert_member", + "file": "crates/contrib/json_edit/src/ast.rs", + "line": 213 + }, + { + "name": "escape_json_key", + "file": "crates/contrib/json_edit/src/ast.rs", + "line": 409 + }, + { + "name": "build_member", + "file": "crates/contrib/json_edit/src/ast.rs", + "line": 428 + }, + { + "name": "lex", + "file": "crates/contrib/json_edit/src/lexer.rs", + "line": 15 + }, + { + "name": "escape_css_value", + "file": "crates/contrib/bookworm/src/docs.rs", + "line": 253 + }, + { + "name": "walk_dirs", + "file": "crates/contrib/bookworm/src/dl.rs", + "line": 296 + }, + { + "name": "collapse_blank_lines", + "file": "crates/contrib/bookworm/src/util.rs", + "line": 24 + }, + { + "name": "index", + "file": "crates/contrib/bookworm/src/index.rs", + "line": 39 + }, + { + "name": "recursive_walk", + "file": "crates/contrib/bookworm/src/index.rs", + "line": 159 + }, + { + "name": "parse_rustdoc_file", + "file": "crates/contrib/bookworm/src/index.rs", + "line": 200 + }, + { + "name": "check_if_redirection", + "file": "crates/contrib/bookworm/src/index.rs", + "line": 351 + }, + { + "name": "check_if_inner_type_alias", + "file": "crates/contrib/bookworm/src/index.rs", + "line": 383 + }, + { + "name": "Url::from", + "file": "crates/contrib/bookworm/src/mcp/tools.rs", + "line": 73 + }, + { + "name": "CrateUri::try_from", + "file": "crates/contrib/bookworm/src/mcp/tools.rs", + "line": 115 + }, + { + "name": "format_xml", + "file": "crates/contrib/bookworm/src/mcp/tools.rs", + "line": 189 + }, + { + "name": "write_xml_node", + "file": "crates/contrib/bookworm/src/mcp/tools.rs", + "line": 215 + }, + { + "name": "BookwormService::format_contents", + "file": "crates/contrib/bookworm/src/mcp/server.rs", + "line": 49 + }, + { + "name": "BookwormService::crates_search", + "file": "crates/contrib/bookworm/src/mcp/server.rs", + "line": 166 + }, + { + "name": "BookwormService::crate_search_items", + "file": "crates/contrib/bookworm/src/mcp/server.rs", + "line": 186 + }, + { + "name": "BookwormService::crate_resource", + "file": "crates/contrib/bookworm/src/mcp/server.rs", + "line": 225 + }, + { + "name": "BookwormService::crate_versions", + "file": "crates/contrib/bookworm/src/mcp/server.rs", + "line": 257 + }, + { + "name": "BookwormService::crate_readme", + "file": "crates/contrib/bookworm/src/mcp/server.rs", + "line": 279 + }, + { + "name": "collect_resources", + "file": "crates/contrib/bookworm/src/query/list_crate_source_resources.rs", + "line": 45 + }, + { + "name": "search_crate_type_definitions", + "file": "crates/contrib/bookworm/src/query/search_crate_type_definitions.rs", + "line": 17 + }, + { + "name": "get_crate_source_resource", + "file": "crates/contrib/bookworm/src/query/get_crate_source_resource.rs", + "line": 12 + }, + { + "name": "compaction_detail_item", + "file": "crates/jp_cli/src/format.rs", + "line": 134 + }, + { + "name": "compaction_policy_label", + "file": "crates/jp_cli/src/format.rs", + "line": 172 + }, + { + "name": "CompactFlag::from_arg_matches", + "file": "crates/jp_cli/src/cmd/compact_flag.rs", + "line": 134 + }, + { + "name": "CompactSpec::to_partial_rule", + "file": "crates/jp_cli/src/cmd/compact_flag.rs", + "line": 197 + }, + { + "name": "Fmt::run", + "file": "crates/jp_cli/src/cmd/config/fmt.rs", + "line": 23 + }, + { + "name": "Fmt::fmt_target", + "file": "crates/jp_cli/src/cmd/config/fmt.rs", + "line": 74 + }, + { + "name": "Show::run", + "file": "crates/jp_cli/src/cmd/config/show.rs", + "line": 20 + }, + { + "name": "config_skeleton", + "file": "crates/jp_cli/src/cmd/config/show.rs", + "line": 40 + }, + { + "name": "Set::run", + "file": "crates/jp_cli/src/cmd/config/set.rs", + "line": 27 + }, + { + "name": "Set::set_in_conversations", + "file": "crates/jp_cli/src/cmd/config/set.rs", + "line": 43 + }, + { + "name": "Set::set_in_file", + "file": "crates/jp_cli/src/cmd/config/set.rs", + "line": 76 + }, + { + "name": "Ls::run", + "file": "crates/jp_cli/src/cmd/workspace/ls.rs", + "line": 22 + }, + { + "name": "render", + "file": "crates/jp_cli/src/cmd/workspace/show.rs", + "line": 283 + }, + { + "name": "conversation_stats", + "file": "crates/jp_cli/src/cmd/workspace/show.rs", + "line": 381 + }, + { + "name": "resolve", + "file": "crates/jp_cli/src/cmd/workspace/target.rs", + "line": 212 + }, + { + "name": "stdin_id", + "file": "crates/jp_cli/src/cmd/workspace/target.rs", + "line": 505 + }, + { + "name": "Query::run_locked", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 452 + }, + { + "name": "Query::conversation_load_request", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 881 + }, + { + "name": "Query::build_conversation", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 898 + }, + { + "name": "Query::create_new_conversation", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 996 + }, + { + "name": "Query::run_turn", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 1169 + }, + { + "name": "Query::acquire_lock", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 1383 + }, + { + "name": "persist_config_reset", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 1992 + }, + { + "name": "turn_config_delta", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2021 + }, + { + "name": "Query::apply_cli_config", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2042 + }, + { + "name": "build_sections", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2142 + }, + { + "name": "build_thread", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2170 + }, + { + "name": "apply_mounts", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2566 + }, + { + "name": "create_mount_effects", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2639 + }, + { + "name": "PendingStreamTrim::apply", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2818 + }, + { + "name": "mount_access_seed", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2977 + }, + { + "name": "read_piped_stdin", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 3081 + }, + { + "name": "Login::run_with_auth", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 273 + }, + { + "name": "Login::acquire", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 496 + }, + { + "name": "Login::device_login", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 560 + }, + { + "name": "await_callback", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 639 + }, + { + "name": "percent_decode", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 698 + }, + { + "name": "List::run_with_auth", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 749 + }, + { + "name": "read_setup_token", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 1041 + }, + { + "name": "humanize", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 1136 + }, + { + "name": "Composer::ask", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 154 + }, + { + "name": "Composer::buffer", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 199 + }, + { + "name": "run_plugin", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 361 + }, + { + "name": "spawn_plugin", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 546 + }, + { + "name": "stop_plugin", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 643 + }, + { + "name": "join_within", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 666 + }, + { + "name": "message_loop", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 741 + }, + { + "name": "run_query", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 891 + }, + { + "name": "prepare_turn", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 1261 + }, + { + "name": "handle_request", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 1762 + }, + { + "name": "handle_write_draft", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 2099 + }, + { + "name": "handle_list_configs", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 2197 + }, + { + "name": "describe", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 2480 + }, + { + "name": "manifest_differences", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 2516 + }, + { + "name": "describe_plugin", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 2541 + }, + { + "name": "run_external", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 2900 + }, + { + "name": "render", + "file": "crates/jp_cli/src/cmd/plugin/list.rs", + "line": 113 + }, + { + "name": "discover_in", + "file": "crates/jp_cli/src/cmd/plugin/discovery.rs", + "line": 108 + }, + { + "name": "read", + "file": "crates/jp_cli/src/cmd/plugin/approvals.rs", + "line": 178 + }, + { + "name": "Update::run", + "file": "crates/jp_cli/src/cmd/plugin/update.rs", + "line": 26 + }, + { + "name": "not_approved", + "file": "crates/jp_cli/src/cmd/plugin/admission.rs", + "line": 224 + }, + { + "name": "admit", + "file": "crates/jp_cli/src/cmd/plugin/admission.rs", + "line": 280 + }, + { + "name": "Install::run", + "file": "crates/jp_cli/src/cmd/plugin/install.rs", + "line": 31 + }, + { + "name": "visit", + "file": "crates/jp_cli/src/cmd/plugin/install.rs", + "line": 120 + }, + { + "name": "confirm_third_party", + "file": "crates/jp_cli/src/cmd/plugin/install.rs", + "line": 155 + }, + { + "name": "print_root_section", + "file": "crates/jp_cli/src/cmd/plugin/help.rs", + "line": 40 + }, + { + "name": "root_entries", + "file": "crates/jp_cli/src/cmd/plugin/help.rs", + "line": 68 + }, + { + "name": "children", + "file": "crates/jp_cli/src/cmd/plugin/help.rs", + "line": 102 + }, + { + "name": "TimeThreshold::from_str", + "file": "crates/jp_cli/src/cmd/time.rs", + "line": 43 + }, + { + "name": "Resolver<'a>::automatic", + "file": "crates/jp_cli/src/cmd/label/resolve.rs", + "line": 105 + }, + { + "name": "Resolver<'a>::alias", + "file": "crates/jp_cli/src/cmd/label/resolve.rs", + "line": 169 + }, + { + "name": "run_command", + "file": "crates/jp_cli/src/cmd/label/resolve.rs", + "line": 318 + }, + { + "name": "parse_bound", + "file": "crates/jp_cli/src/cmd/turn_selection.rs", + "line": 53 + }, + { + "name": "parse_to_bound", + "file": "crates/jp_cli/src/cmd/turn_selection.rs", + "line": 111 + }, + { + "name": "TurnSet::new", + "file": "crates/jp_cli/src/cmd/turn_selection.rs", + "line": 289 + }, + { + "name": "TurnSelection::windows", + "file": "crates/jp_cli/src/cmd/turn_selection.rs", + "line": 687 + }, + { + "name": "Init::run", + "file": "crates/jp_cli/src/cmd/init.rs", + "line": 35 + }, + { + "name": "Init::maybe_ask_and_persist_user_name", + "file": "crates/jp_cli/src/cmd/init.rs", + "line": 128 + }, + { + "name": "Init::ask_run_mode", + "file": "crates/jp_cli/src/cmd/init.rs", + "line": 192 + }, + { + "name": "Init::ask_model", + "file": "crates/jp_cli/src/cmd/init.rs", + "line": 278 + }, + { + "name": "Init::detect_models", + "file": "crates/jp_cli/src/cmd/init.rs", + "line": 311 + }, + { + "name": "acquire_lock", + "file": "crates/jp_cli/src/cmd/lock.rs", + "line": 101 + }, + { + "name": "prompt_contention", + "file": "crates/jp_cli/src/cmd/lock.rs", + "line": 154 + }, + { + "name": "lock_holder_description", + "file": "crates/jp_cli/src/cmd/lock.rs", + "line": 197 + }, + { + "name": "claim_lock_region", + "file": "crates/jp_cli/src/cmd/lock.rs", + "line": 211 + }, + { + "name": "Resolved::grouped", + "file": "crates/jp_cli/src/cmd/label.rs", + "line": 123 + }, + { + "name": "expand_aliases", + "file": "crates/jp_cli/src/cmd/label.rs", + "line": 177 + }, + { + "name": "apply", + "file": "crates/jp_cli/src/cmd/label.rs", + "line": 271 + }, + { + "name": "ConversationLoadRequest::explicit_or_session", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 124 + }, + { + "name": "ConversationLoadRequest::explicit_or_session_with_config", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 138 + }, + { + "name": "ConversationLoadRequest::explicit_or_none", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 151 + }, + { + "name": "ConversationLoadRequest::explicit_or_previous", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 165 + }, + { + "name": "read_stdin_ids", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 614 + }, + { + "name": "resolve_targets", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 647 + }, + { + "name": "resolve_from_session_or_picker", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 734 + }, + { + "name": "format_relative", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 911 + }, + { + "name": "InterruptHandler

::collect_reply_inline", + "file": "crates/jp_cli/src/cmd/query/interrupt/handler.rs", + "line": 478 + }, + { + "name": "handle_tool_interrupt", + "file": "crates/jp_cli/src/cmd/query/interrupt/signals.rs", + "line": 323 + }, + { + "name": "await_mcp_servers", + "file": "crates/jp_cli/src/cmd/query/mcp_startup.rs", + "line": 31 + }, + { + "name": "claim_region", + "file": "crates/jp_cli/src/cmd/query/mcp_startup.rs", + "line": 166 + }, + { + "name": "line", + "file": "crates/jp_cli/src/cmd/query/mcp_startup.rs", + "line": 194 + }, + { + "name": "TurnCoordinator::handle_streaming_event", + "file": "crates/jp_cli/src/cmd/query/turn/coordinator.rs", + "line": 271 + }, + { + "name": "claim_waiting_region", + "file": "crates/jp_cli/src/cmd/query/turn_loop.rs", + "line": 144 + }, + { + "name": "drive_turn", + "file": "crates/jp_cli/src/cmd/query/turn_loop.rs", + "line": 252 + }, + { + "name": "build_inquiry_backend", + "file": "crates/jp_cli/src/cmd/query/turn_loop.rs", + "line": 1096 + }, + { + "name": "build_inquiry_overrides", + "file": "crates/jp_cli/src/cmd/query/turn_loop.rs", + "line": 1195 + }, + { + "name": "commit_tool_responses", + "file": "crates/jp_cli/src/cmd/query/turn_loop.rs", + "line": 1310 + }, + { + "name": "build_execution_plan", + "file": "crates/jp_cli/src/cmd/query/tool/pending.rs", + "line": 142 + }, + { + "name": "LlmInquiryBackend::inquire", + "file": "crates/jp_cli/src/cmd/query/tool/inquiry.rs", + "line": 222 + }, + { + "name": "ToolPrompter::prompt_ask", + "file": "crates/jp_cli/src/cmd/query/tool/prompter.rs", + "line": 180 + }, + { + "name": "stderr_sink", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 245 + }, + { + "name": "ToolCoordinator::pre_render_for_prompt", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 671 + }, + { + "name": "ToolCoordinator::render_executor", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 694 + }, + { + "name": "ToolCoordinator::abandon", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 792 + }, + { + "name": "ToolCoordinator::decide_permission", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 887 + }, + { + "name": "ToolCoordinator::submit", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 976 + }, + { + "name": "ToolCoordinator::add_call", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1017 + }, + { + "name": "ToolCoordinator::finish", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1094 + }, + { + "name": "ToolCoordinator::dispatch", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1334 + }, + { + "name": "ToolCoordinator::on_step", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1443 + }, + { + "name": "ToolCoordinator::on_permission", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1493 + }, + { + "name": "ToolCoordinator::pump", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1527 + }, + { + "name": "ToolCoordinator::decide", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1585 + }, + { + "name": "ToolCoordinator::announce", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1638 + }, + { + "name": "ToolCoordinator::release", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1660 + }, + { + "name": "ToolCoordinator::route", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1734 + }, + { + "name": "ToolCoordinator::answer", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1832 + }, + { + "name": "ToolCoordinator::serve", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1846 + }, + { + "name": "ToolCoordinator::deliver", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1934 + }, + { + "name": "ToolCoordinator::close", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1985 + }, + { + "name": "ToolCoordinator::render_result", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 2227 + }, + { + "name": "ToolCoordinator::preset_answer", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 2321 + }, + { + "name": "route", + "file": "crates/jp_cli/src/cmd/query/tool/mcp_executor.rs", + "line": 489 + }, + { + "name": "TerminalExecutorSource::create", + "file": "crates/jp_cli/src/cmd/query/tool/mcp_executor.rs", + "line": 654 + }, + { + "name": "TerminalExecutorSource::fan_out_executors", + "file": "crates/jp_cli/src/cmd/query/tool/mcp_executor.rs", + "line": 723 + }, + { + "name": "PendingCall::next", + "file": "crates/jp_cli/src/cmd/query/tool/mcp_executor.rs", + "line": 1080 + }, + { + "name": "PendingCall::receive", + "file": "crates/jp_cli/src/cmd/query/tool/mcp_executor.rs", + "line": 1091 + }, + { + "name": "PendingCall::receive_agent", + "file": "crates/jp_cli/src/cmd/query/tool/mcp_executor.rs", + "line": 1123 + }, + { + "name": "Grep::run", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 204 + }, + { + "name": "Grep::collect_hits_for_id", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 388 + }, + { + "name": "Grep::render", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 503 + }, + { + "name": "Grep::render_hits", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 529 + }, + { + "name": "expand_scopes", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 772 + }, + { + "name": "collect_scope_hits", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 894 + }, + { + "name": "context_ranges", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 951 + }, + { + "name": "Row::windowed", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 1054 + }, + { + "name": "window_row", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 1117 + }, + { + "name": "highlight", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 1194 + }, + { + "name": "render_group_heading", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 1262 + }, + { + "name": "Edit::run", + "file": "crates/jp_cli/src/cmd/conversation/edit.rs", + "line": 97 + }, + { + "name": "Edit::run_open_editor", + "file": "crates/jp_cli/src/cmd/conversation/edit.rs", + "line": 129 + }, + { + "name": "Edit::run_property_edit", + "file": "crates/jp_cli/src/cmd/conversation/edit.rs", + "line": 258 + }, + { + "name": "Compact::effective_rules", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 203 + }, + { + "name": "plan_rule_ranges", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 428 + }, + { + "name": "plan_compactions", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 592 + }, + { + "name": "timeline_lines", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 784 + }, + { + "name": "Compact::preflight", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 932 + }, + { + "name": "Compact::compact_one", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 963 + }, + { + "name": "Compact::preview_compaction", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 1085 + }, + { + "name": "Rm::conversation_load_request", + "file": "crates/jp_cli/src/cmd/conversation/rm.rs", + "line": 71 + }, + { + "name": "remove", + "file": "crates/jp_cli/src/cmd/conversation/rm.rs", + "line": 109 + }, + { + "name": "Ls::run", + "file": "crates/jp_cli/src/cmd/conversation/ls.rs", + "line": 147 + }, + { + "name": "Ls::build_conversation_row", + "file": "crates/jp_cli/src/cmd/conversation/ls.rs", + "line": 277 + }, + { + "name": "Ls::build_body", + "file": "crates/jp_cli/src/cmd/conversation/ls.rs", + "line": 360 + }, + { + "name": "build_header_row", + "file": "crates/jp_cli/src/cmd/conversation/ls.rs", + "line": 388 + }, + { + "name": "generate_summary", + "file": "crates/jp_cli/src/cmd/conversation/summarize.rs", + "line": 55 + }, + { + "name": "summarize_stream", + "file": "crates/jp_cli/src/cmd/conversation/summarize.rs", + "line": 128 + }, + { + "name": "summarize_events", + "file": "crates/jp_cli/src/cmd/conversation/summarize.rs", + "line": 247 + }, + { + "name": "Fork::fork_each", + "file": "crates/jp_cli/src/cmd/conversation/fork.rs", + "line": 87 + }, + { + "name": "Path::run", + "file": "crates/jp_cli/src/cmd/conversation/path.rs", + "line": 34 + }, + { + "name": "resolve_paths", + "file": "crates/jp_cli/src/cmd/conversation/path.rs", + "line": 57 + }, + { + "name": "Title::title_one", + "file": "crates/jp_cli/src/cmd/conversation/title.rs", + "line": 80 + }, + { + "name": "Unarchive::run", + "file": "crates/jp_cli/src/cmd/conversation/unarchive.rs", + "line": 31 + }, + { + "name": "Unarchive::resolve_ids", + "file": "crates/jp_cli/src/cmd/conversation/unarchive.rs", + "line": 52 + }, + { + "name": "Label::conversation_load_request", + "file": "crates/jp_cli/src/cmd/conversation/label.rs", + "line": 98 + }, + { + "name": "Label::run", + "file": "crates/jp_cli/src/cmd/conversation/label.rs", + "line": 111 + }, + { + "name": "Print::print_conversation", + "file": "crates/jp_cli/src/cmd/conversation/print.rs", + "line": 137 + }, + { + "name": "Archive::conversation_load_request", + "file": "crates/jp_cli/src/cmd/conversation/archive.rs", + "line": 70 + }, + { + "name": "Archive::run", + "file": "crates/jp_cli/src/cmd/conversation/archive.rs", + "line": 79 + }, + { + "name": "Use::run", + "file": "crates/jp_cli/src/cmd/conversation/use_.rs", + "line": 69 + }, + { + "name": "Use::conversation_load_request", + "file": "crates/jp_cli/src/cmd/conversation/use_.rs", + "line": 180 + }, + { + "name": "Use::run_filtered", + "file": "crates/jp_cli/src/cmd/conversation/use_.rs", + "line": 192 + }, + { + "name": "ApprovalStore::load", + "file": "crates/jp_cli/src/access/approvals.rs", + "line": 55 + }, + { + "name": "compile_fs", + "file": "crates/jp_cli/src/access/compile.rs", + "line": 74 + }, + { + "name": "compile_tool_policy", + "file": "crates/jp_cli/src/access/compile.rs", + "line": 147 + }, + { + "name": "compile_policy", + "file": "crates/jp_cli/src/access/compile.rs", + "line": 174 + }, + { + "name": "Commands::run", + "file": "crates/jp_cli/src/cmd.rs", + "line": 69 + }, + { + "name": "Commands::name", + "file": "crates/jp_cli/src/cmd.rs", + "line": 152 + }, + { + "name": "Error::from", + "file": "crates/jp_cli/src/cmd.rs", + "line": 443 + }, + { + "name": "run", + "file": "crates/jp_cli/src/lib.rs", + "line": 410 + }, + { + "name": "run_inner", + "file": "crates/jp_cli/src/lib.rs", + "line": 588 + }, + { + "name": "drain_background_tasks", + "file": "crates/jp_cli/src/lib.rs", + "line": 853 + }, + { + "name": "parse_error", + "file": "crates/jp_cli/src/lib.rs", + "line": 916 + }, + { + "name": "resolve_config", + "file": "crates/jp_cli/src/lib.rs", + "line": 992 + }, + { + "name": "effective_cfg_overrides", + "file": "crates/jp_cli/src/lib.rs", + "line": 1117 + }, + { + "name": "load_workspace", + "file": "crates/jp_cli/src/lib.rs", + "line": 1252 + }, + { + "name": "TurnRenderer::new", + "file": "crates/jp_cli/src/render/turn.rs", + "line": 107 + }, + { + "name": "TurnRenderer::render_turn", + "file": "crates/jp_cli/src/render/turn.rs", + "line": 157 + }, + { + "name": "TurnRenderer::reconfigure", + "file": "crates/jp_cli/src/render/turn.rs", + "line": 268 + }, + { + "name": "ToolRenderer::new", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 130 + }, + { + "name": "ToolRenderer::write_chrome", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 208 + }, + { + "name": "ToolRenderer::render_custom_result", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 291 + }, + { + "name": "ToolRenderer::start_progress", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 323 + }, + { + "name": "ToolRenderer::render_result", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 381 + }, + { + "name": "ToolRenderer::register", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 546 + }, + { + "name": "ToolRenderer::claim_preparing", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 613 + }, + { + "name": "format_args", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 678 + }, + { + "name": "ChatRenderer::render_reasoning", + "file": "crates/jp_cli/src/render/chat.rs", + "line": 340 + }, + { + "name": "ChatRenderer::handle_event", + "file": "crates/jp_cli/src/render/chat.rs", + "line": 480 + }, + { + "name": "ChatRenderer::print_code", + "file": "crates/jp_cli/src/render/chat.rs", + "line": 553 + }, + { + "name": "ChatRenderer::drain_buffer", + "file": "crates/jp_cli/src/render/chat.rs", + "line": 769 + }, + { + "name": "ChatRenderer::enter_tool_call", + "file": "crates/jp_cli/src/render/chat.rs", + "line": 926 + }, + { + "name": "build_role_header_line", + "file": "crates/jp_cli/src/render/chat.rs", + "line": 1016 + }, + { + "name": "indent_lines", + "file": "crates/jp_cli/src/render/chat.rs", + "line": 1062 + }, + { + "name": "Matcher::find_spans", + "file": "crates/jp_cli/src/shared/search.rs", + "line": 366 + }, + { + "name": "merge_overlaps", + "file": "crates/jp_cli/src/shared/search.rs", + "line": 448 + }, + { + "name": "parse_schema_dsl", + "file": "crates/jp_cli/src/schema.rs", + "line": 77 + }, + { + "name": "SchemaType::to_json", + "file": "crates/jp_cli/src/schema.rs", + "line": 130 + }, + { + "name": "Parser<'a>::parse_field_list", + "file": "crates/jp_cli/src/schema.rs", + "line": 289 + }, + { + "name": "Parser<'a>::parse_array_type", + "file": "crates/jp_cli/src/schema.rs", + "line": 415 + }, + { + "name": "fields_to_json", + "file": "crates/jp_cli/src/schema.rs", + "line": 641 + }, + { + "name": "open", + "file": "crates/jp_cli/src/editor.rs", + "line": 234 + }, + { + "name": "edit_query", + "file": "crates/jp_cli/src/editor.rs", + "line": 288 + }, + { + "name": "build_history_text", + "file": "crates/jp_cli/src/editor.rs", + "line": 462 + }, + { + "name": "Ctx::configure_active_mcp_servers", + "file": "crates/jp_cli/src/ctx.rs", + "line": 239 + }, + { + "name": "AttachmentUrlOrPath::parse", + "file": "crates/jp_cli/src/parser.rs", + "line": 56 + }, + { + "name": "AttachmentUrlOrPath::from_str", + "file": "crates/jp_cli/src/parser.rs", + "line": 119 + }, + { + "name": "jp_id_shorthand_to_url", + "file": "crates/jp_cli/src/parser.rs", + "line": 143 + }, + { + "name": "QueryDocument<'_>::fmt", + "file": "crates/jp_cli/src/editor/parser.rs", + "line": 52 + }, + { + "name": "QueryDocument<'s>::try_from", + "file": "crates/jp_cli/src/editor/parser.rs", + "line": 136 + }, + { + "name": "override_to_record", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 73 + }, + { + "name": "scan_cfg_keywords", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 171 + }, + { + "name": "ConfigPipeline::new", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 273 + }, + { + "name": "ConfigPipeline::partial_with_conversation", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 334 + }, + { + "name": "config_search_roots", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 390 + }, + { + "name": "resolve_cfg_args", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 414 + }, + { + "name": "apply_cfg_args", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 527 + }, + { + "name": "build_partial_from_cfg_args", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 577 + }, + { + "name": "Client::get_tool", + "file": "crates/jp_mcp/src/client.rs", + "line": 184 + }, + { + "name": "Client::run_services", + "file": "crates/jp_mcp/src/client.rs", + "line": 265 + }, + { + "name": "Client::start_services", + "file": "crates/jp_mcp/src/client.rs", + "line": 300 + }, + { + "name": "Client::try_create_client", + "file": "crates/jp_mcp/src/client.rs", + "line": 380 + }, + { + "name": "Client::create_client", + "file": "crates/jp_mcp/src/client.rs", + "line": 402 + }, + { + "name": "render_stderr_tail", + "file": "crates/jp_mcp/src/client.rs", + "line": 562 + }, + { + "name": "register", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 527 + }, + { + "name": "Service::new", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 623 + }, + { + "name": "validate_arguments", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 885 + }, + { + "name": "run_call", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 919 + }, + { + "name": "describe", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 1048 + }, + { + "name": "conclude", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 1100 + }, + { + "name": "run_fan_out", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 1138 + }, + { + "name": "deliver_result", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 1388 + }, + { + "name": "attempt", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 1448 + }, + { + "name": "ask_for_input", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 1521 + }, + { + "name": "split", + "file": "crates/jp_mcp/src/server/fan_out.rs", + "line": 119 + }, + { + "name": "fold", + "file": "crates/jp_mcp/src/server/fan_out.rs", + "line": 251 + }, + { + "name": "frame", + "file": "crates/jp_mcp/src/server/fan_out.rs", + "line": 270 + }, + { + "name": "from_config", + "file": "crates/jp_mcp/src/server/json_schema.rs", + "line": 29 + }, + { + "name": "with_overrides", + "file": "crates/jp_mcp/src/server/json_schema.rs", + "line": 57 + }, + { + "name": "node_with_override", + "file": "crates/jp_mcp/src/server/json_schema.rs", + "line": 121 + }, + { + "name": "apply_config_fields", + "file": "crates/jp_mcp/src/server/json_schema.rs", + "line": 159 + }, + { + "name": "to_mcp", + "file": "crates/jp_mcp/src/server/result.rs", + "line": 128 + }, + { + "name": "to_content", + "file": "crates/jp_mcp/src/server/result.rs", + "line": 168 + }, + { + "name": "DescribeTools::execute", + "file": "crates/jp_mcp/src/server/builtin/describe_tools.rs", + "line": 78 + }, + { + "name": "run_tool_command", + "file": "crates/jp_mcp/src/server.rs", + "line": 430 + }, + { + "name": "parse_command_output", + "file": "crates/jp_mcp/src/server.rs", + "line": 552 + }, + { + "name": "execute", + "file": "crates/jp_mcp/src/server.rs", + "line": 701 + }, + { + "name": "execute_local", + "file": "crates/jp_mcp/src/server.rs", + "line": 748 + }, + { + "name": "tool_definitions", + "file": "crates/jp_mcp/src/server.rs", + "line": 913 + }, + { + "name": "resolve_tool", + "file": "crates/jp_mcp/src/server.rs", + "line": 966 + }, + { + "name": "resolve_mcp_tool", + "file": "crates/jp_mcp/src/server.rs", + "line": 990 + }, + { + "name": "MockEditorBackend::edit_text", + "file": "crates/jp_editor/src/lib.rs", + "line": 208 + }, + { + "name": "render", + "file": "crates/jp_attachment_agentic_shepherd/src/render.rs", + "line": 12 + }, + { + "name": "render_section", + "file": "crates/jp_attachment_agentic_shepherd/src/render.rs", + "line": 68 + }, + { + "name": "render_outline", + "file": "crates/jp_attachment_agentic_shepherd/src/render.rs", + "line": 107 + }, + { + "name": "render_block_continuations", + "file": "crates/jp_attachment_agentic_shepherd/src/render.rs", + "line": 136 + }, + { + "name": "render_resolution", + "file": "crates/jp_attachment_agentic_shepherd/src/render.rs", + "line": 200 + }, + { + "name": "render_commit", + "file": "crates/jp_attachment_agentic_shepherd/src/render.rs", + "line": 220 + }, + { + "name": "fetch", + "file": "crates/jp_attachment_agentic_shepherd/src/lib.rs", + "line": 96 + }, + { + "name": "Formatter::render_terminal", + "file": "crates/jp_md/src/format.rs", + "line": 277 + }, + { + "name": "Formatter::render_code_line", + "file": "crates/jp_md/src/format.rs", + "line": 381 + }, + { + "name": "apply_line_background", + "file": "crates/jp_md/src/format.rs", + "line": 499 + }, + { + "name": "background_survives", + "file": "crates/jp_md/src/format.rs", + "line": 559 + }, + { + "name": "TerminalFormatter<'a,'w>::format_item", + "file": "crates/jp_md/src/render.rs", + "line": 346 + }, + { + "name": "TerminalFormatter<'a,'w>::format_code_block", + "file": "crates/jp_md/src/render.rs", + "line": 427 + }, + { + "name": "highlight_code_block", + "file": "crates/jp_md/src/render.rs", + "line": 976 + }, + { + "name": "restore", + "file": "crates/jp_md/src/references.rs", + "line": 18 + }, + { + "name": "container_source", + "file": "crates/jp_md/src/references.rs", + "line": 123 + }, + { + "name": "format_table", + "file": "crates/jp_md/src/table.rs", + "line": 118 + }, + { + "name": "extract_table", + "file": "crates/jp_md/src/table.rs", + "line": 295 + }, + { + "name": "render_cell_content", + "file": "crates/jp_md/src/table.rs", + "line": 329 + }, + { + "name": "break_offsets", + "file": "crates/jp_md/src/table.rs", + "line": 451 + }, + { + "name": "truncate_to_visual_width", + "file": "crates/jp_md/src/table.rs", + "line": 500 + }, + { + "name": "wrap_to_visual_width", + "file": "crates/jp_md/src/table.rs", + "line": 563 + }, + { + "name": "flush_word", + "file": "crates/jp_md/src/table.rs", + "line": 631 + }, + { + "name": "hard_break_into", + "file": "crates/jp_md/src/table.rs", + "line": 699 + }, + { + "name": "Buffer::flush_events", + "file": "crates/jp_md/src/buffer.rs", + "line": 311 + }, + { + "name": "Buffer::flush_list_events", + "file": "crates/jp_md/src/buffer.rs", + "line": 404 + }, + { + "name": "Buffer::handle_buffering_paragraph", + "file": "crates/jp_md/src/buffer.rs", + "line": 620 + }, + { + "name": "Buffer::next", + "file": "crates/jp_md/src/buffer.rs", + "line": 1261 + }, + { + "name": "render_list_segment", + "file": "crates/jp_md/src/buffer.rs", + "line": 1463 + }, + { + "name": "strip_lines_indent", + "file": "crates/jp_md/src/buffer.rs", + "line": 1502 + }, + { + "name": "renumber_first_marker", + "file": "crates/jp_md/src/buffer.rs", + "line": 1525 + }, + { + "name": "last_inline_ground_state", + "file": "crates/jp_md/src/buffer.rs", + "line": 1727 + }, + { + "name": "TerminalWriter<'w>::new", + "file": "crates/jp_md/src/writer.rs", + "line": 121 + }, + { + "name": "TerminalWriter<'w>::merge_escapes", + "file": "crates/jp_md/src/writer.rs", + "line": 185 + }, + { + "name": "TerminalWriter<'w>::wrap_break", + "file": "crates/jp_md/src/writer.rs", + "line": 245 + }, + { + "name": "TerminalWriter<'w>::write_visible", + "file": "crates/jp_md/src/writer.rs", + "line": 340 + }, + { + "name": "TerminalWriter<'w>::restore_attrs_after_prefix", + "file": "crates/jp_md/src/writer.rs", + "line": 414 + }, + { + "name": "TerminalWriter<'w>::write_raw", + "file": "crates/jp_md/src/writer.rs", + "line": 595 + }, + { + "name": "indent_to_column", + "file": "crates/jp_md/src/writer.rs", + "line": 685 + }, + { + "name": "leading_heading", + "file": "crates/jp_md/src/heading.rs", + "line": 15 + }, + { + "name": "GithubAttachment::get", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 125 + }, + { + "name": "parse_uri", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 175 + }, + { + "name": "fetch_pr_diff", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 307 + }, + { + "name": "fetch_all_changed_files", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 391 + }, + { + "name": "synthesize_diff_from_files", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 442 + }, + { + "name": "compile_excludes", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 555 + }, + { + "name": "filter_diff", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 577 + }, + { + "name": "render_diff_header", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 629 + }, + { + "name": "render_reviews", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 713 + }, + { + "name": "main", + "file": "crates/jp_process/src/bin/process_probe.rs", + "line": 34 + }, + { + "name": "repeat", + "file": "crates/jp_process/src/bin/process_probe.rs", + "line": 110 + }, + { + "name": "SystemProcessRunner::execute", + "file": "crates/jp_process/src/system.rs", + "line": 30 + }, + { + "name": "MockProcessRunner::drop", + "file": "crates/jp_process/src/mock.rs", + "line": 63 + }, + { + "name": "McpResources::get", + "file": "crates/jp_attachment_mcp_resources/src/lib.rs", + "line": 90 + }, + { + "name": "Context::resolve", + "file": "crates/jp_tool/src/access.rs", + "line": 636 + }, + { + "name": "normalize_lexical", + "file": "crates/jp_tool/src/access.rs", + "line": 693 + }, + { + "name": "canonicalize_workspace_target", + "file": "crates/jp_tool/src/access.rs", + "line": 719 + }, + { + "name": "AnswerType::deserialize", + "file": "crates/jp_tool/src/lib.rs", + "line": 406 + }, + { + "name": "validate_node", + "file": "crates/jp_tool/src/schema.rs", + "line": 57 + }, + { + "name": "validate_node_inner", + "file": "crates/jp_tool/src/schema.rs", + "line": 74 + }, + { + "name": "has_unconstrained_node", + "file": "crates/jp_tool/src/schema.rs", + "line": 256 + }, + { + "name": "coerce_object", + "file": "crates/jp_tool/src/definition.rs", + "line": 173 + }, + { + "name": "coerce_value", + "file": "crates/jp_tool/src/definition.rs", + "line": 192 + }, + { + "name": "apply_defaults_to", + "file": "crates/jp_tool/src/definition.rs", + "line": 229 + }, + { + "name": "validate_arguments_against", + "file": "crates/jp_tool/src/definition.rs", + "line": 273 + }, + { + "name": "ToolResult::from", + "file": "crates/jp_tool/src/content.rs", + "line": 472 + }, + { + "name": "Terminal::open", + "file": "crates/jp_pty/src/terminal.rs", + "line": 113 + }, + { + "name": "Terminal::resize", + "file": "crates/jp_pty/src/terminal.rs", + "line": 276 + }, + { + "name": "onlcr", + "file": "crates/jp_pty/src/terminal.rs", + "line": 525 + }, + { + "name": "ArgumentDecoding::apply", + "file": "crates/jp_llm/src/decoding.rs", + "line": 34 + }, + { + "name": "ArgumentDecoding::apply_value", + "file": "crates/jp_llm/src/decoding.rs", + "line": 51 + }, + { + "name": "ArgumentDecoders::insert", + "file": "crates/jp_llm/src/decoding.rs", + "line": 71 + }, + { + "name": "StreamError::from_http", + "file": "crates/jp_llm/src/error.rs", + "line": 351 + }, + { + "name": "extract_retry_from_text", + "file": "crates/jp_llm/src/error.rs", + "line": 792 + }, + { + "name": "extract_retry_after", + "file": "crates/jp_llm/src/error.rs", + "line": 863 + }, + { + "name": "EventChain::ingest_normal", + "file": "crates/jp_llm/src/stream/chain.rs", + "line": 93 + }, + { + "name": "EventChain::ingest_merging", + "file": "crates/jp_llm/src/stream/chain.rs", + "line": 129 + }, + { + "name": "EventChain::trim_buffer", + "file": "crates/jp_llm/src/stream/chain.rs", + "line": 183 + }, + { + "name": "EventChain::attempt_merge", + "file": "crates/jp_llm/src/stream/chain.rs", + "line": 225 + }, + { + "name": "reconstruct_text", + "file": "crates/jp_llm/src/stream/chain.rs", + "line": 317 + }, + { + "name": "get_provider", + "file": "crates/jp_llm/src/provider.rs", + "line": 89 + }, + { + "name": "output_schema_is_open", + "file": "crates/jp_llm/src/provider.rs", + "line": 180 + }, + { + "name": "number_ids", + "file": "crates/jp_llm/src/provider.rs", + "line": 305 + }, + { + "name": "map_candidate", + "file": "crates/jp_llm/src/provider/google.rs", + "line": 764 + }, + { + "name": "process_schema", + "file": "crates/jp_llm/src/provider/google.rs", + "line": 947 + }, + { + "name": "StreamError::from", + "file": "crates/jp_llm/src/provider/google.rs", + "line": 1257 + }, + { + "name": "prepare_soft_force_retry_request", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 310 + }, + { + "name": "MultiProviderMetadata::from_details", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 416 + }, + { + "name": "Map::from", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 481 + }, + { + "name": "map_event", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 531 + }, + { + "name": "prepare_forced_tool_fallback", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 692 + }, + { + "name": "create_request", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 771 + }, + { + "name": "RequestMessages::try_from", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 1055 + }, + { + "name": "StreamError::from", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 1256 + }, + { + "name": "fetch_public_catalog", + "file": "crates/jp_llm/src/provider/cerebras.rs", + "line": 282 + }, + { + "name": "create_request", + "file": "crates/jp_llm/src/provider/cerebras.rs", + "line": 477 + }, + { + "name": "process_schema", + "file": "crates/jp_llm/src/provider/cerebras.rs", + "line": 653 + }, + { + "name": "handle_sse_event_sync", + "file": "crates/jp_llm/src/provider/cerebras.rs", + "line": 858 + }, + { + "name": "map_event", + "file": "crates/jp_llm/src/provider/ollama.rs", + "line": 149 + }, + { + "name": "create_request", + "file": "crates/jp_llm/src/provider/ollama.rs", + "line": 258 + }, + { + "name": "MockProvider::with_chunked_message", + "file": "crates/jp_llm/src/provider/mock.rs", + "line": 159 + }, + { + "name": "MockProvider::chat_completion_stream", + "file": "crates/jp_llm/src/provider/mock.rs", + "line": 242 + }, + { + "name": "switch_persists", + "file": "crates/jp_llm/src/provider/anthropic/resolve.rs", + "line": 586 + }, + { + "name": "read_output", + "file": "crates/jp_llm/src/provider/anthropic/acp.rs", + "line": 503 + }, + { + "name": "State::sdk", + "file": "crates/jp_llm/src/provider/anthropic/acp/protocol.rs", + "line": 423 + }, + { + "name": "State::stream_event", + "file": "crates/jp_llm/src/provider/anthropic/acp/protocol.rs", + "line": 623 + }, + { + "name": "stream", + "file": "crates/jp_llm/src/provider/anthropic/acp/transport.rs", + "line": 46 + }, + { + "name": "drive", + "file": "crates/jp_llm/src/provider/anthropic/acp/transport.rs", + "line": 372 + }, + { + "name": "PreparedRequest::new", + "file": "crates/jp_llm/src/provider/anthropic/acp/transcript.rs", + "line": 44 + }, + { + "name": "environment", + "file": "crates/jp_llm/src/provider/anthropic/acp/options.rs", + "line": 160 + }, + { + "name": "tap", + "file": "crates/jp_llm/src/provider/anthropic/acp/cassette.rs", + "line": 155 + }, + { + "name": "recorder", + "file": "crates/jp_llm/src/provider/anthropic/acp/cassette.rs", + "line": 167 + }, + { + "name": "serve", + "file": "crates/jp_llm/src/provider/anthropic/acp/cassette.rs", + "line": 308 + }, + { + "name": "command", + "file": "crates/jp_llm/src/provider/anthropic/acp/process.rs", + "line": 46 + }, + { + "name": "handle_sse_event_sync", + "file": "crates/jp_llm/src/provider/openai_compat.rs", + "line": 411 + }, + { + "name": "drain_extractor", + "file": "crates/jp_llm/src/provider/openai_compat.rs", + "line": 659 + }, + { + "name": "Anthropic::mcp_tool_metadata", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 422 + }, + { + "name": "Anthropic::chat_completion_stream", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 516 + }, + { + "name": "force_tool_retry", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 1087 + }, + { + "name": "soft_force_retry", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 1169 + }, + { + "name": "resolve_cache_control", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 1712 + }, + { + "name": "create_request", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 1744 + }, + { + "name": "map_event", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 2646 + }, + { + "name": "transform_schema", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 2704 + }, + { + "name": "map_content_start", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 3121 + }, + { + "name": "map_content_delta", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 3162 + }, + { + "name": "StreamError::from", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 3207 + }, + { + "name": "walk_chain", + "file": "crates/jp_llm/src/provider/openai/resolve.rs", + "line": 664 + }, + { + "name": "DeviceAuth::poll_interval", + "file": "crates/jp_llm/src/provider/openai/oauth.rs", + "line": 303 + }, + { + "name": "Openai::clients", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 422 + }, + { + "name": "Openai::redeem_reset_credit", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 489 + }, + { + "name": "Openai::model_details", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 582 + }, + { + "name": "Openai::models", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 618 + }, + { + "name": "synthesize_non_streaming_output_item_events", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 1080 + }, + { + "name": "create_request", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 1381 + }, + { + "name": "map_error", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 2685 + }, + { + "name": "map_event", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 2817 + }, + { + "name": "classify_stream_error", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3030 + }, + { + "name": "ensure_flattened", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3152 + }, + { + "name": "flatten_all_of", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3185 + }, + { + "name": "fits_strict_subset", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3201 + }, + { + "name": "flatten_node", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3207 + }, + { + "name": "process_strict", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3333 + }, + { + "name": "parameters_with_decoding", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3514 + }, + { + "name": "generate", + "file": "crates/jp_llm/src/title.rs", + "line": 131 + }, + { + "name": "title_instructions", + "file": "crates/jp_llm/src/title.rs", + "line": 261 + }, + { + "name": "structured_data", + "file": "crates/jp_llm/src/event_builder.rs", + "line": 59 + }, + { + "name": "EventBuilder::handle_part", + "file": "crates/jp_llm/src/event_builder.rs", + "line": 148 + }, + { + "name": "collect_with_retry", + "file": "crates/jp_llm/src/retry.rs", + "line": 79 + }, + { + "name": "retry_delay", + "file": "crates/jp_llm/src/retry.rs", + "line": 181 + }, + { + "name": "exponential_backoff", + "file": "crates/jp_llm/src/retry.rs", + "line": 216 + }, + { + "name": "Id::is_valid", + "file": "crates/jp_id/src/lib.rs", + "line": 31 + }, + { + "name": "TaskHandler::sync", + "file": "crates/jp_task/src/handler.rs", + "line": 61 + }, + { + "name": "PullsHandler::fetch_review_comments", + "file": "crates/jp_github/src/handlers.rs", + "line": 342 + }, + { + "name": "BearNotes::query_to_uri", + "file": "crates/jp_attachment_bear_note/src/lib.rs", + "line": 26 + }, + { + "name": "BearNotes::get", + "file": "crates/jp_attachment_bear_note/src/lib.rs", + "line": 154 + } + ] +} \ No newline at end of file diff --git a/.config/rustqual/baseline.json b/.config/rustqual/baseline.json new file mode 100644 index 000000000..0cc3efa14 --- /dev/null +++ b/.config/rustqual/baseline.json @@ -0,0 +1,4344 @@ +{ + "version": 2, + "quality_score": 0.7028860816848206, + "iosp_score": 0.9137309847878302, + "violations": 862, + "total": 13804, + "complexity_warnings": 163, + "magic_number_warnings": 238, + "nesting_depth_warnings": 27, + "function_length_warnings": 428, + "unsafe_warnings": 74, + "error_handling_warnings": 194, + "duplicate_groups": 0, + "dead_code_warnings": 0, + "dead_type_warnings": 0, + "fragment_groups": 0, + "boilerplate_warnings": 286, + "srp_struct_warnings": 46, + "srp_module_warnings": 208, + "wildcard_import_warnings": 0, + "sdp_violations": 0, + "coupling_warnings": 0, + "coupling_cycles": 0, + "tq_no_assertion_warnings": 0, + "tq_no_sut_warnings": 20, + "tq_untested_warnings": 95, + "tq_uncovered_warnings": 0, + "tq_untested_logic_warnings": 0, + "structural_srp_warnings": 47, + "structural_coupling_warnings": 8, + "total_findings": 2808, + "violation_details": [ + { + "name": "ConversationStream::config_unsets", + "file": "crates/jp_conversation/src/stream.rs", + "line": 247 + }, + { + "name": "ConversationStream::trim_chat_request", + "file": "crates/jp_conversation/src/stream.rs", + "line": 281 + }, + { + "name": "ConversationStream::current_turn_mut", + "file": "crates/jp_conversation/src/stream.rs", + "line": 583 + }, + { + "name": "ConversationStream::pop_while", + "file": "crates/jp_conversation/src/stream.rs", + "line": 816 + }, + { + "name": "ConversationStream::remove_orphaned_inquiry_responses", + "file": "crates/jp_conversation/src/stream.rs", + "line": 995 + }, + { + "name": "ConversationStream::remove_orphaned_inquiry_requests", + "file": "crates/jp_conversation/src/stream.rs", + "line": 1037 + }, + { + "name": "ConversationStream::normalize_turn_starts", + "file": "crates/jp_conversation/src/stream.rs", + "line": 1084 + }, + { + "name": "ConversationStream::sanitize_orphaned_tool_calls", + "file": "crates/jp_conversation/src/stream.rs", + "line": 1171 + }, + { + "name": "ConversationStream::from_legacy_events", + "file": "crates/jp_conversation/src/stream.rs", + "line": 1580 + }, + { + "name": "strip_schema", + "file": "crates/jp_conversation/src/compat.rs", + "line": 295 + }, + { + "name": "strip_schema_type", + "file": "crates/jp_conversation/src/compat.rs", + "line": 314 + }, + { + "name": "strip_struct", + "file": "crates/jp_conversation/src/compat.rs", + "line": 487 + }, + { + "name": "Documents::try_to_xml", + "file": "crates/jp_conversation/src/thread.rs", + "line": 236 + }, + { + "name": "IterTurns<'a>::new", + "file": "crates/jp_conversation/src/stream/turn_iter.rs", + "line": 66 + }, + { + "name": "ConversationStream::extend", + "file": "crates/jp_conversation/src/stream/iter.rs", + "line": 44 + }, + { + "name": "deserialize", + "file": "crates/jp_conversation/src/stream/config_delta.rs", + "line": 200 + }, + { + "name": "fold", + "file": "crates/jp_conversation/src/stream/config_delta.rs", + "line": 249 + }, + { + "name": "apply", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 162 + }, + { + "name": "affected_items", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 295 + }, + { + "name": "apply_mechanical", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 389 + }, + { + "name": "collect_turn_origins", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 444 + }, + { + "name": "assign_turn_indices", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 476 + }, + { + "name": "strip_tool_request", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 630 + }, + { + "name": "build_tool_calls", + "file": "crates/jp_conversation/src/stream/projection.rs", + "line": 685 + }, + { + "name": "EventPayload::deserialize", + "file": "crates/jp_conversation/src/stream/entry.rs", + "line": 152 + }, + { + "name": "StoredEvent::deserialize", + "file": "crates/jp_conversation/src/stream/entry.rs", + "line": 305 + }, + { + "name": "EventId::random", + "file": "crates/jp_conversation/src/event_id.rs", + "line": 81 + }, + { + "name": "decode_event_value", + "file": "crates/jp_conversation/src/storage.rs", + "line": 99 + }, + { + "name": "decode_string", + "file": "crates/jp_conversation/src/storage.rs", + "line": 137 + }, + { + "name": "decode_map_strings", + "file": "crates/jp_conversation/src/storage.rs", + "line": 157 + }, + { + "name": "ToolCallResponse::deserialize", + "file": "crates/jp_conversation/src/event/tool_call.rs", + "line": 98 + }, + { + "name": "TerminalCapability::detect", + "file": "crates/jp_printer/src/region.rs", + "line": 135 + }, + { + "name": "WindowBuffer::push", + "file": "crates/jp_printer/src/region.rs", + "line": 538 + }, + { + "name": "RegionEntry::rows", + "file": "crates/jp_printer/src/region.rs", + "line": 753 + }, + { + "name": "RegionStack::release", + "file": "crates/jp_printer/src/region.rs", + "line": 978 + }, + { + "name": "RegionStack::resume", + "file": "crates/jp_printer/src/region.rs", + "line": 1038 + }, + { + "name": "RegionStack::erase", + "file": "crates/jp_printer/src/region.rs", + "line": 1061 + }, + { + "name": "RegionStack::redraw", + "file": "crates/jp_printer/src/region.rs", + "line": 1087 + }, + { + "name": "RegionStack::redraw_if_top", + "file": "crates/jp_printer/src/region.rs", + "line": 1166 + }, + { + "name": "filter_line", + "file": "crates/jp_printer/src/region.rs", + "line": 1210 + }, + { + "name": "visible_sgr", + "file": "crates/jp_printer/src/region.rs", + "line": 1245 + }, + { + "name": "truncate_row", + "file": "crates/jp_printer/src/region.rs", + "line": 1330 + }, + { + "name": "main", + "file": "crates/jp_printer/src/bin/region_probe.rs", + "line": 38 + }, + { + "name": "Printer::status_region", + "file": "crates/jp_printer/src/printer.rs", + "line": 286 + }, + { + "name": "Printer::error_println", + "file": "crates/jp_printer/src/printer.rs", + "line": 472 + }, + { + "name": "Printer::send_error", + "file": "crates/jp_printer/src/printer.rs", + "line": 491 + }, + { + "name": "Printer::track_pending", + "file": "crates/jp_printer/src/printer.rs", + "line": 736 + }, + { + "name": "Printer::send", + "file": "crates/jp_printer/src/printer.rs", + "line": 799 + }, + { + "name": "Worker::run", + "file": "crates/jp_printer/src/printer.rs", + "line": 1171 + }, + { + "name": "Worker::process_task_instant", + "file": "crates/jp_printer/src/printer.rs", + "line": 1292 + }, + { + "name": "Worker::process_task", + "file": "crates/jp_printer/src/printer.rs", + "line": 1341 + }, + { + "name": "Worker::write_task", + "file": "crates/jp_printer/src/printer.rs", + "line": 1357 + }, + { + "name": "Sink::new", + "file": "crates/jp_printer/src/printer.rs", + "line": 1446 + }, + { + "name": "DelayControl::effective_delay", + "file": "crates/jp_printer/src/printer.rs", + "line": 1758 + }, + { + "name": "Content::fmt", + "file": "crates/jp_attachment_internal/src/selector.rs", + "line": 47 + }, + { + "name": "Selector::from_str", + "file": "crates/jp_attachment_internal/src/selector.rs", + "line": 171 + }, + { + "name": "Entry::to_url", + "file": "crates/jp_attachment_internal/src/lib.rs", + "line": 89 + }, + { + "name": "fetch_conversation", + "file": "crates/jp_attachment_internal/src/lib.rs", + "line": 201 + }, + { + "name": "uri_to_entry", + "file": "crates/jp_attachment_internal/src/lib.rs", + "line": 301 + }, + { + "name": "render_stream", + "file": "crates/jp_attachment_internal/src/lib.rs", + "line": 331 + }, + { + "name": "AnsiState::update", + "file": "crates/jp_term/src/ansi.rs", + "line": 114 + }, + { + "name": "AnsiState::restore_sequence", + "file": "crates/jp_term/src/ansi.rs", + "line": 187 + }, + { + "name": "visible_text", + "file": "crates/jp_term/src/ansi.rs", + "line": 343 + }, + { + "name": "advance_column", + "file": "crates/jp_term/src/ansi.rs", + "line": 370 + }, + { + "name": "list", + "file": "crates/jp_term/src/table.rs", + "line": 120 + }, + { + "name": "details", + "file": "crates/jp_term/src/table.rs", + "line": 230 + }, + { + "name": "detail_pretty_row", + "file": "crates/jp_term/src/table.rs", + "line": 269 + }, + { + "name": "details_markdown", + "file": "crates/jp_term/src/table.rs", + "line": 292 + }, + { + "name": "detail_markdown_rows", + "file": "crates/jp_term/src/table.rs", + "line": 323 + }, + { + "name": "md_row", + "file": "crates/jp_term/src/table.rs", + "line": 349 + }, + { + "name": "truncate_to_width", + "file": "crates/jp_term/src/width.rs", + "line": 65 + }, + { + "name": "wrap_ranges", + "file": "crates/jp_term/src/width.rs", + "line": 132 + }, + { + "name": "Storage::persist_conversation", + "file": "crates/jp_storage/src/lib.rs", + "line": 208 + }, + { + "name": "Storage::sync_projection", + "file": "crates/jp_storage/src/lib.rs", + "line": 448 + }, + { + "name": "adopt_partition", + "file": "crates/jp_storage/src/lib.rs", + "line": 818 + }, + { + "name": "adopt_conversation_dir", + "file": "crates/jp_storage/src/lib.rs", + "line": 839 + }, + { + "name": "import_external_copy", + "file": "crates/jp_storage/src/lib.rs", + "line": 889 + }, + { + "name": "import_conversation_dir", + "file": "crates/jp_storage/src/lib.rs", + "line": 913 + }, + { + "name": "copy_dir_all", + "file": "crates/jp_storage/src/lib.rs", + "line": 980 + }, + { + "name": "FsStorageBackend::sanitize", + "file": "crates/jp_storage/src/backend/fs.rs", + "line": 284 + }, + { + "name": "deep_merge_values", + "file": "crates/jp_storage/src/value.rs", + "line": 36 + }, + { + "name": "Storage::load_conversation_stream", + "file": "crates/jp_storage/src/load.rs", + "line": 179 + }, + { + "name": "Storage::load_conversation_metadata_batch", + "file": "crates/jp_storage/src/load.rs", + "line": 289 + }, + { + "name": "Storage::validate_conversations", + "file": "crates/jp_storage/src/validate.rs", + "line": 116 + }, + { + "name": "collapse_blank_lines", + "file": "crates/jp_attachment_http_content/src/lib.rs", + "line": 180 + }, + { + "name": "Registry::from", + "file": "crates/jp_plugin/src/registry.rs", + "line": 46 + }, + { + "name": "PluginKind::binaries", + "file": "crates/jp_plugin/src/registry.rs", + "line": 169 + }, + { + "name": "ProtocolLogLayer::on_event", + "file": "crates/plugins/command/serve-web/src/log_layer.rs", + "line": 94 + }, + { + "name": "PluginClient::start_conversation", + "file": "crates/plugins/command/serve-web/src/client.rs", + "line": 201 + }, + { + "name": "render_events", + "file": "crates/plugins/command/serve-web/src/render.rs", + "line": 158 + }, + { + "name": "run_server", + "file": "crates/plugins/command/serve-web/src/lib.rs", + "line": 95 + }, + { + "name": "serve", + "file": "crates/plugins/command/serve-web/src/routes.rs", + "line": 127 + }, + { + "name": "TurnForm::parse", + "file": "crates/plugins/command/serve-web/src/routes.rs", + "line": 366 + }, + { + "name": "start_turn", + "file": "crates/plugins/command/serve-web/src/routes.rs", + "line": 400 + }, + { + "name": "NewConversationForm::parse", + "file": "crates/plugins/command/serve-web/src/routes.rs", + "line": 662 + }, + { + "name": "start_conversation", + "file": "crates/plugins/command/serve-web/src/routes.rs", + "line": 699 + }, + { + "name": "SystemLauncher::launch", + "file": "crates/plugins/command/gui/src/launch.rs", + "line": 41 + }, + { + "name": "handle_command", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 310 + }, + { + "name": "compose_missing", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 411 + }, + { + "name": "with_show_alias", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 803 + }, + { + "name": "migrate", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 937 + }, + { + "name": "execute", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 1170 + }, + { + "name": "vocabulary_listing", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 1450 + }, + { + "name": "row", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 1624 + }, + { + "name": "read_message", + "file": "crates/plugins/command/ticket/src/lib.rs", + "line": 1684 + }, + { + "name": "project_turns", + "file": "crates/jp_ffi/src/display.rs", + "line": 83 + }, + { + "name": "PartialRequestConfig::assign", + "file": "crates/jp_config/src/assistant/request.rs", + "line": 157 + }, + { + "name": "MaxResponseBytes::from", + "file": "crates/jp_config/src/assistant/request.rs", + "line": 332 + }, + { + "name": "PartialInstructionsConfig::assign", + "file": "crates/jp_config/src/assistant/instructions.rs", + "line": 57 + }, + { + "name": "InstructionsConfig::to_section", + "file": "crates/jp_config/src/assistant/instructions.rs", + "line": 114 + }, + { + "name": "PartialExampleConfig::assign", + "file": "crates/jp_config/src/assistant/instructions.rs", + "line": 180 + }, + { + "name": "PartialContrastConfig::assign", + "file": "crates/jp_config/src/assistant/instructions.rs", + "line": 231 + }, + { + "name": "PartialSectionConfigOrString::assign", + "file": "crates/jp_config/src/assistant/sections.rs", + "line": 41 + }, + { + "name": "SectionConfig::render", + "file": "crates/jp_config/src/assistant/sections.rs", + "line": 143 + }, + { + "name": "PartialSectionConfig::assign", + "file": "crates/jp_config/src/assistant/sections.rs", + "line": 166 + }, + { + "name": "wrap_cdata_if_needed", + "file": "crates/jp_config/src/assistant/sections.rs", + "line": 223 + }, + { + "name": "PartialExtendingRelativePath::assign", + "file": "crates/jp_config/src/types/extending_path.rs", + "line": 93 + }, + { + "name": "PartialExtendingRelativePath::delta", + "file": "crates/jp_config/src/types/extending_path.rs", + "line": 107 + }, + { + "name": "PartialRelativePathWithStrategy::assign", + "file": "crates/jp_config/src/types/extending_path.rs", + "line": 138 + }, + { + "name": "PartialCommandConfigOrString::assign", + "file": "crates/jp_config/src/types/command.rs", + "line": 76 + }, + { + "name": "PartialCommandConfigOrString::from_str", + "file": "crates/jp_config/src/types/command.rs", + "line": 141 + }, + { + "name": "CommandConfigOrString::command", + "file": "crates/jp_config/src/types/command.rs", + "line": 181 + }, + { + "name": "PartialCommandConfig::assign", + "file": "crates/jp_config/src/types/command.rs", + "line": 300 + }, + { + "name": "split_command_words", + "file": "crates/jp_config/src/types/command.rs", + "line": 347 + }, + { + "name": "mask_template_spans", + "file": "crates/jp_config/src/types/command.rs", + "line": 370 + }, + { + "name": "restore_spans", + "file": "crates/jp_config/src/types/command.rs", + "line": 462 + }, + { + "name": "PolicySpec

::deserialize", + "file": "crates/jp_config/src/types/policy_spec.rs", + "line": 103 + }, + { + "name": "PolicySpec

::from_str", + "file": "crates/jp_config/src/types/policy_spec.rs", + "line": 161 + }, + { + "name": "PartialMergeableVec::delta", + "file": "crates/jp_config/src/types/vec.rs", + "line": 273 + }, + { + "name": "PartialMergeableString::assign", + "file": "crates/jp_config/src/types/string.rs", + "line": 82 + }, + { + "name": "PartialMergeableString::delta", + "file": "crates/jp_config/src/types/string.rs", + "line": 110 + }, + { + "name": "PartialMergedString::assign", + "file": "crates/jp_config/src/types/string.rs", + "line": 240 + }, + { + "name": "PartialMergeableMap::delta", + "file": "crates/jp_config/src/types/map.rs", + "line": 226 + }, + { + "name": "merge_values", + "file": "crates/jp_config/src/types/json_value.rs", + "line": 97 + }, + { + "name": "merge_as_map", + "file": "crates/jp_config/src/types/json_value.rs", + "line": 142 + }, + { + "name": "merge_as_vec", + "file": "crates/jp_config/src/types/json_value.rs", + "line": 173 + }, + { + "name": "strip_annotations", + "file": "crates/jp_config/src/types/json_value.rs", + "line": 238 + }, + { + "name": "JsonValue::assign", + "file": "crates/jp_config/src/types/json_value.rs", + "line": 280 + }, + { + "name": "render_available", + "file": "crates/jp_config/src/types/api_key_env.rs", + "line": 63 + }, + { + "name": "PartialInterruptConfig::assign", + "file": "crates/jp_config/src/interrupt.rs", + "line": 319 + }, + { + "name": "PartialStreamingInterruptConfig::assign", + "file": "crates/jp_config/src/interrupt.rs", + "line": 335 + }, + { + "name": "PartialToolInterruptConfig::assign", + "file": "crates/jp_config/src/interrupt.rs", + "line": 348 + }, + { + "name": "PartialConversationConfig::assign", + "file": "crates/jp_config/src/conversation.rs", + "line": 120 + }, + { + "name": "PartialInquiryConfig::assign", + "file": "crates/jp_config/src/conversation.rs", + "line": 241 + }, + { + "name": "collect_config_segments", + "file": "crates/jp_config/src/util.rs", + "line": 207 + }, + { + "name": "load_partial_at_path_with_max_depth", + "file": "crates/jp_config/src/util.rs", + "line": 293 + }, + { + "name": "PartialAssistantConfig::assign", + "file": "crates/jp_config/src/assistant.rs", + "line": 98 + }, + { + "name": "PartialCommandPluginConfig::assign", + "file": "crates/jp_config/src/plugins/command.rs", + "line": 86 + }, + { + "name": "AuthEntry::validate_chain", + "file": "crates/jp_config/src/providers/llm.rs", + "line": 166 + }, + { + "name": "PartialLlmProviderConfig::assign", + "file": "crates/jp_config/src/providers/llm.rs", + "line": 295 + }, + { + "name": "PartialGoogleConfig::assign", + "file": "crates/jp_config/src/providers/llm/google.rs", + "line": 75 + }, + { + "name": "PartialOpenrouterConfig::assign", + "file": "crates/jp_config/src/providers/llm/openrouter.rs", + "line": 84 + }, + { + "name": "PartialVllmConfig::assign", + "file": "crates/jp_config/src/providers/llm/vllm.rs", + "line": 87 + }, + { + "name": "PartialCerebrasConfig::assign", + "file": "crates/jp_config/src/providers/llm/cerebras.rs", + "line": 99 + }, + { + "name": "PartialOllamaConfig::assign", + "file": "crates/jp_config/src/providers/llm/ollama.rs", + "line": 25 + }, + { + "name": "PartialLlamacppConfig::assign", + "file": "crates/jp_config/src/providers/llm/llamacpp.rs", + "line": 25 + }, + { + "name": "PartialDeepseekConfig::assign", + "file": "crates/jp_config/src/providers/llm/deepseek.rs", + "line": 75 + }, + { + "name": "PartialAnthropicConfig::assign", + "file": "crates/jp_config/src/providers/llm/anthropic.rs", + "line": 157 + }, + { + "name": "PartialOpenaiConfig::assign", + "file": "crates/jp_config/src/providers/llm/openai.rs", + "line": 122 + }, + { + "name": "PartialStdioConfig::assign", + "file": "crates/jp_config/src/providers/mcp.rs", + "line": 168 + }, + { + "name": "PartialChecksumConfig::assign", + "file": "crates/jp_config/src/providers/mcp.rs", + "line": 225 + }, + { + "name": "PartialAppConfig::assign", + "file": "crates/jp_config/src/lib.rs", + "line": 235 + }, + { + "name": "AppConfig::fields", + "file": "crates/jp_config/src/lib.rs", + "line": 501 + }, + { + "name": "AppConfig::addressable", + "file": "crates/jp_config/src/lib.rs", + "line": 542 + }, + { + "name": "PartialStyleConfig::assign", + "file": "crates/jp_config/src/style.rs", + "line": 100 + }, + { + "name": "PartialPluginsConfig::assign", + "file": "crates/jp_config/src/plugins.rs", + "line": 44 + }, + { + "name": "PartialCodeConfig::assign", + "file": "crates/jp_config/src/style/code.rs", + "line": 62 + }, + { + "name": "PartialLockWaitConfig::assign", + "file": "crates/jp_config/src/style/lock_wait.rs", + "line": 45 + }, + { + "name": "PartialTypewriterConfig::assign", + "file": "crates/jp_config/src/style/typewriter.rs", + "line": 60 + }, + { + "name": "DelayDuration::deserialize", + "file": "crates/jp_config/src/style/typewriter.rs", + "line": 149 + }, + { + "name": "PartialMcpStartupConfig::assign", + "file": "crates/jp_config/src/style/mcp_startup.rs", + "line": 72 + }, + { + "name": "PartialInlineCodeConfig::assign", + "file": "crates/jp_config/src/style/inline_code.rs", + "line": 31 + }, + { + "name": "PartialToolCallConfig::assign", + "file": "crates/jp_config/src/style/tool_call.rs", + "line": 123 + }, + { + "name": "PartialToolProgressConfig::assign", + "file": "crates/jp_config/src/style/tool_call.rs", + "line": 137 + }, + { + "name": "PartialPreparingConfig::assign", + "file": "crates/jp_config/src/style/tool_call.rs", + "line": 152 + }, + { + "name": "PartialProgressConfig::assign", + "file": "crates/jp_config/src/style/streaming.rs", + "line": 58 + }, + { + "name": "PartialStreamingConfig::assign", + "file": "crates/jp_config/src/style/streaming.rs", + "line": 104 + }, + { + "name": "PartialMarkdownConfig::assign", + "file": "crates/jp_config/src/style/markdown.rs", + "line": 103 + }, + { + "name": "PartialReasoningConfig::assign", + "file": "crates/jp_config/src/style/reasoning.rs", + "line": 75 + }, + { + "name": "PartialUserConfig::assign", + "file": "crates/jp_config/src/user.rs", + "line": 32 + }, + { + "name": "PartialEditorConfig::assign", + "file": "crates/jp_config/src/editor.rs", + "line": 116 + }, + { + "name": "PartialInlineEditorConfig::assign", + "file": "crates/jp_config/src/editor.rs", + "line": 172 + }, + { + "name": "PartialModelIdOrAliasConfig::assign", + "file": "crates/jp_config/src/model/id.rs", + "line": 44 + }, + { + "name": "PartialModelIdOrAliasConfig::delta", + "file": "crates/jp_config/src/model/id.rs", + "line": 63 + }, + { + "name": "PartialModelIdOrAliasConfig::finalize_in_place", + "file": "crates/jp_config/src/model/id.rs", + "line": 235 + }, + { + "name": "resolve_alias_chain", + "file": "crates/jp_config/src/model/id.rs", + "line": 297 + }, + { + "name": "resolve_partial_alias_chain", + "file": "crates/jp_config/src/model/id.rs", + "line": 324 + }, + { + "name": "PartialModelIdConfig::assign", + "file": "crates/jp_config/src/model/id.rs", + "line": 364 + }, + { + "name": "deserialize", + "file": "crates/jp_config/src/model/id/alias.rs", + "line": 20 + }, + { + "name": "PartialParametersConfig::assign", + "file": "crates/jp_config/src/model/parameters.rs", + "line": 215 + }, + { + "name": "PartialReasoningConfig::assign", + "file": "crates/jp_config/src/model/parameters.rs", + "line": 388 + }, + { + "name": "PartialCustomReasoningConfig::assign", + "file": "crates/jp_config/src/model/parameters.rs", + "line": 467 + }, + { + "name": "ConfigFile::merge_delta", + "file": "crates/jp_config/src/fs.rs", + "line": 155 + }, + { + "name": "deep_merge_toml", + "file": "crates/jp_config/src/fs.rs", + "line": 203 + }, + { + "name": "PartialTemplateConfig::assign", + "file": "crates/jp_config/src/template.rs", + "line": 29 + }, + { + "name": "KvAssignment::assign_to_entry", + "file": "crates/jp_config/src/assignment.rs", + "line": 293 + }, + { + "name": "KvAssignment::assign_to_mergeable_entry", + "file": "crates/jp_config/src/assignment.rs", + "line": 398 + }, + { + "name": "KvAssignment::try_from_env", + "file": "crates/jp_config/src/assignment.rs", + "line": 452 + }, + { + "name": "KvAssignment::try_merge_object", + "file": "crates/jp_config/src/assignment.rs", + "line": 642 + }, + { + "name": "KvAssignment::try_some_mergeable_vec", + "file": "crates/jp_config/src/assignment.rs", + "line": 1163 + }, + { + "name": "KvAssignment::try_vec_of_nested", + "file": "crates/jp_config/src/assignment.rs", + "line": 1231 + }, + { + "name": "flatten_recursive", + "file": "crates/jp_config/src/assignment.rs", + "line": 1338 + }, + { + "name": "missing_key", + "file": "crates/jp_config/src/assignment.rs", + "line": 1600 + }, + { + "name": "PartialProviderConfig::assign", + "file": "crates/jp_config/src/providers.rs", + "line": 60 + }, + { + "name": "PartialModelConfig::assign", + "file": "crates/jp_config/src/model.rs", + "line": 43 + }, + { + "name": "PartialGenerateConfig::assign", + "file": "crates/jp_config/src/conversation/title/generate.rs", + "line": 40 + }, + { + "name": "PartialToolsConfig::assign", + "file": "crates/jp_config/src/conversation/tool.rs", + "line": 58 + }, + { + "name": "PartialToolsDefaultsConfig::assign", + "file": "crates/jp_config/src/conversation/tool.rs", + "line": 377 + }, + { + "name": "PartialToolConfig::assign", + "file": "crates/jp_config/src/conversation/tool.rs", + "line": 639 + }, + { + "name": "PartialToolParameterConfig::assign", + "file": "crates/jp_config/src/conversation/tool.rs", + "line": 882 + }, + { + "name": "PartialEnableConfig::assign", + "file": "crates/jp_config/src/conversation/tool.rs", + "line": 1897 + }, + { + "name": "PartialFanOutConfig::assign", + "file": "crates/jp_config/src/conversation/tool.rs", + "line": 2117 + }, + { + "name": "PartialTitleConfig::assign", + "file": "crates/jp_config/src/conversation/title.rs", + "line": 40 + }, + { + "name": "LabelConfig::run", + "file": "crates/jp_config/src/conversation/label.rs", + "line": 124 + }, + { + "name": "PartialLabelConfig::assign", + "file": "crates/jp_config/src/conversation/label.rs", + "line": 302 + }, + { + "name": "PartialLabelObject::assign", + "file": "crates/jp_config/src/conversation/label.rs", + "line": 391 + }, + { + "name": "PartialLabelValue::assign", + "file": "crates/jp_config/src/conversation/label.rs", + "line": 441 + }, + { + "name": "PartialLabelCommand::assign", + "file": "crates/jp_config/src/conversation/label.rs", + "line": 483 + }, + { + "name": "PartialApplyOn::assign", + "file": "crates/jp_config/src/conversation/label.rs", + "line": 511 + }, + { + "name": "PartialCompactionConfig::assign", + "file": "crates/jp_config/src/conversation/compaction.rs", + "line": 76 + }, + { + "name": "PartialCompactionConfig::delta", + "file": "crates/jp_config/src/conversation/compaction.rs", + "line": 88 + }, + { + "name": "PartialCompactionRuleConfig::assign", + "file": "crates/jp_config/src/conversation/compaction.rs", + "line": 291 + }, + { + "name": "PartialSummaryConfig::assign", + "file": "crates/jp_config/src/conversation/compaction.rs", + "line": 377 + }, + { + "name": "PartialAccessConfig::assign", + "file": "crates/jp_config/src/conversation/tool/access.rs", + "line": 107 + }, + { + "name": "PartialFsRuleConfig::assign", + "file": "crates/jp_config/src/conversation/tool/access.rs", + "line": 208 + }, + { + "name": "PartialEnvRuleConfig::assign", + "file": "crates/jp_config/src/conversation/tool/access.rs", + "line": 286 + }, + { + "name": "PartialDisplayStyleConfig::assign", + "file": "crates/jp_config/src/conversation/tool/style.rs", + "line": 153 + }, + { + "name": "PartialErrorStyleConfig::assign", + "file": "crates/jp_config/src/conversation/tool/style.rs", + "line": 274 + }, + { + "name": "InlineResults::deserialize", + "file": "crates/jp_config/src/conversation/tool/style.rs", + "line": 370 + }, + { + "name": "PartialAttachmentConfig::assign", + "file": "crates/jp_config/src/conversation/attachment.rs", + "line": 31 + }, + { + "name": "PartialAttachmentObjectConfig::assign", + "file": "crates/jp_config/src/conversation/attachment.rs", + "line": 127 + }, + { + "name": "Workspace::resolvable_history", + "file": "crates/jp_workspace/src/session_mapping.rs", + "line": 132 + }, + { + "name": "Workspace::cleanup_stale_files", + "file": "crates/jp_workspace/src/session_mapping.rs", + "line": 295 + }, + { + "name": "generate_id_from_timestamp", + "file": "crates/jp_workspace/src/id.rs", + "line": 126 + }, + { + "name": "Workspace::open_inner", + "file": "crates/jp_workspace/src/lib.rs", + "line": 210 + }, + { + "name": "Workspace::load_conversation_index", + "file": "crates/jp_workspace/src/lib.rs", + "line": 369 + }, + { + "name": "Workspace::eager_load_conversation", + "file": "crates/jp_workspace/src/lib.rs", + "line": 470 + }, + { + "name": "Workspace::unarchive_conversation", + "file": "crates/jp_workspace/src/lib.rs", + "line": 947 + }, + { + "name": "Workspace::sync_conversation", + "file": "crates/jp_workspace/src/lib.rs", + "line": 1055 + }, + { + "name": "Workspace::ensure_all_metadata_loaded", + "file": "crates/jp_workspace/src/lib.rs", + "line": 1090 + }, + { + "name": "Workspace::test_lock", + "file": "crates/jp_workspace/src/lib.rs", + "line": 1121 + }, + { + "name": "maybe_init_conversation", + "file": "crates/jp_workspace/src/lib.rs", + "line": 1163 + }, + { + "name": "maybe_init_events", + "file": "crates/jp_workspace/src/lib.rs", + "line": 1184 + }, + { + "name": "upsert_root", + "file": "crates/jp_workspace/src/roots.rs", + "line": 79 + }, + { + "name": "migrate_legacy_symlink", + "file": "crates/jp_workspace/src/roots.rs", + "line": 149 + }, + { + "name": "run", + "file": "crates/internal/build-registry/src/main.rs", + "line": 87 + }, + { + "name": "create", + "file": "crates/internal/ticket/src/store.rs", + "line": 174 + }, + { + "name": "vocabulary", + "file": "crates/internal/ticket/src/store.rs", + "line": 296 + }, + { + "name": "import", + "file": "crates/internal/ticket/src/store.rs", + "line": 399 + }, + { + "name": "slug", + "file": "crates/internal/ticket/src/store.rs", + "line": 728 + }, + { + "name": "escape", + "file": "crates/internal/ticket/src/import.rs", + "line": 51 + }, + { + "name": "unescaped", + "file": "crates/internal/ticket/src/parse.rs", + "line": 95 + }, + { + "name": "metadata", + "file": "crates/internal/ticket/src/parse.rs", + "line": 273 + }, + { + "name": "FileContent::add", + "file": "crates/jp_attachment_file_content/src/lib.rs", + "line": 38 + }, + { + "name": "FileContent::get", + "file": "crates/jp_attachment_file_content/src/lib.rs", + "line": 95 + }, + { + "name": "uri_to_pattern", + "file": "crates/jp_attachment_file_content/src/lib.rs", + "line": 304 + }, + { + "name": "Command::to_uri", + "file": "crates/jp_attachment_cmd_output/src/lib.rs", + "line": 31 + }, + { + "name": "Commands::get", + "file": "crates/jp_attachment_cmd_output/src/lib.rs", + "line": 108 + }, + { + "name": "Labels::from_tokens_lossy", + "file": "crates/jp_label/src/labels.rs", + "line": 194 + }, + { + "name": "ValueSetVisitor::visit_seq", + "file": "crates/jp_label/src/labels.rs", + "line": 358 + }, + { + "name": "Vocabulary::parse", + "file": "crates/jp_label/src/vocabulary.rs", + "line": 105 + }, + { + "name": "Vocabulary::resolve_against", + "file": "crates/jp_label/src/vocabulary.rs", + "line": 248 + }, + { + "name": "InlineSelect::prompt", + "file": "crates/jp_inquire/src/inline_select.rs", + "line": 108 + }, + { + "name": "InlineSelect::build_help_text", + "file": "crates/jp_inquire/src/inline_select.rs", + "line": 170 + }, + { + "name": "Vcr::cassette", + "file": "crates/jp_test/src/mock.rs", + "line": 78 + }, + { + "name": "modify_fixture", + "file": "crates/jp_test/src/mock.rs", + "line": 142 + }, + { + "name": "Client::post_stream", + "file": "crates/contrib/async-anthropic/src/client.rs", + "line": 277 + }, + { + "name": "handle_response", + "file": "crates/contrib/async-anthropic/src/client.rs", + "line": 322 + }, + { + "name": "response_error", + "file": "crates/contrib/async-anthropic/src/client.rs", + "line": 337 + }, + { + "name": "UnifiedRateLimit::is_empty", + "file": "crates/contrib/async-anthropic/src/errors.rs", + "line": 204 + }, + { + "name": "request_id", + "file": "crates/contrib/async-anthropic/src/bearer.rs", + "line": 100 + }, + { + "name": "merge_betas", + "file": "crates/contrib/async-anthropic/src/bearer.rs", + "line": 125 + }, + { + "name": "partialize_schema", + "file": "crates/contrib/schematic/src/internal.rs", + "line": 147 + }, + { + "name": "JsoncTemplateRenderer::render_array", + "file": "crates/contrib/schematic/src/schema/renderers/jsonc_template.rs", + "line": 43 + }, + { + "name": "JsoncTemplateRenderer::render_object", + "file": "crates/contrib/schematic/src/schema/renderers/jsonc_template.rs", + "line": 84 + }, + { + "name": "TomlTemplateRenderer::extract_sections", + "file": "crates/contrib/schematic/src/schema/renderers/toml_template.rs", + "line": 47 + }, + { + "name": "TomlTemplateRenderer::render_array", + "file": "crates/contrib/schematic/src/schema/renderers/toml_template.rs", + "line": 100 + }, + { + "name": "TomlTemplateRenderer::render_object", + "file": "crates/contrib/schematic/src/schema/renderers/toml_template.rs", + "line": 136 + }, + { + "name": "TomlTemplateRenderer::render", + "file": "crates/contrib/schematic/src/schema/renderers/toml_template.rs", + "line": 218 + }, + { + "name": "YamlTemplateRenderer::render_array", + "file": "crates/contrib/schematic/src/schema/renderers/yaml_template.rs", + "line": 41 + }, + { + "name": "YamlTemplateRenderer::render_object", + "file": "crates/contrib/schematic/src/schema/renderers/yaml_template.rs", + "line": 89 + }, + { + "name": "TemplateContext::indent", + "file": "crates/contrib/schematic/src/schema/renderers/template.rs", + "line": 117 + }, + { + "name": "TemplateContext::create_field_comment", + "file": "crates/contrib/schematic/src/schema/renderers/template.rs", + "line": 133 + }, + { + "name": "TemplateContext::get_stack_key", + "file": "crates/contrib/schematic/src/schema/renderers/template.rs", + "line": 209 + }, + { + "name": "TemplateContext::is_hidden", + "file": "crates/contrib/schematic/src/schema/renderers/template.rs", + "line": 234 + }, + { + "name": "SchemaGenerator::add_schema", + "file": "crates/contrib/schematic/src/schema/generator.rs", + "line": 26 + }, + { + "name": "Toc::parse", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 66 + }, + { + "name": "read_run", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 105 + }, + { + "name": "read_info", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 134 + }, + { + "name": "read_target", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 154 + }, + { + "name": "read_summary", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 184 + }, + { + "name": "read_processes", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 238 + }, + { + "name": "read_data", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 264 + }, + { + "name": "skip_to_end", + "file": "crates/contrib/xct2cli/src/trace/toc.rs", + "line": 338 + }, + { + "name": "TraceBundle::open", + "file": "crates/contrib/xct2cli/src/trace/mod.rs", + "line": 31 + }, + { + "name": "QueryResult::parse", + "file": "crates/contrib/xct2cli/src/trace/mod.rs", + "line": 81 + }, + { + "name": "CallgraphBuilder<'a>::build_symbolicator", + "file": "crates/contrib/xct2cli/src/analysis/callgraph.rs", + "line": 121 + }, + { + "name": "CallgraphBuilder<'a>::top_inclusive", + "file": "crates/contrib/xct2cli/src/analysis/callgraph.rs", + "line": 164 + }, + { + "name": "CallgraphBuilder<'a>::callees_of", + "file": "crates/contrib/xct2cli/src/analysis/callgraph.rs", + "line": 206 + }, + { + "name": "TraceBundle::pc_samples", + "file": "crates/contrib/xct2cli/src/analysis/samples.rs", + "line": 32 + }, + { + "name": "TraceBundle::callstacks", + "file": "crates/contrib/xct2cli/src/analysis/samples.rs", + "line": 88 + }, + { + "name": "HotspotsBuilder<'a>::run", + "file": "crates/contrib/xct2cli/src/analysis/hotspots.rs", + "line": 138 + }, + { + "name": "Xctrace::discover", + "file": "crates/contrib/xct2cli/src/xctrace.rs", + "line": 34 + }, + { + "name": "Xctrace::run", + "file": "crates/contrib/xct2cli/src/xctrace.rs", + "line": 64 + }, + { + "name": "Xctrace::run_args", + "file": "crates/contrib/xct2cli/src/xctrace.rs", + "line": 73 + }, + { + "name": "Symbolicator::resolve", + "file": "crates/contrib/xct2cli/src/symbol/macho.rs", + "line": 84 + }, + { + "name": "BinaryInfo::enumerate_slides", + "file": "crates/contrib/xct2cli/src/symbol/macho.rs", + "line": 224 + }, + { + "name": "TraceBundle::image_loads", + "file": "crates/contrib/xct2cli/src/symbol/macho.rs", + "line": 336 + }, + { + "name": "decode_dyld_map_a", + "file": "crates/contrib/xct2cli/src/symbol/macho.rs", + "line": 355 + }, + { + "name": "demangle", + "file": "crates/contrib/xct2cli/src/symbol/swift.rs", + "line": 41 + }, + { + "name": "load", + "file": "crates/contrib/xct2cli/src/symbol/swift.rs", + "line": 91 + }, + { + "name": "candidate_paths", + "file": "crates/contrib/xct2cli/src/symbol/swift.rs", + "line": 122 + }, + { + "name": "developer_dir", + "file": "crates/contrib/xct2cli/src/symbol/swift.rs", + "line": 139 + }, + { + "name": "RowReader::next_event", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 61 + }, + { + "name": "RowReader::read_node_prelude", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 128 + }, + { + "name": "RowReader::read_schema_body", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 180 + }, + { + "name": "RowReader::read_column", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 212 + }, + { + "name": "RowReader::read_row", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 259 + }, + { + "name": "RowReader::parse_cell_start", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 287 + }, + { + "name": "RowReader::parse_cell_empty", + "file": "crates/contrib/xct2cli/src/xml/stream.rs", + "line": 347 + }, + { + "name": "strip_environment", + "file": "crates/contrib/xct2cli/src/redact.rs", + "line": 30 + }, + { + "name": "format_markdown_with", + "file": "crates/contrib/comfort/src/format.rs", + "line": 130 + }, + { + "name": "format_source_impl", + "file": "crates/contrib/comfort/src/format.rs", + "line": 179 + }, + { + "name": "canonicalize_markdown", + "file": "crates/contrib/comfort/src/format.rs", + "line": 239 + }, + { + "name": "trim_blank_prefix_lines", + "file": "crates/contrib/comfort/src/format.rs", + "line": 276 + }, + { + "name": "collect_verbatim_block_ranges", + "file": "crates/contrib/comfort/src/format.rs", + "line": 323 + }, + { + "name": "align_tables", + "file": "crates/contrib/comfort/src/format.rs", + "line": 351 + }, + { + "name": "collect_table_replacements", + "file": "crates/contrib/comfort/src/format.rs", + "line": 391 + }, + { + "name": "render_aligned_table", + "file": "crates/contrib/comfort/src/format.rs", + "line": 471 + }, + { + "name": "extract_reference_links", + "file": "crates/contrib/comfort/src/format.rs", + "line": 609 + }, + { + "name": "prune_unused_reference_definitions", + "file": "crates/contrib/comfort/src/format.rs", + "line": 699 + }, + { + "name": "collect_referenced_labels", + "file": "crates/contrib/comfort/src/format.rs", + "line": 742 + }, + { + "name": "collect_inline_link_replacements", + "file": "crates/contrib/comfort/src/format.rs", + "line": 921 + }, + { + "name": "extract_existing_reference_definitions", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1010 + }, + { + "name": "collect_reference_definition_spans", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1064 + }, + { + "name": "collect_excluded_ranges_for_refdefs", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1128 + }, + { + "name": "parse_reference_definition", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1163 + }, + { + "name": "parse_quoted_title", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1298 + }, + { + "name": "protect_reference_form_links", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1362 + }, + { + "name": "collect_reference_form_link_ranges", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1462 + }, + { + "name": "reflow_markdown", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1569 + }, + { + "name": "ResolveIntraDocLinks::resolve", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1633 + }, + { + "name": "collect_paragraphs", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1713 + }, + { + "name": "continuation_prefix_from_ancestors", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1795 + }, + { + "name": "strip_block_quote_markers", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1865 + }, + { + "name": "walk_paragraphs_for_atomic_ranges", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1942 + }, + { + "name": "walk_inline_for_atomic_ranges", + "file": "crates/contrib/comfort/src/format.rs", + "line": 1960 + }, + { + "name": "reflow_paragraph", + "file": "crates/contrib/comfort/src/format.rs", + "line": 2005 + }, + { + "name": "cli_main", + "file": "crates/contrib/comfort/src/lib.rs", + "line": 45 + }, + { + "name": "run", + "file": "crates/contrib/comfort/src/run.rs", + "line": 27 + }, + { + "name": "run_stdin", + "file": "crates/contrib/comfort/src/run.rs", + "line": 75 + }, + { + "name": "Block::reassemble", + "file": "crates/contrib/comfort/src/extract.rs", + "line": 60 + }, + { + "name": "find_blocks", + "file": "crates/contrib/comfort/src/extract.rs", + "line": 88 + }, + { + "name": "split_sentences", + "file": "crates/contrib/comfort/src/sentence.rs", + "line": 102 + }, + { + "name": "fold_line_breaks", + "file": "crates/contrib/comfort/src/sentence.rs", + "line": 207 + }, + { + "name": "collapse_whitespace", + "file": "crates/contrib/comfort/src/sentence.rs", + "line": 226 + }, + { + "name": "merge_abbreviation_splits", + "file": "crates/contrib/comfort/src/sentence.rs", + "line": 254 + }, + { + "name": "merge_quoted_punct_splits", + "file": "crates/contrib/comfort/src/sentence.rs", + "line": 274 + }, + { + "name": "workspace_files", + "file": "crates/contrib/comfort/src/walk.rs", + "line": 19 + }, + { + "name": "expand_path", + "file": "crates/contrib/comfort/src/walk.rs", + "line": 55 + }, + { + "name": "walk_files", + "file": "crates/contrib/comfort/src/walk.rs", + "line": 63 + }, + { + "name": "SchemaType::get_default", + "file": "crates/contrib/schematic_types/src/schema_type.rs", + "line": 55 + }, + { + "name": "SchemaType::add_field", + "file": "crates/contrib/schematic_types/src/schema_type.rs", + "line": 137 + }, + { + "name": "EnumType::from_schemas", + "file": "crates/contrib/schematic_types/src/enums.rs", + "line": 38 + }, + { + "name": "Schema::nullify", + "file": "crates/contrib/schematic_types/src/schema.rs", + "line": 134 + }, + { + "name": "Schema::partialize", + "file": "crates/contrib/schematic_types/src/schema.rs", + "line": 166 + }, + { + "name": "is_default", + "file": "crates/contrib/schematic_types/src/schema.rs", + "line": 278 + }, + { + "name": "SchemaBuilder::build_root", + "file": "crates/contrib/schematic_types/src/schema_builder.rs", + "line": 34 + }, + { + "name": "SchemaBuilder::infer", + "file": "crates/contrib/schematic_types/src/schema_builder.rs", + "line": 184 + }, + { + "name": "Field<'_>::generate_from_partial_value", + "file": "crates/contrib/schematic_macros/src/config/field.rs", + "line": 149 + }, + { + "name": "Variant<'_>::generate_is_empty", + "file": "crates/contrib/schematic_macros/src/config/variant.rs", + "line": 28 + }, + { + "name": "Variant<'_>::generate_finalize_statement", + "file": "crates/contrib/schematic_macros/src/config/variant.rs", + "line": 124 + }, + { + "name": "Variant<'_>::generate_merge_statement", + "file": "crates/contrib/schematic_macros/src/config/variant.rs", + "line": 155 + }, + { + "name": "Variant<'_>::generate_from_partial_value", + "file": "crates/contrib/schematic_macros/src/config/variant.rs", + "line": 248 + }, + { + "name": "ConfigMacro<'_>::to_tokens", + "file": "crates/contrib/schematic_macros/src/config/mod.rs", + "line": 29 + }, + { + "name": "emit_schematic_impls", + "file": "crates/contrib/schematic_macros/src/config/mod.rs", + "line": 177 + }, + { + "name": "emit_config_impls", + "file": "crates/contrib/schematic_macros/src/config/mod.rs", + "line": 277 + }, + { + "name": "Container<'_>::generate_from_partial", + "file": "crates/contrib/schematic_macros/src/config/container.rs", + "line": 303 + }, + { + "name": "Container<'_>::generate_untagged_deserialize", + "file": "crates/contrib/schematic_macros/src/config/container.rs", + "line": 521 + }, + { + "name": "Field<'_>::from", + "file": "crates/contrib/schematic_macros/src/common/field.rs", + "line": 94 + }, + { + "name": "Field<'_>::get_name", + "file": "crates/contrib/schematic_macros/src/common/field.rs", + "line": 218 + }, + { + "name": "Field<'_>::get_aliases", + "file": "crates/contrib/schematic_macros/src/common/field.rs", + "line": 238 + }, + { + "name": "Field<'_>::generate_schema_type", + "file": "crates/contrib/schematic_macros/src/common/field.rs", + "line": 414 + }, + { + "name": "extract_inner_type", + "file": "crates/contrib/schematic_macros/src/common/field_value.rs", + "line": 18 + }, + { + "name": "FieldValue::nested", + "file": "crates/contrib/schematic_macros/src/common/field_value.rs", + "line": 92 + }, + { + "name": "Macro<'l>::from", + "file": "crates/contrib/schematic_macros/src/common/macros.rs", + "line": 105 + }, + { + "name": "Container<'_>::generate_schema", + "file": "crates/contrib/schematic_macros/src/common/container.rs", + "line": 93 + }, + { + "name": "generate_enum_schema", + "file": "crates/contrib/schematic_macros/src/common/container.rs", + "line": 173 + }, + { + "name": "extract_deprecated", + "file": "crates/contrib/schematic_macros/src/utils.rs", + "line": 139 + }, + { + "name": "Variant<'_>::from", + "file": "crates/contrib/schematic_macros/src/config_enum/variant.rs", + "line": 63 + }, + { + "name": "Variant<'_>::get_schema_type", + "file": "crates/contrib/schematic_macros/src/config_enum/variant.rs", + "line": 180 + }, + { + "name": "macro_impl", + "file": "crates/contrib/schematic_macros/src/config_enum/mod.rs", + "line": 33 + }, + { + "name": "collect_variant_tokens", + "file": "crates/contrib/schematic_macros/src/config_enum/mod.rs", + "line": 115 + }, + { + "name": "emit_enum_schematic_impl", + "file": "crates/contrib/schematic_macros/src/config_enum/mod.rs", + "line": 288 + }, + { + "name": "query_table", + "file": "crates/contrib/grizzly/src/fts.rs", + "line": 101 + }, + { + "name": "GrizzlyService::note_get", + "file": "crates/contrib/grizzly/src/server.rs", + "line": 149 + }, + { + "name": "GrizzlyService::note_search", + "file": "crates/contrib/grizzly/src/server.rs", + "line": 190 + }, + { + "name": "GrizzlyService::note_create", + "file": "crates/contrib/grizzly/src/server.rs", + "line": 224 + }, + { + "name": "urlencoded", + "file": "crates/contrib/grizzly/src/server.rs", + "line": 267 + }, + { + "name": "BearDb::open", + "file": "crates/contrib/grizzly/src/db.rs", + "line": 32 + }, + { + "name": "BearDb::open_readonly", + "file": "crates/contrib/grizzly/src/db.rs", + "line": 129 + }, + { + "name": "Note::to_xml_with_lines", + "file": "crates/contrib/grizzly/src/note.rs", + "line": 66 + }, + { + "name": "run", + "file": "crates/contrib/grizzly/src/main.rs", + "line": 103 + }, + { + "name": "execute", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 303 + }, + { + "name": "execute_fts", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 330 + }, + { + "name": "push_filters", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 375 + }, + { + "name": "get_filtered_note_ids", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 427 + }, + { + "name": "execute_like", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 460 + }, + { + "name": "build_match", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 567 + }, + { + "name": "extract_hits_and_snippet", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 608 + }, + { + "name": "make_snippet", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 677 + }, + { + "name": "fetch_metadata", + "file": "crates/contrib/grizzly/src/search.rs", + "line": 716 + }, + { + "name": "merge_into_object", + "file": "crates/contrib/json_edit/src/merge.rs", + "line": 20 + }, + { + "name": "Object::set", + "file": "crates/contrib/json_edit/src/ast.rs", + "line": 111 + }, + { + "name": "Object::insert_member", + "file": "crates/contrib/json_edit/src/ast.rs", + "line": 213 + }, + { + "name": "escape_json_key", + "file": "crates/contrib/json_edit/src/ast.rs", + "line": 409 + }, + { + "name": "build_member", + "file": "crates/contrib/json_edit/src/ast.rs", + "line": 428 + }, + { + "name": "lex", + "file": "crates/contrib/json_edit/src/lexer.rs", + "line": 15 + }, + { + "name": "escape_css_value", + "file": "crates/contrib/bookworm/src/docs.rs", + "line": 253 + }, + { + "name": "walk_dirs", + "file": "crates/contrib/bookworm/src/dl.rs", + "line": 296 + }, + { + "name": "collapse_blank_lines", + "file": "crates/contrib/bookworm/src/util.rs", + "line": 24 + }, + { + "name": "index", + "file": "crates/contrib/bookworm/src/index.rs", + "line": 39 + }, + { + "name": "recursive_walk", + "file": "crates/contrib/bookworm/src/index.rs", + "line": 159 + }, + { + "name": "parse_rustdoc_file", + "file": "crates/contrib/bookworm/src/index.rs", + "line": 200 + }, + { + "name": "check_if_redirection", + "file": "crates/contrib/bookworm/src/index.rs", + "line": 351 + }, + { + "name": "check_if_inner_type_alias", + "file": "crates/contrib/bookworm/src/index.rs", + "line": 383 + }, + { + "name": "Url::from", + "file": "crates/contrib/bookworm/src/mcp/tools.rs", + "line": 73 + }, + { + "name": "CrateUri::try_from", + "file": "crates/contrib/bookworm/src/mcp/tools.rs", + "line": 115 + }, + { + "name": "format_xml", + "file": "crates/contrib/bookworm/src/mcp/tools.rs", + "line": 189 + }, + { + "name": "write_xml_node", + "file": "crates/contrib/bookworm/src/mcp/tools.rs", + "line": 215 + }, + { + "name": "BookwormService::format_contents", + "file": "crates/contrib/bookworm/src/mcp/server.rs", + "line": 49 + }, + { + "name": "BookwormService::crates_search", + "file": "crates/contrib/bookworm/src/mcp/server.rs", + "line": 166 + }, + { + "name": "BookwormService::crate_search_items", + "file": "crates/contrib/bookworm/src/mcp/server.rs", + "line": 186 + }, + { + "name": "BookwormService::crate_resource", + "file": "crates/contrib/bookworm/src/mcp/server.rs", + "line": 225 + }, + { + "name": "BookwormService::crate_versions", + "file": "crates/contrib/bookworm/src/mcp/server.rs", + "line": 257 + }, + { + "name": "BookwormService::crate_readme", + "file": "crates/contrib/bookworm/src/mcp/server.rs", + "line": 279 + }, + { + "name": "collect_resources", + "file": "crates/contrib/bookworm/src/query/list_crate_source_resources.rs", + "line": 45 + }, + { + "name": "search_crate_type_definitions", + "file": "crates/contrib/bookworm/src/query/search_crate_type_definitions.rs", + "line": 17 + }, + { + "name": "get_crate_source_resource", + "file": "crates/contrib/bookworm/src/query/get_crate_source_resource.rs", + "line": 12 + }, + { + "name": "compaction_detail_item", + "file": "crates/jp_cli/src/format.rs", + "line": 134 + }, + { + "name": "compaction_policy_label", + "file": "crates/jp_cli/src/format.rs", + "line": 172 + }, + { + "name": "CompactFlag::from_arg_matches", + "file": "crates/jp_cli/src/cmd/compact_flag.rs", + "line": 134 + }, + { + "name": "CompactSpec::to_partial_rule", + "file": "crates/jp_cli/src/cmd/compact_flag.rs", + "line": 197 + }, + { + "name": "Fmt::run", + "file": "crates/jp_cli/src/cmd/config/fmt.rs", + "line": 23 + }, + { + "name": "Fmt::fmt_target", + "file": "crates/jp_cli/src/cmd/config/fmt.rs", + "line": 74 + }, + { + "name": "Show::run", + "file": "crates/jp_cli/src/cmd/config/show.rs", + "line": 20 + }, + { + "name": "config_skeleton", + "file": "crates/jp_cli/src/cmd/config/show.rs", + "line": 40 + }, + { + "name": "Set::run", + "file": "crates/jp_cli/src/cmd/config/set.rs", + "line": 27 + }, + { + "name": "Set::set_in_conversations", + "file": "crates/jp_cli/src/cmd/config/set.rs", + "line": 43 + }, + { + "name": "Set::set_in_file", + "file": "crates/jp_cli/src/cmd/config/set.rs", + "line": 76 + }, + { + "name": "Ls::run", + "file": "crates/jp_cli/src/cmd/workspace/ls.rs", + "line": 22 + }, + { + "name": "render", + "file": "crates/jp_cli/src/cmd/workspace/show.rs", + "line": 283 + }, + { + "name": "conversation_stats", + "file": "crates/jp_cli/src/cmd/workspace/show.rs", + "line": 381 + }, + { + "name": "resolve", + "file": "crates/jp_cli/src/cmd/workspace/target.rs", + "line": 212 + }, + { + "name": "stdin_id", + "file": "crates/jp_cli/src/cmd/workspace/target.rs", + "line": 505 + }, + { + "name": "Query::run_locked", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 452 + }, + { + "name": "Query::conversation_load_request", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 881 + }, + { + "name": "Query::build_conversation", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 898 + }, + { + "name": "Query::create_new_conversation", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 996 + }, + { + "name": "Query::run_turn", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 1169 + }, + { + "name": "Query::acquire_lock", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 1383 + }, + { + "name": "persist_config_reset", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 1992 + }, + { + "name": "turn_config_delta", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2021 + }, + { + "name": "Query::apply_cli_config", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2042 + }, + { + "name": "build_sections", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2142 + }, + { + "name": "build_thread", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2170 + }, + { + "name": "apply_mounts", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2566 + }, + { + "name": "create_mount_effects", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2639 + }, + { + "name": "PendingStreamTrim::apply", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2818 + }, + { + "name": "mount_access_seed", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 2977 + }, + { + "name": "read_piped_stdin", + "file": "crates/jp_cli/src/cmd/query.rs", + "line": 3081 + }, + { + "name": "Login::run_with_auth", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 273 + }, + { + "name": "Login::acquire", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 496 + }, + { + "name": "Login::device_login", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 560 + }, + { + "name": "await_callback", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 639 + }, + { + "name": "percent_decode", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 698 + }, + { + "name": "List::run_with_auth", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 749 + }, + { + "name": "read_setup_token", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 1041 + }, + { + "name": "humanize", + "file": "crates/jp_cli/src/cmd/provider.rs", + "line": 1136 + }, + { + "name": "Composer::ask", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 154 + }, + { + "name": "Composer::buffer", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 199 + }, + { + "name": "run_plugin", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 361 + }, + { + "name": "spawn_plugin", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 546 + }, + { + "name": "stop_plugin", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 643 + }, + { + "name": "join_within", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 666 + }, + { + "name": "message_loop", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 741 + }, + { + "name": "run_query", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 891 + }, + { + "name": "prepare_turn", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 1261 + }, + { + "name": "handle_request", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 1762 + }, + { + "name": "handle_write_draft", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 2099 + }, + { + "name": "handle_list_configs", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 2197 + }, + { + "name": "describe", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 2480 + }, + { + "name": "manifest_differences", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 2516 + }, + { + "name": "describe_plugin", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 2541 + }, + { + "name": "run_external", + "file": "crates/jp_cli/src/cmd/plugin/dispatch.rs", + "line": 2900 + }, + { + "name": "render", + "file": "crates/jp_cli/src/cmd/plugin/list.rs", + "line": 113 + }, + { + "name": "discover_in", + "file": "crates/jp_cli/src/cmd/plugin/discovery.rs", + "line": 108 + }, + { + "name": "read", + "file": "crates/jp_cli/src/cmd/plugin/approvals.rs", + "line": 178 + }, + { + "name": "Update::run", + "file": "crates/jp_cli/src/cmd/plugin/update.rs", + "line": 26 + }, + { + "name": "not_approved", + "file": "crates/jp_cli/src/cmd/plugin/admission.rs", + "line": 224 + }, + { + "name": "admit", + "file": "crates/jp_cli/src/cmd/plugin/admission.rs", + "line": 280 + }, + { + "name": "Install::run", + "file": "crates/jp_cli/src/cmd/plugin/install.rs", + "line": 31 + }, + { + "name": "visit", + "file": "crates/jp_cli/src/cmd/plugin/install.rs", + "line": 120 + }, + { + "name": "confirm_third_party", + "file": "crates/jp_cli/src/cmd/plugin/install.rs", + "line": 155 + }, + { + "name": "print_root_section", + "file": "crates/jp_cli/src/cmd/plugin/help.rs", + "line": 40 + }, + { + "name": "root_entries", + "file": "crates/jp_cli/src/cmd/plugin/help.rs", + "line": 68 + }, + { + "name": "children", + "file": "crates/jp_cli/src/cmd/plugin/help.rs", + "line": 102 + }, + { + "name": "TimeThreshold::from_str", + "file": "crates/jp_cli/src/cmd/time.rs", + "line": 43 + }, + { + "name": "Resolver<'a>::automatic", + "file": "crates/jp_cli/src/cmd/label/resolve.rs", + "line": 105 + }, + { + "name": "run_command", + "file": "crates/jp_cli/src/cmd/label/resolve.rs", + "line": 318 + }, + { + "name": "parse_bound", + "file": "crates/jp_cli/src/cmd/turn_selection.rs", + "line": 53 + }, + { + "name": "parse_to_bound", + "file": "crates/jp_cli/src/cmd/turn_selection.rs", + "line": 111 + }, + { + "name": "TurnSet::new", + "file": "crates/jp_cli/src/cmd/turn_selection.rs", + "line": 289 + }, + { + "name": "TurnSelection::windows", + "file": "crates/jp_cli/src/cmd/turn_selection.rs", + "line": 687 + }, + { + "name": "Init::run", + "file": "crates/jp_cli/src/cmd/init.rs", + "line": 35 + }, + { + "name": "Init::maybe_ask_and_persist_user_name", + "file": "crates/jp_cli/src/cmd/init.rs", + "line": 128 + }, + { + "name": "Init::ask_run_mode", + "file": "crates/jp_cli/src/cmd/init.rs", + "line": 192 + }, + { + "name": "Init::ask_model", + "file": "crates/jp_cli/src/cmd/init.rs", + "line": 278 + }, + { + "name": "Init::detect_models", + "file": "crates/jp_cli/src/cmd/init.rs", + "line": 311 + }, + { + "name": "acquire_lock", + "file": "crates/jp_cli/src/cmd/lock.rs", + "line": 101 + }, + { + "name": "prompt_contention", + "file": "crates/jp_cli/src/cmd/lock.rs", + "line": 154 + }, + { + "name": "lock_holder_description", + "file": "crates/jp_cli/src/cmd/lock.rs", + "line": 197 + }, + { + "name": "claim_lock_region", + "file": "crates/jp_cli/src/cmd/lock.rs", + "line": 211 + }, + { + "name": "Resolved::grouped", + "file": "crates/jp_cli/src/cmd/label.rs", + "line": 123 + }, + { + "name": "expand_aliases", + "file": "crates/jp_cli/src/cmd/label.rs", + "line": 177 + }, + { + "name": "apply", + "file": "crates/jp_cli/src/cmd/label.rs", + "line": 271 + }, + { + "name": "ConversationLoadRequest::explicit_or_session", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 124 + }, + { + "name": "ConversationLoadRequest::explicit_or_session_with_config", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 138 + }, + { + "name": "ConversationLoadRequest::explicit_or_none", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 151 + }, + { + "name": "ConversationLoadRequest::explicit_or_previous", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 165 + }, + { + "name": "read_stdin_ids", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 614 + }, + { + "name": "resolve_targets", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 647 + }, + { + "name": "resolve_from_session_or_picker", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 734 + }, + { + "name": "format_relative", + "file": "crates/jp_cli/src/cmd/target.rs", + "line": 911 + }, + { + "name": "InterruptHandler

::collect_reply_inline", + "file": "crates/jp_cli/src/cmd/query/interrupt/handler.rs", + "line": 478 + }, + { + "name": "handle_tool_interrupt", + "file": "crates/jp_cli/src/cmd/query/interrupt/signals.rs", + "line": 323 + }, + { + "name": "await_mcp_servers", + "file": "crates/jp_cli/src/cmd/query/mcp_startup.rs", + "line": 31 + }, + { + "name": "claim_region", + "file": "crates/jp_cli/src/cmd/query/mcp_startup.rs", + "line": 166 + }, + { + "name": "line", + "file": "crates/jp_cli/src/cmd/query/mcp_startup.rs", + "line": 194 + }, + { + "name": "TurnCoordinator::handle_streaming_event", + "file": "crates/jp_cli/src/cmd/query/turn/coordinator.rs", + "line": 271 + }, + { + "name": "claim_waiting_region", + "file": "crates/jp_cli/src/cmd/query/turn_loop.rs", + "line": 144 + }, + { + "name": "drive_turn", + "file": "crates/jp_cli/src/cmd/query/turn_loop.rs", + "line": 252 + }, + { + "name": "build_inquiry_backend", + "file": "crates/jp_cli/src/cmd/query/turn_loop.rs", + "line": 1096 + }, + { + "name": "build_inquiry_overrides", + "file": "crates/jp_cli/src/cmd/query/turn_loop.rs", + "line": 1195 + }, + { + "name": "commit_tool_responses", + "file": "crates/jp_cli/src/cmd/query/turn_loop.rs", + "line": 1310 + }, + { + "name": "build_execution_plan", + "file": "crates/jp_cli/src/cmd/query/tool/pending.rs", + "line": 142 + }, + { + "name": "LlmInquiryBackend::inquire", + "file": "crates/jp_cli/src/cmd/query/tool/inquiry.rs", + "line": 222 + }, + { + "name": "ToolPrompter::prompt_ask", + "file": "crates/jp_cli/src/cmd/query/tool/prompter.rs", + "line": 180 + }, + { + "name": "stderr_sink", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 245 + }, + { + "name": "ToolCoordinator::pre_render_for_prompt", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 671 + }, + { + "name": "ToolCoordinator::render_executor", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 694 + }, + { + "name": "ToolCoordinator::abandon", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 792 + }, + { + "name": "ToolCoordinator::decide_permission", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 887 + }, + { + "name": "ToolCoordinator::submit", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 976 + }, + { + "name": "ToolCoordinator::add_call", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1017 + }, + { + "name": "ToolCoordinator::finish", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1094 + }, + { + "name": "ToolCoordinator::dispatch", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1334 + }, + { + "name": "ToolCoordinator::on_step", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1443 + }, + { + "name": "ToolCoordinator::on_permission", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1493 + }, + { + "name": "ToolCoordinator::pump", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1527 + }, + { + "name": "ToolCoordinator::decide", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1585 + }, + { + "name": "ToolCoordinator::announce", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1638 + }, + { + "name": "ToolCoordinator::release", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1660 + }, + { + "name": "ToolCoordinator::route", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1734 + }, + { + "name": "ToolCoordinator::answer", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1832 + }, + { + "name": "ToolCoordinator::serve", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1846 + }, + { + "name": "ToolCoordinator::deliver", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1934 + }, + { + "name": "ToolCoordinator::close", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 1985 + }, + { + "name": "ToolCoordinator::render_result", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 2227 + }, + { + "name": "ToolCoordinator::preset_answer", + "file": "crates/jp_cli/src/cmd/query/tool/coordinator.rs", + "line": 2321 + }, + { + "name": "route", + "file": "crates/jp_cli/src/cmd/query/tool/mcp_executor.rs", + "line": 489 + }, + { + "name": "TerminalExecutorSource::create", + "file": "crates/jp_cli/src/cmd/query/tool/mcp_executor.rs", + "line": 654 + }, + { + "name": "TerminalExecutorSource::fan_out_executors", + "file": "crates/jp_cli/src/cmd/query/tool/mcp_executor.rs", + "line": 723 + }, + { + "name": "PendingCall::receive", + "file": "crates/jp_cli/src/cmd/query/tool/mcp_executor.rs", + "line": 1091 + }, + { + "name": "PendingCall::receive_agent", + "file": "crates/jp_cli/src/cmd/query/tool/mcp_executor.rs", + "line": 1123 + }, + { + "name": "Grep::run", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 204 + }, + { + "name": "Grep::collect_hits_for_id", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 388 + }, + { + "name": "Grep::render", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 503 + }, + { + "name": "Grep::render_hits", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 529 + }, + { + "name": "expand_scopes", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 772 + }, + { + "name": "collect_scope_hits", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 894 + }, + { + "name": "context_ranges", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 951 + }, + { + "name": "Row::windowed", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 1054 + }, + { + "name": "window_row", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 1117 + }, + { + "name": "highlight", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 1194 + }, + { + "name": "render_group_heading", + "file": "crates/jp_cli/src/cmd/conversation/grep.rs", + "line": 1262 + }, + { + "name": "Edit::run", + "file": "crates/jp_cli/src/cmd/conversation/edit.rs", + "line": 97 + }, + { + "name": "Edit::run_open_editor", + "file": "crates/jp_cli/src/cmd/conversation/edit.rs", + "line": 129 + }, + { + "name": "Edit::run_property_edit", + "file": "crates/jp_cli/src/cmd/conversation/edit.rs", + "line": 258 + }, + { + "name": "Compact::effective_rules", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 203 + }, + { + "name": "plan_rule_ranges", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 428 + }, + { + "name": "plan_compactions", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 592 + }, + { + "name": "timeline_lines", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 784 + }, + { + "name": "Compact::preflight", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 932 + }, + { + "name": "Compact::compact_one", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 963 + }, + { + "name": "Compact::preview_compaction", + "file": "crates/jp_cli/src/cmd/conversation/compact.rs", + "line": 1085 + }, + { + "name": "Rm::conversation_load_request", + "file": "crates/jp_cli/src/cmd/conversation/rm.rs", + "line": 71 + }, + { + "name": "remove", + "file": "crates/jp_cli/src/cmd/conversation/rm.rs", + "line": 109 + }, + { + "name": "Ls::run", + "file": "crates/jp_cli/src/cmd/conversation/ls.rs", + "line": 147 + }, + { + "name": "Ls::build_conversation_row", + "file": "crates/jp_cli/src/cmd/conversation/ls.rs", + "line": 277 + }, + { + "name": "Ls::build_body", + "file": "crates/jp_cli/src/cmd/conversation/ls.rs", + "line": 360 + }, + { + "name": "build_header_row", + "file": "crates/jp_cli/src/cmd/conversation/ls.rs", + "line": 388 + }, + { + "name": "generate_summary", + "file": "crates/jp_cli/src/cmd/conversation/summarize.rs", + "line": 55 + }, + { + "name": "summarize_stream", + "file": "crates/jp_cli/src/cmd/conversation/summarize.rs", + "line": 128 + }, + { + "name": "summarize_events", + "file": "crates/jp_cli/src/cmd/conversation/summarize.rs", + "line": 247 + }, + { + "name": "Fork::fork_each", + "file": "crates/jp_cli/src/cmd/conversation/fork.rs", + "line": 87 + }, + { + "name": "Path::run", + "file": "crates/jp_cli/src/cmd/conversation/path.rs", + "line": 34 + }, + { + "name": "resolve_paths", + "file": "crates/jp_cli/src/cmd/conversation/path.rs", + "line": 57 + }, + { + "name": "Title::title_one", + "file": "crates/jp_cli/src/cmd/conversation/title.rs", + "line": 80 + }, + { + "name": "Unarchive::run", + "file": "crates/jp_cli/src/cmd/conversation/unarchive.rs", + "line": 31 + }, + { + "name": "Unarchive::resolve_ids", + "file": "crates/jp_cli/src/cmd/conversation/unarchive.rs", + "line": 52 + }, + { + "name": "Label::conversation_load_request", + "file": "crates/jp_cli/src/cmd/conversation/label.rs", + "line": 98 + }, + { + "name": "Label::run", + "file": "crates/jp_cli/src/cmd/conversation/label.rs", + "line": 111 + }, + { + "name": "Print::print_conversation", + "file": "crates/jp_cli/src/cmd/conversation/print.rs", + "line": 137 + }, + { + "name": "Archive::conversation_load_request", + "file": "crates/jp_cli/src/cmd/conversation/archive.rs", + "line": 70 + }, + { + "name": "Archive::run", + "file": "crates/jp_cli/src/cmd/conversation/archive.rs", + "line": 79 + }, + { + "name": "Use::run", + "file": "crates/jp_cli/src/cmd/conversation/use_.rs", + "line": 69 + }, + { + "name": "Use::conversation_load_request", + "file": "crates/jp_cli/src/cmd/conversation/use_.rs", + "line": 180 + }, + { + "name": "Use::run_filtered", + "file": "crates/jp_cli/src/cmd/conversation/use_.rs", + "line": 192 + }, + { + "name": "ApprovalStore::load", + "file": "crates/jp_cli/src/access/approvals.rs", + "line": 55 + }, + { + "name": "compile_fs", + "file": "crates/jp_cli/src/access/compile.rs", + "line": 74 + }, + { + "name": "compile_tool_policy", + "file": "crates/jp_cli/src/access/compile.rs", + "line": 147 + }, + { + "name": "compile_policy", + "file": "crates/jp_cli/src/access/compile.rs", + "line": 174 + }, + { + "name": "Commands::run", + "file": "crates/jp_cli/src/cmd.rs", + "line": 69 + }, + { + "name": "Commands::name", + "file": "crates/jp_cli/src/cmd.rs", + "line": 152 + }, + { + "name": "Error::from", + "file": "crates/jp_cli/src/cmd.rs", + "line": 443 + }, + { + "name": "run", + "file": "crates/jp_cli/src/lib.rs", + "line": 410 + }, + { + "name": "run_inner", + "file": "crates/jp_cli/src/lib.rs", + "line": 588 + }, + { + "name": "drain_background_tasks", + "file": "crates/jp_cli/src/lib.rs", + "line": 853 + }, + { + "name": "parse_error", + "file": "crates/jp_cli/src/lib.rs", + "line": 916 + }, + { + "name": "resolve_config", + "file": "crates/jp_cli/src/lib.rs", + "line": 992 + }, + { + "name": "effective_cfg_overrides", + "file": "crates/jp_cli/src/lib.rs", + "line": 1117 + }, + { + "name": "load_workspace", + "file": "crates/jp_cli/src/lib.rs", + "line": 1252 + }, + { + "name": "TurnRenderer::new", + "file": "crates/jp_cli/src/render/turn.rs", + "line": 107 + }, + { + "name": "TurnRenderer::render_turn", + "file": "crates/jp_cli/src/render/turn.rs", + "line": 157 + }, + { + "name": "TurnRenderer::reconfigure", + "file": "crates/jp_cli/src/render/turn.rs", + "line": 268 + }, + { + "name": "ToolRenderer::new", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 130 + }, + { + "name": "ToolRenderer::write_chrome", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 208 + }, + { + "name": "ToolRenderer::render_custom_result", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 291 + }, + { + "name": "ToolRenderer::start_progress", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 323 + }, + { + "name": "ToolRenderer::render_result", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 381 + }, + { + "name": "ToolRenderer::register", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 546 + }, + { + "name": "ToolRenderer::claim_preparing", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 613 + }, + { + "name": "format_args", + "file": "crates/jp_cli/src/render/tool.rs", + "line": 678 + }, + { + "name": "ChatRenderer::render_reasoning", + "file": "crates/jp_cli/src/render/chat.rs", + "line": 340 + }, + { + "name": "ChatRenderer::handle_event", + "file": "crates/jp_cli/src/render/chat.rs", + "line": 480 + }, + { + "name": "ChatRenderer::drain_buffer", + "file": "crates/jp_cli/src/render/chat.rs", + "line": 769 + }, + { + "name": "ChatRenderer::enter_tool_call", + "file": "crates/jp_cli/src/render/chat.rs", + "line": 926 + }, + { + "name": "build_role_header_line", + "file": "crates/jp_cli/src/render/chat.rs", + "line": 1016 + }, + { + "name": "indent_lines", + "file": "crates/jp_cli/src/render/chat.rs", + "line": 1062 + }, + { + "name": "Matcher::find_spans", + "file": "crates/jp_cli/src/shared/search.rs", + "line": 366 + }, + { + "name": "merge_overlaps", + "file": "crates/jp_cli/src/shared/search.rs", + "line": 448 + }, + { + "name": "parse_schema_dsl", + "file": "crates/jp_cli/src/schema.rs", + "line": 77 + }, + { + "name": "SchemaType::to_json", + "file": "crates/jp_cli/src/schema.rs", + "line": 130 + }, + { + "name": "Parser<'a>::parse_field_list", + "file": "crates/jp_cli/src/schema.rs", + "line": 289 + }, + { + "name": "Parser<'a>::parse_array_type", + "file": "crates/jp_cli/src/schema.rs", + "line": 415 + }, + { + "name": "fields_to_json", + "file": "crates/jp_cli/src/schema.rs", + "line": 641 + }, + { + "name": "open", + "file": "crates/jp_cli/src/editor.rs", + "line": 234 + }, + { + "name": "edit_query", + "file": "crates/jp_cli/src/editor.rs", + "line": 288 + }, + { + "name": "build_history_text", + "file": "crates/jp_cli/src/editor.rs", + "line": 462 + }, + { + "name": "Ctx::configure_active_mcp_servers", + "file": "crates/jp_cli/src/ctx.rs", + "line": 239 + }, + { + "name": "AttachmentUrlOrPath::parse", + "file": "crates/jp_cli/src/parser.rs", + "line": 56 + }, + { + "name": "AttachmentUrlOrPath::from_str", + "file": "crates/jp_cli/src/parser.rs", + "line": 119 + }, + { + "name": "jp_id_shorthand_to_url", + "file": "crates/jp_cli/src/parser.rs", + "line": 143 + }, + { + "name": "QueryDocument<'_>::fmt", + "file": "crates/jp_cli/src/editor/parser.rs", + "line": 52 + }, + { + "name": "QueryDocument<'s>::try_from", + "file": "crates/jp_cli/src/editor/parser.rs", + "line": 136 + }, + { + "name": "override_to_record", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 73 + }, + { + "name": "scan_cfg_keywords", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 171 + }, + { + "name": "ConfigPipeline::new", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 273 + }, + { + "name": "ConfigPipeline::partial_with_conversation", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 334 + }, + { + "name": "config_search_roots", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 390 + }, + { + "name": "resolve_cfg_args", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 414 + }, + { + "name": "apply_cfg_args", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 527 + }, + { + "name": "build_partial_from_cfg_args", + "file": "crates/jp_cli/src/config_pipeline.rs", + "line": 577 + }, + { + "name": "Client::get_tool", + "file": "crates/jp_mcp/src/client.rs", + "line": 184 + }, + { + "name": "Client::run_services", + "file": "crates/jp_mcp/src/client.rs", + "line": 265 + }, + { + "name": "Client::start_services", + "file": "crates/jp_mcp/src/client.rs", + "line": 300 + }, + { + "name": "Client::try_create_client", + "file": "crates/jp_mcp/src/client.rs", + "line": 380 + }, + { + "name": "Client::create_client", + "file": "crates/jp_mcp/src/client.rs", + "line": 402 + }, + { + "name": "render_stderr_tail", + "file": "crates/jp_mcp/src/client.rs", + "line": 562 + }, + { + "name": "register", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 527 + }, + { + "name": "Service::new", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 623 + }, + { + "name": "validate_arguments", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 885 + }, + { + "name": "run_call", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 919 + }, + { + "name": "conclude", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 1100 + }, + { + "name": "run_fan_out", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 1138 + }, + { + "name": "deliver_result", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 1388 + }, + { + "name": "attempt", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 1448 + }, + { + "name": "ask_for_input", + "file": "crates/jp_mcp/src/server/service.rs", + "line": 1521 + }, + { + "name": "split", + "file": "crates/jp_mcp/src/server/fan_out.rs", + "line": 119 + }, + { + "name": "frame", + "file": "crates/jp_mcp/src/server/fan_out.rs", + "line": 270 + }, + { + "name": "from_config", + "file": "crates/jp_mcp/src/server/json_schema.rs", + "line": 29 + }, + { + "name": "with_overrides", + "file": "crates/jp_mcp/src/server/json_schema.rs", + "line": 57 + }, + { + "name": "node_with_override", + "file": "crates/jp_mcp/src/server/json_schema.rs", + "line": 121 + }, + { + "name": "apply_config_fields", + "file": "crates/jp_mcp/src/server/json_schema.rs", + "line": 159 + }, + { + "name": "to_mcp", + "file": "crates/jp_mcp/src/server/result.rs", + "line": 128 + }, + { + "name": "to_content", + "file": "crates/jp_mcp/src/server/result.rs", + "line": 168 + }, + { + "name": "DescribeTools::execute", + "file": "crates/jp_mcp/src/server/builtin/describe_tools.rs", + "line": 78 + }, + { + "name": "run_tool_command", + "file": "crates/jp_mcp/src/server.rs", + "line": 430 + }, + { + "name": "parse_command_output", + "file": "crates/jp_mcp/src/server.rs", + "line": 552 + }, + { + "name": "execute", + "file": "crates/jp_mcp/src/server.rs", + "line": 701 + }, + { + "name": "execute_local", + "file": "crates/jp_mcp/src/server.rs", + "line": 748 + }, + { + "name": "tool_definitions", + "file": "crates/jp_mcp/src/server.rs", + "line": 913 + }, + { + "name": "resolve_tool", + "file": "crates/jp_mcp/src/server.rs", + "line": 966 + }, + { + "name": "resolve_mcp_tool", + "file": "crates/jp_mcp/src/server.rs", + "line": 990 + }, + { + "name": "MockEditorBackend::edit_text", + "file": "crates/jp_editor/src/lib.rs", + "line": 208 + }, + { + "name": "render", + "file": "crates/jp_attachment_agentic_shepherd/src/render.rs", + "line": 12 + }, + { + "name": "render_section", + "file": "crates/jp_attachment_agentic_shepherd/src/render.rs", + "line": 68 + }, + { + "name": "render_outline", + "file": "crates/jp_attachment_agentic_shepherd/src/render.rs", + "line": 107 + }, + { + "name": "render_block_continuations", + "file": "crates/jp_attachment_agentic_shepherd/src/render.rs", + "line": 136 + }, + { + "name": "render_resolution", + "file": "crates/jp_attachment_agentic_shepherd/src/render.rs", + "line": 200 + }, + { + "name": "render_commit", + "file": "crates/jp_attachment_agentic_shepherd/src/render.rs", + "line": 220 + }, + { + "name": "fetch", + "file": "crates/jp_attachment_agentic_shepherd/src/lib.rs", + "line": 96 + }, + { + "name": "Formatter::render_terminal", + "file": "crates/jp_md/src/format.rs", + "line": 277 + }, + { + "name": "Formatter::render_code_line", + "file": "crates/jp_md/src/format.rs", + "line": 381 + }, + { + "name": "apply_line_background", + "file": "crates/jp_md/src/format.rs", + "line": 499 + }, + { + "name": "background_survives", + "file": "crates/jp_md/src/format.rs", + "line": 559 + }, + { + "name": "TerminalFormatter<'a,'w>::format_item", + "file": "crates/jp_md/src/render.rs", + "line": 346 + }, + { + "name": "TerminalFormatter<'a,'w>::format_code_block", + "file": "crates/jp_md/src/render.rs", + "line": 427 + }, + { + "name": "highlight_code_block", + "file": "crates/jp_md/src/render.rs", + "line": 976 + }, + { + "name": "restore", + "file": "crates/jp_md/src/references.rs", + "line": 18 + }, + { + "name": "container_source", + "file": "crates/jp_md/src/references.rs", + "line": 123 + }, + { + "name": "format_table", + "file": "crates/jp_md/src/table.rs", + "line": 118 + }, + { + "name": "extract_table", + "file": "crates/jp_md/src/table.rs", + "line": 295 + }, + { + "name": "render_cell_content", + "file": "crates/jp_md/src/table.rs", + "line": 329 + }, + { + "name": "break_offsets", + "file": "crates/jp_md/src/table.rs", + "line": 451 + }, + { + "name": "truncate_to_visual_width", + "file": "crates/jp_md/src/table.rs", + "line": 500 + }, + { + "name": "wrap_to_visual_width", + "file": "crates/jp_md/src/table.rs", + "line": 563 + }, + { + "name": "flush_word", + "file": "crates/jp_md/src/table.rs", + "line": 631 + }, + { + "name": "hard_break_into", + "file": "crates/jp_md/src/table.rs", + "line": 699 + }, + { + "name": "Buffer::flush_events", + "file": "crates/jp_md/src/buffer.rs", + "line": 311 + }, + { + "name": "Buffer::flush_list_events", + "file": "crates/jp_md/src/buffer.rs", + "line": 404 + }, + { + "name": "Buffer::handle_buffering_paragraph", + "file": "crates/jp_md/src/buffer.rs", + "line": 620 + }, + { + "name": "Buffer::next", + "file": "crates/jp_md/src/buffer.rs", + "line": 1261 + }, + { + "name": "render_list_segment", + "file": "crates/jp_md/src/buffer.rs", + "line": 1463 + }, + { + "name": "strip_lines_indent", + "file": "crates/jp_md/src/buffer.rs", + "line": 1502 + }, + { + "name": "renumber_first_marker", + "file": "crates/jp_md/src/buffer.rs", + "line": 1525 + }, + { + "name": "last_inline_ground_state", + "file": "crates/jp_md/src/buffer.rs", + "line": 1727 + }, + { + "name": "TerminalWriter<'w>::new", + "file": "crates/jp_md/src/writer.rs", + "line": 121 + }, + { + "name": "TerminalWriter<'w>::merge_escapes", + "file": "crates/jp_md/src/writer.rs", + "line": 185 + }, + { + "name": "TerminalWriter<'w>::wrap_break", + "file": "crates/jp_md/src/writer.rs", + "line": 245 + }, + { + "name": "TerminalWriter<'w>::write_visible", + "file": "crates/jp_md/src/writer.rs", + "line": 340 + }, + { + "name": "TerminalWriter<'w>::restore_attrs_after_prefix", + "file": "crates/jp_md/src/writer.rs", + "line": 414 + }, + { + "name": "TerminalWriter<'w>::write_raw", + "file": "crates/jp_md/src/writer.rs", + "line": 595 + }, + { + "name": "indent_to_column", + "file": "crates/jp_md/src/writer.rs", + "line": 685 + }, + { + "name": "leading_heading", + "file": "crates/jp_md/src/heading.rs", + "line": 15 + }, + { + "name": "GithubAttachment::get", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 125 + }, + { + "name": "parse_uri", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 175 + }, + { + "name": "fetch_pr_diff", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 307 + }, + { + "name": "fetch_all_changed_files", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 391 + }, + { + "name": "synthesize_diff_from_files", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 442 + }, + { + "name": "compile_excludes", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 555 + }, + { + "name": "filter_diff", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 577 + }, + { + "name": "render_diff_header", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 629 + }, + { + "name": "render_reviews", + "file": "crates/jp_attachment_github/src/lib.rs", + "line": 713 + }, + { + "name": "main", + "file": "crates/jp_process/src/bin/process_probe.rs", + "line": 34 + }, + { + "name": "repeat", + "file": "crates/jp_process/src/bin/process_probe.rs", + "line": 110 + }, + { + "name": "SystemProcessRunner::execute", + "file": "crates/jp_process/src/system.rs", + "line": 30 + }, + { + "name": "MockProcessRunner::drop", + "file": "crates/jp_process/src/mock.rs", + "line": 63 + }, + { + "name": "McpResources::get", + "file": "crates/jp_attachment_mcp_resources/src/lib.rs", + "line": 90 + }, + { + "name": "Context::resolve", + "file": "crates/jp_tool/src/access.rs", + "line": 636 + }, + { + "name": "normalize_lexical", + "file": "crates/jp_tool/src/access.rs", + "line": 693 + }, + { + "name": "canonicalize_workspace_target", + "file": "crates/jp_tool/src/access.rs", + "line": 719 + }, + { + "name": "AnswerType::deserialize", + "file": "crates/jp_tool/src/lib.rs", + "line": 406 + }, + { + "name": "validate_node", + "file": "crates/jp_tool/src/schema.rs", + "line": 57 + }, + { + "name": "validate_node_inner", + "file": "crates/jp_tool/src/schema.rs", + "line": 74 + }, + { + "name": "has_unconstrained_node", + "file": "crates/jp_tool/src/schema.rs", + "line": 256 + }, + { + "name": "coerce_object", + "file": "crates/jp_tool/src/definition.rs", + "line": 173 + }, + { + "name": "coerce_value", + "file": "crates/jp_tool/src/definition.rs", + "line": 192 + }, + { + "name": "apply_defaults_to", + "file": "crates/jp_tool/src/definition.rs", + "line": 229 + }, + { + "name": "validate_arguments_against", + "file": "crates/jp_tool/src/definition.rs", + "line": 273 + }, + { + "name": "ToolResult::from", + "file": "crates/jp_tool/src/content.rs", + "line": 472 + }, + { + "name": "Terminal::open", + "file": "crates/jp_pty/src/terminal.rs", + "line": 113 + }, + { + "name": "Terminal::resize", + "file": "crates/jp_pty/src/terminal.rs", + "line": 276 + }, + { + "name": "onlcr", + "file": "crates/jp_pty/src/terminal.rs", + "line": 525 + }, + { + "name": "ArgumentDecoding::apply", + "file": "crates/jp_llm/src/decoding.rs", + "line": 34 + }, + { + "name": "ArgumentDecoding::apply_value", + "file": "crates/jp_llm/src/decoding.rs", + "line": 51 + }, + { + "name": "ArgumentDecoders::insert", + "file": "crates/jp_llm/src/decoding.rs", + "line": 71 + }, + { + "name": "StreamError::from_http", + "file": "crates/jp_llm/src/error.rs", + "line": 351 + }, + { + "name": "extract_retry_from_text", + "file": "crates/jp_llm/src/error.rs", + "line": 792 + }, + { + "name": "extract_retry_after", + "file": "crates/jp_llm/src/error.rs", + "line": 863 + }, + { + "name": "EventChain::ingest_normal", + "file": "crates/jp_llm/src/stream/chain.rs", + "line": 93 + }, + { + "name": "EventChain::ingest_merging", + "file": "crates/jp_llm/src/stream/chain.rs", + "line": 129 + }, + { + "name": "EventChain::trim_buffer", + "file": "crates/jp_llm/src/stream/chain.rs", + "line": 183 + }, + { + "name": "EventChain::attempt_merge", + "file": "crates/jp_llm/src/stream/chain.rs", + "line": 225 + }, + { + "name": "reconstruct_text", + "file": "crates/jp_llm/src/stream/chain.rs", + "line": 317 + }, + { + "name": "get_provider", + "file": "crates/jp_llm/src/provider.rs", + "line": 89 + }, + { + "name": "output_schema_is_open", + "file": "crates/jp_llm/src/provider.rs", + "line": 180 + }, + { + "name": "number_ids", + "file": "crates/jp_llm/src/provider.rs", + "line": 305 + }, + { + "name": "map_candidate", + "file": "crates/jp_llm/src/provider/google.rs", + "line": 764 + }, + { + "name": "process_schema", + "file": "crates/jp_llm/src/provider/google.rs", + "line": 947 + }, + { + "name": "StreamError::from", + "file": "crates/jp_llm/src/provider/google.rs", + "line": 1257 + }, + { + "name": "prepare_soft_force_retry_request", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 310 + }, + { + "name": "MultiProviderMetadata::from_details", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 416 + }, + { + "name": "Map::from", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 481 + }, + { + "name": "map_event", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 531 + }, + { + "name": "prepare_forced_tool_fallback", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 692 + }, + { + "name": "create_request", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 771 + }, + { + "name": "RequestMessages::try_from", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 1055 + }, + { + "name": "StreamError::from", + "file": "crates/jp_llm/src/provider/openrouter.rs", + "line": 1256 + }, + { + "name": "fetch_public_catalog", + "file": "crates/jp_llm/src/provider/cerebras.rs", + "line": 282 + }, + { + "name": "create_request", + "file": "crates/jp_llm/src/provider/cerebras.rs", + "line": 477 + }, + { + "name": "process_schema", + "file": "crates/jp_llm/src/provider/cerebras.rs", + "line": 653 + }, + { + "name": "handle_sse_event_sync", + "file": "crates/jp_llm/src/provider/cerebras.rs", + "line": 858 + }, + { + "name": "map_event", + "file": "crates/jp_llm/src/provider/ollama.rs", + "line": 149 + }, + { + "name": "create_request", + "file": "crates/jp_llm/src/provider/ollama.rs", + "line": 258 + }, + { + "name": "MockProvider::with_chunked_message", + "file": "crates/jp_llm/src/provider/mock.rs", + "line": 159 + }, + { + "name": "MockProvider::chat_completion_stream", + "file": "crates/jp_llm/src/provider/mock.rs", + "line": 242 + }, + { + "name": "switch_persists", + "file": "crates/jp_llm/src/provider/anthropic/resolve.rs", + "line": 586 + }, + { + "name": "read_output", + "file": "crates/jp_llm/src/provider/anthropic/acp.rs", + "line": 503 + }, + { + "name": "State::sdk", + "file": "crates/jp_llm/src/provider/anthropic/acp/protocol.rs", + "line": 423 + }, + { + "name": "State::stream_event", + "file": "crates/jp_llm/src/provider/anthropic/acp/protocol.rs", + "line": 623 + }, + { + "name": "stream", + "file": "crates/jp_llm/src/provider/anthropic/acp/transport.rs", + "line": 46 + }, + { + "name": "drive", + "file": "crates/jp_llm/src/provider/anthropic/acp/transport.rs", + "line": 372 + }, + { + "name": "PreparedRequest::new", + "file": "crates/jp_llm/src/provider/anthropic/acp/transcript.rs", + "line": 44 + }, + { + "name": "environment", + "file": "crates/jp_llm/src/provider/anthropic/acp/options.rs", + "line": 160 + }, + { + "name": "tap", + "file": "crates/jp_llm/src/provider/anthropic/acp/cassette.rs", + "line": 155 + }, + { + "name": "recorder", + "file": "crates/jp_llm/src/provider/anthropic/acp/cassette.rs", + "line": 167 + }, + { + "name": "serve", + "file": "crates/jp_llm/src/provider/anthropic/acp/cassette.rs", + "line": 308 + }, + { + "name": "command", + "file": "crates/jp_llm/src/provider/anthropic/acp/process.rs", + "line": 46 + }, + { + "name": "handle_sse_event_sync", + "file": "crates/jp_llm/src/provider/openai_compat.rs", + "line": 411 + }, + { + "name": "drain_extractor", + "file": "crates/jp_llm/src/provider/openai_compat.rs", + "line": 659 + }, + { + "name": "Anthropic::mcp_tool_metadata", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 422 + }, + { + "name": "Anthropic::chat_completion_stream", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 516 + }, + { + "name": "force_tool_retry", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 1087 + }, + { + "name": "soft_force_retry", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 1169 + }, + { + "name": "resolve_cache_control", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 1712 + }, + { + "name": "create_request", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 1744 + }, + { + "name": "map_event", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 2646 + }, + { + "name": "transform_schema", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 2704 + }, + { + "name": "map_content_start", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 3121 + }, + { + "name": "map_content_delta", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 3162 + }, + { + "name": "StreamError::from", + "file": "crates/jp_llm/src/provider/anthropic.rs", + "line": 3207 + }, + { + "name": "walk_chain", + "file": "crates/jp_llm/src/provider/openai/resolve.rs", + "line": 664 + }, + { + "name": "DeviceAuth::poll_interval", + "file": "crates/jp_llm/src/provider/openai/oauth.rs", + "line": 303 + }, + { + "name": "Openai::clients", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 422 + }, + { + "name": "Openai::redeem_reset_credit", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 489 + }, + { + "name": "Openai::model_details", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 582 + }, + { + "name": "Openai::models", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 618 + }, + { + "name": "synthesize_non_streaming_output_item_events", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 1080 + }, + { + "name": "create_request", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 1381 + }, + { + "name": "map_error", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 2685 + }, + { + "name": "map_event", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 2817 + }, + { + "name": "classify_stream_error", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3030 + }, + { + "name": "ensure_flattened", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3152 + }, + { + "name": "flatten_all_of", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3185 + }, + { + "name": "fits_strict_subset", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3201 + }, + { + "name": "flatten_node", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3207 + }, + { + "name": "process_strict", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3333 + }, + { + "name": "parameters_with_decoding", + "file": "crates/jp_llm/src/provider/openai.rs", + "line": 3514 + }, + { + "name": "generate", + "file": "crates/jp_llm/src/title.rs", + "line": 131 + }, + { + "name": "title_instructions", + "file": "crates/jp_llm/src/title.rs", + "line": 261 + }, + { + "name": "structured_data", + "file": "crates/jp_llm/src/event_builder.rs", + "line": 59 + }, + { + "name": "EventBuilder::handle_part", + "file": "crates/jp_llm/src/event_builder.rs", + "line": 148 + }, + { + "name": "collect_with_retry", + "file": "crates/jp_llm/src/retry.rs", + "line": 79 + }, + { + "name": "retry_delay", + "file": "crates/jp_llm/src/retry.rs", + "line": 181 + }, + { + "name": "exponential_backoff", + "file": "crates/jp_llm/src/retry.rs", + "line": 216 + }, + { + "name": "Id::is_valid", + "file": "crates/jp_id/src/lib.rs", + "line": 31 + }, + { + "name": "TaskHandler::sync", + "file": "crates/jp_task/src/handler.rs", + "line": 61 + }, + { + "name": "PullsHandler::fetch_review_comments", + "file": "crates/jp_github/src/handlers.rs", + "line": 342 + }, + { + "name": "BearNotes::query_to_uri", + "file": "crates/jp_attachment_bear_note/src/lib.rs", + "line": 26 + }, + { + "name": "BearNotes::get", + "file": "crates/jp_attachment_bear_note/src/lib.rs", + "line": 154 + } + ] +} \ No newline at end of file diff --git a/.config/rustqual/config.toml b/.config/rustqual/config.toml new file mode 100644 index 000000000..cd54fa341 --- /dev/null +++ b/.config/rustqual/config.toml @@ -0,0 +1,35 @@ +# Structural quality checks, main pass: every dimension except DRY, across the +# full workspace including test files. +# +# Run via `just qual`; gated on CI by `just qual-ci`. +# +# ## Why DRY is disabled here +# +# rustqual's DRY dimension is all-or-nothing. Turning off `[duplicates]` +# disables DRY-002 (dead code) and DRY-006 (dead types) along with DRY-003 +# (repeated fragments) — verified, not assumed: the dead-code count goes 256 to +# 0 on this workspace when the section is disabled. +# +# DRY-003 fires ~2038 times inside `*_tests.rs`, on the repeated setup blocks +# that make each `#[test]` self-contained. That shape is deliberate here (see +# the testing guidance in the contributor docs: prefer duplication over a +# shared fixture helper), so those findings are noise rather than signal. +# +# The resolution is a second pass, `dry.toml`, which enables DRY over +# production code only. Test files cannot simply be excluded from *this* pass +# instead, because doing so would take the Test Quality dimension with them: +# TQ-001/002/003 all need `#[test]` functions in the parse. + +[duplicates] +enabled = false + +# rustqual judges test code by production thresholds unless told otherwise. +# Several test functions here are deliberately long and self-contained, so +# `LONG_FN` and `SRP_MODULE` fire on files that are working as intended. Left +# unset so the baseline records the real numbers; raise these if the findings +# turn out to obscure genuine regressions rather than merely sit in the +# baseline. +# +# [tests] +# max_function_lines = 150 +# file_length = 800 diff --git a/.config/rustqual/dry.toml b/.config/rustqual/dry.toml new file mode 100644 index 000000000..d2fae6775 --- /dev/null +++ b/.config/rustqual/dry.toml @@ -0,0 +1,56 @@ +# Structural quality checks, DRY pass: duplicates and dead code over production +# code only. +# +# Paired with `config.toml`, which runs every other dimension across the full +# workspace. See that file for why the two passes are split. +# +# Excluding test files here is safe because nothing in this pass depends on +# them: `[test_quality]` is off, so TQ-003 cannot mistake an untested-looking +# function for a real finding, and DRY-002 already ignores calls from +# `#[cfg(test)]` code when deciding deadness — the dead-code count is identical +# (256) with and without these globs. What the exclusion removes is ~2038 +# DRY-003 fragments and ~210 DRY-001 duplicate test functions, both of which +# are the deliberate self-contained-test shape rather than copy-paste. +# +# Two dimensions cannot be disabled and will appear in this pass as well as in +# the main one: IOSP has no `enabled` key, and MAGIC_NUMBER survives +# `[complexity] enabled = false` (every other complexity rule is correctly +# silenced). Both are absorbed by this pass's own baseline and do not affect the +# regression gate. +# +# The same inconsistency produces three `ORPHAN_SUPPRESSION` findings here, on +# the `qual:allow(complexity, magic_numbers)` markers in the provider model +# catalogues. With `[complexity]` off, rustqual sees no complexity finding to +# match them against and calls them stale — while MAGIC_NUMBER fires anyway. +# They suppress correctly in the main pass (498 findings down to 193). Baselined +# here; not worth excluding the provider files from DRY detection to silence. + +exclude_files = [ + "**/*_tests.rs", + "**/tests.rs", + "**/tests/**", +] + +[duplicates] +enabled = true + +[boilerplate] +enabled = false + +[complexity] +enabled = false + +[srp] +enabled = false + +[coupling] +enabled = false + +[structural] +enabled = false + +[test_quality] +enabled = false + +[architecture] +enabled = false diff --git a/.config/rustqual/regressions.jq b/.config/rustqual/regressions.jq new file mode 100644 index 000000000..21c80d945 --- /dev/null +++ b/.config/rustqual/regressions.jq @@ -0,0 +1,42 @@ +# Report every count in a fresh rustqual report that sits above the committed +# baseline, one `key: old -> new (+delta)` line per category. Empty output means +# no category moved up. +# +# Invoked as: +# +# jq -nr -f regressions.jq --slurpfile old --slurpfile new +# +# Per category rather than on `total_findings` alone: a change that fixes three +# magic numbers and adds three dead functions leaves the total flat while making +# the codebase worse along an axis we care about. +# +# A baseline that cannot be compared is an error, not a pass. Invalid JSON fails +# in jq before this program runs; a file that parses but carries no numeric +# `total_findings` (`{}`, or a schema from an incompatible rustqual) is rejected +# below. Both would otherwise disable the gate silently. +# +# Keys deliberately not compared: +# +# version schema marker, not a count +# total function count, which grows with the codebase +# quality_score, iosp_score ratios, which are what we are not gating on + +{version: 1, total: 1, quality_score: 1, iosp_score: 1} as $skip +| $old[0] as $o +| $new[0] as $n +| if ($o | type) != "object" then + error("baseline is not a JSON object") + elif ($o.total_findings | type) != "number" then + error("baseline has no numeric total_findings: corrupt, or written by an incompatible rustqual") + elif ($n.total_findings | type) != "number" then + error("fresh report has no numeric total_findings: rustqual's baseline format changed") + else + $n + | to_entries[] + | select((.value | type) == "number") + | select($skip[.key] == null) + | . as $entry + | ($o[$entry.key] | if type == "number" then . else 0 end) as $was + | select($entry.value > $was) + | " \($entry.key): \($was) -> \($entry.value) (+\($entry.value - $was))" + end diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 54b025091..3bdcf1d9d 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -40,6 +40,7 @@ jobs: insta: ${{ steps.filter.outputs.insta }} shear: ${{ steps.filter.outputs.shear }} vet: ${{ steps.filter.outputs.vet }} + qual: ${{ steps.filter.outputs.qual }} steps: - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v6 with: @@ -93,13 +94,14 @@ jobs: set_task insta "$source|$snapshots" set_task shear "$source" set_task vet "$cargo|^\.config/supply-chain/|$workflow|$justfile" + set_task qual "$source|^\.config/rustqual/" rust: needs: changes runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] - task: [lint, fmt, fmt-comments, fmt-markdown, typecheck-js, test, docs, coverage, deny, insta, shear, vet] + task: [lint, fmt, fmt-comments, fmt-markdown, typecheck-js, test, docs, coverage, deny, insta, shear, vet, qual] include: - task: test os: windows-latest @@ -136,6 +138,7 @@ jobs: INSTA: ${{ needs.changes.outputs.insta }} SHEAR: ${{ needs.changes.outputs.shear }} VET: ${{ needs.changes.outputs.vet }} + QUAL: ${{ needs.changes.outputs.qual }} run: | set -euo pipefail @@ -152,6 +155,7 @@ jobs: insta) run="$INSTA" ;; shear) run="$SHEAR" ;; vet) run="$VET" ;; + qual) run="$QUAL" ;; *) echo "unknown task: $TASK" >&2; exit 1 ;; esac diff --git a/crates/jp_llm/src/provider/anthropic.rs b/crates/jp_llm/src/provider/anthropic.rs index cfecb539c..4f5537fe8 100644 --- a/crates/jp_llm/src/provider/anthropic.rs +++ b/crates/jp_llm/src/provider/anthropic.rs @@ -2447,6 +2447,8 @@ fn model_overrides(id: &str) -> Option<&'static ModelOverrides> { } /// The facts the capabilities API cannot supply, per model. +// qual:allow(complexity, magic_numbers) reason: "model catalogue: cutoff dates +// are data maintained by hand against Anthropic's published documentation" static MODEL_OVERRIDES: LazyLock> = LazyLock::new(|| { let cutoff = |year, month| NaiveDate::from_ymd_opt(year, month, 1); diff --git a/crates/jp_llm/src/provider/google.rs b/crates/jp_llm/src/provider/google.rs index e9369fdc6..bcbf35bc6 100644 --- a/crates/jp_llm/src/provider/google.rs +++ b/crates/jp_llm/src/provider/google.rs @@ -532,6 +532,9 @@ fn model_overrides(id: &str) -> Option<&'static ModelDetails> { /// See: See: /// See: /// +// qual:allow(complexity, magic_numbers) reason: "model catalogue: thinking +// budgets and cutoff dates are data maintained against Google's published +// documentation" static MODEL_OVERRIDES: LazyLock> = LazyLock::new(|| { let date = |year, month, day| NaiveDate::from_ymd_opt(year, month, day).unwrap(); let id = |name: &str| ModelIdConfig::try_from((PROVIDER, name)).unwrap(); diff --git a/crates/jp_llm/src/provider/openai.rs b/crates/jp_llm/src/provider/openai.rs index ec4f440e5..07ed70a9a 100644 --- a/crates/jp_llm/src/provider/openai.rs +++ b/crates/jp_llm/src/provider/openai.rs @@ -1717,6 +1717,8 @@ fn model_overrides(id: &str) -> Option<&'static ModelDetails> { /// Unlike the Anthropic, OpenRouter, and Cerebras providers, there is nothing /// to derive from, so every value here is maintained by hand against OpenAI's /// published model documentation. +// qual:allow(complexity, magic_numbers) reason: "model catalogue: context +// windows, output limits and cutoff dates are data, not constants" static MODEL_OVERRIDES: LazyLock> = LazyLock::new(|| { let date = |year, month, day| NaiveDate::from_ymd_opt(year, month, day).unwrap(); let id = |name: &str| ModelIdConfig::try_from((PROVIDER, name)).unwrap(); diff --git a/docs/ticket/0yb2pgw-rustqual-baselines-go-stale-when-main-moves.md b/docs/ticket/0yb2pgw-rustqual-baselines-go-stale-when-main-moves.md new file mode 100644 index 000000000..fc99fa615 --- /dev/null +++ b/docs/ticket/0yb2pgw-rustqual-baselines-go-stale-when-main-moves.md @@ -0,0 +1,116 @@ +# Rustqual baselines go stale when main moves + +- **Status**: Todo +- **Kind**: Chore +- **Authors**: jp +- **Date**: 2026-10-06 +- **Label**: domain=tooling +- **Label**: type=follow-up + +`just qual-ci` compares the workspace against counts committed in +`.config/rustqual/baseline.json` and `baseline-dry.json`. +Those counts describe the tree at the moment they were recorded, so they go +stale as soon as `main` moves. + +The first real run of the gate demonstrated it. +The baselines were recorded on 22 Sep; rebasing the branch onto 6 Oct `main` put +382 extra findings in the main pass and 116 in the DRY pass, across twelve +categories, none of them from the branch — its whole Rust diff was seven +comment lines. +The gate was right that the numbers had moved and had no way to say whose +numbers they were. + +## Why it matters + +The author who hits the failure is whoever rebases next, and the documented +response (`just qual-baseline`) makes them re-record a baseline covering two +weeks of someone else's code. +Refreshing is the only action that turns the job green, it always works, and it +takes one command — so the gate teaches contributors to reach for the thing +that silences it. +That is the failure mode the gate exists to prevent, arrived at from the other +direction. + +The refresh is at least visible: the baselines are pretty-printed, so +`"total_findings": 2404 → 2786` shows up in the pull request diff where a +reviewer can see it. +That is a review-time catch, not a tooling one. + +## Options + +1. **Accept it.** Refresh on rebase and treat the failure as noise. + Free, and normalizes the reflex. +2. **Re-record from `main` on a schedule.** A workflow runs `qual-baseline` on + `main` and commits the result, so a branch compares against a baseline that + is at most a day old. + One extra workflow; the drift window shrinks but does not close, and the + commits are noise in the log. +3. **Drop the committed baseline.** Analyse `HEAD` and the merge-base in the + same job and compare the two reports. + Staleness becomes impossible, because both numbers come from the run. + Costs four analyses per job instead of two, and needs the merge-base tree + checked out — probably a second worktree. + +Option 3 removes the whole class of problem and is the one to aim for. +Worth measuring how long one `rustqual` pass takes over the workspace before +committing to it: if a pass is seconds, the extra cost is irrelevant and option +3 wins outright. + +## Related + +Introduced with the gate itself in `#1190`. +The same pull request already replaced rustqual's own `--compare +--fail-on-regression`, which scored a regression as the aggregate quality ratio +dropping and so missed new findings entirely; `.config/rustqual/regressions.jq` +now does a per-category comparison. +Whatever replaces the committed baseline should keep that filter — the +per-category check is orthogonal to where the numbers come from. + +## Comments + +----- + +- **From**: jp +- **Date**: 2026-10-06T15:03:44Z + +## Observed: the gate fires on commits the branch does not contain + +First real CI run of `qual-ci` on `#1190` failed with `srp_module_warnings: 207 +-> 208 (+1)` while the same recipe passed locally with identical numbers on both +sides. + +Cause is narrower than "baselines go stale", and worse: + +`.github/workflows/rust.yml:167` checks out with no `ref:`, so a `pull_request` +run gets `refs/pull/N/merge` — the head merged into *current* `main`. +The branch was rebased onto `150ba7868` and its baselines re-recorded there +(`e7e3b424c`). +`main` then took `dbafe5485` (#1242, 16:30) and `dfae02a91` (#1207, 16:33) the +same afternoon. +CI measured `branch + dfae02a91`; the baseline describes `branch + 150ba7868`. +The `+1` is a file crossing a threshold in that delta — #1242 adds net +21 +lines to `crates/jp_cli/src/cmd/query/tool/prompter.rs`, which is otherwise +unflagged. + +Two consequences beyond staleness: + +1. **Not reproducible locally.** No sequence of local commands shows the + failure, because the tree CI measured does not exist in any worktree. + The author's only lever is to rebase and re-record — which is the reflex + this ticket exists to prevent, now with no diagnostic alternative. +2. **The comparison is invalid in both directions.** A committed baseline + describes exactly one tree. + Compared against a merge tree, it invents regressions *and* can mask real + ones: if the merge happens to delete findings elsewhere, a genuine new + finding nets to zero and passes. + +So a committed baseline and the merge ref cannot both be right. +The measured tree and the baseline have to share a base. +That makes option 3 (analyse `HEAD` and the merge-base in the same job, no +committed baseline) the correct target rather than merely the tidiest. + +A cheaper interim exists: a per-task `checkout_ref` through `matrix.include`, +set to `github.event.pull_request.head.sha` for `qual` only, leaving `test` and +the other tasks on the merge ref where testing the merge result is the point. +Needs one thing verified first — whether `actions/checkout` treats an empty +`ref:` as unset, which is what the other matrix entries would pass. diff --git a/justfile b/justfile index 505c37595..5040ab33e 100644 --- a/justfile +++ b/justfile @@ -10,6 +10,7 @@ insta_version := "1.48.0" jilu_version := "0.13.2" llvm_cov_version := "0.8.7" nextest_version := "0.9.143" +rustqual_version := "1.8.2" shear_version := "1.13.4" vet_version := "0.10.2" @@ -3635,6 +3636,30 @@ check-all *FLAGS: check-and-fix *FLAGS: @just check --fix --allow-dirty {{FLAGS}} +# Run the structural quality checks (rustqual) over the workspace. +# +# Two passes, because rustqual's DRY dimension cannot enable dead-code +# detection without also firing on the repeated setup blocks that `*_tests.rs` +# files are deliberately built from. `.config/rustqual/config.toml` covers +# every other dimension across the full workspace; `dry.toml` covers DRY over +# production code only. Both configs carry the full rationale. +# +# Never fails: this is the exploratory entry point. `just qual-ci` is the gate. +[group('check')] +qual *FLAGS: _install-rustqual + rustqual -c .config/rustqual/config.toml --no-fail {{FLAGS}} + rustqual -c .config/rustqual/dry.toml --no-fail {{FLAGS}} + +# Re-record the rustqual baselines that `qual-ci` gates against. +# +# Run after a change that deliberately moves the finding count — a refactor +# that removes findings, or an accepted batch of new ones — and commit the +# result alongside it, so the diff shows what moved and why. +[group('check')] +qual-baseline: _install-rustqual + rustqual -c .config/rustqual/config.toml --no-fail --save-baseline .config/rustqual/baseline.json + rustqual -c .config/rustqual/dry.toml --no-fail --save-baseline .config/rustqual/baseline-dry.json + # Run tests, using nextest. [group('check')] [group('main')] @@ -3808,7 +3833,7 @@ fmt: (_rustup_component "rustfmt") _install-comfort # Run all ci tasks. [group('ci')] -ci: lint-ci fmt-ci test-ci docs-ci coverage-ci deny-ci insta-ci shear-ci vet-ci +ci: lint-ci fmt-ci test-ci docs-ci coverage-ci deny-ci insta-ci shear-ci vet-ci qual-ci # Lint the code on CI. [group('ci')] @@ -3862,6 +3887,99 @@ lint-ci: (_rustup_component "clippy") _install_ci_matchers # spelling rots unnoticed. cargo clippy --locked --package jp_mcp --all-targets --no-default-features --features client --no-deps --profile=lint -- --deny warnings +# Check structural code quality on CI. +# +# Gates on per-category regression against the committed baselines rather than +# on an absolute score. The workspace carries known findings; the bar for new +# code is "no worse than what is already there". Refresh with +# `just qual-baseline`. +# +# rustqual's own `--compare --fail-on-regression` is deliberately unused. It +# prints a finding delta, but defines a regression as `quality_score` dropping, +# and that score is a ratio over every function in the workspace: a change that +# adds compliant code alongside a new finding dilutes the score enough to hold +# it level, and the gate passes. A baseline it cannot parse is worse — rustqual +# prints the error, reports "not regressed", and exits 0 under `--no-fail`. +# +# So rustqual runs only as a report generator, into a temp file, and +# `regressions.jq` decides the verdict: any count above its baseline fails the +# job, and a baseline that cannot be compared is an error rather than a pass. +# +# Output is captured. Each pass prints every baselined finding on every run, +# which buries the verdict; on success only the totals are shown, on failure the +# categories that moved. `--format github` is deliberately absent: it annotates +# all baselined findings rather than the new ones, and GitHub caps the display +# at ten, so the annotations would hide the regression behind existing findings. +# +# Needs `jq`, which GitHub's runners ship. +[group('ci')] +qual-ci: _install-rustqual _install_ci_matchers + #!/usr/bin/env sh + set -eu + + tmp=$(mktemp -d "${TMPDIR:-/tmp}/rustqual.XXXXXX") + trap 'rm -rf "$tmp"' EXIT + + filter=.config/rustqual/regressions.jq + main=.config/rustqual/baseline.json + + # Prove the gate can still fail before trusting it to pass. A gate that has + # broken open is invisible by definition, so both directions are checked on + # every run: a baseline one finding below the current one has to read as a + # regression, and an unparseable baseline has to be an error. + canary() { + jq '.magic_number_warnings = (.magic_number_warnings // 0) - 1' \ + "$main" > "$tmp/lowered.json" || return 1 + out=$(jq -nr -f "$filter" \ + --slurpfile old "$tmp/lowered.json" --slurpfile new "$main" 2>&1) || { + echo "::error::the regression filter errored on its canary input" + printf '%s\n' "$out" + return 1 + } + [ -n "$out" ] || { + echo "::error::the regression filter reported nothing for a known regression" + return 1 + } + printf 'not json\n' > "$tmp/broken.json" || return 1 + if jq -nr -f "$filter" \ + --slurpfile old "$tmp/broken.json" --slurpfile new "$main" >/dev/null 2>&1 + then + echo "::error::the regression filter accepted a malformed baseline" + return 1 + fi + } + + qual_pass() { + base=".config/rustqual/$2" + fresh="$tmp/$2" + log=$(rustqual -c ".config/rustqual/$1" --no-fail --save-baseline "$fresh" 2>&1) || { + echo "::error::rustqual could not analyse the workspace in the $1 pass" + printf '%s\n' "$log" + return 1 + } + over=$(jq -nr -f "$filter" --slurpfile old "$base" --slurpfile new "$fresh" 2>&1) || { + echo "::error::cannot compare the $1 pass against $base" + printf '%s\n' "$over" + return 1 + } + totals=$(jq -nr --slurpfile old "$base" --slurpfile new "$fresh" \ + '"findings \($old[0].total_findings) -> \($new[0].total_findings)"') || return 1 + [ -z "$over" ] || { + echo "::error::rustqual regression in the $1 pass ($totals)" + printf '%s\n' "$over" + echo "Fix the findings above, or run \`just qual-baseline\` and commit the result when the new count is deliberate." + return 1 + } + echo "$1: no category above baseline ($totals)" + } + + canary + + status=0 + qual_pass config.toml baseline.json || status=1 + qual_pass dry.toml baseline-dry.json || status=1 + exit "$status" + # Check code formatting on CI. [group('ci')] fmt-ci: (_rustup_component "rustfmt") _install_ci_matchers @@ -4038,6 +4156,19 @@ _install-bookworm *args: fi cargo install {{quiet_flag}} --locked --path crates/contrib/bookworm {{args}} +# Build and install `rustqual`, the structural quality analyser. +# +# Built from source rather than `_install`: rustqual publishes no release +# binaries (every tag from v0.4.2 to v1.8.2 has zero assets), declares no +# `[package.metadata.binstall]`, and is absent from quickinstall, so +# `cargo binstall --only-signed` has nothing to resolve. +# +# `cargo install` is a sub-second no-op once the pinned version is present, so +# this is safe to depend on from every recipe. A version bump reinstalls +# without needing `JP_INSTALL=1`, unlike the path-installed tools below. +_install-rustqual *args: + cargo install {{quiet_flag}} --locked rustqual@{{rustqual_version}} {{args}} + _install-comfort *args: #!/usr/bin/env sh set -eu