From 0b3a33a63c101ec9ac7e5aac0ff7ce3300965853 Mon Sep 17 00:00:00 2001 From: dave Date: Thu, 14 May 2026 15:48:41 +0000 Subject: [PATCH] huskies: merge 1037 --- .huskies/source-map.json | 2741 +++++++++++++++++++++-- crates/source-map-gen/src/regen_main.rs | 30 + 2 files changed, 2596 insertions(+), 175 deletions(-) create mode 100644 crates/source-map-gen/src/regen_main.rs diff --git a/.huskies/source-map.json b/.huskies/source-map.json index 93ff8aff..e5a18df7 100644 --- a/.huskies/source-map.json +++ b/.huskies/source-map.json @@ -1,10 +1,452 @@ { + "crates/bft-json-crdt/benches/speed.rs": [], + "crates/bft-json-crdt/bft-crdt-derive/src/lib.rs": [ + "fn add_crdt_fields", + "fn derive_json_crdt" + ], + "crates/bft-json-crdt/src/debug.rs": [ + "fn debug_type_mismatch", + "fn debug_path_mismatch", + "fn debug_op_on_primitive", + "trait DebugView", + "fn debug_view", + "fn log_try_apply", + "fn debug_digest_failure", + "fn log_missing_causal_dep", + "fn log_actually_apply", + "fn debug_hash_failure", + "fn log_ops", + "fn log_apply" + ], + "crates/bft-json-crdt/src/json_crdt/base.rs": [ + "struct BaseCrdt", + "fn new", + "fn apply", + "fn causal_queue_len" + ], + "crates/bft-json-crdt/src/json_crdt/mod.rs": [ + "trait CrdtNode", + "trait MarkPrimitive", + "trait CrdtNodeFromValue", + "trait IntoCrdtNode" + ], + "crates/bft-json-crdt/src/json_crdt/signed_op.rs": [ + "enum OpState", + "const CAUSAL_QUEUE_MAX", + "struct SignedOp", + "fn id", + "fn author", + "fn is_valid_digest", + "fn from_op" + ], + "crates/bft-json-crdt/src/json_crdt/value.rs": [ + "enum JsonValue", + "fn into_json" + ], + "crates/bft-json-crdt/src/keypair.rs": [ + "type Ed25519KeyPair", + "type Ed25519PublicKey", + "type Ed25519Signature", + "const ED25519_PUBLIC_KEY_LENGTH", + "const ED25519_SIGNATURE_LENGTH", + "type AuthorId", + "type SignedDigest", + "fn make_author", + "fn lsb_32", + "fn sha256", + "fn make_keypair", + "fn sign", + "fn verify" + ], + "crates/bft-json-crdt/src/lib.rs": [ + "mod debug", + "mod json_crdt", + "mod keypair", + "mod list_crdt", + "mod lww_crdt", + "mod op" + ], + "crates/bft-json-crdt/src/list_crdt.rs": [ + "struct ListCrdt", + "fn new", + "fn our_seq", + "fn advance_seq", + "fn insert", + "fn insert_idx", + "fn id_at", + "fn delete", + "fn find_idx", + "fn apply", + "fn iter", + "fn view" + ], + "crates/bft-json-crdt/src/lww_crdt.rs": [ + "struct LwwRegisterCrdt", + "fn new", + "fn our_seq", + "fn advance_seq", + "fn set", + "fn apply" + ], + "crates/bft-json-crdt/src/op.rs": [ + "type SequenceNumber", + "type OpId", + "const ROOT_ID", + "enum PathSegment", + "fn print_hex", + "fn print_path", + "fn ensure_subpath", + "fn join_path", + "fn parse_field", + "struct Op", + "trait Hashable", + "fn into", + "fn sign", + "fn sign_with_dependencies", + "fn author", + "fn sequence_num", + "fn new", + "fn hash_to_id", + "fn is_valid_hash", + "fn make_root" + ], + "crates/bft-json-crdt/tests/byzantine.rs": [], + "crates/bft-json-crdt/tests/commutative.rs": [], + "crates/bft-json-crdt/tests/kleppmann_trace.rs": [], + "crates/source-map-gen/src/lib.rs": [ + "struct CheckFailure", + "fn to_direction", + "enum CheckResult", + "trait LanguageAdapter", + "fn added_line_ranges", + "fn check_files_ratcheted", + "fn check_files", + "fn update_source_map", + "fn regenerate_source_map", + "fn update_for_worktree", + "fn relative_key", + "fn read_map", + "fn write_map" + ], + "crates/source-map-gen/src/main.rs": [], + "crates/source-map-gen/src/regen_main.rs": [], + "crates/source-map-gen/src/rust_adapter.rs": [ + "struct RustAdapter", + "fn extract_items" + ], + "crates/source-map-gen/src/ts_adapter.rs": [ + "struct TypeScriptAdapter", + "fn extract_items" + ], + "frontend/playwright.config.ts": [], + "frontend/src/App.test.tsx": [], + "frontend/src/App.tsx": [], + "frontend/src/api/__test_utils__/mockRpcWebSocket.ts": [ + "interface MockRpcInstaller", + "function installRpcMock" + ], + "frontend/src/api/agents.test.ts": [], + "frontend/src/api/agents.ts": [ + "type AgentStatusValue", + "interface AgentInfo", + "interface AgentEvent", + "interface AgentConfigInfo", + "const agentsApi", + "function subscribeAgentStream" + ], + "frontend/src/api/bot_config.ts": [ + "type BotConfig", + "const botConfigApi" + ], + "frontend/src/api/client.test.ts": [], + "frontend/src/api/client/http.ts": [ + "function resolveWsHost", + "function callMcpTool", + "const api" + ], + "frontend/src/api/client/index.ts": [ + "type default" + ], + "frontend/src/api/client/types.ts": [ + "type WsRequest", + "interface WizardStepInfo", + "interface WizardStateData", + "interface AgentAssignment", + "interface PipelineStageItem", + "interface PipelineState", + "type WsResponse", + "type StatusEvent", + "interface ProviderConfig", + "type Role", + "interface ToolCall", + "interface Message", + "interface AnthropicModelInfo", + "interface WorkItemContent", + "interface TestCaseResult", + "interface TestResultsResponse", + "interface FileEntry", + "interface SearchResult", + "interface AgentCostEntry", + "interface TokenCostResponse", + "interface TokenUsageRecord", + "interface AllTokenUsageResponse", + "interface CommandOutput", + "interface OAuthStatus" + ], + "frontend/src/api/client/websocket.ts": [ + "class ChatWebSocket" + ], + "frontend/src/api/gateway.ts": [ + "interface JoinedAgent", + "interface GatewayProject", + "interface GatewayInfo", + "interface PipelineItem", + "interface ProjectPipelineStatus", + "interface AllProjectsPipeline", + "interface GenerateTokenResponse", + "interface ServerMode", + "const gatewayApi" + ], + "frontend/src/api/rpc.ts": [ + "interface RpcResponse", + "class RpcError", + "function rpcCall" + ], + "frontend/src/api/rpcContract.test.ts": [], + "frontend/src/api/rpcContract.ts": [ + "interface SetModelPreferenceParams", + "interface SetAnthropicApiKeyParams", + "interface PutEditorParams", + "interface OpenFileParams", + "interface OpenProjectParams", + "interface ForgetProjectParams", + "interface BotConfigPayload", + "interface ProjectSettingsPayload", + "interface OkResult", + "interface EditorSettingsResult", + "interface OpenProjectResult", + "interface TypedRpcMethods", + "type TypedRpcMethodName", + "const CONTRACT_FIXTURES" + ], + "frontend/src/api/settings.test.ts": [], + "frontend/src/api/settings.ts": [ + "interface EditorSettings", + "interface ProjectSettings", + "interface OpenFileResult", + "const settingsApi" + ], + "frontend/src/components/AgentLogsSection.tsx": [ + "function AgentLogsSection" + ], + "frontend/src/components/AgentPanel.test.tsx": [], + "frontend/src/components/AgentPanel.tsx": [ + "function AgentPanel" + ], + "frontend/src/components/ApiKeyDialog.tsx": [ + "function ApiKeyDialog" + ], + "frontend/src/components/BotConfigPage.tsx": [ + "function BotConfigPage" + ], + "frontend/src/components/Chat.activity.test.tsx": [], + "frontend/src/components/Chat.commands.test.tsx": [], + "frontend/src/components/Chat.layout.test.tsx": [], + "frontend/src/components/Chat.persistence.test.tsx": [], + "frontend/src/components/Chat.test.tsx": [], + "frontend/src/components/Chat.tsx": [ + "function Chat" + ], + "frontend/src/components/ChatHeader.test.tsx": [], + "frontend/src/components/ChatHeader.tsx": [ + "function ChatHeader" + ], + "frontend/src/components/ChatInput.test.tsx": [], + "frontend/src/components/ChatInput.tsx": [ + "interface ChatInputHandle", + "const ChatInput" + ], + "frontend/src/components/ChatInputFilePicker.test.tsx": [], + "frontend/src/components/ChatInputSlashCommand.test.tsx": [], + "frontend/src/components/ChatMessageList.tsx": [ + "function ThinkingBlock", + "function StreamingMessage", + "function ChatMessageList" + ], + "frontend/src/components/ChatPipelinePanel.tsx": [ + "function ChatPipelinePanel" + ], + "frontend/src/components/CodeRef.test.tsx": [], + "frontend/src/components/CodeRef.tsx": [ + "interface CodeRefPart", + "function parseCodeRefs", + "function InlineCodeWithRefs" + ], + "frontend/src/components/GatewayPanel.test.tsx": [], + "frontend/src/components/GatewayPanel.tsx": [ + "function StoryRow", + "function GatewayPanel" + ], + "frontend/src/components/HelpOverlay.tsx": [ + "function HelpOverlay" + ], + "frontend/src/components/LozengeFlyContext.agentlozenge.test.tsx": [], + "frontend/src/components/LozengeFlyContext.flyin.test.tsx": [], + "frontend/src/components/LozengeFlyContext.flyout.test.tsx": [], + "frontend/src/components/LozengeFlyContext.hidden.test.tsx": [], + "frontend/src/components/LozengeFlyContext.tsx": [ + "interface LozengeFlyContextValue", + "const LozengeFlyContext", + "function LozengeFlyProvider", + "function useLozengeFly" + ], + "frontend/src/components/MessageItem.test.tsx": [], + "frontend/src/components/MessageItem.tsx": [ + "const MessageItem" + ], + "frontend/src/components/PermissionDialog.tsx": [ + "function PermissionDialog" + ], + "frontend/src/components/ReconciliationBanner.tsx": [ + "function ReconciliationBanner" + ], + "frontend/src/components/ServerLogsPanel.tsx": [ + "interface LogEntry", + "function ServerLogsPanel" + ], + "frontend/src/components/SettingsPage.seam.test.tsx": [], + "frontend/src/components/SettingsPage.tsx": [ + "function SettingsPage" + ], + "frontend/src/components/SetupWizard.tsx": [ + "function SetupWizard" + ], + "frontend/src/components/SideQuestionOverlay.tsx": [ + "function SideQuestionOverlay" + ], + "frontend/src/components/StagePanel.test.tsx": [], + "frontend/src/components/StagePanel.tsx": [ + "function StagePanel" + ], + "frontend/src/components/TestResultsSection.tsx": [ + "function TestResultsSection" + ], + "frontend/src/components/TokenCostSection.tsx": [ + "function TokenCostSection" + ], + "frontend/src/components/TokenUsagePage.tsx": [ + "function TokenUsagePage" + ], + "frontend/src/components/WorkItemDetailPanel.agents.test.tsx": [], + "frontend/src/components/WorkItemDetailPanel.data.test.tsx": [], + "frontend/src/components/WorkItemDetailPanel.test.tsx": [], + "frontend/src/components/WorkItemDetailPanel.tsx": [ + "function WorkItemDetailPanel" + ], + "frontend/src/components/WorkItemDetailPanelHeader.tsx": [ + "function WorkItemDetailPanelHeader" + ], + "frontend/src/components/selection/ProjectPathInput.tsx": [ + "interface ProjectPathMatch", + "interface ProjectPathInputProps", + "function ProjectPathInput" + ], + "frontend/src/components/selection/RecentProjectsList.tsx": [ + "interface RecentProjectsListProps", + "function RecentProjectsList" + ], + "frontend/src/components/selection/SelectionScreen.test.tsx": [], + "frontend/src/components/selection/SelectionScreen.tsx": [ + "interface RecentProjectMatch", + "interface SelectionScreenProps", + "function SelectionScreen" + ], + "frontend/src/components/selection/usePathCompletion.test.ts": [], + "frontend/src/components/selection/usePathCompletion.ts": [ + "interface FileEntry", + "interface ProjectPathMatch", + "interface UsePathCompletionArgs", + "interface UsePathCompletionResult", + "function isFuzzyMatch", + "function getCurrentPartial", + "function usePathCompletion" + ], + "frontend/src/components/workItemDetailPanelUtils.ts": [ + "const STAGE_LABELS", + "const STATUS_COLORS", + "function stripDisplayContent", + "function formatStoryTitle" + ], + "frontend/src/hooks/useChatHistory.test.ts": [], + "frontend/src/hooks/useChatHistory.ts": [ + "function useChatHistory" + ], + "frontend/src/hooks/useChatSend.ts": [ + "interface UseChatSendResult", + "function useChatSend" + ], + "frontend/src/hooks/useChatWebSocket.ts": [ + "interface UseChatWebSocketResult", + "function useChatWebSocket" + ], + "frontend/src/main.tsx": [], + "frontend/src/setupTests.ts": [], + "frontend/src/slashCommands.ts": [ + "interface SlashCommand", + "const SLASH_COMMANDS" + ], + "frontend/src/types.ts": [ + "type Role", + "interface ToolCall", + "interface Message", + "interface ProviderConfig", + "interface FileEntry", + "interface SearchResult", + "interface CommandOutput", + "type WsRequest", + "type WsResponse", + "type default" + ], + "frontend/src/utils/chatUtils.ts": [ + "function formatToolActivity", + "const estimateTokens", + "const getContextWindowSize" + ], + "frontend/src/vite-env.d.ts": [], + "frontend/tests/e2e/gateway-scroll.spec.ts": [], + "frontend/tests/e2e/smoke.spec.ts": [], + "frontend/vite.config.ts": [], + "frontend/vitest.config.ts": [], + "server/build.rs": [], + "server/src/agent_log/format.rs": [ + "fn format_log_entry_as_text" + ], + "server/src/agent_log/mod.rs": [], + "server/src/agent_log/reader.rs": [ + "fn read_log", + "fn list_story_log_files", + "fn read_log_as_readable_lines", + "fn find_latest_log" + ], + "server/src/agent_log/tests.rs": [], + "server/src/agent_log/writer.rs": [ + "struct LogEntry", + "struct AgentLogWriter", + "fn new", + "fn write_event", + "fn log_dir", + "fn log_file_path" + ], "server/src/agent_mode/claim.rs": [ "const CLAIM_TIMEOUT_SECS", "const SCAN_INTERVAL_SECS", "fn claim_hash", "fn should_self_claim" ], + "server/src/agent_mode/context.rs": [ + "fn register_with_gateway", + "fn build_agent_app_context" + ], "server/src/agent_mode/loop_ops.rs": [ "fn write_heartbeat", "fn scan_and_claim", @@ -16,6 +458,23 @@ "server/src/agent_mode/mod.rs": [ "fn run" ], + "server/src/agents/gates.rs": [ + "enum GateFailureKind", + "fn classify", + "fn is_self_evident_fix", + "struct GateOutcome", + "fn pass", + "fn fail", + "fn build_error", + "fn detect_worktree_base_branch", + "fn worktree_has_committed_work", + "fn cargo_check_in_worktree", + "fn check_uncommitted_changes", + "fn run_project_tests", + "fn run_acceptance_gates", + "fn find_duplicate_module_files", + "fn run_coverage_gate" + ], "server/src/agents/lifecycle.rs": [ "fn item_type_from_id", "fn move_story_to_current", @@ -33,9 +492,63 @@ "fn move_story_to_stage", "fn close_bug_to_archive" ], + "server/src/agents/local_prompt.rs": [ + "fn read_project_local_prompt" + ], + "server/src/agents/merge/conflicts.rs": [ + "fn try_resolve_conflicts" + ], + "server/src/agents/merge/mod.rs": [ + "enum MergeResult", + "fn output", + "fn to_merge_failure_kind", + "enum MergeJobStatus", + "struct MergeJob", + "struct MergeReport" + ], + "server/src/agents/merge/squash/mod.rs": [ + "fn run_squash_merge", + "fn cleanup_merge_workspace" + ], + "server/src/agents/merge/squash/tests_advanced.rs": [], + "server/src/agents/merge/squash/tests_basic.rs": [], + "server/src/agents/mod.rs": [ + "mod gates", + "mod lifecycle", + "mod local_prompt", + "mod merge", + "mod pool", + "mod pty", + "mod runtime", + "mod session_store", + "mod token_usage", + "mod model", + "struct ReconciliationEvent", + "enum AgentEvent", + "enum AgentStatus", + "enum AgentExecution", + "fn is_active", + "enum TerminationReason", + "enum PipelineStage", + "fn pipeline_stage", + "fn agent_config_stage", + "struct CompletionReport", + "struct TokenUsage", + "fn estimate_cost_usd", + "fn from_result_event", + "struct AgentInfo" + ], + "server/src/agents/model.rs": [ + "enum AgentModel", + "fn as_str", + "fn from_api_str" + ], "server/src/agents/pool/auto_assign/auto_assign.rs": [ "fn auto_assign_available_work" ], + "server/src/agents/pool/auto_assign/backlog.rs": [ + "fn promote_ready_backlog_stories" + ], "server/src/agents/pool/auto_assign/merge.rs": [ "fn assign_merge_stage" ], @@ -45,6 +558,11 @@ "server/src/agents/pool/auto_assign/merge_failure_subscriber.rs": [ "fn spawn_merge_failure_subscriber" ], + "server/src/agents/pool/auto_assign/mod.rs": [ + "mod merge_failure_block_subscriber", + "mod merge_failure_subscriber", + "mod watchdog" + ], "server/src/agents/pool/auto_assign/pipeline.rs": [ "fn assign_pipeline_stages" ], @@ -64,20 +582,141 @@ "fn check_archived_dependencies", "fn is_story_frozen" ], + "server/src/agents/pool/auto_assign/watchdog/budget.rs": [ + "fn compute_budget_from_logs", + "fn compute_budget_from_single_log" + ], + "server/src/agents/pool/auto_assign/watchdog/limits.rs": [ + "fn resolve_session_log", + "fn count_turns_in_log", + "fn check_agent_limits" + ], + "server/src/agents/pool/auto_assign/watchdog/mod.rs": [ + "fn run_watchdog_once", + "fn run_watchdog_pass" + ], + "server/src/agents/pool/auto_assign/watchdog/orphan.rs": [ + "fn check_orphaned_agents" + ], "server/src/agents/pool/auto_assign/watchdog/tests/limits_tests.rs": [], + "server/src/agents/pool/auto_assign/watchdog/tests/mod.rs": [ + "fn write_fake_session_log", + "fn write_fake_mixed_session_log", + "fn write_fake_budget_session_log", + "fn write_project_config" + ], + "server/src/agents/pool/auto_assign/watchdog/tests/orphan_tests.rs": [], "server/src/agents/pool/cost_rollup_subscriber.rs": [ "fn spawn_cost_rollup_subscriber", "fn on_terminal_transition" ], + "server/src/agents/pool/mod.rs": [ + "mod auto_assign", + "mod cost_rollup_subscriber", + "mod worktree_lifecycle", + "struct AgentPool", + "fn new", + "fn port", + "fn watcher_tx", + "fn status_broadcaster", + "fn new_test" + ], + "server/src/agents/pool/pipeline/advance/helpers.rs": [ + "fn spawn_pipeline_advance", + "fn resolve_qa_mode_from_store", + "fn write_review_hold_to_store", + "fn should_block_story" + ], + "server/src/agents/pool/pipeline/advance/mod.rs": [ + "fn run_pipeline_advance" + ], + "server/src/agents/pool/pipeline/advance/tests.rs": [], + "server/src/agents/pool/pipeline/advance/tests_regression.rs": [], + "server/src/agents/pool/pipeline/completion/legacy.rs": [ + "fn report_completion" + ], + "server/src/agents/pool/pipeline/completion/mod.rs": [], + "server/src/agents/pool/pipeline/completion/server.rs": [ + "fn run_server_owned_completion" + ], + "server/src/agents/pool/pipeline/completion/tests.rs": [], + "server/src/agents/pool/pipeline/merge/control.rs": [ + "fn trigger_server_side_merge", + "fn set_merge_success_reported", + "fn set_merge_failure_reported" + ], + "server/src/agents/pool/pipeline/merge/mod.rs": [ + "mod time" + ], + "server/src/agents/pool/pipeline/merge/runner.rs": [ + "fn reap_stale_merge_jobs", + "fn start_merge_agent_work" + ], + "server/src/agents/pool/pipeline/merge/status.rs": [ + "fn get_merge_status" + ], + "server/src/agents/pool/pipeline/merge/tests.rs": [], + "server/src/agents/pool/pipeline/merge/time.rs": [ + "fn server_start_time", + "fn encode_server_start_time", + "fn decode_server_start_time", + "fn unix_now" + ], + "server/src/agents/pool/pipeline/mod.rs": [], + "server/src/agents/pool/process.rs": [ + "fn kill_all_children", + "fn kill_child_for_key", + "fn inject_child_killer", + "fn child_killer_count" + ], + "server/src/agents/pool/query.rs": [ + "fn available_agents_for_stage", + "fn list_running_merges", + "fn list_agents", + "fn subscribe", + "fn drain_events", + "fn get_log_info" + ], + "server/src/agents/pool/start/mod.rs": [ + "fn start_agent", + "fn start_agent_with_ctx" + ], "server/src/agents/pool/start/spawn.rs": [ "fn maybe_cap_for_merge_fixup", "fn maybe_inject_gate_failure", "fn run_agent_spawn" ], + "server/src/agents/pool/start/tests_concurrency.rs": [], + "server/src/agents/pool/start/tests_selection.rs": [], "server/src/agents/pool/start/validation.rs": [ "fn validate_agent_stage", "fn read_front_matter_agent" ], + "server/src/agents/pool/stop.rs": [ + "fn stop_agent", + "fn remove_agents_for_story" + ], + "server/src/agents/pool/test_helpers.rs": [ + "fn inject_test_agent", + "fn inject_test_agent_with_path", + "fn inject_test_agent_with_completion", + "fn inject_test_agent_with_session", + "fn inject_test_agent_with_live_buffer", + "fn drain_agent_status_buffer", + "fn inject_test_agent_with_root_and_path", + "fn inject_test_agent_with_handle" + ], + "server/src/agents/pool/types.rs": [ + "fn composite_key", + "struct PendingGuard", + "fn new", + "fn disarm", + "struct StoryAgent", + "fn agent_info_from_entry" + ], + "server/src/agents/pool/wait.rs": [ + "fn wait_for_agent" + ], "server/src/agents/pool/worktree.rs": [ "fn create_worktree", "fn get_project_root", @@ -89,12 +728,140 @@ "fn on_coding_transition", "fn on_terminal_transition" ], + "server/src/agents/pty/events.rs": [ + "fn handle_agent_stream_event", + "fn emit_event" + ], + "server/src/agents/pty/mod.rs": [], + "server/src/agents/pty/runner.rs": [ + "fn run_agent_pty_streaming" + ], + "server/src/agents/pty/types.rs": [ + "struct PtyResult", + "fn composite_key", + "struct ChildKillerGuard" + ], + "server/src/agents/runtime/claude_code.rs": [ + "struct ClaudeCodeRuntime", + "fn new" + ], + "server/src/agents/runtime/gemini/api.rs": [ + "struct GeminiFunctionDeclaration", + "fn build_system_instruction", + "fn build_generate_content_request", + "fn parse_usage_metadata" + ], + "server/src/agents/runtime/gemini/mcp.rs": [ + "fn convert_mcp_tools_to_gemini", + "fn convert_mcp_schema_to_gemini" + ], + "server/src/agents/runtime/gemini/mod.rs": [ + "struct GeminiRuntime", + "fn new" + ], + "server/src/agents/runtime/mod.rs": [ + "struct RuntimeContext", + "struct RuntimeResult", + "enum RuntimeStatus", + "trait AgentRuntime" + ], + "server/src/agents/runtime/openai.rs": [ + "struct OpenAiRuntime", + "fn new" + ], + "server/src/agents/session_store.rs": [ + "fn record_session", + "fn lookup_session", + "fn remove_sessions_for_story" + ], + "server/src/agents/token_usage.rs": [ + "struct TokenUsageRecord", + "fn append_record", + "fn read_all", + "fn build_record" + ], + "server/src/chat/commands/ambient.rs": [ + "fn handle_ambient" + ], + "server/src/chat/commands/assign.rs": [ + "fn handle_assign" + ], + "server/src/chat/commands/backlog.rs": [ + "fn handle_backlog", + "fn build_backlog_output", + "fn build_backlog_from_items" + ], + "server/src/chat/commands/cleanup_worktrees.rs": [], + "server/src/chat/commands/cost.rs": [ + "fn handle_cost", + "fn extract_agent_type" + ], + "server/src/chat/commands/coverage.rs": [ + "fn handle_coverage" + ], + "server/src/chat/commands/depends.rs": [ + "fn handle_depends" + ], + "server/src/chat/commands/diff.rs": [ + "fn handle_diff" + ], "server/src/chat/commands/freeze.rs": [ "fn handle_freeze", "fn freeze_by_number", "fn handle_unfreeze", "fn unfreeze_by_number" ], + "server/src/chat/commands/git.rs": [ + "fn handle_git" + ], + "server/src/chat/commands/help.rs": [ + "fn handle_help" + ], + "server/src/chat/commands/loc.rs": [ + "fn handle_loc", + "fn loc_single_file" + ], + "server/src/chat/commands/logs.rs": [ + "fn handle_logs" + ], + "server/src/chat/commands/mod.rs": [ + "mod loc", + "mod unblock", + "struct BotCommand", + "struct CommandDispatch", + "struct CommandContext", + "fn effective_root", + "fn new_test", + "fn commands", + "fn try_handle_command_with_html", + "fn try_handle_command", + "mod tests", + "fn test_services_named", + "fn try_cmd_with_services", + "fn try_cmd_addressed" + ], + "server/src/chat/commands/move_story.rs": [ + "fn handle_move" + ], + "server/src/chat/commands/overview.rs": [ + "fn handle_overview" + ], + "server/src/chat/commands/run_tests.rs": [ + "fn handle_test" + ], + "server/src/chat/commands/setup.rs": [ + "fn handle_setup" + ], + "server/src/chat/commands/show.rs": [ + "fn handle_show" + ], + "server/src/chat/commands/status/labels.rs": [ + "fn story_short_label", + "fn traffic_light_dot" + ], + "server/src/chat/commands/status/mod.rs": [ + "fn handle_status" + ], "server/src/chat/commands/status/render.rs": [ "fn display_section", "fn unmet_deps_from_items", @@ -103,11 +870,334 @@ "fn build_status_from_items" ], "server/src/chat/commands/status/tests.rs": [], + "server/src/chat/commands/timer.rs": [ + "fn handle_timer" + ], + "server/src/chat/commands/triage.rs": [ + "fn handle_triage" + ], + "server/src/chat/commands/unblock.rs": [ + "fn handle_unblock", + "fn unblock_by_number" + ], + "server/src/chat/commands/unreleased.rs": [ + "fn handle_unreleased" + ], + "server/src/chat/history.rs": [ + "type ChatConversationHistory", + "fn load_chat_history", + "fn save_chat_history" + ], + "server/src/chat/lookup.rs": [ + "fn find_story_by_number" + ], + "server/src/chat/mod.rs": [ + "mod commands", + "mod history", + "mod lookup", + "mod test_helpers", + "mod timer", + "mod transport", + "mod util", + "type MessageId", + "trait ChatTransport" + ], + "server/src/chat/test_helpers.rs": [ + "fn write_story_file" + ], + "server/src/chat/timer.rs": [], + "server/src/chat/transport/discord/commands.rs": [ + "struct DiscordContext", + "fn handle_incoming_message" + ], + "server/src/chat/transport/discord/format.rs": [ + "fn markdown_to_discord" + ], + "server/src/chat/transport/discord/gateway.rs": [ + "struct MessageCreateData", + "struct MessageAuthor", + "struct MentionUser", + "fn spawn_gateway" + ], + "server/src/chat/transport/discord/history.rs": [ + "type DiscordConversationHistory", + "fn load_discord_history", + "fn save_discord_history" + ], + "server/src/chat/transport/discord/meta.rs": [ + "struct DiscordTransport", + "fn new" + ], + "server/src/chat/transport/discord/mod.rs": [ + "mod commands", + "mod format", + "mod gateway", + "mod history", + "mod meta" + ], + "server/src/chat/transport/matrix/assign.rs": [ + "enum AssignCommand", + "fn extract_assign_command", + "fn resolve_agent_name", + "fn handle_assign" + ], + "server/src/chat/transport/matrix/bot/context.rs": [ + "struct BotContext", + "fn effective_project_root", + "fn is_gateway", + "fn active_project_url", + "fn proxy_bot_command" + ], + "server/src/chat/transport/matrix/bot/format.rs": [ + "fn format_startup_announcement", + "fn markdown_to_html" + ], + "server/src/chat/transport/matrix/bot/history.rs": [ + "enum ConversationRole", + "struct ConversationEntry", + "struct RoomConversation", + "type ConversationHistory", + "const HISTORY_FILE", + "fn load_history", + "fn save_history" + ], + "server/src/chat/transport/matrix/bot/mentions.rs": [ + "fn mentions_bot", + "fn contains_word", + "fn is_reply_to_bot", + "fn is_addressed_to_other" + ], + "server/src/chat/transport/matrix/bot/messages/handle_message.rs": [ + "fn handle_message" + ], + "server/src/chat/transport/matrix/bot/messages/mod.rs": [ + "fn format_user_prompt" + ], + "server/src/chat/transport/matrix/bot/messages/on_room_message.rs": [ + "fn on_room_message" + ], + "server/src/chat/transport/matrix/bot/mod.rs": [ + "mod context", + "mod format", + "mod history", + "mod mentions", + "mod messages", + "mod permission_listener", + "mod run", + "mod verification" + ], + "server/src/chat/transport/matrix/bot/permission_listener.rs": [ + "fn spawn_permission_listener" + ], + "server/src/chat/transport/matrix/bot/run.rs": [ + "fn run_bot" + ], + "server/src/chat/transport/matrix/bot/verification.rs": [ + "fn check_sender_verified", + "fn on_to_device_verification_request", + "fn on_room_verification_request", + "fn handle_sas_verification" + ], + "server/src/chat/transport/matrix/cleanup_worktrees.rs": [ + "enum CleanupWorktreesCommand", + "fn extract_cleanup_worktrees_command", + "fn handle_cleanup_worktrees" + ], + "server/src/chat/transport/matrix/commands.rs": [], + "server/src/chat/transport/matrix/config/loading.rs": [ + "fn load", + "fn effective_room_ids", + "fn save_ambient_rooms" + ], + "server/src/chat/transport/matrix/config/mod.rs": [], + "server/src/chat/transport/matrix/config/tests_core.rs": [], + "server/src/chat/transport/matrix/config/tests_transports.rs": [], + "server/src/chat/transport/matrix/config/types.rs": [ + "fn default_history_size", + "fn default_permission_timeout_secs", + "fn default_aggregated_notifications_poll_interval_secs", + "fn default_aggregated_notifications_enabled", + "fn default_transport", + "fn default_whatsapp_provider", + "struct BotConfig" + ], "server/src/chat/transport/matrix/delete.rs": [ "enum DeleteCommand", "fn extract_delete_command", "fn handle_delete" ], + "server/src/chat/transport/matrix/htop.rs": [ + "enum HtopCommand", + "struct HtopSession", + "type HtopSessions", + "fn extract_htop_command", + "fn build_htop_message", + "fn run_htop_loop", + "fn handle_htop_start", + "fn handle_htop_stop" + ], + "server/src/chat/transport/matrix/mod.rs": [ + "mod assign", + "mod cleanup_worktrees", + "mod commands", + "mod config", + "mod delete", + "mod htop", + "mod rebuild", + "mod reset", + "mod rmtree", + "mod start", + "mod transport_impl", + "fn spawn_bot" + ], + "server/src/chat/transport/matrix/rebuild.rs": [ + "struct RebuildCommand", + "fn extract_rebuild_command", + "fn handle_rebuild" + ], + "server/src/chat/transport/matrix/reset.rs": [ + "struct ResetCommand", + "fn extract_reset_command", + "fn handle_reset" + ], + "server/src/chat/transport/matrix/rmtree.rs": [ + "enum RmtreeCommand", + "fn extract_rmtree_command", + "fn handle_rmtree" + ], + "server/src/chat/transport/matrix/start.rs": [ + "enum StartCommand", + "fn extract_start_command", + "fn handle_start" + ], + "server/src/chat/transport/matrix/transport_impl.rs": [ + "struct MatrixTransport", + "fn new" + ], + "server/src/chat/transport/mod.rs": [ + "mod discord", + "mod matrix", + "mod slack", + "mod whatsapp" + ], + "server/src/chat/transport/slack/commands/llm.rs": [ + "fn handle_llm_message" + ], + "server/src/chat/transport/slack/commands/mod.rs": [ + "struct SlackSlashCommandPayload", + "struct SlashCommandResponse", + "fn slash_command_to_bot_keyword", + "struct SlackWebhookContext", + "fn handle_incoming_message" + ], + "server/src/chat/transport/slack/format.rs": [ + "fn markdown_to_slack" + ], + "server/src/chat/transport/slack/history.rs": [ + "type SlackConversationHistory", + "fn load_slack_history", + "fn save_slack_history" + ], + "server/src/chat/transport/slack/meta.rs": [ + "struct SlackTransport", + "fn new" + ], + "server/src/chat/transport/slack/mod.rs": [ + "mod commands", + "mod format", + "mod history", + "mod meta", + "mod verify", + "struct SlackEventEnvelope", + "struct SlackEvent", + "fn webhook_receive", + "fn slash_command_receive" + ], + "server/src/chat/transport/slack/verify.rs": [ + "fn verify_slack_signature" + ], + "server/src/chat/transport/whatsapp/commands/llm.rs": [ + "fn handle_llm_message" + ], + "server/src/chat/transport/whatsapp/commands/mod.rs": [ + "fn handle_incoming_message" + ], + "server/src/chat/transport/whatsapp/format.rs": [ + "const WHATSAPP_MAX_MESSAGE_LEN", + "fn chunk_for_whatsapp", + "fn markdown_to_whatsapp" + ], + "server/src/chat/transport/whatsapp/history.rs": [ + "struct MessagingWindowTracker", + "fn new", + "fn with_duration", + "fn record_message", + "fn is_within_window", + "type WhatsAppConversationHistory", + "fn load_whatsapp_history", + "fn save_whatsapp_history" + ], + "server/src/chat/transport/whatsapp/meta.rs": [ + "const GRAPH_API_BASE", + "const ERROR_CODE_OUTSIDE_WINDOW", + "const OUTSIDE_WINDOW_ERR", + "struct WhatsAppTransport", + "fn new", + "fn with_api_base", + "fn send_template_notification", + "fn send_notification" + ], + "server/src/chat/transport/whatsapp/mod.rs": [ + "mod commands", + "mod format", + "mod history", + "mod meta", + "mod twilio", + "mod verify", + "struct WebhookPayload", + "struct WebhookEntry", + "struct WebhookChange", + "struct WebhookValue", + "struct WebhookMetadata", + "struct WebhookMessage", + "struct WebhookText", + "fn extract_text_messages", + "struct VerifyQuery", + "struct WhatsAppWebhookContext", + "fn webhook_verify", + "fn webhook_receive" + ], + "server/src/chat/transport/whatsapp/twilio.rs": [ + "const TWILIO_API_BASE", + "struct TwilioWhatsAppTransport", + "fn new", + "fn with_api_base", + "struct TwilioWebhookForm", + "fn extract_twilio_text_messages" + ], + "server/src/chat/transport/whatsapp/verify.rs": [ + "fn verify_meta_signature", + "fn verify_twilio_signature" + ], + "server/src/chat/util.rs": [ + "fn truncate_at_char_boundary", + "fn is_permission_approval", + "fn strip_prefix_ci", + "fn strip_bot_mention", + "fn drain_complete_paragraphs", + "fn normalize_line_breaks" + ], + "server/src/cli.rs": [ + "struct CliArgs", + "fn parse_cli_args", + "fn print_help", + "fn resolve_path_arg" + ], + "server/src/config/agent_name.rs": [ + "enum AgentName", + "fn as_str", + "fn all" + ], "server/src/config/mod.rs": [ "mod agent_name", "struct ProjectConfig", @@ -121,11 +1211,94 @@ "fn default_agent", "fn render_agent_args" ], + "server/src/config/tests.rs": [], + "server/src/crdt_snapshot/mod.rs": [ + "const DEFAULT_SNAPSHOT_THRESHOLD", + "const DEFAULT_SNAPSHOT_INTERVAL_SECS", + "fn snapshot_threshold", + "fn set_snapshot_threshold", + "struct OpManifestEntry", + "struct Snapshot", + "struct SnapshotAck", + "enum SnapshotMessage", + "fn init", + "fn latest_snapshot", + "fn is_snapshot_leader", + "fn should_trigger_by_count", + "fn generate_snapshot", + "fn extract_story_id_from_op", + "fn begin_coordination", + "fn record_ack", + "fn abort_coordination", + "fn has_pending_coordination", + "fn unacked_peers", + "fn apply_compaction", + "fn latest_op_manifest", + "fn query_attribution" + ], + "server/src/crdt_snapshot/tests.rs": [], + "server/src/crdt_state/gateway_config.rs": [ + "fn write_gateway_active_project", + "fn read_gateway_active_project" + ], + "server/src/crdt_state/lww_maps/active_agents.rs": [ + "fn write_active_agent", + "fn read_all_active_agents", + "fn read_active_agent", + "fn delete_active_agent", + "fn extract_active_agent_view" + ], + "server/src/crdt_state/lww_maps/agent_throttle.rs": [ + "fn write_agent_throttle", + "fn read_all_agent_throttles", + "fn read_agent_throttle", + "fn delete_agent_throttle", + "fn extract_agent_throttle_view" + ], + "server/src/crdt_state/lww_maps/gateway_projects.rs": [ + "fn write_gateway_project", + "fn read_all_gateway_projects", + "fn read_gateway_project", + "fn delete_gateway_project", + "fn extract_gateway_project_view" + ], + "server/src/crdt_state/lww_maps/merge_jobs.rs": [ + "fn write_merge_job", + "fn read_all_merge_jobs", + "fn read_merge_job", + "fn delete_merge_job", + "fn extract_merge_job_view" + ], + "server/src/crdt_state/lww_maps/mod.rs": [ + "fn list_id_at" + ], + "server/src/crdt_state/lww_maps/test_jobs.rs": [ + "fn write_test_job", + "fn read_all_test_jobs", + "fn read_test_job", + "fn delete_test_job", + "fn extract_test_job_view" + ], + "server/src/crdt_state/lww_maps/tests.rs": [], + "server/src/crdt_state/lww_maps/tokens.rs": [ + "fn write_token_usage", + "fn read_all_token_usage", + "fn read_token_usage", + "fn delete_token_usage", + "fn extract_token_view" + ], "server/src/crdt_state/mod.rs": [ "type VectorClock", "mod hex", "fn encode" ], + "server/src/crdt_state/ops.rs": [ + "fn subscribe_ops", + "fn all_ops_json", + "fn our_vector_clock", + "fn ops_since", + "fn apply_remote_op" + ], "server/src/crdt_state/presence.rs": [ "fn our_node_id", "fn sign_challenge", @@ -133,7 +1306,6 @@ "fn write_claim", "fn release_claim", "fn is_claimed_by_us", - "fn write_claim_with_agent_for_test", "fn write_node_presence", "fn write_node_metadata", "fn read_all_node_presence" @@ -153,6 +1325,42 @@ "fn check_unmet_deps_crdt", "fn check_archived_deps_crdt" ], + "server/src/crdt_state/state/apply.rs": [ + "fn apply_and_persist", + "fn emit_event" + ], + "server/src/crdt_state/state/indices.rs": [ + "fn rebuild_index", + "fn rebuild_node_index", + "fn rebuild_token_index", + "fn rebuild_merge_job_index", + "fn rebuild_active_agent_index", + "fn rebuild_test_job_index", + "fn rebuild_agent_throttle_index", + "fn rebuild_gateway_project_index" + ], + "server/src/crdt_state/state/init.rs": [ + "fn init" + ], + "server/src/crdt_state/state/mod.rs": [ + "fn subscribe", + "struct CrdtState", + "static CRDT_STATE", + "fn get_crdt", + "fn get_crdt", + "fn init_for_test" + ], + "server/src/crdt_state/state/statics.rs": [ + "static CRDT_EVENT_TX", + "static SYNC_TX", + "static ALL_OPS", + "static VECTOR_CLOCK", + "static ALL_OPS_TL", + "static VECTOR_CLOCK_TL", + "fn all_ops_lock", + "fn vector_clock_lock", + "fn track_op" + ], "server/src/crdt_state/state/tests.rs": [], "server/src/crdt_state/types.rs": [ "struct CrdtEvent", @@ -214,6 +1422,99 @@ ], "server/src/crdt_state/write/mod.rs": [], "server/src/crdt_state/write/tests.rs": [], + "server/src/crdt_sync/auth.rs": [ + "fn init_trusted_keys", + "fn trusted_keys", + "const TOKEN_TTL_SECS", + "static REQUIRE_TOKEN", + "fn init_token_auth", + "fn add_join_token", + "fn validate_join_token" + ], + "server/src/crdt_sync/client.rs": [ + "const RENDEZVOUS_ERROR_THRESHOLD", + "fn spawn_rendezvous_client", + "fn connect_and_sync" + ], + "server/src/crdt_sync/dispatch/mod.rs": [ + "fn handle_incoming_text", + "fn handle_incoming_binary" + ], + "server/src/crdt_sync/dispatch/snapshot.rs": [ + "fn handle_snapshot_message" + ], + "server/src/crdt_sync/dispatch/tests.rs": [], + "server/src/crdt_sync/handshake/mod.rs": [ + "fn perform_auth_handshake" + ], + "server/src/crdt_sync/handshake/tests.rs": [], + "server/src/crdt_sync/mod.rs": [ + "const AUTH_TIMEOUT_SECS", + "const PING_INTERVAL_SECS", + "const PONG_TIMEOUT_SECS" + ], + "server/src/crdt_sync/rpc.rs": [ + "type Handler", + "struct RpcState", + "fn init_rpc_context", + "fn init_rpc_agents", + "fn dispatch", + "fn try_handle_rpc_text" + ], + "server/src/crdt_sync/rpc_contract.rs": [ + "struct SetModelPreferenceParams", + "struct SetAnthropicApiKeyParams", + "struct PutEditorParams", + "struct OpenFileParams", + "struct OpenProjectParams", + "struct ForgetProjectParams", + "struct BotConfigPayload", + "struct ProjectSettingsPayload", + "struct OkResult", + "struct EditorSettingsResult", + "struct OpenProjectResult", + "struct ContractEntry", + "static CONTRACT_METHODS", + "fn build_contract_snapshot" + ], + "server/src/crdt_sync/server/mod.rs": [ + "fn crdt_sync_handler" + ], + "server/src/crdt_sync/server/tests_keepalive.rs": [], + "server/src/crdt_sync/server/tests_sync.rs": [], + "server/src/crdt_sync/wire.rs": [ + "struct HelloMessage", + "struct ServerAuthMessage", + "struct ChallengeMessage", + "struct AuthMessage", + "enum SyncMessage", + "enum RpcFrame", + "type SyncMessagePublic" + ], + "server/src/crdt_wire.rs": [ + "const WIRE_VERSION", + "enum WireError", + "fn encode", + "fn decode" + ], + "server/src/db/content_store.rs": [ + "enum ContentKey", + "fn as_raw_key", + "static CONTENT_STORE_TL", + "fn get_content_store", + "fn get_content_store", + "fn read_content", + "fn write_content", + "fn delete_content", + "fn ensure_content_store", + "fn all_content_ids", + "fn init_content_store" + ], + "server/src/db/gc.rs": [ + "fn purge_content_keys_for_story", + "fn spawn_content_gc_subscriber", + "fn sweep_zombie_content_on_startup" + ], "server/src/db/mod.rs": [ "mod content_store", "mod gc", @@ -229,18 +1530,302 @@ "fn delete_item", "fn next_item_number" ], + "server/src/db/recover.rs": [ + "struct HalfWritten", + "struct RecoveryResult", + "fn find_half_written_items", + "fn recover_half_written_items" + ], + "server/src/db/shadow_write.rs": [ + "struct PipelineWriteMsg", + "struct PipelineDb", + "static PIPELINE_DB", + "fn init" + ], + "server/src/gateway/mod.rs": [ + "fn build_gateway_route", + "fn run" + ], + "server/src/gateway/tests.rs": [], + "server/src/gateway_relay.rs": [ + "fn spawn_relay_task" + ], + "server/src/http/agents_sse.rs": [ + "fn agent_stream" + ], + "server/src/http/assets.rs": [ + "fn embedded_asset", + "fn embedded_file", + "fn embedded_index" + ], + "server/src/http/context.rs": [ + "enum PermissionDecision", + "struct PermissionForward", + "struct AppContext", + "fn new_test" + ], + "server/src/http/events.rs": [ + "struct EventsQuery", + "fn events_handler" + ], + "server/src/http/gateway/jsonrpc.rs": [ + "struct JsonRpcRequest", + "struct JsonRpcResponse", + "struct JsonRpcError", + "fn success", + "fn error", + "fn to_json_response" + ], + "server/src/http/gateway/mcp.rs": [ + "fn gateway_tool_definitions", + "fn gateway_mcp_post_handler", + "fn gateway_mcp_get_handler" + ], + "server/src/http/gateway/mod.rs": [ + "mod jsonrpc" + ], + "server/src/http/gateway/rest.rs": [ + "fn gateway_mode_handler", + "fn gateway_generate_token_handler", + "fn gateway_assign_agent_handler", + "fn gateway_api_handler", + "fn gateway_add_project_handler", + "fn gateway_remove_project_handler", + "struct BotConfigPayload", + "fn gateway_bot_config_get_handler", + "fn gateway_bot_config_save_handler", + "fn gateway_bot_config_page_handler" + ], + "server/src/http/gateway/websocket.rs": [ + "fn gateway_crdt_sync_handler", + "fn gateway_sled_uplink_handler", + "fn gateway_event_push_handler" + ], + "server/src/http/identity.rs": [ + "struct IdentityResponse", + "fn identity_handler" + ], + "server/src/http/mcp/agent_tools/inspection.rs": [ + "fn tool_get_agent_output", + "fn tool_get_agent_config", + "fn tool_get_agent_remaining_turns_and_budget" + ], + "server/src/http/mcp/agent_tools/lifecycle.rs": [ + "fn tool_start_agent", + "fn tool_stop_agent", + "fn tool_list_agents", + "fn tool_wait_for_agent" + ], + "server/src/http/mcp/agent_tools/mod.rs": [], + "server/src/http/mcp/agent_tools/worktree.rs": [ + "fn tool_create_worktree", + "fn tool_list_worktrees", + "fn tool_remove_worktree", + "fn tool_cleanup_worktrees", + "fn tool_get_editor_command", + "fn get_worktree_commits" + ], + "server/src/http/mcp/diagnostics/mod.rs": [ + "fn tool_get_server_logs", + "fn tool_rebuild_and_restart", + "fn tool_move_story", + "fn tool_dump_crdt", + "fn tool_get_version", + "fn tool_mesh_status", + "fn tool_find_orphaned_items", + "fn tool_recover_half_written_items", + "fn tool_loc_file" + ], + "server/src/http/mcp/diagnostics/permission.rs": [ + "fn tool_prompt_permission" + ], + "server/src/http/mcp/diagnostics/usage.rs": [ + "fn tool_get_token_usage" + ], + "server/src/http/mcp/dispatch.rs": [ + "fn dispatch_tool_call", + "fn handle_tools_call" + ], + "server/src/http/mcp/git_tools.rs": [ + "fn tool_git_status", + "fn tool_git_diff", + "fn tool_git_add", + "fn tool_git_commit", + "fn tool_git_log" + ], + "server/src/http/mcp/merge_tools.rs": [ + "fn tool_merge_agent_work", + "fn tool_get_merge_status", + "fn tool_move_story_to_merge", + "fn tool_report_merge_failure" + ], + "server/src/http/mcp/mod.rs": [ + "mod agent_tools", + "mod diagnostics", + "mod dispatch", + "mod git_tools", + "mod merge_tools", + "mod progress", + "mod qa_tools", + "mod shell_tools", + "mod status_tools", + "mod story_tools", + "mod tools_list", + "mod wizard_tools", + "fn mcp_get_handler", + "fn mcp_post_handler" + ], + "server/src/http/mcp/progress.rs": [ + "struct ProgressEmitter", + "static EMITTER", + "fn emit_progress" + ], + "server/src/http/mcp/qa_tools.rs": [ + "fn tool_request_qa", + "fn tool_approve_qa", + "fn tool_reject_qa", + "fn tool_launch_qa_app" + ], + "server/src/http/mcp/shell_tools/exec.rs": [ + "fn validate_working_dir", + "fn tool_run_command" + ], + "server/src/http/mcp/shell_tools/mod.rs": [], + "server/src/http/mcp/shell_tools/script.rs": [ + "fn tool_run_tests", + "fn tool_get_test_result", + "fn tool_run_build", + "fn tool_run_lint", + "fn tool_run_check" + ], + "server/src/http/mcp/status_tools.rs": [ + "fn tool_status" + ], + "server/src/http/mcp/story_tools/bug.rs": [ + "fn tool_create_bug", + "fn tool_list_bugs", + "fn tool_close_bug" + ], + "server/src/http/mcp/story_tools/criteria.rs": [ + "fn tool_get_story_todos", + "fn tool_record_tests", + "fn tool_ensure_acceptance", + "fn tool_check_criterion", + "fn tool_edit_criterion", + "fn tool_add_criterion", + "fn tool_remove_criterion" + ], "server/src/http/mcp/story_tools/epic.rs": [ "fn tool_create_epic", "fn tool_list_epics", "fn tool_show_epic" ], + "server/src/http/mcp/story_tools/mod.rs": [], + "server/src/http/mcp/story_tools/refactor.rs": [ + "fn tool_create_refactor", + "fn tool_list_refactors" + ], + "server/src/http/mcp/story_tools/spike.rs": [ + "fn tool_create_spike" + ], "server/src/http/mcp/story_tools/story/create.rs": [ "fn tool_create_story", "fn tool_purge_story" ], + "server/src/http/mcp/story_tools/story/delete.rs": [ + "fn tool_accept_story", + "fn tool_delete_story" + ], + "server/src/http/mcp/story_tools/story/freeze.rs": [ + "fn tool_freeze_story", + "fn tool_unfreeze_story" + ], + "server/src/http/mcp/story_tools/story/mod.rs": [], + "server/src/http/mcp/story_tools/story/query.rs": [ + "fn tool_validate_stories", + "fn tool_list_upcoming", + "fn tool_get_pipeline_status" + ], + "server/src/http/mcp/story_tools/story/update.rs": [ + "fn tool_update_story", + "fn tool_unblock_story" + ], + "server/src/http/mcp/tools_list/agent_tools.rs": [ + "fn agent_tools" + ], + "server/src/http/mcp/tools_list/mod.rs": [ + "fn list_tools", + "fn handle_tools_list" + ], + "server/src/http/mcp/tools_list/story_tools.rs": [ + "fn story_tools" + ], + "server/src/http/mcp/tools_list/system_tools.rs": [ + "fn system_tools" + ], + "server/src/http/mcp/wizard_tools.rs": [ + "fn step_output_path", + "fn is_script_step", + "fn write_if_missing", + "fn generation_hint", + "fn tool_wizard_status", + "fn tool_wizard_generate", + "fn tool_wizard_confirm", + "fn tool_wizard_skip", + "fn tool_wizard_retry" + ], + "server/src/http/mod.rs": [ + "mod agents_sse", + "mod assets", + "mod context", + "mod events", + "mod identity", + "mod mcp", + "mod oauth", + "mod test_helpers", + "mod workflow", + "mod gateway", + "mod ws", + "fn parse_port", + "fn resolve_port", + "fn write_port_file", + "fn remove_port_file", + "fn health_handler", + "fn build_routes", + "fn rpc_http_handler", + "fn debug_crdt_handler" + ], + "server/src/http/oauth.rs": [ + "fn oauth_authorize", + "struct CallbackParams", + "fn oauth_callback", + "fn oauth_status" + ], + "server/src/http/test_helpers.rs": [ + "fn test_ctx" + ], + "server/src/http/workflow/bug_ops/bug.rs": [ + "fn create_bug_file", + "fn is_bug_item", + "fn extract_bug_name_from_content", + "fn list_bug_files" + ], "server/src/http/workflow/bug_ops/epic.rs": [ "fn create_epic_file" ], + "server/src/http/workflow/bug_ops/mod.rs": [], + "server/src/http/workflow/bug_ops/refactor.rs": [ + "fn create_refactor_file", + "fn is_refactor_item", + "fn list_refactor_files" + ], + "server/src/http/workflow/bug_ops/spike.rs": [ + "fn create_spike_file" + ], + "server/src/http/workflow/bug_ops/tests.rs": [], + "server/src/http/workflow/mod.rs": [ + "mod pipeline" + ], "server/src/http/workflow/pipeline.rs": [ "struct AgentAssignment", "struct UpcomingStory", @@ -250,6 +1835,23 @@ "fn load_upcoming_stories", "fn validate_story_dirs" ], + "server/src/http/workflow/story_ops/create.rs": [ + "fn create_story_file" + ], + "server/src/http/workflow/story_ops/criterion.rs": [ + "fn check_criterion_in_file", + "fn remove_criterion_from_file", + "fn edit_criterion_in_file", + "fn add_criterion_to_file" + ], + "server/src/http/workflow/story_ops/mod.rs": [], + "server/src/http/workflow/story_ops/update.rs": [ + "fn update_story_in_file" + ], + "server/src/http/workflow/test_results.rs": [ + "fn write_test_results_to_story_file", + "fn read_test_results_from_story_file" + ], "server/src/http/workflow/utils.rs": [ "fn read_story_content", "fn write_story_content", @@ -261,11 +1863,130 @@ "fn next_item_number", "fn create_item_in_backlog" ], + "server/src/http/ws/mod.rs": [ + "fn ws_handler" + ], + "server/src/http/ws/tests.rs": [], + "server/src/io/fs/files.rs": [ + "fn read_file", + "fn write_file", + "struct FileEntry", + "fn list_directory", + "fn list_directory_absolute", + "fn create_directory_absolute", + "fn list_project_files", + "fn list_project_files_impl" + ], + "server/src/io/fs/mod.rs": [ + "mod files", + "mod paths", + "mod preferences", + "mod project", + "mod scaffold" + ], + "server/src/io/fs/paths.rs": [ + "fn resolve_cli_path", + "fn find_story_kit_root", + "fn get_home_directory", + "fn resolve_path_impl", + "fn resolve_path" + ], + "server/src/io/fs/preferences.rs": [ + "fn get_model_preference", + "fn set_model_preference" + ], + "server/src/io/fs/project.rs": [ + "fn ensure_project_root_with_story_kit", + "fn open_project", + "fn close_project", + "fn get_current_project", + "fn get_known_projects", + "fn forget_known_project" + ], + "server/src/io/fs/scaffold/detect/build.rs": [ + "fn detect_script_build" + ], + "server/src/io/fs/scaffold/detect/components.rs": [ + "fn detect_components_toml" + ], + "server/src/io/fs/scaffold/detect/lint.rs": [ + "fn detect_script_lint" + ], + "server/src/io/fs/scaffold/detect/mod.rs": [], + "server/src/io/fs/scaffold/detect/test_script.rs": [ + "fn detect_script_test" + ], + "server/src/io/fs/scaffold/helpers.rs": [ + "fn generate_project_toml", + "fn write_file_if_missing", + "fn write_script_if_missing", + "fn write_story_kit_gitignore", + "fn append_root_gitignore_entries" + ], + "server/src/io/fs/scaffold/mod.rs": [ + "fn scaffold_story_kit" + ], + "server/src/io/fs/scaffold/templates.rs": [ + "const STORY_KIT_README", + "const BOT_TOML_MATRIX_EXAMPLE", + "const BOT_TOML_WHATSAPP_META_EXAMPLE", + "const BOT_TOML_WHATSAPP_TWILIO_EXAMPLE", + "const BOT_TOML_SLACK_EXAMPLE", + "const STORY_KIT_CONTEXT", + "const STORY_KIT_STACK", + "const STORY_KIT_SCRIPT_TEST", + "const STORY_KIT_CLAUDE_MD", + "const STORY_KIT_CLAUDE_SETTINGS", + "const DEFAULT_PROJECT_SETTINGS_TOML", + "const DEFAULT_AGENTS_TOML" + ], + "server/src/io/fs/scaffold/tests.rs": [], + "server/src/io/mod.rs": [ + "mod fs", + "mod onboarding", + "mod search", + "mod shell", + "mod story_metadata", + "mod test_helpers", + "mod watcher", + "mod wizard" + ], + "server/src/io/onboarding.rs": [ + "const TEMPLATE_SENTINEL", + "struct OnboardingStatus", + "fn needs_onboarding", + "fn check_onboarding_status" + ], + "server/src/io/search.rs": [ + "struct SearchResult", + "fn search_files", + "fn search_files_impl" + ], + "server/src/io/shell.rs": [ + "struct CommandOutput", + "fn exec_shell" + ], + "server/src/io/story_metadata/deps.rs": [], "server/src/io/story_metadata/mod.rs": [], "server/src/io/story_metadata/parser.rs": [ "fn parse_unchecked_todos", "fn is_story_frozen_in_store" ], + "server/src/io/story_metadata/types.rs": [ + "enum QaMode", + "fn from_str", + "fn as_str", + "enum ItemType", + "fn from_str", + "fn as_str" + ], + "server/src/io/test_helpers.rs": [ + "fn setup_project", + "fn create_test_files" + ], + "server/src/io/watcher/events.rs": [ + "enum WatcherEvent" + ], "server/src/io/watcher/mod.rs": [ "fn extract_story_id_from_plan_path", "fn plan_state_for_path", @@ -278,6 +1999,166 @@ "fn sweep_done_to_archived" ], "server/src/io/watcher/tests.rs": [], + "server/src/io/wizard.rs": [ + "enum WizardStep", + "const ALL", + "fn label", + "fn index", + "enum StepStatus", + "struct StepState", + "struct WizardState", + "fn load", + "fn save", + "fn init_if_missing", + "fn current_step_index", + "fn set_step_status", + "fn confirm_step", + "fn skip_step", + "fn format_wizard_state" + ], + "server/src/llm/chat/mod.rs": [], + "server/src/llm/chat/run.rs": [ + "struct ProviderConfig", + "struct ChatResult", + "fn get_ollama_models", + "fn cancel_chat", + "fn chat", + "fn side_question" + ], + "server/src/llm/chat/tools.rs": [ + "fn get_tool_definitions", + "fn execute_tool" + ], + "server/src/llm/mod.rs": [ + "mod chat", + "mod oauth", + "mod prompts", + "mod providers", + "mod types" + ], + "server/src/llm/oauth.rs": [ + "struct OAuthCredentials", + "struct CredentialsFile", + "fn read_credentials", + "fn write_credentials", + "struct PoolAccount", + "struct AccountPool", + "fn read_pool", + "fn write_pool", + "fn upsert_pool_account", + "fn refresh_access_token", + "fn select_next_account_for_swap", + "fn swap_to_next_available_account", + "fn extract_login_url_from_error" + ], + "server/src/llm/prompts.rs": [ + "const SYSTEM_PROMPT", + "const ONBOARDING_PROMPT" + ], + "server/src/llm/providers/anthropic/mod.rs": [ + "mod types", + "struct AnthropicProvider", + "fn new", + "fn chat_stream" + ], + "server/src/llm/providers/anthropic/tests.rs": [], + "server/src/llm/providers/anthropic/types.rs": [ + "const ANTHROPIC_API_URL", + "const ANTHROPIC_VERSION", + "struct AnthropicMessage", + "enum AnthropicContent", + "enum AnthropicContentBlock", + "struct AnthropicTool", + "struct StreamEvent" + ], + "server/src/llm/providers/claude_code/events/mod.rs": [ + "fn process_json_event" + ], + "server/src/llm/providers/claude_code/events/stream.rs": [ + "fn handle_stream_event" + ], + "server/src/llm/providers/claude_code/events/tests.rs": [], + "server/src/llm/providers/claude_code/mod.rs": [ + "struct ClaudeCodeResult", + "struct ClaudeCodeProvider", + "fn new", + "fn chat_stream" + ], + "server/src/llm/providers/claude_code/parse.rs": [ + "fn parse_assistant_message", + "fn parse_tool_results" + ], + "server/src/llm/providers/mod.rs": [ + "mod anthropic", + "mod claude_code", + "mod ollama" + ], + "server/src/llm/providers/ollama.rs": [ + "struct OllamaProvider", + "fn new", + "fn get_models", + "fn chat_stream" + ], + "server/src/llm/types.rs": [ + "enum Role", + "struct Message", + "struct ToolCall", + "struct FunctionCall", + "struct ToolDefinition", + "struct ToolFunctionDefinition", + "struct CompletionResponse", + "trait ModelProvider" + ], + "server/src/log_buffer.rs": [ + "enum LogLevel", + "fn as_str", + "fn from_str_ci", + "struct LogEntry", + "fn formatted", + "struct LogBuffer", + "fn subscribe", + "fn set_log_dir", + "fn push_entry", + "fn read_from_disk", + "fn get_recent", + "fn get_recent_entries", + "fn global" + ], + "server/src/main.rs": [ + "mod crdt_snapshot", + "mod crdt_state", + "mod crdt_sync", + "mod crdt_wire", + "mod gateway", + "mod log_buffer", + "mod mesh", + "mod node_identity", + "mod pipeline_state", + "mod rebuild", + "mod services", + "mod sled_uplink", + "mod validation" + ], + "server/src/mesh.rs": [ + "struct MeshManager", + "fn new", + "fn reconcile", + "fn active_count", + "fn spawn_mesh_discovery" + ], + "server/src/node_identity.rs": [ + "type ChallengeHex", + "type SignatureHex", + "fn generate_challenge", + "fn sign_challenge", + "fn verify_challenge", + "fn verify_message_strict", + "fn public_key_hex", + "struct NodeIdentity", + "fn load_or_create_keypair_file", + "fn init_identity", + "fn get_identity" + ], "server/src/pipeline_state/apply.rs": [ "enum ApplyError", "fn apply_transition", @@ -302,6 +2183,16 @@ "fn read_all_typed", "fn read_typed" ], + "server/src/pipeline_state/subscribers.rs": [ + "fn format_audit_entry", + "struct AuditLogSubscriber", + "fn spawn_audit_log_subscriber", + "struct MatrixBotSubscriber", + "struct FileRendererSubscriber", + "struct PipelineItemsSubscriber", + "struct AutoAssignSubscriber", + "struct WebUiBroadcastSubscriber" + ], "server/src/pipeline_state/tests.rs": [], "server/src/pipeline_state/transition.rs": [ "enum PipelineEvent", @@ -335,6 +2226,35 @@ "fn stage_label", "fn stage_dir_name" ], + "server/src/rebuild.rs": [ + "enum ShutdownReason", + "struct BotShutdownNotifier", + "fn new", + "fn notify_startup", + "fn notify", + "fn rebuild_and_restart" + ], + "server/src/service/agents/cost_rollup.rs": [ + "struct CostRollup", + "fn as_summary", + "fn get_rollup", + "fn set_rollup", + "fn all_rollups", + "fn init_from_disk" + ], + "server/src/service/agents/io.rs": [ + "fn is_archived", + "fn read_agent_log", + "fn read_token_records", + "fn load_config", + "fn read_test_results_from_file", + "fn read_work_item_from_stage", + "mod test_helpers", + "fn make_huskies_dir", + "fn make_stage_dirs", + "fn make_project_toml", + "fn write_story_file" + ], "server/src/service/agents/mod.rs": [ "mod cost_rollup", "mod selection", @@ -351,10 +2271,258 @@ "fn get_work_item_token_cost", "fn get_all_token_usage" ], + "server/src/service/agents/selection.rs": [ + "fn collect_output_text" + ], + "server/src/service/agents/token.rs": [ + "struct AgentTokenCost", + "struct TokenCostSummary", + "fn aggregate_for_story" + ], + "server/src/service/anthropic/io.rs": [ + "const KEY_ANTHROPIC_API_KEY", + "fn api_key_exists", + "fn get_api_key", + "fn save_api_key", + "fn fetch_models" + ], + "server/src/service/anthropic/mod.rs": [ + "mod io", + "enum Error", + "struct ModelSummary", + "struct ModelsResponse", + "struct ModelInfo", + "fn get_api_key_exists", + "fn get_api_key", + "fn set_api_key", + "fn list_models", + "fn list_models_from", + "fn parse_models_response" + ], + "server/src/service/bot_command/io.rs": [ + "fn call_assign", + "fn call_start", + "fn call_delete", + "fn call_rmtree", + "fn call_rebuild", + "fn call_timer", + "fn call_htop", + "fn call_sync" + ], + "server/src/service/bot_command/mod.rs": [ + "mod io", + "mod parse", + "enum Error", + "fn execute" + ], + "server/src/service/bot_command/parse.rs": [ + "struct AssignArgs", + "struct StartArgs", + "fn parse_assign", + "fn parse_start", + "fn parse_number" + ], + "server/src/service/common/item_id.rs": [ + "fn extract_item_number", + "fn has_valid_id_prefix" + ], + "server/src/service/common/mod.rs": [ + "mod item_id" + ], + "server/src/service/diagnostics/io.rs": [ + "fn add_permission_rule" + ], + "server/src/service/diagnostics/mod.rs": [ + "mod io", + "mod permission", + "enum Error" + ], + "server/src/service/diagnostics/permission.rs": [ + "fn generate_permission_rule", + "fn is_dominated_by_wildcard" + ], + "server/src/service/events/buffer.rs": [ + "const MAX_BUFFER_SIZE", + "enum StoredEvent", + "fn timestamp_ms", + "struct EventBuffer", + "fn new", + "fn push", + "fn events_since" + ], + "server/src/service/events/io.rs": [ + "fn now_ms", + "fn subscribe_to_watcher" + ], + "server/src/service/events/mod.rs": [ + "mod buffer", + "mod io", + "enum Error", + "fn events_since" + ], + "server/src/service/file_io/io.rs": [ + "fn read_file", + "fn write_file", + "fn list_directory", + "fn list_directory_absolute", + "fn create_directory_absolute", + "fn get_home_directory", + "fn list_project_files", + "fn search_files", + "fn exec_shell" + ], + "server/src/service/file_io/mod.rs": [ + "mod io", + "enum Error", + "fn validate_path", + "fn read_file", + "fn write_file", + "fn list_directory", + "fn list_directory_absolute", + "fn create_directory_absolute", + "fn get_home_directory", + "fn list_project_files", + "fn search_files", + "fn exec_shell" + ], + "server/src/service/gateway/aggregation.rs": [ + "fn format_aggregate_status_compact" + ], + "server/src/service/gateway/config.rs": [ + "struct ProjectEntry", + "fn with_url", + "fn has_url", + "struct GatewayConfig", + "fn validate_config", + "fn validate_project_exists", + "fn toml_string", + "fn serialize_bot_config" + ], + "server/src/service/gateway/io.rs": [ + "fn load_config", + "fn save_config", + "fn read_bot_config_raw", + "struct BotConfigFields", + "fn write_bot_config", + "fn proxy_mcp_call", + "fn proxy_mcp_call_sse", + "fn fetch_one_project_pipeline_status", + "fn fetch_all_project_pipeline_statuses", + "fn fetch_one_project_pipeline_items", + "fn fetch_all_project_pipeline_items", + "fn fetch_pipeline_status_for_project", + "fn check_project_health", + "fn write_gateway_mcp_json", + "fn has_huskies_dir", + "fn ensure_directory", + "fn scaffold_project", + "fn init_wizard_state", + "fn spawn_gateway_broadcaster_forwarder", + "fn spawn_gateway_notification_poller", + "type ActiveProject", + "fn spawn_gateway_bot" + ], + "server/src/service/gateway/mod.rs": [ + "mod aggregation", + "mod config", + "mod io", + "mod polling", + "struct GatewayStatusEvent", + "const HEARTBEAT_MAX_AGE_MS", + "const MCP_VIA_WS_TIMEOUT_MS", + "struct SledConnection", + "fn is_alive", + "fn proxy_mcp_via_ws", + "enum Error", + "struct PendingToken", + "struct GatewayState", + "fn new", + "fn active_url", + "fn register_sled_connection", + "fn deregister_sled_connection", + "fn active_sled_connection", + "fn proxy_active_mcp", + "fn switch_project", + "fn generate_join_token", + "fn register_agent", + "fn remove_agent", + "fn assign_agent", + "fn heartbeat_agent", + "fn list_agents", + "fn add_project", + "fn remove_project", + "fn init_project", + "fn broadcast_status_event", + "fn subscribe_status_events", + "fn save_bot_config_and_restart" + ], + "server/src/service/gateway/polling.rs": [ + "fn format_gateway_event" + ], + "server/src/service/git_ops/io.rs": [ + "fn validate_worktree_path", + "fn run_git", + "fn run_git_owned", + "struct DirtyFiles", + "fn is_clean", + "fn read_dirty_files_sync" + ], + "server/src/service/git_ops/mod.rs": [ + "mod io", + "mod path_guard", + "mod porcelain", + "enum Error" + ], + "server/src/service/git_ops/path_guard.rs": [ + "fn is_under_root" + ], + "server/src/service/git_ops/porcelain.rs": [ + "fn parse_git_status_porcelain" + ], + "server/src/service/merge/io.rs": [], + "server/src/service/merge/mod.rs": [ + "mod io", + "mod status", + "enum Error" + ], + "server/src/service/merge/status.rs": [ + "fn format_merge_status_message" + ], + "server/src/service/mod.rs": [ + "mod agents", + "mod anthropic", + "mod bot_command", + "mod common", + "mod diagnostics", + "mod events", + "mod file_io", + "mod gateway", + "mod git_ops", + "mod merge", + "mod notifications", + "mod oauth", + "mod pipeline", + "mod project", + "mod qa", + "mod settings", + "mod shell", + "mod status", + "mod story", + "mod timer", + "mod wizard", + "mod work_item", + "mod ws" + ], "server/src/service/notifications/events.rs": [ "enum EventAction", "fn classify" ], + "server/src/service/notifications/filter.rs": [ + "const RATE_LIMIT_DEBOUNCE", + "const STAGE_TRANSITION_DEBOUNCE", + "const AGENT_EVENT_DEBOUNCE", + "fn should_send_rate_limit" + ], "server/src/service/notifications/format.rs": [ "fn stage_display_name", "fn format_stage_notification", @@ -370,6 +2538,11 @@ "server/src/service/notifications/io/listener.rs": [ "fn spawn_notification_listener" ], + "server/src/service/notifications/io/mock_transport.rs": [ + "type CallLog", + "struct MockTransport", + "fn new" + ], "server/src/service/notifications/io/mod.rs": [ "mod stage_subscriber", "fn read_story_name" @@ -377,8 +2550,336 @@ "server/src/service/notifications/io/stage_subscriber.rs": [ "fn spawn_stage_notification_subscriber" ], + "server/src/service/notifications/io/tests_notifications.rs": [], "server/src/service/notifications/io/tests_stage.rs": [], "server/src/service/notifications/io/tests_transition.rs": [], + "server/src/service/notifications/mod.rs": [ + "mod events", + "mod filter", + "mod format", + "mod io", + "mod route", + "enum Error" + ], + "server/src/service/notifications/route.rs": [ + "fn rooms_for_notification" + ], + "server/src/service/oauth/flow.rs": [ + "struct AccountInfo", + "enum AccountStatus", + "fn build_account_info", + "struct PendingFlow", + "struct FlowStatus", + "fn is_token_expired", + "fn build_flow_status", + "fn unauthenticated_status" + ], + "server/src/service/oauth/io.rs": [ + "struct TokenExchangeResult", + "fn current_time_ms", + "fn exchange_code_for_tokens", + "fn save_credentials", + "fn fetch_user_email", + "fn load_all_accounts" + ], + "server/src/service/oauth/mod.rs": [ + "mod flow", + "mod io", + "mod pkce", + "enum Error", + "struct OAuthState", + "fn new", + "fn callback_url", + "fn initiate_flow", + "fn exchange_code", + "fn check_all_accounts" + ], + "server/src/service/oauth/pkce.rs": [ + "const CLIENT_ID", + "const SCOPES", + "fn random_string", + "fn compute_code_challenge", + "fn base64url_encode", + "fn percent_encode", + "fn build_authorize_url" + ], + "server/src/service/pipeline/mod.rs": [ + "fn aggregate_pipeline_counts" + ], + "server/src/service/project/io.rs": [ + "fn validate_path", + "fn ensure_scaffold", + "fn set_project_root", + "fn get_project_root_from_state", + "fn persist_open_project", + "fn clear_project", + "fn read_known_projects", + "fn save_known_projects", + "fn restore_from_store" + ], + "server/src/service/project/mod.rs": [ + "mod io", + "mod selection", + "enum Error", + "fn open_project", + "fn close_project", + "fn get_current_project", + "fn get_known_projects", + "fn forget_known_project" + ], + "server/src/service/project/selection.rs": [ + "fn promote_to_front", + "fn project_name_from_path" + ], + "server/src/service/qa/io.rs": [ + "fn find_free_port", + "fn merge_spike_branch_to_master" + ], + "server/src/service/qa/lifecycle.rs": [ + "fn is_spike" + ], + "server/src/service/qa/mod.rs": [ + "mod io", + "mod lifecycle", + "enum Error" + ], + "server/src/service/settings/io.rs": [ + "fn read_config_toml", + "fn write_config_toml", + "fn spawn_editor" + ], + "server/src/service/settings/mod.rs": [ + "mod io", + "mod project", + "mod validate", + "const EDITOR_COMMAND_KEY", + "enum Error", + "fn load_project_settings", + "fn write_project_settings", + "fn get_editor_command", + "fn open_file_in_editor" + ], + "server/src/service/settings/project.rs": [ + "struct ProjectSettings", + "fn settings_from_config", + "fn merge_settings_into_toml" + ], + "server/src/service/settings/validate.rs": [ + "fn validate_project_settings" + ], + "server/src/service/shell/io.rs": [ + "fn validate_working_dir" + ], + "server/src/service/shell/mod.rs": [ + "mod io", + "mod parse_diagnostics", + "mod path_guard", + "enum Error" + ], + "server/src/service/shell/parse_diagnostics.rs": [ + "struct Diagnostic", + "struct DiagnosticSummary", + "fn parse_diagnostics", + "fn summarise" + ], + "server/src/service/shell/path_guard.rs": [ + "static BLOCKED_PATTERNS", + "static BLOCKED_BINARIES", + "fn is_dangerous", + "fn truncate_output", + "fn parse_test_counts", + "fn extract_count" + ], + "server/src/service/status/buffer.rs": [ + "const DEFAULT_CAPACITY", + "enum BufferedItem", + "struct StatusEventBuffer", + "fn new", + "fn with_capacity", + "fn drain", + "fn clear", + "fn format_buffered_items" + ], + "server/src/service/status/format.rs": [ + "fn format_status_event" + ], + "server/src/service/status/mod.rs": [ + "mod buffer", + "mod format", + "enum StatusEvent", + "struct Subscription", + "fn enable", + "fn disable", + "fn is_enabled", + "fn recv", + "fn enabled_flag", + "struct StatusBroadcaster", + "fn new", + "fn publish", + "fn subscribe", + "fn subscribe_with_state" + ], + "server/src/service/story/criteria.rs": [ + "fn parse_test_cases" + ], + "server/src/service/story/front_matter.rs": [ + "fn is_valid_stage", + "fn stage_alias_to_dir" + ], + "server/src/service/story/io.rs": [], + "server/src/service/story/lifecycle.rs": [], + "server/src/service/story/mod.rs": [ + "mod criteria", + "mod front_matter", + "mod io", + "mod lifecycle", + "mod validation", + "enum Error" + ], + "server/src/service/story/validation.rs": [ + "fn is_valid_story_name", + "fn validate_criterion_index" + ], + "server/src/service/timer/io.rs": [ + "struct TimerStore", + "fn load", + "fn add", + "fn remove", + "fn list", + "fn upsert", + "fn take_due", + "fn next_occurrence_of_hhmm", + "fn resolve_story_id", + "fn tick_once", + "fn spawn_rate_limit_auto_scheduler" + ], + "server/src/service/timer/mod.rs": [ + "mod io", + "mod parse", + "mod persist", + "mod schedule", + "enum Error", + "fn schedule_timer", + "fn cancel_timer", + "fn handle_timer_command" + ], + "server/src/service/timer/parse.rs": [ + "enum TimerCommand", + "fn extract_timer_command", + "fn format_in_timezone" + ], + "server/src/service/timer/persist.rs": [ + "struct TimerEntry", + "fn serialize_timers", + "fn deserialize_timers" + ], + "server/src/service/timer/schedule.rs": [ + "fn next_occurrence_at" + ], + "server/src/service/wizard/io.rs": [ + "fn load", + "fn save", + "fn list_dir_names", + "fn detect_project_tools", + "fn write_step_file" + ], + "server/src/service/wizard/mod.rs": [ + "mod io", + "mod state_machine", + "enum Error", + "fn mark_step_confirmed", + "fn mark_step_skipped", + "fn status", + "fn generate", + "fn confirm", + "fn skip", + "fn retry", + "fn get_state", + "fn set_step_content", + "fn write_step_file" + ], + "server/src/service/wizard/state_machine.rs": [ + "struct ProjectTools", + "fn is_bare_project", + "fn is_script_step", + "fn step_slug", + "fn step_output_path", + "fn generation_hint" + ], + "server/src/service/work_item/assign.rs": [ + "fn assign_and_start" + ], + "server/src/service/work_item/delete.rs": [ + "struct DeleteOutcome", + "fn delete_work_item" + ], + "server/src/service/work_item/freeze.rs": [ + "enum FreezeStatus", + "enum UnfreezeStatus", + "fn freeze", + "fn unfreeze" + ], + "server/src/service/work_item/mod.rs": [ + "mod assign", + "mod delete", + "mod freeze" + ], + "server/src/service/ws/dispatch.rs": [ + "enum DispatchResult", + "fn dispatch_outer", + "enum InnerDispatchResult", + "fn dispatch_inner", + "fn resolve_permission", + "fn error_response", + "fn permission_request_response" + ], + "server/src/service/ws/error.rs": [ + "enum Error" + ], + "server/src/service/ws/io.rs": [ + "fn load_initial_pipeline_state", + "fn check_onboarding", + "fn load_wizard_state", + "fn load_recent_logs", + "fn subscribe_logs", + "fn subscribe_watcher", + "fn subscribe_status", + "fn subscribe_reconciliation" + ], + "server/src/service/ws/message/convert.rs": [ + "fn watcher_event_to_response", + "fn needs_pipeline_refresh", + "fn pipeline_state_to_response", + "fn wizard_steps_to_info" + ], + "server/src/service/ws/message/mod.rs": [ + "mod convert", + "mod request", + "mod response" + ], + "server/src/service/ws/message/request.rs": [ + "enum WsRequest" + ], + "server/src/service/ws/message/response.rs": [ + "struct WizardStepInfo", + "enum WsResponse" + ], + "server/src/service/ws/mod.rs": [ + "mod dispatch", + "mod error", + "mod io", + "mod message" + ], + "server/src/services.rs": [ + "struct Services", + "fn new_test" + ], + "server/src/sled_uplink.rs": [ + "struct UplinkConfig", + "const HEARTBEAT_INTERVAL_SECS", + "struct UplinkEnvelope", + "fn spawn_uplink_task" + ], "server/src/startup/bots.rs": [ "struct BotContexts", "fn build_bot_contexts", @@ -386,12 +2887,33 @@ "fn spawn_notification_listeners", "fn notify_shutdown" ], + "server/src/startup/mod.rs": [ + "mod bots", + "mod project", + "mod tick_loop" + ], + "server/src/startup/project.rs": [ + "fn open_project_root", + "fn init_subsystems", + "fn configure_crdt_sync" + ], "server/src/startup/tick_loop.rs": [ "fn spawn_event_bridges", "fn spawn_tick_loop", "fn spawn_gateway_relay", "fn spawn_startup_reconciliation" ], + "server/src/state.rs": [ + "struct SessionState", + "fn get_project_root" + ], + "server/src/store.rs": [ + "trait StoreOps", + "struct JsonFileStore", + "fn new", + "fn from_path", + "fn path" + ], "server/src/validation/error.rs": [ "enum ValidationError", "fn format_errors_as_json" @@ -427,6 +2949,24 @@ "struct CreateEpicRequest", "fn from_json", "fn success_criteria_strings", + "struct CreateBugRequest", + "fn from_json", + "fn depends_on_ids", + "fn acceptance_criteria_strings", + "struct CreateRefactorRequest", + "fn from_json", + "fn depends_on_ids", + "fn acceptance_criteria_strings", + "struct CreateSpikeRequest", + "fn from_json", + "fn depends_on_ids", + "fn acceptance_criteria_strings", + "struct UpdateStoryRequest", + "fn from_json", + "struct AddCriterionRequest", + "fn from_json", + "struct EditCriterionRequest", + "fn from_json", "struct MoveStoryRequest", "fn from_json", "struct MoveStoryToMergeRequest", @@ -440,12 +2980,37 @@ "server/src/validation/sanitize.rs": [ "fn sanitize_html" ], + "server/src/workflow.rs": [ + "enum TestStatus", + "struct TestCaseResult", + "struct AcceptanceDecision", + "struct StoryTestResults", + "struct WorkflowState", + "fn record_test_results_validated", + "struct CoverageReport", + "fn evaluate_acceptance_with_coverage" + ], "server/src/worktree/cleanup.rs": [ "struct CleanupReport", "fn run_cleanup", "fn run_cleanup_with_lookup", "fn format_report" ], + "server/src/worktree/create.rs": [ + "fn create_worktree", + "fn run_setup_commands", + "fn run_teardown_commands", + "fn install_pre_commit_hook", + "fn run_shell_command" + ], + "server/src/worktree/git.rs": [ + "fn branch_name", + "fn detect_base_branch", + "fn configure_sparse_checkout", + "fn create_worktree_sync", + "fn remove_worktree_sync", + "fn migrate_slug_paths" + ], "server/src/worktree/mod.rs": [ "struct WorktreeInfo", "struct WorktreeListEntry", @@ -461,179 +3026,5 @@ "server/src/worktree/sweep.rs": [ "fn worktree_should_be_swept", "fn sweep_with_lookup" - ], - "server/src/chat/commands/depends.rs": [ - "fn handle_depends" - ], - "server/src/chat/commands/diff.rs": [ - "fn handle_diff" - ], - "server/src/chat/commands/logs.rs": [ - "fn handle_logs" - ], - "server/src/chat/commands/move_story.rs": [ - "fn handle_move" - ], - "server/src/chat/commands/overview.rs": [ - "fn handle_overview" - ], - "server/src/chat/commands/show.rs": [ - "fn handle_show" - ], - "server/src/chat/commands/triage.rs": [ - "fn handle_triage" - ], - "server/src/chat/commands/unblock.rs": [ - "fn handle_unblock", - "fn unblock_by_number" - ], - "server/src/http/mcp/story_tools/story/freeze.rs": [ - "fn tool_freeze_story", - "fn tool_unfreeze_story" - ], - "vendor/rusqlite/examples/load_extension.rs": [], - "vendor/rusqlite/examples/loadable_extension.rs": [], - "vendor/rusqlite/src/auto_extension.rs": [ - "type AutoExtension", - "type RawAutoExtension", - "fn cancel_auto_extension", - "fn reset_auto_extension" - ], - "vendor/rusqlite/src/backup.rs": [ - "fn backup", - "fn restore", - "enum StepResult", - "struct Progress", - "struct Backup", - "fn new", - "fn new_with_names", - "fn progress", - "fn step", - "fn run_to_completion" - ], - "vendor/rusqlite/src/blob/mod.rs": [ - "struct Blob", - "fn blob_open", - "fn reopen", - "fn size", - "fn len", - "fn is_empty", - "fn close", - "struct ZeroBlob" - ], - "vendor/rusqlite/src/busy.rs": [ - "fn busy_timeout", - "fn busy_handler" - ], - "vendor/rusqlite/src/cache.rs": [ - "fn prepare_cached", - "fn set_prepared_statement_cache_capacity", - "fn flush_prepared_statement_cache", - "struct StatementCache", - "struct CachedStatement", - "fn discard", - "fn with_capacity" - ], - "vendor/rusqlite/src/collation.rs": [ - "fn create_collation", - "fn collation_needed", - "fn remove_collation" - ], - "vendor/rusqlite/src/config.rs": [ - "enum DbConfig", - "fn db_config", - "fn set_db_config" - ], - "vendor/rusqlite/src/context.rs": [], - "vendor/rusqlite/src/functions.rs": [ - "struct Context", - "fn len", - "fn is_empty", - "fn get", - "fn get_raw", - "fn get_arg", - "fn get_subtype", - "fn get_or_create_aux", - "fn set_aux", - "fn get_aux", - "struct ConnectionRef", - "type SubType", - "trait SqlFnOutput", - "struct SqlFnArg", - "trait Aggregate", - "trait WindowAggregate", - "struct FunctionFlags", - "fn create_scalar_function", - "fn create_aggregate_function", - "fn create_window_function", - "fn remove_function" - ], - "vendor/rusqlite/src/limits.rs": [ - "enum Limit", - "fn limit", - "fn set_limit" - ], - "vendor/rusqlite/src/serialize.rs": [ - "struct SharedData", - "struct OwnedData", - "enum Data", - "fn serialize", - "fn deserialize_read_exact", - "fn deserialize_bytes", - "fn deserialize" - ], - "vendor/rusqlite/src/types/chrono.rs": [], - "vendor/rusqlite/src/types/jiff.rs": [], - "vendor/rusqlite/src/types/serde_json.rs": [], - "vendor/rusqlite/src/types/time.rs": [], - "vendor/rusqlite/src/types/url.rs": [], - "vendor/rusqlite/src/unlock_notify.rs": [], - "vendor/rusqlite/src/vtab/csvtab.rs": [ - "fn load_module" - ], - "vendor/rusqlite/src/vtab/series.rs": [ - "fn load_module" - ], - "vendor/rusqlite/src/vtab/vtablog.rs": [ - "fn load_module" - ], - "vendor/rusqlite/tests/config_log.rs": [], - "vendor/rusqlite/tests/deny_single_threaded_sqlite_config.rs": [], - "vendor/rusqlite/tests/vtab.rs": [], - "vendor/sqlx-sqlite/src/regexp.rs": [ - "fn register" - ], - "vendor/sqlx-sqlite/src/types/mod.rs": [], - "crates/bft-json-crdt/src/list_crdt.rs": [ - "struct ListCrdt", - "fn new", - "fn our_seq", - "fn advance_seq", - "fn insert", - "fn insert_idx", - "fn id_at", - "fn delete", - "fn find_idx", - "fn apply", - "fn iter", - "fn view" - ], - "server/src/db/content_store.rs": [ - "enum ContentKey", - "fn as_raw_key", - "static CONTENT_STORE_TL", - "fn get_content_store", - "fn get_content_store", - "fn read_content", - "fn write_content", - "fn delete_content", - "fn ensure_content_store", - "fn all_content_ids", - "fn init_content_store" - ], - "server/src/db/gc.rs": [ - "fn purge_content_keys_for_story", - "fn spawn_content_gc_subscriber", - "fn sweep_zombie_content_on_startup" ] } \ No newline at end of file diff --git a/crates/source-map-gen/src/regen_main.rs b/crates/source-map-gen/src/regen_main.rs new file mode 100644 index 00000000..586676c5 --- /dev/null +++ b/crates/source-map-gen/src/regen_main.rs @@ -0,0 +1,30 @@ +//! CLI binary that regenerates `.huskies/source-map.json` from scratch. +//! +//! Usage: `source-map-regen [--project-root ]` +//! +//! Scans every tracked Rust and TypeScript file in the project via `git ls-files`, +//! extracts public item signatures, and writes a fresh sorted JSON map. The output +//! is byte-identical across runs on the same source tree (deterministic). +//! +//! Intended to be called from the pre-commit quality gate (`script/check`) so that +//! every commit captures an accurate, stale-entry-free snapshot of the source map. + +use source_map_gen::regenerate_source_map; +use std::path::Path; + +fn main() { + let args: Vec = std::env::args().collect(); + let root = parse_arg(&args, "--project-root").unwrap_or_else(|| ".".to_string()); + let root_path = Path::new(&root); + let map_path = root_path.join(".huskies").join("source-map.json"); + + if let Err(e) = regenerate_source_map(root_path, &map_path) { + eprintln!("source-map-regen: {e}"); + std::process::exit(1); + } +} + +/// Parse a flag value from an argument list (e.g. `--flag value`). +fn parse_arg(args: &[String], flag: &str) -> Option { + args.windows(2).find(|w| w[0] == flag).map(|w| w[1].clone()) +}