{ "generatedAt": "2026-05-22T06:43:41.512Z", "targetPath": "flows/web-client-wasm.md", "targetKind": "folder", "metadataDraft": { "sectionProvenance": [ { "sectionId": "dependency_map_graph", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] }, { "sectionId": "startup_runtime_graph", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] }, { "sectionId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] }, { "sectionId": "control_flow_flow_1_nexusreader_web_client_program_cs", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] }, { "sectionId": "contracts_flow_1_nexusreader_web_client_program_cs", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] }, { "sectionId": "layer_flow_1_nexusreader_web_client_program_cs", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] }, { "sectionId": "failure_flow_1_nexusreader_web_client_program_cs", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] }, { "sectionId": "method_flows_graph", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] } ], "claimGrounding": [], "nodeMetadata": [ { "id": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "label": "AuthenticationHeaderHandler", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "DelegatingHandler that attaches JWTs to trusted requests and orchestrates token refresh and retry behavior.", "responsibility": "DelegatingHandler that attaches JWTs to trusted requests and orchestrates token refresh and retry behavior.", "technologyHints": [ "csharp", "DelegatingHandler", "Token auto-refresh", "Semaphore-based concurrency guard", "Scoped service resolution for transient operations" ], "detailItems": [ { "label": "Owner", "value": "AuthenticationHeaderHandler" }, { "label": "Signature", "value": "(INativeStorageService storageService, IServiceProvider serviceProvider) -> AuthenticationHeaderHandler" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "Store injected services @L23" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "4" }, { "label": "_storageService", "value": "INativeStorageService required" }, { "label": "_serviceProvider", "value": "IServiceProvider required" }, { "label": "TokenKey", "value": "const string required" }, { "label": "_refreshSemaphore", "value": "SemaphoreSlim required" }, { "label": "Domain", "value": "Authentication, JWT, Token refresh" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs:1:1", "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "flow_type_nexusreader_web_client_handlers_authenticationheaderhandler_cs_authenticationheaderhandler_14", "label": "AuthenticationHeaderHandler", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "DelegatingHandler that attaches JWTs to trusted requests and orchestrates token refresh and retry behavior.", "responsibility": "DelegatingHandler that attaches JWTs to trusted requests and orchestrates token refresh and retry behavior.", "technologyHints": [ "csharp", "DelegatingHandler", "Token auto-refresh", "Semaphore-based concurrency guard", "Scoped service resolution for transient operations" ], "detailItems": [ { "label": "Owner", "value": "AuthenticationHeaderHandler" }, { "label": "Signature", "value": "(INativeStorageService storageService, IServiceProvider serviceProvider) -> AuthenticationHeaderHandler" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "Store injected services @L23" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "4" }, { "label": "_storageService", "value": "INativeStorageService required" }, { "label": "_serviceProvider", "value": "IServiceProvider required" }, { "label": "TokenKey", "value": "const string required" }, { "label": "_refreshSemaphore", "value": "SemaphoreSlim required" }, { "label": "Domain", "value": "Authentication, JWT, Token refresh" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs:14:1", "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 14, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 14, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "label": "Program.cs", "diagramId": "dependency_map_graph", "nodeRole": "service", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:1:1", "path": "NexusReader.Web.Client/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "label": "ThrowingDbContextFactory", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "responsibility": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Signature", "value": "() -> AppDbContext" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "NotSupportedException @L63" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:61:1", "path": "NexusReader.Web.Client/Program.cs", "line": 61, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 61, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "label": "ThrowingEmbeddingGenerator", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "responsibility": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:66:1", "path": "NexusReader.Web.Client/Program.cs", "line": 66, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 66, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "label": "ThrowingBookStorageService", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IBookStorageService implementation that throws for all file storage operations in WASM.", "responsibility": "IBookStorageService implementation that throws for all file storage operations in WASM.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "ErrorMessage", "value": "string required" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:74:1", "path": "NexusReader.Web.Client/Program.cs", "line": 74, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "label": "ThrowingEbookRepository", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IEbookRepository implementation that throws for all repository operations in WASM.", "responsibility": "IEbookRepository implementation that throws for all repository operations in WASM.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "ErrorMessage", "value": "string required" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:84:1", "path": "NexusReader.Web.Client/Program.cs", "line": 84, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "label": "ThrowingSyncBroadcaster", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "responsibility": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:94:1", "path": "NexusReader.Web.Client/Program.cs", "line": 94, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 94, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "label": "WebPlatformService", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:18:1", "path": "NexusReader.Web.Client/Program.cs", "line": 18, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "label": "NexusAuthenticationStateProvider", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:33:1", "path": "NexusReader.Web.Client/Program.cs", "line": 33, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 33, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "label": "WasmKnowledgeService", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:38:1", "path": "NexusReader.Web.Client/Program.cs", "line": 38, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 38, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "label": "configured HttpClient", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:40:1", "path": "NexusReader.Web.Client/Program.cs", "line": 40, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "label": "ThrowingDbContextFactory", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "responsibility": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:49:1", "path": "NexusReader.Web.Client/Program.cs", "line": 49, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 49, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_n_a_55", "label": "N/A", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:55:1", "path": "NexusReader.Web.Client/Program.cs", "line": 55, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 55, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "label": "WasmEpubReader", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:56:1", "path": "NexusReader.Web.Client/Program.cs", "line": 56, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 56, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_file_nexusreader_web_client_services_wasmepubservice_cs_file_1", "label": "WasmEpubReader", "diagramId": "dependency_map_graph", "nodeRole": "service", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Constructs the WASM EPUB reader and stores an HttpClient instance for remote chapter retrieval.", "responsibility": "Constructs the WASM EPUB reader and stores an HttpClient instance for remote chapter retrieval.", "technologyHints": [ "csharp", "Client Adapter", "Extractor" ], "detailItems": [ { "label": "Owner", "value": "WasmEpubReader" }, { "label": "Signature", "value": "(httpClient: HttpClient) -> WasmEpubReader" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "Store HttpClient @L14" }, { "label": "Domain", "value": "Epub, ReaderPage, LocalEpubMetadata" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Services/WasmEpubService.cs:1:1", "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ] }, { "id": "flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1", "label": "WasmKnowledgeService", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "WASM-side implementation of IKnowledgeService that forwards knowledge/AI related requests from the Blazor WebAssembly client to server HTTP endpoints and returns typed Result responses.", "responsibility": "Client-side WASM service that centralizes HTTP calls to /api/knowledge endpoints, applies consistent Result success/failure mapping, and provides small helper CallKnowledgeApiAsync to reduce duplication.", "technologyHints": [ "csharp", "HttpClient wrapper", "Facade / integration client" ], "detailItems": [ { "label": "Owner", "value": "WasmKnowledgeService" }, { "label": "Domain", "value": "KnowledgePacket, RelevantContext, Groundedness" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Services/WasmKnowledgeService.cs:1:1", "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ] }, { "id": "flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1", "label": "WebPlatformService", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Concrete platform service for the web client that implements IPlatformService using JS interop.", "responsibility": "Concrete platform service for the web client that implements IPlatformService using JS interop.", "technologyHints": [ "csharp", "Adapter (platform abstraction)", "Facade (simple wrappers for platform features)" ], "detailItems": [ { "label": "Owner", "value": "WebPlatformService" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "_jsRuntime", "value": "IJSRuntime required" }, { "label": "Domain", "value": "DeviceContext, DeviceType, DisplayOrientation" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Services/WebPlatformService.cs:1:1", "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ] }, { "id": "flow_type_nexusreader_web_client_services_webplatformservice_cs_webplatformservice_7", "label": "WebPlatformService", "diagramId": "dependency_map_graph", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Concrete platform service for the web client that implements IPlatformService using JS interop.", "responsibility": "Concrete platform service for the web client that implements IPlatformService using JS interop.", "technologyHints": [ "csharp", "Adapter (platform abstraction)", "Facade (simple wrappers for platform features)" ], "detailItems": [ { "label": "Owner", "value": "WebPlatformService" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "_jsRuntime", "value": "IJSRuntime required" }, { "label": "Domain", "value": "DeviceContext, DeviceType, DisplayOrientation" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Services/WebPlatformService.cs:7:1", "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 7, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 7, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ] }, { "id": "flow_file_nexusreader_web_client_nexusreader_web_client_csproj_file_1", "label": "NexusReader.Web.Client.csproj", "diagramId": "dependency_map_graph", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Project file for the Blazor WebAssembly client project: declares SDK, target framework, build properties, NuGet package dependencies, and project references that link the client to application and shared UI projects.", "responsibility": "SDK: Microsoft.NET.Sdk.BlazorWebAssembly; TargetFramework: net10.0; Blazor-specific properties set (NoDefaultLaunchSettingsFile, StaticWebAssetProjectMode, BlazorDisableThrowNavigationException); packs: MediatR, Blazor WASM runtime, Http extensions, EPUB library; references Application and UI.Shared projects.", "technologyHints": [ "Blazor WebAssembly client", "ProjectReference-based multi-project solution" ], "detailItems": [ { "label": "Domain", "value": "Client (WASM), Shared UI, Application layer integration" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/NexusReader.Web.Client.csproj:1:1", "path": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/NexusReader.Web.Client.csproj" ] }, { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "label": "Program.cs", "diagramId": "startup_runtime_graph", "nodeRole": "service", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:1:1", "path": "NexusReader.Web.Client/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "label": "WebPlatformService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:18:1", "path": "NexusReader.Web.Client/Program.cs", "line": 18, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "label": "NexusAuthenticationStateProvider", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:33:1", "path": "NexusReader.Web.Client/Program.cs", "line": 33, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 33, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "label": "WasmKnowledgeService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:38:1", "path": "NexusReader.Web.Client/Program.cs", "line": 38, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 38, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "label": "configured HttpClient", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:40:1", "path": "NexusReader.Web.Client/Program.cs", "line": 40, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "label": "ThrowingDbContextFactory", "diagramId": "startup_runtime_graph", "nodeRole": "class", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "responsibility": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:49:1", "path": "NexusReader.Web.Client/Program.cs", "line": 49, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 49, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_n_a_55", "label": "N/A", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:55:1", "path": "NexusReader.Web.Client/Program.cs", "line": 55, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 55, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "label": "WasmEpubReader", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:56:1", "path": "NexusReader.Web.Client/Program.cs", "line": 56, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 56, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_method_nexusreader_web_client_program_cs_run_wasm_host_59", "label": "Run WASM Host", "diagramId": "startup_runtime_graph", "nodeRole": "method", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:59:1", "path": "NexusReader.Web.Client/Program.cs", "line": 59, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 59, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_file_nexusreader_web_client_nexusreader_web_client_csproj_file_1", "label": "NexusReader.Web.Client.csproj", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Project file for the Blazor WebAssembly client project: declares SDK, target framework, build properties, NuGet package dependencies, and project references that link the client to application and shared UI projects.", "responsibility": "SDK: Microsoft.NET.Sdk.BlazorWebAssembly; TargetFramework: net10.0; Blazor-specific properties set (NoDefaultLaunchSettingsFile, StaticWebAssetProjectMode, BlazorDisableThrowNavigationException); packs: MediatR, Blazor WASM runtime, Http extensions, EPUB library; references Application and UI.Shared projects.", "technologyHints": [ "Blazor WebAssembly client", "ProjectReference-based multi-project solution" ], "detailItems": [ { "label": "Domain", "value": "Client (WASM), Shared UI, Application layer integration" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/NexusReader.Web.Client.csproj:1:1", "path": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/NexusReader.Web.Client.csproj" ] }, { "id": "flow_method_nexusreader_web_client_nexusreader_web_client_csproj_project_configuration_1", "label": "project-configuration", "diagramId": "startup_runtime_graph", "nodeRole": "method", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Project file for the Blazor WebAssembly client project: declares SDK, target framework, build properties, NuGet package dependencies, and project references that link the client to application and shared UI projects.", "responsibility": "SDK: Microsoft.NET.Sdk.BlazorWebAssembly; TargetFramework: net10.0; Blazor-specific properties set (NoDefaultLaunchSettingsFile, StaticWebAssetProjectMode, BlazorDisableThrowNavigationException); packs: MediatR, Blazor WASM runtime, Http extensions, EPUB library; references Application and UI.Shared projects.", "technologyHints": [ "Blazor WebAssembly client", "ProjectReference-based multi-project solution" ], "detailItems": [ { "label": "Domain", "value": "Client (WASM), Shared UI, Application layer integration" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/NexusReader.Web.Client.csproj:1:1", "path": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "sourceLine": 1, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/NexusReader.Web.Client.csproj" ] }, { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "label": "MauiProgram", "diagramId": "startup_runtime_graph", "nodeRole": "class", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Static host for MAUI app startup logic and DI composition.", "responsibility": "Static host for MAUI app startup logic and DI composition.", "technologyHints": [ "csharp", "Dependency Injection", "Composition Root", "Service Registration" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Identity (AuthenticationStateProvider), Sync, KnowledgeGraph / KnowledgeCoordinator" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:1:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "label": "MauiPlatformService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Creates and configures the MAUI application builder: registers DI services (platform, storage, identity, UI state, network), composes the Application layer and MediatR, and returns the built MauiApp inside a try/catch to aid debugging.", "responsibility": "Sets HttpClient BaseAddress to http://10.0.2.2:5000 (typical Android emulator -> host routing); composes Application layer via AddApplication() and registers MediatR scanning the Application assembly; startup protected by try/catch that writes Debug output and rethrows.", "technologyHints": [ "csharp", "Dependency Injection", "Composition Root", "Service Registration" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity (AuthenticationStateProvider), Sync, KnowledgeGraph / KnowledgeCoordinator" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:28:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 28, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "label": "MauiStorageService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Creates and configures the MAUI application builder: registers DI services (platform, storage, identity, UI state, network), composes the Application layer and MediatR, and returns the built MauiApp inside a try/catch to aid debugging.", "responsibility": "Sets HttpClient BaseAddress to http://10.0.2.2:5000 (typical Android emulator -> host routing); composes Application layer via AddApplication() and registers MediatR scanning the Application assembly; startup protected by try/catch that writes Debug output and rethrows.", "technologyHints": [ "csharp", "Dependency Injection", "Composition Root", "Service Registration" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity (AuthenticationStateProvider), Sync, KnowledgeGraph / KnowledgeCoordinator" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:29:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 29, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "label": "NexusAuthenticationStateProvider", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Creates and configures the MAUI application builder: registers DI services (platform, storage, identity, UI state, network), composes the Application layer and MediatR, and returns the built MauiApp inside a try/catch to aid debugging.", "responsibility": "Sets HttpClient BaseAddress to http://10.0.2.2:5000 (typical Android emulator -> host routing); composes Application layer via AddApplication() and registers MediatR scanning the Application assembly; startup protected by try/catch that writes Debug output and rethrows.", "technologyHints": [ "csharp", "Dependency Injection", "Composition Root", "Service Registration" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity (AuthenticationStateProvider), Sync, KnowledgeGraph / KnowledgeCoordinator" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:32:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 32, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_via_factory_33", "label": "NexusAuthenticationStateProvider (via factory)", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Creates and configures the MAUI application builder: registers DI services (platform, storage, identity, UI state, network), composes the Application layer and MediatR, and returns the built MauiApp inside a try/catch to aid debugging.", "responsibility": "Sets HttpClient BaseAddress to http://10.0.2.2:5000 (typical Android emulator -> host routing); composes Application layer via AddApplication() and registers MediatR scanning the Application assembly; startup protected by try/catch that writes Debug output and rethrows.", "technologyHints": [ "csharp", "Dependency Injection", "Composition Root", "Service Registration" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity (AuthenticationStateProvider), Sync, KnowledgeGraph / KnowledgeCoordinator" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:33:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 33, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_configured_38", "label": "HttpClient (configured)", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Creates and configures the MAUI application builder: registers DI services (platform, storage, identity, UI state, network), composes the Application layer and MediatR, and returns the built MauiApp inside a try/catch to aid debugging.", "responsibility": "Sets HttpClient BaseAddress to http://10.0.2.2:5000 (typical Android emulator -> host routing); composes Application layer via AddApplication() and registers MediatR scanning the Application assembly; startup protected by try/catch that writes Debug output and rethrows.", "technologyHints": [ "csharp", "Dependency Injection", "Composition Root", "Service Registration" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity (AuthenticationStateProvider), Sync, KnowledgeGraph / KnowledgeCoordinator" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:38:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 38, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_focusmodeservice_quizstateservice_readernavigationservice_knowledgegraphservice_readerinteractionservice_knowledgecoordinator_syncservice_identityservice_1", "label": "ThemeService, FocusModeService, QuizStateService, ReaderNavigationService, KnowledgeGraphService, ReaderInteractionService, KnowledgeCoordinator, SyncService, IdentityService", "diagramId": "startup_runtime_graph", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Creates and configures the MAUI application builder: registers DI services (platform, storage, identity, UI state, network), composes the Application layer and MediatR, and returns the built MauiApp inside a try/catch to aid debugging.", "responsibility": "Sets HttpClient BaseAddress to http://10.0.2.2:5000 (typical Android emulator -> host routing); composes Application layer via AddApplication() and registers MediatR scanning the Application assembly; startup protected by try/catch that writes Debug output and rethrows.", "technologyHints": [ "csharp", "Dependency Injection", "Composition Root", "Service Registration" ], "detailItems": [ { "label": "Owner", "value": "MauiProgram" }, { "label": "Domain", "value": "Identity (AuthenticationStateProvider), Sync, KnowledgeGraph / KnowledgeCoordinator" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Maui/MauiProgram.cs:1:1", "path": "NexusReader.Maui/MauiProgram.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ] }, { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "label": "Program.cs", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "service", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:1:1", "path": "NexusReader.Web.Client/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_method_nexusreader_web_client_program_cs_program_top_level_startup_15", "label": "Program (top-level startup)", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Create the WebAssemblyHostBuilder, register application and platform services, add HTTP client and dummy server-only stubs, then build and run the WASM host.", "responsibility": "Create the WebAssemblyHostBuilder, register application and platform services, add HTTP client and dummy server-only stubs, then build and run the WASM host.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Signature", "value": "(args: string[]) -> Task" }, { "label": "Calls", "value": "6" }, { "label": "Action:mapping", "value": "AddScoped platform & UI services @L18" }, { "label": "Action:mapping", "value": "AddScoped auth services and auth state provider @L30" }, { "label": "Action:mapping", "value": "AddHttpClient with auth message handler @L40" }, { "label": "Action:mapping", "value": "Register throw-only stubs for server-only services @L48" }, { "label": "Action:mapping", "value": "Build and run WASM host @L59" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:15:1", "path": "NexusReader.Web.Client/Program.cs", "line": 15, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 15, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_method_nexusreader_web_client_program_cs_getservice_71", "label": "GetService", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Fallback service resolver stub that always returns null.", "responsibility": "Fallback service resolver stub that always returns null.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Signature", "value": "(Type serviceType, object? serviceKey = null) -> object?" }, { "label": "Calls", "value": "0" }, { "label": "Action:return", "value": "returns null @L71" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:71:1", "path": "NexusReader.Web.Client/Program.cs", "line": 71, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "label": "returns null", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "return", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "public object? GetService(...) => null", "responsibility": "public object? GetService(...) => null", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Action", "value": "return" }, { "label": "Signature", "value": "(Type serviceType, object? serviceKey = null) -> object?" }, { "label": "Calls", "value": "0" }, { "label": "Action:return", "value": "returns null @L71" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:71:1", "path": "NexusReader.Web.Client/Program.cs", "line": 71, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71, "sourceTargetKind": "return", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "label": "FindAuthorByNameAsync", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Repository lookup stub that throws because repository access is unsupported in WASM.", "responsibility": "Repository lookup stub that throws because repository access is unsupported in WASM.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Signature", "value": "(string name, CancellationToken cancellationToken = default) -> Task" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "NotSupportedException @L88" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L88" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:88:1", "path": "NexusReader.Web.Client/Program.cs", "line": 88, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "label": "Reads repository or persistence state", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "public Task FindAuthorByNameAsync(string name, CancellationToken cancellationToken = default) => throw new NotSupportedException(ErrorMessage);", "responsibility": "public Task FindAuthorByNameAsync(string name, CancellationToken cancellationToken = default) => throw new NotSupportedException(ErrorMessage);", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Action", "value": "repository-read" }, { "label": "Signature", "value": "(string name, CancellationToken cancellationToken = default) -> Task" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "NotSupportedException @L88" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L88" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:88:1", "path": "NexusReader.Web.Client/Program.cs", "line": 88, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "label": "ThrowingDbContextFactory", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "responsibility": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Signature", "value": "() -> AppDbContext" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "NotSupportedException @L63" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:61:1", "path": "NexusReader.Web.Client/Program.cs", "line": 61, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 61, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "label": "ThrowingEmbeddingGenerator", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "responsibility": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:66:1", "path": "NexusReader.Web.Client/Program.cs", "line": 66, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 66, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "label": "ThrowingBookStorageService", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "IBookStorageService implementation that throws for all file storage operations in WASM.", "responsibility": "IBookStorageService implementation that throws for all file storage operations in WASM.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "ErrorMessage", "value": "string required" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:74:1", "path": "NexusReader.Web.Client/Program.cs", "line": 74, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "label": "ThrowingEbookRepository", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "IEbookRepository implementation that throws for all repository operations in WASM.", "responsibility": "IEbookRepository implementation that throws for all repository operations in WASM.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "ErrorMessage", "value": "string required" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:84:1", "path": "NexusReader.Web.Client/Program.cs", "line": 84, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "label": "ThrowingSyncBroadcaster", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "responsibility": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:94:1", "path": "NexusReader.Web.Client/Program.cs", "line": 94, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 94, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "label": "WebPlatformService", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:18:1", "path": "NexusReader.Web.Client/Program.cs", "line": 18, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "label": "NexusAuthenticationStateProvider", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:33:1", "path": "NexusReader.Web.Client/Program.cs", "line": 33, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 33, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "label": "WasmKnowledgeService", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:38:1", "path": "NexusReader.Web.Client/Program.cs", "line": 38, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 38, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "label": "configured HttpClient", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:40:1", "path": "NexusReader.Web.Client/Program.cs", "line": 40, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "label": "ThrowingDbContextFactory", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "responsibility": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:49:1", "path": "NexusReader.Web.Client/Program.cs", "line": 49, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 49, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_n_a_55", "label": "N/A", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:55:1", "path": "NexusReader.Web.Client/Program.cs", "line": 55, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 55, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "label": "WasmEpubReader", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:56:1", "path": "NexusReader.Web.Client/Program.cs", "line": 56, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 56, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_method_nexusreader_web_client_program_cs_run_wasm_host_59", "label": "Run WASM Host", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:59:1", "path": "NexusReader.Web.Client/Program.cs", "line": 59, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 59, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "label": "Program.cs", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "service", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Program bootstrap for the NexusReader.Web ASP.NET app: registers services, configures authentication/authorization, initializes DB, maps Minimal API endpoints (including knowledge, library, identity, Stripe webhooks), and starts the web host.", "responsibility": "Program.cs is the composition root and runtime bootstrap: it registers DI services and policies, configures authentication (including Google), ensures DB migrations and seeding with retry/backoff, maps a set of Minimal API endpoints for knowledge features (protected by token-availability policy), handles Stripe webhooks to update subscription state, and supports both Server and WASM Blazor render modes.", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:1:1", "path": "NexusReader.Web/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "label": "Program (top-level)", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "Top-level program: build host, register services and middleware, map routes/endpoints, run the app.", "responsibility": "Top-level program: build host, register services and middleware, map routes/endpoints, run the app.", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Signature", "value": "(args) -> Task" }, { "label": "Calls", "value": "6" }, { "label": "Action:mapping", "value": "Registers many scoped services and HTTP client @L33" }, { "label": "Action:branch", "value": "Evaluates branch condition @L62" }, { "label": "Action:fallback", "value": "Falls back to alternate path @L66" }, { "label": "Action:mapping", "value": "Adds policies including 'ProUser' and 'HasAvailableTokens' @L86" }, { "label": "Action:mapping", "value": "Configures authentication and Identity endpoints @L96" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L125" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:29:1", "path": "NexusReader.Web/Program.cs", "line": 29, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "label": "Evaluates branch condition", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "responsibility": "if (!string.IsNullOrEmpty(apiBaseUrl))", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Action", "value": "branch" }, { "label": "Condition", "value": "!string.IsNullOrEmpty(apiBaseUrl)" }, { "label": "Outcomes", "value": "true, false" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:62:1", "path": "NexusReader.Web/Program.cs", "line": 62, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "label": "Falls back to alternate path", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "else", "responsibility": "else", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Action", "value": "fallback" }, { "label": "Outcomes", "value": "fallback" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:66:1", "path": "NexusReader.Web/Program.cs", "line": 66, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "label": "Reads repository or persistence state", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "primary-runtime", "architecturalLayer": "backend", "summary": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "responsibility": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:125:1", "path": "NexusReader.Web/Program.cs", "line": 125, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 125, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "label": "Program.cs", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "service", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:1:1", "path": "NexusReader.Web.Client/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_method_nexusreader_web_client_program_cs_program_top_level_startup_15", "label": "Program (top-level startup)", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Create the WebAssemblyHostBuilder, register application and platform services, add HTTP client and dummy server-only stubs, then build and run the WASM host.", "responsibility": "Create the WebAssemblyHostBuilder, register application and platform services, add HTTP client and dummy server-only stubs, then build and run the WASM host.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Signature", "value": "(args: string[]) -> Task" }, { "label": "Calls", "value": "6" }, { "label": "Action:mapping", "value": "AddScoped platform & UI services @L18" }, { "label": "Action:mapping", "value": "AddScoped auth services and auth state provider @L30" }, { "label": "Action:mapping", "value": "AddHttpClient with auth message handler @L40" }, { "label": "Action:mapping", "value": "Register throw-only stubs for server-only services @L48" }, { "label": "Action:mapping", "value": "Build and run WASM host @L59" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:15:1", "path": "NexusReader.Web.Client/Program.cs", "line": 15, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 15, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_method_nexusreader_web_client_program_cs_getservice_71", "label": "GetService", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Fallback service resolver stub that always returns null.", "responsibility": "Fallback service resolver stub that always returns null.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Signature", "value": "(Type serviceType, object? serviceKey = null) -> object?" }, { "label": "Calls", "value": "0" }, { "label": "Action:return", "value": "returns null @L71" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:71:1", "path": "NexusReader.Web.Client/Program.cs", "line": 71, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "label": "returns null", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "return", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "public object? GetService(...) => null", "responsibility": "public object? GetService(...) => null", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Action", "value": "return" }, { "label": "Signature", "value": "(Type serviceType, object? serviceKey = null) -> object?" }, { "label": "Calls", "value": "0" }, { "label": "Action:return", "value": "returns null @L71" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:71:1", "path": "NexusReader.Web.Client/Program.cs", "line": 71, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71, "sourceTargetKind": "return", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "label": "FindAuthorByNameAsync", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Repository lookup stub that throws because repository access is unsupported in WASM.", "responsibility": "Repository lookup stub that throws because repository access is unsupported in WASM.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Signature", "value": "(string name, CancellationToken cancellationToken = default) -> Task" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "NotSupportedException @L88" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L88" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:88:1", "path": "NexusReader.Web.Client/Program.cs", "line": 88, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "label": "Reads repository or persistence state", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "public Task FindAuthorByNameAsync(string name, CancellationToken cancellationToken = default) => throw new NotSupportedException(ErrorMessage);", "responsibility": "public Task FindAuthorByNameAsync(string name, CancellationToken cancellationToken = default) => throw new NotSupportedException(ErrorMessage);", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Action", "value": "repository-read" }, { "label": "Signature", "value": "(string name, CancellationToken cancellationToken = default) -> Task" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "NotSupportedException @L88" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L88" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:88:1", "path": "NexusReader.Web.Client/Program.cs", "line": 88, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_method_nexusreader_web_client_program_cs_run_wasm_host_59", "label": "Run WASM Host", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:59:1", "path": "NexusReader.Web.Client/Program.cs", "line": 59, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 59, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "label": "Program.cs", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "service", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Program bootstrap for the NexusReader.Web ASP.NET app: registers services, configures authentication/authorization, initializes DB, maps Minimal API endpoints (including knowledge, library, identity, Stripe webhooks), and starts the web host.", "responsibility": "Program.cs is the composition root and runtime bootstrap: it registers DI services and policies, configures authentication (including Google), ensures DB migrations and seeding with retry/backoff, maps a set of Minimal API endpoints for knowledge features (protected by token-availability policy), handles Stripe webhooks to update subscription state, and supports both Server and WASM Blazor render modes.", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:1:1", "path": "NexusReader.Web/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "label": "Program (top-level)", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Top-level program: build host, register services and middleware, map routes/endpoints, run the app.", "responsibility": "Top-level program: build host, register services and middleware, map routes/endpoints, run the app.", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Signature", "value": "(args) -> Task" }, { "label": "Calls", "value": "6" }, { "label": "Action:mapping", "value": "Registers many scoped services and HTTP client @L33" }, { "label": "Action:branch", "value": "Evaluates branch condition @L62" }, { "label": "Action:fallback", "value": "Falls back to alternate path @L66" }, { "label": "Action:mapping", "value": "Adds policies including 'ProUser' and 'HasAvailableTokens' @L86" }, { "label": "Action:mapping", "value": "Configures authentication and Identity endpoints @L96" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L125" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:29:1", "path": "NexusReader.Web/Program.cs", "line": 29, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "label": "Evaluates branch condition", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "responsibility": "if (!string.IsNullOrEmpty(apiBaseUrl))", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Action", "value": "branch" }, { "label": "Condition", "value": "!string.IsNullOrEmpty(apiBaseUrl)" }, { "label": "Outcomes", "value": "true, false" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:62:1", "path": "NexusReader.Web/Program.cs", "line": 62, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "label": "Falls back to alternate path", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "else", "responsibility": "else", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Action", "value": "fallback" }, { "label": "Outcomes", "value": "fallback" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:66:1", "path": "NexusReader.Web/Program.cs", "line": 66, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "label": "Reads repository or persistence state", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "responsibility": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:125:1", "path": "NexusReader.Web/Program.cs", "line": 125, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 125, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "label": "Reads repository or persistence state", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "context.Request.Path.StartsWithSegments(\"/identity\") ||", "responsibility": "context.Request.Path.StartsWithSegments(\"/identity\") ||", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:126:1", "path": "NexusReader.Web/Program.cs", "line": 126, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 126, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8", "label": "AddApplication", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Extension method that registers application mapping configuration and MediatR handlers, returning the IServiceCollection for chaining.", "responsibility": "Extension method that registers application mapping configuration and MediatR handlers, returning the IServiceCollection for chaining.", "technologyHints": [ "csharp", "Dependency Injection extension", "Service registration" ], "detailItems": [ { "label": "Owner", "value": "DependencyInjection" }, { "label": "Signature", "value": "(services: IServiceCollection) -> IServiceCollection" }, { "label": "Calls", "value": "1" }, { "label": "Action:mapping", "value": "Register mapping configuration @L10" }, { "label": "Action:mapping", "value": "Register MediatR handlers @L11" }, { "label": "Action:return", "value": "Return IServiceCollection @L13" }, { "label": "Action:return", "value": "Returns result @L13" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Application/DependencyInjection.cs:8:1", "path": "NexusReader.Application/DependencyInjection.cs", "line": 8, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Application/DependencyInjection.cs", "sourceLine": 8, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Application/DependencyInjection.cs" ] }, { "id": "flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31", "label": "AddInfrastructure", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Configures and registers infrastructure services and external clients (DBs, AI, vector/graph stores, job processing, authorization, and app-layer implementations) into the DI container.", "responsibility": "Configures and registers infrastructure services and external clients (DBs, AI, vector/graph stores, job processing, authorization, and app-layer implementations) into the DI container.", "technologyHints": [ "csharp", "Dependency Injection / Service Registration", "Factory (DbContextFactory)", "Resilience (retry pipeline)", "Repository" ], "detailItems": [ { "label": "Owner", "value": "DependencyInjection" }, { "label": "Signature", "value": "(this IServiceCollection services, IConfiguration configuration) -> IServiceCollection" }, { "label": "Calls", "value": "12" }, { "label": "Action:branch", "value": "Selects DB provider @L33" }, { "label": "Action:branch", "value": "Evaluates branch condition @L34" }, { "label": "Action:fallback", "value": "Falls back to alternate path @L44" }, { "label": "Action:mapping", "value": "Qdrant client registration @L56" }, { "label": "Action:mapping", "value": "Neo4j driver registration @L60" }, { "label": "Action:branch", "value": "Evaluates branch condition @L64" }, { "label": "Domain", "value": "Ebook / Epub processing, AI (chat/embeddings), Vector store (Qdrant)" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Infrastructure/DependencyInjection.cs:31:1", "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 31, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 31, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ] }, { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "label": "Program.cs", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "service", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:1:1", "path": "NexusReader.Web.Client/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "label": "ThrowingDbContextFactory", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "responsibility": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Signature", "value": "() -> AppDbContext" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "NotSupportedException @L63" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:61:1", "path": "NexusReader.Web.Client/Program.cs", "line": 61, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 61, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "label": "ThrowingEmbeddingGenerator", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "responsibility": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:66:1", "path": "NexusReader.Web.Client/Program.cs", "line": 66, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 66, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "label": "ThrowingBookStorageService", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "IBookStorageService implementation that throws for all file storage operations in WASM.", "responsibility": "IBookStorageService implementation that throws for all file storage operations in WASM.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "ErrorMessage", "value": "string required" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:74:1", "path": "NexusReader.Web.Client/Program.cs", "line": 74, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "label": "ThrowingEbookRepository", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "IEbookRepository implementation that throws for all repository operations in WASM.", "responsibility": "IEbookRepository implementation that throws for all repository operations in WASM.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "ErrorMessage", "value": "string required" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:84:1", "path": "NexusReader.Web.Client/Program.cs", "line": 84, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "label": "ThrowingSyncBroadcaster", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "responsibility": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:94:1", "path": "NexusReader.Web.Client/Program.cs", "line": 94, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 94, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "label": "WebPlatformService", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:18:1", "path": "NexusReader.Web.Client/Program.cs", "line": 18, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "label": "NexusAuthenticationStateProvider", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:33:1", "path": "NexusReader.Web.Client/Program.cs", "line": 33, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 33, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "label": "WasmKnowledgeService", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:38:1", "path": "NexusReader.Web.Client/Program.cs", "line": 38, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 38, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "label": "configured HttpClient", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:40:1", "path": "NexusReader.Web.Client/Program.cs", "line": 40, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "label": "ThrowingDbContextFactory", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "responsibility": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:49:1", "path": "NexusReader.Web.Client/Program.cs", "line": 49, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 49, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_n_a_55", "label": "N/A", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:55:1", "path": "NexusReader.Web.Client/Program.cs", "line": 55, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 55, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "label": "WasmEpubReader", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:56:1", "path": "NexusReader.Web.Client/Program.cs", "line": 56, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 56, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "label": "Program.cs", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "service", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Program bootstrap for the NexusReader.Web ASP.NET app: registers services, configures authentication/authorization, initializes DB, maps Minimal API endpoints (including knowledge, library, identity, Stripe webhooks), and starts the web host.", "responsibility": "Program.cs is the composition root and runtime bootstrap: it registers DI services and policies, configures authentication (including Google), ensures DB migrations and seeding with retry/backoff, maps a set of Minimal API endpoints for knowledge features (protected by token-availability policy), handles Stripe webhooks to update subscription state, and supports both Server and WASM Blazor render modes.", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:1:1", "path": "NexusReader.Web/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_type_nexusreader_web_program_cs_knowledgerequest_566", "label": "KnowledgeRequest", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dto", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Request DTO carrying free-text input and optional ebook context for knowledge APIs.", "responsibility": "Request DTO carrying free-text input and optional ebook context for knowledge APIs.", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Shape", "value": "dto" }, { "label": "Fields", "value": "2" }, { "label": "Text", "value": "string required" }, { "label": "EbookId", "value": "Guid?" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:566:1", "path": "NexusReader.Web/Program.cs", "line": 566, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 566, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_type_nexusreader_web_program_cs_groundednessrequest_567", "label": "GroundednessRequest", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dto", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "Request DTO for verifying answer groundedness in a context.", "responsibility": "Request DTO for verifying answer groundedness in a context.", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Shape", "value": "dto" }, { "label": "Fields", "value": "2" }, { "label": "Answer", "value": "string required" }, { "label": "Context", "value": "string required" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:567:1", "path": "NexusReader.Web/Program.cs", "line": 567, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 567, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_type_nexusreader_web_program_cs_semanticsearchrequest_568", "label": "SemanticSearchRequest", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dto", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "DTO for semantic search requests with a limit.", "responsibility": "DTO for semantic search requests with a limit.", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Shape", "value": "dto" }, { "label": "Fields", "value": "2" }, { "label": "QueryText", "value": "string required" }, { "label": "Limit", "value": "int" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:568:1", "path": "NexusReader.Web/Program.cs", "line": 568, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 568, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_type_nexusreader_web_program_cs_askquestionrequest_569", "label": "AskQuestionRequest", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dto", "diagramFamily": "class-diagram", "architecturalLayer": "backend", "summary": "DTO for question-asking APIs including optional ebook context and limit.", "responsibility": "DTO for question-asking APIs including optional ebook context and limit.", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Shape", "value": "dto" }, { "label": "Fields", "value": "3" }, { "label": "Question", "value": "string required" }, { "label": "EbookId", "value": "Guid?" }, { "label": "Limit", "value": "int" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:569:1", "path": "NexusReader.Web/Program.cs", "line": 569, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 569, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "label": "Program.cs", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "service", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:1:1", "path": "NexusReader.Web.Client/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "label": "returns null", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "return", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "public object? GetService(...) => null", "responsibility": "public object? GetService(...) => null", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Action", "value": "return" }, { "label": "Signature", "value": "(Type serviceType, object? serviceKey = null) -> object?" }, { "label": "Calls", "value": "0" }, { "label": "Action:return", "value": "returns null @L71" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:71:1", "path": "NexusReader.Web.Client/Program.cs", "line": 71, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71, "sourceTargetKind": "return", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "label": "Reads repository or persistence state", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "public Task FindAuthorByNameAsync(string name, CancellationToken cancellationToken = default) => throw new NotSupportedException(ErrorMessage);", "responsibility": "public Task FindAuthorByNameAsync(string name, CancellationToken cancellationToken = default) => throw new NotSupportedException(ErrorMessage);", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Action", "value": "repository-read" }, { "label": "Signature", "value": "(string name, CancellationToken cancellationToken = default) -> Task" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "NotSupportedException @L88" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L88" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:88:1", "path": "NexusReader.Web.Client/Program.cs", "line": 88, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "label": "ThrowingDbContextFactory", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "responsibility": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Signature", "value": "() -> AppDbContext" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "NotSupportedException @L63" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:61:1", "path": "NexusReader.Web.Client/Program.cs", "line": 61, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 61, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "label": "ThrowingEmbeddingGenerator", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "responsibility": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:66:1", "path": "NexusReader.Web.Client/Program.cs", "line": 66, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 66, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "label": "ThrowingBookStorageService", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IBookStorageService implementation that throws for all file storage operations in WASM.", "responsibility": "IBookStorageService implementation that throws for all file storage operations in WASM.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "ErrorMessage", "value": "string required" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:74:1", "path": "NexusReader.Web.Client/Program.cs", "line": 74, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "label": "ThrowingEbookRepository", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IEbookRepository implementation that throws for all repository operations in WASM.", "responsibility": "IEbookRepository implementation that throws for all repository operations in WASM.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "ErrorMessage", "value": "string required" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:84:1", "path": "NexusReader.Web.Client/Program.cs", "line": 84, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "label": "ThrowingSyncBroadcaster", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "responsibility": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:94:1", "path": "NexusReader.Web.Client/Program.cs", "line": 94, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 94, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "label": "WebPlatformService", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:18:1", "path": "NexusReader.Web.Client/Program.cs", "line": 18, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "label": "NexusAuthenticationStateProvider", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:33:1", "path": "NexusReader.Web.Client/Program.cs", "line": 33, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 33, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "label": "WasmKnowledgeService", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:38:1", "path": "NexusReader.Web.Client/Program.cs", "line": 38, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 38, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "label": "configured HttpClient", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:40:1", "path": "NexusReader.Web.Client/Program.cs", "line": 40, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "label": "ThrowingDbContextFactory", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "class", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "responsibility": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "0" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:49:1", "path": "NexusReader.Web.Client/Program.cs", "line": 49, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 49, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_n_a_55", "label": "N/A", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:55:1", "path": "NexusReader.Web.Client/Program.cs", "line": 55, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 55, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "label": "WasmEpubReader", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "dependency", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Bootstraps the WebAssembly client: configures DI/service registrations for the WASM app, registers WASM-specific implementations, and provides throw-only stubs for server-only services so DI validation passes in the browser.", "responsibility": "This Program.cs is the WASM client entry: it wires browser-safe implementations and registers throw-only stand-ins for server-side concerns (DbContext, embedding generation, file storage, repository, real-time broadcasting) so the same DI graph compiles and validates in the browser; the actual server implementations must run on the API server.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:56:1", "path": "NexusReader.Web.Client/Program.cs", "line": 56, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 56, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "label": "Program.cs", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "service", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "Program bootstrap for the NexusReader.Web ASP.NET app: registers services, configures authentication/authorization, initializes DB, maps Minimal API endpoints (including knowledge, library, identity, Stripe webhooks), and starts the web host.", "responsibility": "Program.cs is the composition root and runtime bootstrap: it registers DI services and policies, configures authentication (including Google), ensures DB migrations and seeding with retry/backoff, maps a set of Minimal API endpoints for knowledge features (protected by token-availability policy), handles Stripe webhooks to update subscription state, and supports both Server and WASM Blazor render modes.", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:1:1", "path": "NexusReader.Web/Program.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "label": "Evaluates branch condition", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "responsibility": "if (!string.IsNullOrEmpty(apiBaseUrl))", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Action", "value": "branch" }, { "label": "Condition", "value": "!string.IsNullOrEmpty(apiBaseUrl)" }, { "label": "Outcomes", "value": "true, false" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:62:1", "path": "NexusReader.Web/Program.cs", "line": 62, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "label": "Falls back to alternate path", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "dependency-map", "architecturalLayer": "backend", "summary": "else", "responsibility": "else", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Action", "value": "fallback" }, { "label": "Outcomes", "value": "fallback" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:66:1", "path": "NexusReader.Web/Program.cs", "line": 66, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_method_nexusreader_web_client_program_cs_getservice_71", "label": "GetService", "diagramId": "failure_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Fallback service resolver stub that always returns null.", "responsibility": "Fallback service resolver stub that always returns null.", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Signature", "value": "(Type serviceType, object? serviceKey = null) -> object?" }, { "label": "Calls", "value": "0" }, { "label": "Action:return", "value": "returns null @L71" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:71:1", "path": "NexusReader.Web.Client/Program.cs", "line": 71, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "label": "returns null", "diagramId": "failure_flow_1_nexusreader_web_client_program_cs", "nodeRole": "return", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "public object? GetService(...) => null", "responsibility": "public object? GetService(...) => null", "technologyHints": [ "csharp", "Dependency Injection", "Host/Startup bootstrap", "Null/Throwing stub (platform-specific feature gating)" ], "detailItems": [ { "label": "Action", "value": "return" }, { "label": "Signature", "value": "(Type serviceType, object? serviceKey = null) -> object?" }, { "label": "Calls", "value": "0" }, { "label": "Action:return", "value": "returns null @L71" }, { "label": "Domain", "value": "Ebook, Author, Embedding" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Program.cs:71:1", "path": "NexusReader.Web.Client/Program.cs", "line": 71, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71, "sourceTargetKind": "return", "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ] }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "label": "Program (top-level)", "diagramId": "failure_flow_1_nexusreader_web_client_program_cs", "nodeRole": "method", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "Top-level program: build host, register services and middleware, map routes/endpoints, run the app.", "responsibility": "Top-level program: build host, register services and middleware, map routes/endpoints, run the app.", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Signature", "value": "(args) -> Task" }, { "label": "Calls", "value": "6" }, { "label": "Action:mapping", "value": "Registers many scoped services and HTTP client @L33" }, { "label": "Action:branch", "value": "Evaluates branch condition @L62" }, { "label": "Action:fallback", "value": "Falls back to alternate path @L66" }, { "label": "Action:mapping", "value": "Adds policies including 'ProUser' and 'HasAvailableTokens' @L86" }, { "label": "Action:mapping", "value": "Configures authentication and Identity endpoints @L96" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L125" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:29:1", "path": "NexusReader.Web/Program.cs", "line": 29, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "label": "Evaluates branch condition", "diagramId": "failure_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "responsibility": "if (!string.IsNullOrEmpty(apiBaseUrl))", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Action", "value": "branch" }, { "label": "Condition", "value": "!string.IsNullOrEmpty(apiBaseUrl)" }, { "label": "Outcomes", "value": "true, false" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:62:1", "path": "NexusReader.Web/Program.cs", "line": 62, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "label": "Falls back to alternate path", "diagramId": "failure_flow_1_nexusreader_web_client_program_cs", "nodeRole": "step", "diagramFamily": "control-flow", "architecturalLayer": "backend", "summary": "else", "responsibility": "else", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Action", "value": "fallback" }, { "label": "Outcomes", "value": "fallback" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:66:1", "path": "NexusReader.Web/Program.cs", "line": 66, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "label": "AuthenticationHeaderHandler", "diagramId": "method_flows_graph", "nodeRole": "class", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "DelegatingHandler that attaches JWTs to trusted requests and orchestrates token refresh and retry behavior.", "responsibility": "DelegatingHandler that attaches JWTs to trusted requests and orchestrates token refresh and retry behavior.", "technologyHints": [ "csharp", "DelegatingHandler", "Token auto-refresh", "Semaphore-based concurrency guard", "Scoped service resolution for transient operations" ], "detailItems": [ { "label": "Owner", "value": "AuthenticationHeaderHandler" }, { "label": "Signature", "value": "(INativeStorageService storageService, IServiceProvider serviceProvider) -> AuthenticationHeaderHandler" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "Store injected services @L23" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "4" }, { "label": "_storageService", "value": "INativeStorageService required" }, { "label": "_serviceProvider", "value": "IServiceProvider required" }, { "label": "TokenKey", "value": "const string required" }, { "label": "_refreshSemaphore", "value": "SemaphoreSlim required" }, { "label": "Domain", "value": "Authentication, JWT, Token refresh" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs:1:1", "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "label": "CloneHttpRequestMessageAsync", "diagramId": "method_flows_graph", "nodeRole": "method", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Creates a deep-ish clone of an HttpRequestMessage including method, URI, version, headers and buffered content to allow safe retry.", "responsibility": "Creates a deep-ish clone of an HttpRequestMessage including method, URI, version, headers and buffered content to allow safe retry.", "technologyHints": [ "csharp", "DelegatingHandler", "Token auto-refresh", "Semaphore-based concurrency guard", "Scoped service resolution for transient operations" ], "detailItems": [ { "label": "Owner", "value": "AuthenticationHeaderHandler" }, { "label": "Signature", "value": "(HttpRequestMessage req) -> Task" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "Create new HttpRequestMessage clone @L114" }, { "label": "Action:mapping", "value": "Copy request content stream and headers @L119" }, { "label": "Action:branch", "value": "Evaluates branch condition @L119" }, { "label": "Action:loop", "value": "Repeats work over a collection or condition @L126" }, { "label": "Action:mapping", "value": "Copy request headers @L132" }, { "label": "Action:loop", "value": "Repeats work over a collection or condition @L132" }, { "label": "Domain", "value": "Authentication, JWT, Token refresh" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs:112:1", "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 112, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 112, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "label": "Evaluates branch condition", "diagramId": "method_flows_graph", "nodeRole": "step", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "if (req.Content != null)", "responsibility": "if (req.Content != null)", "technologyHints": [ "csharp", "DelegatingHandler", "Token auto-refresh", "Semaphore-based concurrency guard", "Scoped service resolution for transient operations" ], "detailItems": [ { "label": "Owner", "value": "AuthenticationHeaderHandler" }, { "label": "Action", "value": "branch" }, { "label": "Condition", "value": "req.Content != null" }, { "label": "Outcomes", "value": "true, false" }, { "label": "Domain", "value": "Authentication, JWT, Token refresh" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs:119:1", "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 119, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 119, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237", "label": "Evaluates branch condition", "diagramId": "method_flows_graph", "nodeRole": "step", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "if (!app.Environment.IsDevelopment())", "responsibility": "if (!app.Environment.IsDevelopment())", "technologyHints": [ "csharp", "Dependency Injection", "Minimal APIs", "Mediator/CQRS (MediatR)", "Retry with exponential backoff" ], "detailItems": [ { "label": "Action", "value": "branch" }, { "label": "Condition", "value": "!app.Environment.IsDevelopment()" }, { "label": "Outcomes", "value": "true, false" }, { "label": "Domain", "value": "SubscriptionPlan, Knowledge (knowledge service, graph, summary), Ebook / EPUB ingestion" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Web/Program.cs:237:1", "path": "NexusReader.Web/Program.cs", "line": 237, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 237, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Web/Program.cs" ] }, { "id": "flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1", "label": "SyncHub", "diagramId": "method_flows_graph", "nodeRole": "class", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "SignalR hub that mediates client realtime interactions for syncing reading progress and manages user groups.", "responsibility": "SignalR hub that mediates client realtime interactions for syncing reading progress and manages user groups.", "technologyHints": [ "csharp", "Mediator", "SignalR Hub", "Per-user group (User_{userId})" ], "detailItems": [ { "label": "Owner", "value": "SyncHub" }, { "label": "Signature", "value": "(mediator: IMediator) -> void" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "Depends on IMediator @L14" }, { "label": "Action:mapping", "value": "Stores mediator @L16" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "_mediator", "value": "IMediator required" }, { "label": "Domain", "value": "ReadingProgress, User, Ebook" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Infrastructure/RealTime/SyncHub.cs:1:1", "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 1, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_synchub_14", "label": "SyncHub", "diagramId": "method_flows_graph", "nodeRole": "class", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "SignalR hub that mediates client realtime interactions for syncing reading progress and manages user groups.", "responsibility": "SignalR hub that mediates client realtime interactions for syncing reading progress and manages user groups.", "technologyHints": [ "csharp", "Mediator", "SignalR Hub", "Per-user group (User_{userId})" ], "detailItems": [ { "label": "Owner", "value": "SyncHub" }, { "label": "Signature", "value": "(mediator: IMediator) -> void" }, { "label": "Calls", "value": "0" }, { "label": "Action:mapping", "value": "Depends on IMediator @L14" }, { "label": "Action:mapping", "value": "Stores mediator @L16" }, { "label": "Shape", "value": "model" }, { "label": "Fields", "value": "1" }, { "label": "_mediator", "value": "IMediator required" }, { "label": "Domain", "value": "ReadingProgress, User, Ebook" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Infrastructure/RealTime/SyncHub.cs:14:1", "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 14, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 14, "sourceTargetKind": "dependency", "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1", "label": "EpubReaderService", "diagramId": "method_flows_graph", "nodeRole": "service", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Service that locates EPUB files recorded in the database, parses a requested chapter, splits the chapter into sanitized content blocks, injects AI-action trigger blocks at thresholds, and returns a ReaderPageViewModel for consumption by the application.", "responsibility": "Important behaviors: DB lookup with user guard, file path resolution that handles dev/prod layouts, EPUB parsing via external library, paragraph extraction and HTML sanitization, word-count-based insertion of AI trigger blocks (WordThreshold = 1000), recursive navigation-title lookup, and robust error logging with Result-based failure propagation.", "technologyHints": [ "csharp", "Service", "Repository-access (via DbContext)", "Factory (CreateAiTrigger)", "Parsing & sanitization pipeline" ], "detailItems": [ { "label": "Owner", "value": "EpubReaderService" }, { "label": "Domain", "value": "Ebook, Chapter/ReadingOrder, ContentBlock (TextSegmentBlock, AiActionTriggerBlock)" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Infrastructure/Services/EpubReaderService.cs:1:1", "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 1, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 1, "sourceTargetKind": "service", "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ] }, { "id": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19", "label": "UpdateProgress", "diagramId": "method_flows_graph", "nodeRole": "method", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Receives client progress updates, obtains the calling user id and forwards an UpdateReadingProgressCommand via MediatR when user is present.", "responsibility": "Receives client progress updates, obtains the calling user id and forwards an UpdateReadingProgressCommand via MediatR when user is present.", "technologyHints": [ "csharp", "Mediator", "SignalR Hub", "Per-user group (User_{userId})" ], "detailItems": [ { "label": "Owner", "value": "SyncHub" }, { "label": "Signature", "value": "(pageId: string, ebookId: Guid, progress: double, chapterTitle: string? , chapterIndex: int) -> Task" }, { "label": "Calls", "value": "1" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L21" }, { "label": "Action:external-call", "value": "Reads user id from connection context @L21" }, { "label": "Action:guard-clause", "value": "Requires authenticated user id @L21" }, { "label": "Action:branch", "value": "Evaluates branch condition @L22" }, { "label": "Action:external-call", "value": "Dispatches command to application layer @L24" }, { "label": "Action:mapping", "value": "Includes connection id in command @L24" }, { "label": "Domain", "value": "ReadingProgress, User, Ebook" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Infrastructure/RealTime/SyncHub.cs:19:1", "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 19, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 19, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_21_21", "label": "Reads repository or persistence state", "diagramId": "method_flows_graph", "nodeRole": "step", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "var userId = Context.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value;", "responsibility": "var userId = Context.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value;", "technologyHints": [ "csharp", "Mediator", "SignalR Hub", "Per-user group (User_{userId})" ], "detailItems": [ { "label": "Owner", "value": "SyncHub" }, { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "ReadingProgress, User, Ebook" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Infrastructure/RealTime/SyncHub.cs:21:1", "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 21, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 21, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28", "label": "OnConnectedAsync", "diagramId": "method_flows_graph", "nodeRole": "method", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "When a client connects, adds their connection to a per-user SignalR group (User_{userId}) and calls base connection logic.", "responsibility": "When a client connects, adds their connection to a per-user SignalR group (User_{userId}) and calls base connection logic.", "technologyHints": [ "csharp", "Mediator", "SignalR Hub", "Per-user group (User_{userId})" ], "detailItems": [ { "label": "Owner", "value": "SyncHub" }, { "label": "Signature", "value": "() -> Task" }, { "label": "Calls", "value": "0" }, { "label": "Action:external-call", "value": "Reads Context.UserIdentifier @L30" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L30" }, { "label": "Action:branch", "value": "Evaluates branch condition @L31" }, { "label": "Action:guard-clause", "value": "Only add to group if userId present @L31" }, { "label": "Action:external-call", "value": "Adds connection to per-user group @L33" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L33" }, { "label": "Domain", "value": "ReadingProgress, User, Ebook" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Infrastructure/RealTime/SyncHub.cs:28:1", "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 28, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 28, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_30_30", "label": "Reads repository or persistence state", "diagramId": "method_flows_graph", "nodeRole": "step", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "var userId = Context.UserIdentifier;", "responsibility": "var userId = Context.UserIdentifier;", "technologyHints": [ "csharp", "Mediator", "SignalR Hub", "Per-user group (User_{userId})" ], "detailItems": [ { "label": "Owner", "value": "SyncHub" }, { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "ReadingProgress, User, Ebook" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Infrastructure/RealTime/SyncHub.cs:30:1", "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 30, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 30, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38", "label": "OnDisconnectedAsync", "diagramId": "method_flows_graph", "nodeRole": "method", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "When a client disconnects, removes their connection from the per-user SignalR group and invokes base disconnect logic.", "responsibility": "When a client disconnects, removes their connection from the per-user SignalR group and invokes base disconnect logic.", "technologyHints": [ "csharp", "Mediator", "SignalR Hub", "Per-user group (User_{userId})" ], "detailItems": [ { "label": "Owner", "value": "SyncHub" }, { "label": "Signature", "value": "(exception: Exception?) -> Task" }, { "label": "Calls", "value": "0" }, { "label": "Action:external-call", "value": "Reads Context.UserIdentifier @L40" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L40" }, { "label": "Action:branch", "value": "Evaluates branch condition @L41" }, { "label": "Action:guard-clause", "value": "Only remove from group if userId present @L41" }, { "label": "Action:repository-read", "value": "Reads repository or persistence state @L43" }, { "label": "Action:external-call", "value": "Removes connection from per-user group @L43" }, { "label": "Domain", "value": "ReadingProgress, User, Ebook" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Infrastructure/RealTime/SyncHub.cs:38:1", "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 38, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 38, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_40_40", "label": "Reads repository or persistence state", "diagramId": "method_flows_graph", "nodeRole": "step", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "var userId = Context.UserIdentifier;", "responsibility": "var userId = Context.UserIdentifier;", "technologyHints": [ "csharp", "Mediator", "SignalR Hub", "Per-user group (User_{userId})" ], "detailItems": [ { "label": "Owner", "value": "SyncHub" }, { "label": "Action", "value": "repository-read" }, { "label": "Domain", "value": "ReadingProgress, User, Ebook" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Infrastructure/RealTime/SyncHub.cs:40:1", "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 40, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 40, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175", "label": "CountWords", "diagramId": "method_flows_graph", "nodeRole": "method", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Count words in a string using whitespace separators; returns 0 for null/whitespace.", "responsibility": "Count words in a string using whitespace separators; returns 0 for null/whitespace.", "technologyHints": [ "csharp", "Service", "Repository-access (via DbContext)", "Factory (CreateAiTrigger)", "Parsing & sanitization pipeline" ], "detailItems": [ { "label": "Owner", "value": "EpubReaderService" }, { "label": "Signature", "value": "(text: string) -> int" }, { "label": "Calls", "value": "0" }, { "label": "Action:guard-clause", "value": "Empty text check @L177" }, { "label": "Action:guard-clause", "value": "Guards early exit or rejection path @L177" }, { "label": "Action:return", "value": "Returns result @L178" }, { "label": "Action:mapping", "value": "Split and count words @L178" }, { "label": "Domain", "value": "Ebook, Chapter/ReadingOrder, ContentBlock (TextSegmentBlock, AiActionTriggerBlock)" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Infrastructure/Services/EpubReaderService.cs:175:1", "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 175, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 175, "sourceTargetKind": "method", "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_guard_clause_177_177", "label": "Empty text check", "diagramId": "method_flows_graph", "nodeRole": "step", "diagramFamily": "method-flow", "architecturalLayer": "backend", "summary": "Empty text check", "responsibility": "Important behaviors: DB lookup with user guard, file path resolution that handles dev/prod layouts, EPUB parsing via external library, paragraph extraction and HTML sanitization, word-count-based insertion of AI trigger blocks (WordThreshold = 1000), recursive navigation-title lookup, and robust error logging with Result-based failure propagation.", "technologyHints": [ "csharp", "Service", "Repository-access (via DbContext)", "Factory (CreateAiTrigger)", "Parsing & sanitization pipeline" ], "detailItems": [ { "label": "Owner", "value": "EpubReaderService" }, { "label": "Action", "value": "guard-clause" }, { "label": "Condition", "value": "string.IsNullOrWhiteSpace(text)" }, { "label": "Outcomes", "value": "return 0, continue" }, { "label": "Domain", "value": "Ebook, Chapter/ReadingOrder, ContentBlock (TextSegmentBlock, AiActionTriggerBlock)" } ], "navigationTargets": [ { "key": "source", "href": "vscode://file/NexusReader.Infrastructure/Services/EpubReaderService.cs:177:1", "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 177, "tooltip": "Open source" } ], "confidence": "high", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 177, "sourceTargetKind": "step", "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ] } ], "edgeMetadata": [ { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_type_nexusreader_web_client_handlers_authenticationheaderhandler_cs_authenticationheaderhandler_14_defines_type_14", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_type_nexusreader_web_client_handlers_authenticationheaderhandler_cs_authenticationheaderhandler_14", "relation": "transforms", "label": "model AuthenticationHeaderHandler", "semanticLabel": "model AuthenticationHeaderHandler", "semanticTitle": "model AuthenticationHeaderHandler", "collapsedLabel": "model AuthenticationHeaderHandler", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 14, "sourceTargetKind": "call-site", "outputSummary": "DelegatingHandler that attaches JWTs to trusted requests and orchestrates token refresh and retry behavior.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines_type_61", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "relation": "transforms", "label": "model ThrowingDbContextFactory", "semanticLabel": "model ThrowingDbContextFactory", "semanticTitle": "model ThrowingDbContextFactory", "collapsedLabel": "model ThrowingDbContextFactory", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 61, "sourceTargetKind": "call-site", "outputSummary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines_type_66", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "relation": "transforms", "label": "model ThrowingEmbeddingGenerator", "semanticLabel": "model ThrowingEmbeddingGenerator", "semanticTitle": "model ThrowingEmbeddingGenerator", "collapsedLabel": "model ThrowingEmbeddingGenerator", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 66, "sourceTargetKind": "call-site", "outputSummary": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines_type_74", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "relation": "transforms", "label": "model ThrowingBookStorageService", "semanticLabel": "model ThrowingBookStorageService", "semanticTitle": "model ThrowingBookStorageService", "collapsedLabel": "model ThrowingBookStorageService", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "sourceTargetKind": "call-site", "outputSummary": "IBookStorageService implementation that throws for all file storage operations in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines_type_84", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "relation": "transforms", "label": "model ThrowingEbookRepository", "semanticLabel": "model ThrowingEbookRepository", "semanticTitle": "model ThrowingEbookRepository", "collapsedLabel": "model ThrowingEbookRepository", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "sourceTargetKind": "call-site", "outputSummary": "IEbookRepository implementation that throws for all repository operations in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines_type_94", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "relation": "transforms", "label": "model ThrowingSyncBroadcaster", "semanticLabel": "model ThrowingSyncBroadcaster", "semanticTitle": "model ThrowingSyncBroadcaster", "collapsedLabel": "model ThrowingSyncBroadcaster", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 94, "sourceTargetKind": "call-site", "outputSummary": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers_service_18", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "relation": "uses", "label": "IPlatformService", "semanticLabel": "IPlatformService", "semanticTitle": "IPlatformService", "collapsedLabel": "IPlatformService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "sourceTargetKind": "call-site", "outputSummary": "Registers platform abstraction for browser.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33_registers_service_33", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "relation": "uses", "label": "NexusAuthenticationStateProvider", "semanticLabel": "NexusAuthenticationStateProvider", "semanticTitle": "NexusAuthenticationStateProvider", "collapsedLabel": "NexusAuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 33, "sourceTargetKind": "call-site", "outputSummary": "Authentication state provider and wiring to AuthenticationStateProvider.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38_registers_service_38", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "relation": "uses", "label": "IKnowledgeService", "semanticLabel": "IKnowledgeService", "semanticTitle": "IKnowledgeService", "collapsedLabel": "IKnowledgeService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 38, "sourceTargetKind": "call-site", "outputSummary": "Registers a WASM-specific knowledge service implementation.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_configured_httpclient_40_registers_service_40", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "relation": "uses", "label": "uses", "semanticLabel": "HttpClient (named 'NexusAPI')", "semanticTitle": "HttpClient (named 'NexusAPI')", "collapsedLabel": "uses", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 40, "sourceTargetKind": "call-site", "outputSummary": "Adds named HTTP client with base address and authentication header handler.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49_registers_service_49", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "relation": "uses", "label": "IDbContextFactory AppDbContext>", "semanticLabel": "IDbContextFactory", "semanticTitle": "IDbContextFactory", "collapsedLabel": "IDbContextFactory AppDbContext>", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 49, "sourceTargetKind": "call-site", "outputSummary": "Registers throw-only stub to avoid using DbContext in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_n_a_55_registers_service_55", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_n_a_55", "relation": "uses", "label": "application services via extension", "semanticLabel": "application services (via extension)", "semanticTitle": "application services (via extension)", "collapsedLabel": "application services via extension", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 55, "sourceTargetKind": "call-site", "outputSummary": "Calls AddApplication() to register application-layer services.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmepubreader_56_registers_service_56", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "relation": "uses", "label": "IEpubReader", "semanticLabel": "IEpubReader", "semanticTitle": "IEpubReader", "collapsedLabel": "IEpubReader", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 56, "sourceTargetKind": "call-site", "outputSummary": "Registers WASM epub reader implementation.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1_flow_type_nexusreader_web_client_services_webplatformservice_cs_webplatformservice_7_defines_type_7", "diagramId": "dependency_map_graph", "from": "flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1", "to": "flow_type_nexusreader_web_client_services_webplatformservice_cs_webplatformservice_7", "relation": "transforms", "label": "model WebPlatformService", "semanticLabel": "model WebPlatformService", "semanticTitle": "model WebPlatformService", "collapsedLabel": "model WebPlatformService", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 7, "sourceTargetKind": "call-site", "outputSummary": "Concrete platform service for the web client that implements IPlatformService using JS interop.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers_service_18", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "relation": "uses", "label": "IPlatformService", "semanticLabel": "IPlatformService", "semanticTitle": "IPlatformService", "collapsedLabel": "IPlatformService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "sourceTargetKind": "call-site", "outputSummary": "Registers platform abstraction for browser.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33_registers_service_33", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "relation": "uses", "label": "NexusAuthenticationStateProvider", "semanticLabel": "NexusAuthenticationStateProvider", "semanticTitle": "NexusAuthenticationStateProvider", "collapsedLabel": "NexusAuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 33, "sourceTargetKind": "call-site", "outputSummary": "Authentication state provider and wiring to AuthenticationStateProvider.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38_registers_service_38", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "relation": "uses", "label": "IKnowledgeService", "semanticLabel": "IKnowledgeService", "semanticTitle": "IKnowledgeService", "collapsedLabel": "IKnowledgeService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 38, "sourceTargetKind": "call-site", "outputSummary": "Registers a WASM-specific knowledge service implementation.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_configured_httpclient_40_registers_service_40", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "relation": "uses", "label": "uses", "semanticLabel": "HttpClient (named 'NexusAPI')", "semanticTitle": "HttpClient (named 'NexusAPI')", "collapsedLabel": "uses", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 40, "sourceTargetKind": "call-site", "outputSummary": "Adds named HTTP client with base address and authentication header handler.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49_registers_service_49", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "relation": "uses", "label": "IDbContextFactory AppDbContext>", "semanticLabel": "IDbContextFactory", "semanticTitle": "IDbContextFactory", "collapsedLabel": "IDbContextFactory AppDbContext>", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 49, "sourceTargetKind": "call-site", "outputSummary": "Registers throw-only stub to avoid using DbContext in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_n_a_55_registers_service_55", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_n_a_55", "relation": "uses", "label": "application services via extension", "semanticLabel": "application services (via extension)", "semanticTitle": "application services (via extension)", "collapsedLabel": "application services via extension", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 55, "sourceTargetKind": "call-site", "outputSummary": "Calls AddApplication() to register application-layer services.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmepubreader_56_registers_service_56", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "relation": "uses", "label": "IEpubReader", "semanticLabel": "IEpubReader", "semanticTitle": "IEpubReader", "collapsedLabel": "IEpubReader", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 56, "sourceTargetKind": "call-site", "outputSummary": "Registers WASM epub reader implementation.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_run_wasm_host_59_configures_pipeline_59", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_run_wasm_host_59", "relation": "calls", "label": "unknown", "semanticLabel": "unknown", "semanticTitle": "unknown", "collapsedLabel": "unknown", "expandedLabel": "configures-pipeline", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 59, "sourceTargetKind": "call-site", "outputSummary": "unknown", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_nexusreader_web_client_csproj_file_1_flow_method_nexusreader_web_client_nexusreader_web_client_csproj_project_configuration_1_configures_pipeline_1", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_web_client_nexusreader_web_client_csproj_file_1", "to": "flow_method_nexusreader_web_client_nexusreader_web_client_csproj_project_configuration_1", "relation": "calls", "label": "unknown", "semanticLabel": "unknown", "semanticTitle": "unknown", "collapsedLabel": "unknown", "expandedLabel": "configures-pipeline", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/NexusReader.Web.Client.csproj", "sourceLine": 1, "sourceTargetKind": "call-site", "outputSummary": "unknown", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/NexusReader.Web.Client.csproj" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers_service_28", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "relation": "uses", "label": "IPlatformService", "semanticLabel": "IPlatformService", "semanticTitle": "IPlatformService", "collapsedLabel": "IPlatformService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "sourceTargetKind": "call-site", "outputSummary": "Registers platform abstraction implemented for MAUI", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers_service_29", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "relation": "uses", "label": "INativeStorageService", "semanticLabel": "INativeStorageService", "semanticTitle": "INativeStorageService", "collapsedLabel": "INativeStorageService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "sourceTargetKind": "call-site", "outputSummary": "Registers platform native storage implementation", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers_service_32", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "relation": "uses", "label": "NexusAuthenticationStateProvider", "semanticLabel": "NexusAuthenticationStateProvider", "semanticTitle": "NexusAuthenticationStateProvider", "collapsedLabel": "NexusAuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "sourceTargetKind": "call-site", "outputSummary": "Concrete auth state provider registered", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_via_factory_33_registers_service_33", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_via_factory_33", "relation": "uses", "label": "Microsoft.AspNetCore.Components.Authorization.AuthenticationStateProvider", "semanticLabel": "Microsoft.AspNetCore.Components.Authorization.AuthenticationStateProvider", "semanticTitle": "Microsoft.AspNetCore.Components.Authorization.AuthenticationStateProvider", "collapsedLabel": "Microsoft.AspNetCore.Components.Authorization.AuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "sourceTargetKind": "call-site", "outputSummary": "Maps framework AuthenticationStateProvider to NexusAuthenticationStateProvider via service locator factory", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_configured_38_registers_service_38", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_configured_38", "relation": "uses", "label": "HttpClient", "semanticLabel": "HttpClient", "semanticTitle": "HttpClient", "collapsedLabel": "HttpClient", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "sourceTargetKind": "call-site", "outputSummary": "Registers HttpClient with BaseAddress = http://10.0.2.2:5000 (Android emulator to local server)", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_focusmodeservice_quizstateservice_readernavigationservice_knowledgegraphservice_readerinteractionservice_knowledgecoordinator_syncservice_identityservice_1_registers_service_1", "diagramId": "startup_runtime_graph", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_focusmodeservice_quizstateservice_readernavigationservice_knowledgegraphservice_readerinteractionservice_knowledgecoordinator_syncservice_identityservice_1", "relation": "uses", "label": "UI and app state services", "semanticLabel": "UI and app state services", "semanticTitle": "UI and app state services", "collapsedLabel": "UI and app state services", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "sourceTargetKind": "call-site", "outputSummary": "Registers multiple scoped services handling UI state, knowledge coordination, sync and identity", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_program_top_level_startup_15_invokes_15", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_program_top_level_startup_15", "relation": "calls", "label": "Program top-level startup", "semanticLabel": "Program (top-level startup)", "semanticTitle": "Program (top-level startup)", "collapsedLabel": "Program top-level startup", "expandedLabel": "handles-route", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 15, "sourceTargetKind": "call-site", "outputSummary": "Create the WebAssemblyHostBuilder, register application and platform services, add HTTP client and dummy server-only stubs, then build and run the WASM host.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_getservice_71_invokes_71", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_getservice_71", "relation": "calls", "label": "GetService", "semanticLabel": "GetService", "semanticTitle": "GetService", "collapsedLabel": "GetService", "expandedLabel": "handles-route", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 71, "sourceTargetKind": "call-site", "outputSummary": "Fallback service resolver stub that always returns null.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_getservice_71_flow_action_nexusreader_web_client_program_cs_getservice_return_71_71_returns_71", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_method_nexusreader_web_client_program_cs_getservice_71", "to": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "relation": "returns", "label": "returns null", "semanticLabel": "returns null", "semanticTitle": "returns null", "collapsedLabel": "returns null", "expandedLabel": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 71, "sourceTargetKind": "return-source", "outputSummary": "public object? GetService(...) => null", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88_invokes_88", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "relation": "calls", "label": "FindAuthorByNameAsync", "semanticLabel": "FindAuthorByNameAsync", "semanticTitle": "FindAuthorByNameAsync", "collapsedLabel": "FindAuthorByNameAsync", "expandedLabel": "handles-route", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "sourceTargetKind": "call-site", "outputSummary": "Repository lookup stub that throws because repository access is unsupported in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88_flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88_invokes_88", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "to": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "sourceTargetKind": "call-site", "outputSummary": "public Task FindAuthorByNameAsync(string name, CancellationToken cancellationToken = default) => throw new NotSupportedException(ErrorMessage);", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines_type_61", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "relation": "transforms", "label": "model ThrowingDbContextFactory", "semanticLabel": "model ThrowingDbContextFactory", "semanticTitle": "model ThrowingDbContextFactory", "collapsedLabel": "model ThrowingDbContextFactory", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 61, "sourceTargetKind": "call-site", "outputSummary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines_type_66", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "relation": "transforms", "label": "model ThrowingEmbeddingGenerator", "semanticLabel": "model ThrowingEmbeddingGenerator", "semanticTitle": "model ThrowingEmbeddingGenerator", "collapsedLabel": "model ThrowingEmbeddingGenerator", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 66, "sourceTargetKind": "call-site", "outputSummary": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines_type_74", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "relation": "transforms", "label": "model ThrowingBookStorageService", "semanticLabel": "model ThrowingBookStorageService", "semanticTitle": "model ThrowingBookStorageService", "collapsedLabel": "model ThrowingBookStorageService", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "sourceTargetKind": "call-site", "outputSummary": "IBookStorageService implementation that throws for all file storage operations in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines_type_84", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "relation": "transforms", "label": "model ThrowingEbookRepository", "semanticLabel": "model ThrowingEbookRepository", "semanticTitle": "model ThrowingEbookRepository", "collapsedLabel": "model ThrowingEbookRepository", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "sourceTargetKind": "call-site", "outputSummary": "IEbookRepository implementation that throws for all repository operations in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines_type_94", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "relation": "transforms", "label": "model ThrowingSyncBroadcaster", "semanticLabel": "model ThrowingSyncBroadcaster", "semanticTitle": "model ThrowingSyncBroadcaster", "collapsedLabel": "model ThrowingSyncBroadcaster", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 94, "sourceTargetKind": "call-site", "outputSummary": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers_service_18", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "relation": "uses", "label": "IPlatformService", "semanticLabel": "IPlatformService", "semanticTitle": "IPlatformService", "collapsedLabel": "IPlatformService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "sourceTargetKind": "call-site", "outputSummary": "Registers platform abstraction for browser.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33_registers_service_33", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "relation": "uses", "label": "NexusAuthenticationStateProvider", "semanticLabel": "NexusAuthenticationStateProvider", "semanticTitle": "NexusAuthenticationStateProvider", "collapsedLabel": "NexusAuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 33, "sourceTargetKind": "call-site", "outputSummary": "Authentication state provider and wiring to AuthenticationStateProvider.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38_registers_service_38", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "relation": "uses", "label": "IKnowledgeService", "semanticLabel": "IKnowledgeService", "semanticTitle": "IKnowledgeService", "collapsedLabel": "IKnowledgeService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 38, "sourceTargetKind": "call-site", "outputSummary": "Registers a WASM-specific knowledge service implementation.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_configured_httpclient_40_registers_service_40", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "relation": "uses", "label": "uses", "semanticLabel": "HttpClient (named 'NexusAPI')", "semanticTitle": "HttpClient (named 'NexusAPI')", "collapsedLabel": "uses", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 40, "sourceTargetKind": "call-site", "outputSummary": "Adds named HTTP client with base address and authentication header handler.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49_registers_service_49", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "relation": "uses", "label": "IDbContextFactory AppDbContext>", "semanticLabel": "IDbContextFactory", "semanticTitle": "IDbContextFactory", "collapsedLabel": "IDbContextFactory AppDbContext>", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 49, "sourceTargetKind": "call-site", "outputSummary": "Registers throw-only stub to avoid using DbContext in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_n_a_55_registers_service_55", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_n_a_55", "relation": "uses", "label": "application services via extension", "semanticLabel": "application services (via extension)", "semanticTitle": "application services (via extension)", "collapsedLabel": "application services via extension", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 55, "sourceTargetKind": "call-site", "outputSummary": "Calls AddApplication() to register application-layer services.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmepubreader_56_registers_service_56", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "relation": "uses", "label": "IEpubReader", "semanticLabel": "IEpubReader", "semanticTitle": "IEpubReader", "collapsedLabel": "IEpubReader", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 56, "sourceTargetKind": "call-site", "outputSummary": "Registers WASM epub reader implementation.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_run_wasm_host_59_configures_pipeline_59", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_run_wasm_host_59", "relation": "calls", "label": "unknown", "semanticLabel": "unknown", "semanticTitle": "unknown", "collapsedLabel": "unknown", "expandedLabel": "configures-pipeline", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 59, "sourceTargetKind": "call-site", "outputSummary": "unknown", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_program_top_level_29_invokes_29", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_program_top_level_29", "relation": "calls", "label": "Program top-level", "semanticLabel": "Program (top-level)", "semanticTitle": "Program (top-level)", "collapsedLabel": "Program top-level", "expandedLabel": "handles-route", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 29, "sourceTargetKind": "call-site", "outputSummary": "Top-level program: build host, register services and middleware, map routes/endpoints, run the app.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates_condition_62", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "relation": "calls", "label": "true / false", "semanticLabel": "true / false", "semanticTitle": "true / false", "collapsedLabel": "true / false", "expandedLabel": "evaluates-condition", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "call-site", "outputSummary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "relation": "calls", "label": "fallback", "semanticLabel": "fallback", "semanticTitle": "fallback", "collapsedLabel": "fallback", "expandedLabel": "falls-back", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "call-site", "outputSummary": "else", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_invokes_125", "diagramId": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 125, "sourceTargetKind": "call-site", "outputSummary": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_getservice_71_flow_action_nexusreader_web_client_program_cs_getservice_return_71_71_returns_71", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "from": "flow_method_nexusreader_web_client_program_cs_getservice_71", "to": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "relation": "returns", "label": "returns null", "semanticLabel": "returns null", "semanticTitle": "returns null", "collapsedLabel": "returns null", "expandedLabel": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 71, "sourceTargetKind": "return-source", "outputSummary": "public object? GetService(...) => null", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88_flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88_invokes_88", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "from": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "to": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "sourceTargetKind": "call-site", "outputSummary": "public Task FindAuthorByNameAsync(string name, CancellationToken cancellationToken = default) => throw new NotSupportedException(ErrorMessage);", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates_condition_62", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "relation": "calls", "label": "true / false", "semanticLabel": "true / false", "semanticTitle": "true / false", "collapsedLabel": "true / false", "expandedLabel": "evaluates-condition", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "call-site", "outputSummary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "relation": "calls", "label": "fallback", "semanticLabel": "fallback", "semanticTitle": "fallback", "collapsedLabel": "fallback", "expandedLabel": "falls-back", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "call-site", "outputSummary": "else", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_invokes_125", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 125, "sourceTargetKind": "call-site", "outputSummary": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_invokes_126", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 126, "sourceTargetKind": "call-site", "outputSummary": "context.Request.Path.StartsWithSegments(\"/identity\") ||", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8_uses_service_78", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8", "relation": "uses", "label": "AddApplication", "semanticLabel": "AddApplication", "semanticTitle": "AddApplication", "collapsedLabel": "AddApplication", "expandedLabel": "uses-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 78, "sourceTargetKind": "call-site", "outputSummary": "IServiceCollection", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31_uses_service_79", "diagramId": "control_flow_flow_1_nexusreader_web_client_program_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31", "relation": "uses", "label": "AddInfrastructure", "semanticLabel": "AddInfrastructure", "semanticTitle": "AddInfrastructure", "collapsedLabel": "AddInfrastructure", "expandedLabel": "uses-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 79, "sourceTargetKind": "call-site", "outputSummary": "IServiceCollection, IConfiguration", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines_type_61", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "relation": "transforms", "label": "model ThrowingDbContextFactory", "semanticLabel": "model ThrowingDbContextFactory", "semanticTitle": "model ThrowingDbContextFactory", "collapsedLabel": "model ThrowingDbContextFactory", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 61, "sourceTargetKind": "call-site", "outputSummary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines_type_66", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "relation": "transforms", "label": "model ThrowingEmbeddingGenerator", "semanticLabel": "model ThrowingEmbeddingGenerator", "semanticTitle": "model ThrowingEmbeddingGenerator", "collapsedLabel": "model ThrowingEmbeddingGenerator", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 66, "sourceTargetKind": "call-site", "outputSummary": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines_type_74", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "relation": "transforms", "label": "model ThrowingBookStorageService", "semanticLabel": "model ThrowingBookStorageService", "semanticTitle": "model ThrowingBookStorageService", "collapsedLabel": "model ThrowingBookStorageService", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "sourceTargetKind": "call-site", "outputSummary": "IBookStorageService implementation that throws for all file storage operations in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines_type_84", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "relation": "transforms", "label": "model ThrowingEbookRepository", "semanticLabel": "model ThrowingEbookRepository", "semanticTitle": "model ThrowingEbookRepository", "collapsedLabel": "model ThrowingEbookRepository", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "sourceTargetKind": "call-site", "outputSummary": "IEbookRepository implementation that throws for all repository operations in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines_type_94", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "relation": "transforms", "label": "model ThrowingSyncBroadcaster", "semanticLabel": "model ThrowingSyncBroadcaster", "semanticTitle": "model ThrowingSyncBroadcaster", "collapsedLabel": "model ThrowingSyncBroadcaster", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 94, "sourceTargetKind": "call-site", "outputSummary": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_knowledgerequest_566_maps_dto_566", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_knowledgerequest_566", "relation": "transforms", "label": "dto KnowledgeRequest", "semanticLabel": "dto KnowledgeRequest", "semanticTitle": "dto KnowledgeRequest", "collapsedLabel": "dto KnowledgeRequest", "expandedLabel": "maps-dto", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 566, "sourceTargetKind": "call-site", "outputSummary": "Request DTO carrying free-text input and optional ebook context for knowledge APIs.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_groundednessrequest_567_maps_dto_567", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_groundednessrequest_567", "relation": "transforms", "label": "dto GroundednessRequest", "semanticLabel": "dto GroundednessRequest", "semanticTitle": "dto GroundednessRequest", "collapsedLabel": "dto GroundednessRequest", "expandedLabel": "maps-dto", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 567, "sourceTargetKind": "call-site", "outputSummary": "Request DTO for verifying answer groundedness in a context.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_semanticsearchrequest_568_maps_dto_568", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_semanticsearchrequest_568", "relation": "transforms", "label": "dto SemanticSearchRequest", "semanticLabel": "dto SemanticSearchRequest", "semanticTitle": "dto SemanticSearchRequest", "collapsedLabel": "dto SemanticSearchRequest", "expandedLabel": "maps-dto", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 568, "sourceTargetKind": "call-site", "outputSummary": "DTO for semantic search requests with a limit.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_askquestionrequest_569_maps_dto_569", "diagramId": "contracts_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_askquestionrequest_569", "relation": "transforms", "label": "dto AskQuestionRequest", "semanticLabel": "dto AskQuestionRequest", "semanticTitle": "dto AskQuestionRequest", "collapsedLabel": "dto AskQuestionRequest", "expandedLabel": "maps-dto", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 569, "sourceTargetKind": "call-site", "outputSummary": "DTO for question-asking APIs including optional ebook context and limit.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines_type_61", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "relation": "transforms", "label": "model ThrowingDbContextFactory", "semanticLabel": "model ThrowingDbContextFactory", "semanticTitle": "model ThrowingDbContextFactory", "collapsedLabel": "model ThrowingDbContextFactory", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 61, "sourceTargetKind": "call-site", "outputSummary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines_type_66", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "relation": "transforms", "label": "model ThrowingEmbeddingGenerator", "semanticLabel": "model ThrowingEmbeddingGenerator", "semanticTitle": "model ThrowingEmbeddingGenerator", "collapsedLabel": "model ThrowingEmbeddingGenerator", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 66, "sourceTargetKind": "call-site", "outputSummary": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines_type_74", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "relation": "transforms", "label": "model ThrowingBookStorageService", "semanticLabel": "model ThrowingBookStorageService", "semanticTitle": "model ThrowingBookStorageService", "collapsedLabel": "model ThrowingBookStorageService", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "sourceTargetKind": "call-site", "outputSummary": "IBookStorageService implementation that throws for all file storage operations in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines_type_84", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "relation": "transforms", "label": "model ThrowingEbookRepository", "semanticLabel": "model ThrowingEbookRepository", "semanticTitle": "model ThrowingEbookRepository", "collapsedLabel": "model ThrowingEbookRepository", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "sourceTargetKind": "call-site", "outputSummary": "IEbookRepository implementation that throws for all repository operations in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines_type_94", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "relation": "transforms", "label": "model ThrowingSyncBroadcaster", "semanticLabel": "model ThrowingSyncBroadcaster", "semanticTitle": "model ThrowingSyncBroadcaster", "collapsedLabel": "model ThrowingSyncBroadcaster", "expandedLabel": "defines-type", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 94, "sourceTargetKind": "call-site", "outputSummary": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers_service_18", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "relation": "uses", "label": "IPlatformService", "semanticLabel": "IPlatformService", "semanticTitle": "IPlatformService", "collapsedLabel": "IPlatformService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "sourceTargetKind": "call-site", "outputSummary": "Registers platform abstraction for browser.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33_registers_service_33", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "relation": "uses", "label": "NexusAuthenticationStateProvider", "semanticLabel": "NexusAuthenticationStateProvider", "semanticTitle": "NexusAuthenticationStateProvider", "collapsedLabel": "NexusAuthenticationStateProvider", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 33, "sourceTargetKind": "call-site", "outputSummary": "Authentication state provider and wiring to AuthenticationStateProvider.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38_registers_service_38", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "relation": "uses", "label": "IKnowledgeService", "semanticLabel": "IKnowledgeService", "semanticTitle": "IKnowledgeService", "collapsedLabel": "IKnowledgeService", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 38, "sourceTargetKind": "call-site", "outputSummary": "Registers a WASM-specific knowledge service implementation.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_configured_httpclient_40_registers_service_40", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "relation": "uses", "label": "uses", "semanticLabel": "HttpClient (named 'NexusAPI')", "semanticTitle": "HttpClient (named 'NexusAPI')", "collapsedLabel": "uses", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 40, "sourceTargetKind": "call-site", "outputSummary": "Adds named HTTP client with base address and authentication header handler.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49_registers_service_49", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "relation": "uses", "label": "IDbContextFactory AppDbContext>", "semanticLabel": "IDbContextFactory", "semanticTitle": "IDbContextFactory", "collapsedLabel": "IDbContextFactory AppDbContext>", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 49, "sourceTargetKind": "call-site", "outputSummary": "Registers throw-only stub to avoid using DbContext in WASM.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_n_a_55_registers_service_55", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_n_a_55", "relation": "uses", "label": "application services via extension", "semanticLabel": "application services (via extension)", "semanticTitle": "application services (via extension)", "collapsedLabel": "application services via extension", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 55, "sourceTargetKind": "call-site", "outputSummary": "Calls AddApplication() to register application-layer services.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmepubreader_56_registers_service_56", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "relation": "uses", "label": "IEpubReader", "semanticLabel": "IEpubReader", "semanticTitle": "IEpubReader", "collapsedLabel": "IEpubReader", "expandedLabel": "registers-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 56, "sourceTargetKind": "call-site", "outputSummary": "Registers WASM epub reader implementation.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "diagramId": "layer_flow_1_nexusreader_web_client_program_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "relation": "calls", "label": "fallback", "semanticLabel": "fallback", "semanticTitle": "fallback", "collapsedLabel": "fallback", "expandedLabel": "falls-back", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "call-site", "outputSummary": "else", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_getservice_71_flow_action_nexusreader_web_client_program_cs_getservice_return_71_71_returns_71", "diagramId": "failure_flow_1_nexusreader_web_client_program_cs", "from": "flow_method_nexusreader_web_client_program_cs_getservice_71", "to": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "relation": "returns", "label": "returns null", "semanticLabel": "returns null", "semanticTitle": "returns null", "collapsedLabel": "returns null", "expandedLabel": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 71, "sourceTargetKind": "return-source", "outputSummary": "public object? GetService(...) => null", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs" ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates_condition_62", "diagramId": "failure_flow_1_nexusreader_web_client_program_cs", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "relation": "calls", "label": "true / false", "semanticLabel": "true / false", "semanticTitle": "true / false", "collapsedLabel": "true / false", "expandedLabel": "evaluates-condition", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "sourceTargetKind": "call-site", "outputSummary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "diagramId": "failure_flow_1_nexusreader_web_client_program_cs", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "relation": "calls", "label": "fallback", "semanticLabel": "fallback", "semanticTitle": "fallback", "collapsedLabel": "fallback", "expandedLabel": "falls-back", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "sourceTargetKind": "call-site", "outputSummary": "else", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112_invokes_112", "diagramId": "method_flows_graph", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "relation": "calls", "label": "CloneHttpRequestMessageAsync", "semanticLabel": "CloneHttpRequestMessageAsync", "semanticTitle": "CloneHttpRequestMessageAsync", "collapsedLabel": "CloneHttpRequestMessageAsync", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 112, "sourceTargetKind": "call-site", "outputSummary": "Creates a deep-ish clone of an HttpRequestMessage including method, URI, version, headers and buffered content to allow safe retry.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119_evaluates_condition_119", "diagramId": "method_flows_graph", "from": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "relation": "calls", "label": "true / false", "semanticLabel": "true / false", "semanticTitle": "true / false", "collapsedLabel": "true / false", "expandedLabel": "evaluates-condition", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 119, "sourceTargetKind": "call-site", "outputSummary": "if (req.Content != null)", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237_flow_method_nexusreader_infrastructure_realtime_synchub_cs_synchub_14_uses_service_247", "diagramId": "method_flows_graph", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237", "to": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_synchub_14", "relation": "uses", "label": "SyncHub", "semanticLabel": "SyncHub", "semanticTitle": "SyncHub", "collapsedLabel": "SyncHub", "expandedLabel": "uses-service", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 247, "sourceTargetKind": "call-site", "outputSummary": "Hub mapping for realtime sync", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs" ] }, { "id": "edge_flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1_flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19_invokes_19", "diagramId": "method_flows_graph", "from": "flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1", "to": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19", "relation": "calls", "label": "UpdateProgress", "semanticLabel": "UpdateProgress", "semanticTitle": "UpdateProgress", "collapsedLabel": "UpdateProgress", "expandedLabel": "handles-route", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 19, "sourceTargetKind": "call-site", "outputSummary": "Receives client progress updates, obtains the calling user id and forwards an UpdateReadingProgressCommand via MediatR when user is present.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "edge_flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19_flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_21_21_invokes_21", "diagramId": "method_flows_graph", "from": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_21_21", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 21, "sourceTargetKind": "call-site", "outputSummary": "var userId = Context.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value;", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "edge_flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1_flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28_invokes_28", "diagramId": "method_flows_graph", "from": "flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1", "to": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28", "relation": "calls", "label": "OnConnectedAsync", "semanticLabel": "OnConnectedAsync", "semanticTitle": "OnConnectedAsync", "collapsedLabel": "OnConnectedAsync", "expandedLabel": "handles-route", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 28, "sourceTargetKind": "call-site", "outputSummary": "When a client connects, adds their connection to a per-user SignalR group (User_{userId}) and calls base connection logic.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "edge_flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28_flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_30_30_invokes_30", "diagramId": "method_flows_graph", "from": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_30_30", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 30, "sourceTargetKind": "call-site", "outputSummary": "var userId = Context.UserIdentifier;", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "edge_flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1_flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38_invokes_38", "diagramId": "method_flows_graph", "from": "flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1", "to": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38", "relation": "calls", "label": "OnDisconnectedAsync", "semanticLabel": "OnDisconnectedAsync", "semanticTitle": "OnDisconnectedAsync", "collapsedLabel": "OnDisconnectedAsync", "expandedLabel": "handles-route", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 38, "sourceTargetKind": "call-site", "outputSummary": "When a client disconnects, removes their connection from the per-user SignalR group and invokes base disconnect logic.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "edge_flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38_flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_40_40_invokes_40", "diagramId": "method_flows_graph", "from": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_40_40", "relation": "calls", "label": "Reads repository or persistence state", "semanticLabel": "Reads repository or persistence state", "semanticTitle": "Reads repository or persistence state", "collapsedLabel": "Reads repository or persistence state", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 40, "sourceTargetKind": "call-site", "outputSummary": "var userId = Context.UserIdentifier;", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs" ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175_invokes_175", "diagramId": "method_flows_graph", "from": "flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175", "relation": "calls", "label": "CountWords", "semanticLabel": "CountWords", "semanticTitle": "CountWords", "collapsedLabel": "CountWords", "expandedLabel": "invokes", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 175, "sourceTargetKind": "call-site", "outputSummary": "Count words in a string using whitespace separators; returns 0 for null/whitespace.", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs" ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_guard_clause_177_177_evaluates_condition_177", "diagramId": "method_flows_graph", "from": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_guard_clause_177_177", "relation": "calls", "label": "return 0 / continue", "semanticLabel": "return 0 / continue", "semanticTitle": "return 0 / continue", "collapsedLabel": "return 0 / continue", "expandedLabel": "evaluates-condition", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 177, "sourceTargetKind": "call-site", "outputSummary": "Empty text check", "inputTypePaths": [], "outputTypePaths": [], "evidencePaths": [ "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs" ] } ], "contextBagDebug": { "id": "web_client_wasm_md", "bagType": "auth", "title": "Blazor WebAssembly Client: hosting, handlers, and platform services context bag", "anchorFiles": [ "NexusReader.Web.Client/Program.cs", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs" ], "includedFiles": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "reason": "Included because it likely participates in the core orchestration path", "source": "scope" }, { "path": "NexusReader.Web.Client/Program.cs", "reason": "Selected as an entrypoint anchor for this flow scope", "source": "entrypoint" }, { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "reason": "Included because it likely participates in the core orchestration path", "source": "scope" }, { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "reason": "Included because it likely participates in the core orchestration path", "source": "scope" }, { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "reason": "Included because it likely participates in the core orchestration path", "source": "scope" }, { "path": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "reason": "Included because it belongs to the resolved document scope", "source": "scope" }, { "path": "NexusReader.Maui/MauiProgram.cs", "reason": "Selected as an entrypoint anchor for this flow scope", "source": "entrypoint" }, { "path": "NexusReader.Web/Program.cs", "reason": "Selected as an entrypoint anchor for this flow scope", "source": "entrypoint" }, { "path": "NexusReader.Application/DependencyInjection.cs", "reason": "Included because it is called by an anchor method (call-chain widening)", "source": "call-chain" }, { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "reason": "Included because it is called by an anchor method (call-chain widening)", "source": "call-chain" }, { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "reason": "Included because it is called by an anchor method (call-chain widening)", "source": "call-chain" }, { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "reason": "Included because it is called by an anchor method (call-chain widening)", "source": "call-chain" }, { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "reason": "Included because it is called by an anchor method (call-chain widening)", "source": "call-chain" }, { "path": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "reason": "Included because it is called by an anchor method (call-chain widening)", "source": "call-chain" }, { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "reason": "Included because it is called by an anchor method (call-chain widening)", "source": "call-chain" }, { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "reason": "Included because it is called by an anchor method (call-chain widening)", "source": "call-chain" }, { "path": "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs", "reason": "Included because it is called by an anchor method (call-chain widening)", "source": "call-chain" } ], "relatedDomains": [ "auth" ], "relatedEntrypoints": [ "NexusReader.Web.Client/Program.cs", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs" ], "confidence": 0.75 }, "flowGraph": { "contextBagId": "web_client_wasm_md", "nodes": [ { "id": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "label": "AuthenticationHeaderHandler", "role": "handler", "layer": "frontend", "kind": "file", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "label": "SendAsync", "role": "handler", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 27 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "label": "Calls external dependency", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 27 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32", "label": "Detect auth endpoints", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 32 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39", "label": "Trusted host check", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 39, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 39 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45", "label": "Attach token to request", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 45 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45", "label": "Evaluates branch condition", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 45 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48", "label": "Evaluates branch condition", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 48, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 48 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55", "label": "Calls external dependency", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 55 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58", "label": "Evaluates branch condition", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 58, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 58 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69", "label": "Concurrent-refresh detection", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 69, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 69 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69", "label": "Evaluates branch condition", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 69, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 69 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73", "label": "Falls back to alternate path", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 73, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 73 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79", "label": "Evaluates branch condition", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 79 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85", "label": "Falls back to alternate path", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 85, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 85 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91", "label": "Evaluates branch condition", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 91, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 91 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_retry_91_91", "label": "Retry original request with new token", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 91, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 91 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_95_95", "label": "Calls external dependency", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 95, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 95 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_95_95", "label": "Returns result", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 95, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 95 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_109_109", "label": "Return response", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 109, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 109 } ] }, { "id": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "label": "CloneHttpRequestMessageAsync", "role": "handler", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 112, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 112 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "label": "Evaluates branch condition", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 119, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 119 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126", "label": "Repeats work over a collection or condition", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 126, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 126 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132", "label": "Repeats work over a collection or condition", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 132, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 132 } ] }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_return_139_139", "label": "Return cloned request", "role": "handler", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 139, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 139 } ] }, { "id": "flow_type_nexusreader_web_client_handlers_authenticationheaderhandler_cs_authenticationheaderhandler_14", "label": "AuthenticationHeaderHandler", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 14, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 14 } ] }, { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "label": "Program.cs", "role": "startup", "layer": "frontend", "kind": "entrypoint", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_program_top_level_startup_15", "label": "Program (top-level startup)", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 15, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 15 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_getservice_71", "label": "GetService", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 71 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "label": "returns null", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 71 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "label": "FindAuthorByNameAsync", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "label": "Reads repository or persistence state", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "label": "ThrowingDbContextFactory", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 61 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "label": "ThrowingEmbeddingGenerator", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 66 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "label": "ThrowingBookStorageService", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 74 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "label": "ThrowingEbookRepository", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 84 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "label": "ThrowingSyncBroadcaster", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 94, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 94 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "label": "WebPlatformService", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 18 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "label": "NexusAuthenticationStateProvider", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 33, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 33 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "label": "WasmKnowledgeService", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 38, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 38 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "label": "configured HttpClient", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 40 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "label": "ThrowingDbContextFactory", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 49, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 49 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_n_a_55", "label": "N/A", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 55 } ] }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "label": "WasmEpubReader", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 56, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 56 } ] }, { "id": "flow_method_nexusreader_web_client_program_cs_run_wasm_host_59", "label": "Run WASM Host", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 59, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 59 } ] }, { "id": "flow_file_nexusreader_web_client_services_wasmepubservice_cs_file_1", "label": "WasmEpubReader", "role": "service", "layer": "frontend", "kind": "file", "filePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_17", "label": "GetEpubContentAsync", "role": "service", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 17, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 17 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_branch_26_26", "label": "Evaluates branch condition", "role": "service", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 26, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 26 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_guard_clause_29_29", "label": "Null check after deserialization", "role": "service", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 29 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_return_29_29", "label": "Returns result", "role": "service", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 29 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_return_33_33", "label": "Returns result", "role": "service", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 33, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 33 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_return_37_37", "label": "Returns result", "role": "service", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 37, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 37 } ] }, { "id": "flow_method_nexusreader_web_client_services_wasmepubservice_cs_extractmetadataasync_45", "label": "ExtractMetadataAsync", "role": "service", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 45 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_extractmetadataasync_return_53_53", "label": "Returns result", "role": "service", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 53, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 53 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_extractmetadataasync_return_57_57", "label": "Returns result", "role": "service", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 57, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 57 } ] }, { "id": "flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1", "label": "WasmKnowledgeService", "role": "integration-client", "layer": "frontend", "kind": "file", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgeasync_17", "label": "GetKnowledgeAsync", "role": "integration-client", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 17, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 17 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgeasync_return_19_19", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 19, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 19 } ] }, { "id": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getgraphdataasync_22", "label": "GetGraphDataAsync", "role": "integration-client", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 22, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 22 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getgraphdataasync_return_24_24", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 24, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 24 } ] }, { "id": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgemapasync_27", "label": "GetKnowledgeMapAsync", "role": "integration-client", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 27, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 27 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgemapasync_return_29_29", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 29 } ] }, { "id": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getsummaryandquizasync_32", "label": "GetSummaryAndQuizAsync", "role": "integration-client", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 32 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getsummaryandquizasync_return_34_34", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 34, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 34 } ] }, { "id": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_37", "label": "GetRelevantContextAsync", "role": "integration-client", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 37, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 37 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_branch_42_42", "label": "Evaluates branch condition", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 42, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 42 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_repository_read_45_45", "label": "Reads repository or persistence state", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 45 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_45_45", "label": "Return Ok or Fail depending on deserialization", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 45 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_branch_48_48", "label": "Error path: read error body and return Fail", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 48, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 48 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_49_49", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 49, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 49 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_53_53", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 53, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 53 } ] }, { "id": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_56", "label": "VerifyGroundednessAsync", "role": "integration-client", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 56, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 56 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_branch_61_61", "label": "Evaluates branch condition", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 61 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_64_64", "label": "Return Ok or Fail depending on deserialization", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 64, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 64 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_branch_67_67", "label": "Error path: read error body and return Fail", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 67, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 67 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_68_68", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 68, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 68 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_72_72", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 72, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 72 } ] }, { "id": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_76", "label": "SearchLibrarySemanticallyAsync", "role": "integration-client", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 76, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 76 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_branch_81_81", "label": "Evaluates branch condition", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 81, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 81 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_84_84", "label": "Return Ok(results) or Ok(empty list)", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 84 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_branch_87_87", "label": "Error path: read error body and return Fail", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 87, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 87 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_88_88", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 88 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_92_92", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 92, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 92 } ] }, { "id": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_96", "label": "AskQuestionAsync", "role": "integration-client", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 96, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 96 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_branch_101_101", "label": "Evaluates branch condition", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 101, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 101 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_104_104", "label": "Return Ok or Fail depending on deserialization", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 104, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 104 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_branch_107_107", "label": "Error path: read error body and return Fail", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 107, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 107 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_108_108", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 108, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 108 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_112_112", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 112, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 112 } ] }, { "id": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_116", "label": "CallKnowledgeApiAsync", "role": "integration-client", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 116, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 116 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_branch_121_121", "label": "Evaluates branch condition", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 121, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 121 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_124_124", "label": "Return Ok(packet) or Fail on null", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 124, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 124 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_branch_127_127", "label": "Error path: read error body and return Fail", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 127, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 127 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_128_128", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 128, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 128 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_132_132", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 132, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 132 } ] }, { "id": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_136", "label": "ClearCacheAsync", "role": "integration-client", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 136, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 136 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_branch_142_142", "label": "Evaluates branch condition", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 142, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 142 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_return_145_145", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 145, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 145 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_branch_148_148", "label": "Error path: read error body and return Fail", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 148, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 148 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_return_149_149", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 149, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 149 } ] }, { "id": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_return_153_153", "label": "Returns result", "role": "integration-client", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 153, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 153 } ] }, { "id": "flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1", "label": "WebPlatformService", "role": "service", "layer": "frontend", "kind": "file", "filePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourcePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_web_client_services_webplatformservice_cs_vibratesuccessasync_16", "label": "VibrateSuccessAsync", "role": "service", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourcePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 16, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 16 } ] }, { "id": "flow_method_nexusreader_web_client_services_webplatformservice_cs_vibrateerrorasync_17", "label": "VibrateErrorAsync", "role": "service", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourcePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 17, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 17 } ] }, { "id": "flow_method_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_19", "label": "VibrateAsync", "role": "service", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourcePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 19, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 19 } ] }, { "id": "flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_24_24", "label": "Return success", "role": "service", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourcePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 24, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 24 } ] }, { "id": "flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_28_28", "label": "Return failure", "role": "service", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourcePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 28, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 28 } ] }, { "id": "flow_method_nexusreader_web_client_services_webplatformservice_cs_getdevicecontext_32", "label": "GetDeviceContext", "role": "service", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourcePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 32 } ] }, { "id": "flow_action_nexusreader_web_client_services_webplatformservice_cs_getdevicecontext_return_34_34", "label": "Return device context wrapped in Result.Ok", "role": "service", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourcePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 34, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 34 } ] }, { "id": "flow_type_nexusreader_web_client_services_webplatformservice_cs_webplatformservice_7", "label": "WebPlatformService", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourcePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 7, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 7 } ] }, { "id": "flow_file_nexusreader_web_client_nexusreader_web_client_csproj_file_1", "label": "NexusReader.Web.Client.csproj", "role": "config", "layer": "frontend", "kind": "file", "filePath": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "sourcePath": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "sourceLine": 1, "evidencePaths": [ "NexusReader.Web.Client/NexusReader.Web.Client.csproj" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "line": 1 } ] }, { "id": "flow_method_nexusreader_web_client_nexusreader_web_client_csproj_project_configuration_1", "label": "project-configuration", "role": "config", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "sourcePath": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "sourceLine": 1, "evidencePaths": [ "NexusReader.Web.Client/NexusReader.Web.Client.csproj" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "line": 1 } ] }, { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "label": "MauiProgram", "role": "startup", "layer": "frontend", "kind": "entrypoint", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "label": "CreateMauiApp", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 12 } ] }, { "id": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "label": "Returns result", "role": "startup", "layer": "frontend", "kind": "action", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 57 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "label": "MauiProgram", "role": "unknown", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 10 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "label": "MauiPlatformService", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 28 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "label": "MauiStorageService", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 29 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "label": "NexusAuthenticationStateProvider", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 32 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_via_factory_33", "label": "NexusAuthenticationStateProvider (via factory)", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 33 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_configured_38", "label": "HttpClient (configured)", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 38 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_focusmodeservice_quizstateservice_readernavigationservice_knowledgegraphservice_readerinteractionservice_knowledgecoordinator_syncservice_identityservice_1", "label": "ThemeService, FocusModeService, QuizStateService, ReaderNavigationService, KnowledgeGraphService, ReaderInteractionService, KnowledgeCoordinator, SyncService, IdentityService", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 1 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusreader_application_registrations_51", "label": "NexusReader.Application registrations", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 51, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 51 } ] }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_handlers_from_nexusreader_application_assembly_53", "label": "Handlers from NexusReader.Application assembly", "role": "service", "layer": "frontend", "kind": "type", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 53, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 53 } ] }, { "id": "flow_method_nexusreader_maui_mauiprogram_cs_create_and_build_mauiapp_16", "label": "Create and build MauiApp", "role": "startup", "layer": "frontend", "kind": "method", "filePath": "NexusReader.Maui/MauiProgram.cs", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 16, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 16 } ] }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "label": "Program.cs", "role": "startup", "layer": "application", "kind": "entrypoint", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "label": "Program (top-level)", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 29 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 62 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "label": "Falls back to alternate path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 66 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 125, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 125 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 126, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 126 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 127, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 127 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 129, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 129 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_131_131", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 131, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 131 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_133_133", "label": "Falls back to alternate path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 133, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 133 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_135_135", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 135, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 135 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_137_137", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 137, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 137 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_169_169", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 169, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 169 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_validation_171_171", "label": "Validates input or state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 171, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 171 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_loop_186_186", "label": "Repeats work over a collection or condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 186, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 186 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_190_190", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 190, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 190 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_198_198", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 198, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 198 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_206_206", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 206, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 206 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_206_206", "label": "Logs runtime state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 206, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 206 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_208_208", "label": "Logs runtime state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 208, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 208 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_216_216", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 216, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 216 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_216_216", "label": "Logs runtime state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 216, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 216 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_218_218", "label": "Logs runtime state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 218, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 218 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_226_226", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 226, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 226 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_230_230", "label": "Falls back to alternate path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 230, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 230 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 237, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 237 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_252_252", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 252, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 252 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_255_255", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 255, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 255 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_258_258", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 258, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 258 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_267_267", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 267, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 267 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_269_269", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 269, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 269 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_270_270", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 270, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 270 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_275_275", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 275, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 275 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_277_277", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 277, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 277 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_278_278", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 278, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 278 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_283_283", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 283, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 283 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_285_285", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 285, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 285 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_286_286", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 286, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 286 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_291_291", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 291, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 291 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_293_293", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 293, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 293 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_294_294", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 294, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 294 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_299_299", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 299, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 299 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_301_301", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 301, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 301 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_302_302", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 302, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 302 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_307_307", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 307, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 307 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_309_309", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 309, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 309 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_310_310", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 310, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 310 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_315_315", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 315, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 315 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_317_317", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 317, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 317 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_318_318", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 318, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 318 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_324_324", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 324, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 324 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_327_327", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 327, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 327 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_332_332", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 332, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 332 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_333_333", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 333, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 333 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_350_350", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 350, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 350 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_352_352", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 352, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 352 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_352_352", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 352, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 352 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_357_357", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 357, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 357 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_358_358", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 358, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 358 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_361_361", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 361, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 361 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_364_364", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 364, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 364 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_374_374", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 374, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 374 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_381_381", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 381, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 381 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_switch_385_385", "label": "Branches across multiple outcomes", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 385, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 385 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_402_402", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 402, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 402 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_406_406", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 406, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 406 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_416_416", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 416, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 416 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_418_418", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 418, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 418 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_419_419", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 419, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 419 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_424_424", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 424, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 424 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_439_439", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 439, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 439 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_441_441", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 441, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 441 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_442_442", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 442, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 442 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_444_444", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 444, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 444 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_460_460", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 460, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 460 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_470_470", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 470, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 470 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_472_472", "label": "Logs runtime state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 472, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 472 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_473_473", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 473, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 473 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_477_477", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 477, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 477 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_479_479", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 479, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 479 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_480_480", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 480, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 480 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_483_483", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 483, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 483 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_485_485", "label": "Logs runtime state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 485 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_485_485", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 485 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_486_486", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 486, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 486 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_490_490", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 490, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 490 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_491_491", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 491, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 491 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_496_496", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 496, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 496 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_501_501", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 501, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 501 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_loop_505_505", "label": "Repeats work over a collection or condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 505, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 505 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_507_507", "label": "Logs runtime state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 507, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 507 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_510_510", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 510, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 510 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_512_512", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 512, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 512 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_log_516_516", "label": "Logs runtime state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 516, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 516 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_517_517", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 517, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 517 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_529_529", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 529, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 529 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_532_532", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 532, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 532 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_536_536", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 536, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 536 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_545_545", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 545, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 545 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_550_550", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 550, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 550 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_551_551", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 551, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 551 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_554_554", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 554, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 554 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_554_554", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 554, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 554 } ] }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_return_556_556", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 556, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 556 } ] }, { "id": "flow_file_nexusreader_application_dependencyinjection_cs_file_1", "label": "DependencyInjection", "role": "service-registration", "layer": "application", "kind": "file", "filePath": "NexusReader.Application/DependencyInjection.cs", "sourcePath": "NexusReader.Application/DependencyInjection.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Application/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/DependencyInjection.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8", "label": "AddApplication", "role": "service-registration", "layer": "application", "kind": "method", "filePath": "NexusReader.Application/DependencyInjection.cs", "sourcePath": "NexusReader.Application/DependencyInjection.cs", "sourceLine": 8, "evidencePaths": [ "NexusReader.Application/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/DependencyInjection.cs", "line": 8 } ] }, { "id": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "label": "DependencyInjection", "role": "service-registration", "layer": "infrastructure", "kind": "file", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31", "label": "AddInfrastructure", "role": "service-registration", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 31, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 31 } ] }, { "id": "flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1", "label": "SyncHub", "role": "endpoint", "layer": "infrastructure", "kind": "file", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_synchub_14", "label": "SyncHub", "role": "endpoint", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 14, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 14 } ] }, { "id": "flow_method_nexusreader_web_program_cs_startupvalidation_scope_check_165", "label": "StartupValidation (scope check)", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 165, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 165 } ] }, { "id": "flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_branch_169_169", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 169, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 169 } ] }, { "id": "flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_guard_clause_169_169", "label": "Fail if infrastructure missing", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 169, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 169 } ] }, { "id": "flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_validation_171_171", "label": "Validates input or state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 171, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 171 } ] }, { "id": "flow_method_nexusreader_web_program_cs_ensuredatabaseinitialized_175", "label": "EnsureDatabaseInitialized", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 175, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 175 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_loop_186_186", "label": "Repeats work over a collection or condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 186, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 186 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_190_190", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 190, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 190 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_198_198", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 198, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 198 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_206_206", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 206, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 206 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_206_206", "label": "Logs runtime state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 206, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 206 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_208_208", "label": "Logs runtime state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 208, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 208 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_216_216", "label": "Evaluates branch condition", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 216, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 216 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_216_216", "label": "Logs runtime state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 216, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 216 } ] }, { "id": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_218_218", "label": "Logs runtime state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 218, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 218 } ] }, { "id": "flow_method_nexusreader_web_program_cs_get_api_epub_ebookid_index_249", "label": "GET /api/epub/{ebookId}/{index}", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 249, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 249 } ] }, { "id": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_guard_clause_252_252", "label": "Extracts userId from ClaimsPrincipal", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 252, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 252 } ] }, { "id": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_repository_read_252_252", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 252, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 252 } ] }, { "id": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_guard_clause_255_255", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 255, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 255 } ] }, { "id": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_branch_255_255", "label": "Return Ok on success, BadRequest on failure", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 255, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 255 } ] }, { "id": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_return_258_258", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 258, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 258 } ] }, { "id": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_265", "label": "KnowledgeApi POST /api/knowledge/ (GetKnowledge)", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 265, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 265 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_repository_read_267_267", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 267, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 267 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_guard_clause_267_267", "label": "Resolve tenantId from claims with default", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 267, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 267 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_guard_clause_269_269", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 269, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 269 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_branch_269_269", "label": "Return Ok or BadRequest based on result.IsSuccess", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 269, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 269 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_return_270_270", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 270, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 270 } ] }, { "id": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_273", "label": "KnowledgeApi POST /graph (GetGraphDataAsync)", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 273, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 273 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_repository_read_275_275", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 275, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 275 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_guard_clause_277_277", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 277, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 277 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_branch_277_277", "label": "Return Ok or BadRequest based on result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 277, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 277 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_return_278_278", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 278, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 278 } ] }, { "id": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_281", "label": "KnowledgeApi POST /summary (GetSummaryAndQuizAsync)", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 281, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 281 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_repository_read_283_283", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 283, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 283 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_guard_clause_285_285", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 285, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 285 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_branch_285_285", "label": "Return Ok or BadRequest based on result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 285, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 285 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_return_286_286", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 286, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 286 } ] }, { "id": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_289", "label": "KnowledgeApi POST /map (GetKnowledgeMapAsync)", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 289, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 289 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_repository_read_291_291", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 291, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 291 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_guard_clause_293_293", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 293, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 293 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_branch_293_293", "label": "Return Ok or BadRequest based on result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 293, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 293 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_return_294_294", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 294, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 294 } ] }, { "id": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_297", "label": "KnowledgeApi POST /verify-groundedness", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 297, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 297 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_repository_read_299_299", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 299, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 299 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_guard_clause_301_301", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 301, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 301 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_branch_301_301", "label": "Return Ok or BadRequest based on verification result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 301, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 301 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_return_302_302", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 302, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 302 } ] }, { "id": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_305", "label": "KnowledgeApi POST /search (SearchLibrarySemanticallyAsync)", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 305, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 305 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_repository_read_307_307", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 307, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 307 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_guard_clause_309_309", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 309, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 309 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_branch_309_309", "label": "Return Ok or BadRequest based on result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 309, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 309 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_return_310_310", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 310, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 310 } ] }, { "id": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_313", "label": "KnowledgeApi POST /ask (AskQuestionAsync)", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 313, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 313 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_repository_read_315_315", "label": "Reads repository or persistence state", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 315, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 315 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_guard_clause_317_317", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 317, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 317 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_branch_317_317", "label": "Return Ok or BadRequest based on result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 317, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 317 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_return_318_318", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 318, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 318 } ] }, { "id": "flow_method_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_321", "label": "KnowledgeApi DELETE /api/knowledge/ (ClearCacheAsync)", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 321, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 321 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_branch_323_323", "label": "Return Ok on success; BadRequest with message on failure", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 323, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 323 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_guard_clause_324_324", "label": "Guards early exit or rejection path", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 324, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 324 } ] }, { "id": "flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_return_327_327", "label": "Returns result", "role": "startup", "layer": "application", "kind": "action", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 327, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 327 } ] }, { "id": "flow_type_nexusreader_web_program_cs_knowledgerequest_566", "label": "KnowledgeRequest", "role": "dto", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 566, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 566 } ] }, { "id": "flow_type_nexusreader_web_program_cs_groundednessrequest_567", "label": "GroundednessRequest", "role": "dto", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 567, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 567 } ] }, { "id": "flow_type_nexusreader_web_program_cs_semanticsearchrequest_568", "label": "SemanticSearchRequest", "role": "dto", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 568, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 568 } ] }, { "id": "flow_type_nexusreader_web_program_cs_askquestionrequest_569", "label": "AskQuestionRequest", "role": "dto", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 569, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 569 } ] }, { "id": "flow_type_nexusreader_web_program_cs_webplatformservice_47", "label": "WebPlatformService", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 47 } ] }, { "id": "flow_type_nexusreader_web_program_cs_knowledgecoordinator_55", "label": "KnowledgeCoordinator", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 55 } ] }, { "id": "flow_type_nexusreader_web_program_cs_httpclient_configured_with_base_address_58", "label": "HttpClient configured with base address", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 58, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 58 } ] }, { "id": "flow_type_nexusreader_web_program_cs_nexusreader_application_assembly_extension_78", "label": "NexusReader.Application (assembly extension)", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 78 } ] }, { "id": "flow_type_nexusreader_web_program_cs_nexusreader_infrastructure_assembly_extension_79", "label": "NexusReader.Infrastructure (assembly extension)", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 79 } ] }, { "id": "flow_type_nexusreader_web_program_cs_identity_with_appdbcontext_107", "label": "Identity with AppDbContext", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 107, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 107 } ] }, { "id": "flow_method_nexusreader_web_program_cs_usehangfiredashboard_163", "label": "UseHangfireDashboard", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 163, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 163 } ] }, { "id": "flow_method_nexusreader_web_program_cs_configure_request_pipeline_routing_auth_antiforgery_static_assets_hubs_225", "label": "Configure request pipeline (routing, auth, antiforgery, static assets, hubs)", "role": "startup", "layer": "application", "kind": "method", "filePath": "NexusReader.Web/Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 225, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 225 } ] }, { "id": "flow_action_nexusreader_application_dependencyinjection_cs_addapplication_return_13_13", "label": "Return IServiceCollection", "role": "service-registration", "layer": "application", "kind": "action", "filePath": "NexusReader.Application/DependencyInjection.cs", "sourcePath": "NexusReader.Application/DependencyInjection.cs", "sourceLine": 13, "evidencePaths": [ "NexusReader.Application/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/DependencyInjection.cs", "line": 13 } ] }, { "id": "flow_type_nexusreader_application_dependencyinjection_cs_configured_via_addmapsterconfiguration_extension_10", "label": "configured via AddMapsterConfiguration extension", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Application/DependencyInjection.cs", "sourcePath": "NexusReader.Application/DependencyInjection.cs", "sourceLine": 10, "evidencePaths": [ "NexusReader.Application/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/DependencyInjection.cs", "line": 10 } ] }, { "id": "flow_type_nexusreader_application_dependencyinjection_cs_handlers_discovered_in_this_assembly_11", "label": "handlers discovered in this assembly", "role": "service", "layer": "application", "kind": "type", "filePath": "NexusReader.Application/DependencyInjection.cs", "sourcePath": "NexusReader.Application/DependencyInjection.cs", "sourceLine": 11, "evidencePaths": [ "NexusReader.Application/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/DependencyInjection.cs", "line": 11 } ] }, { "id": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_33_33", "label": "Selects DB provider", "role": "service-registration", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 33, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 33 } ] }, { "id": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_34_34", "label": "Evaluates branch condition", "role": "service-registration", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 34, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 34 } ] }, { "id": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_fallback_44_44", "label": "Falls back to alternate path", "role": "service-registration", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 44, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 44 } ] }, { "id": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_64_64", "label": "Evaluates branch condition", "role": "service-registration", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 64, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 64 } ] }, { "id": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76", "label": "Evaluates branch condition", "role": "service-registration", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 76, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 76 } ] }, { "id": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_return_134_134", "label": "Returns IServiceCollection", "role": "service-registration", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 134, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 134 } ] }, { "id": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "label": "KnowledgeService", "role": "service", "layer": "infrastructure", "kind": "file", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 1 } ] }, { "id": "flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1", "label": "EpubReaderService", "role": "service", "layer": "infrastructure", "kind": "file", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 1 } ] }, { "id": "flow_file_nexusreader_infrastructure_services_epubmetadataextractor_cs_file_1", "label": "EpubMetadataExtractor", "role": "service", "layer": "infrastructure", "kind": "file", "filePath": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "line": 1 } ] }, { "id": "flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1", "label": "BookStorageService", "role": "service", "layer": "infrastructure", "kind": "file", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 1 } ] }, { "id": "flow_file_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_file_1", "label": "SignalRSyncBroadcaster", "role": "integration-client", "layer": "infrastructure", "kind": "file", "filePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_infrastructure_dependencyinjection_cs_assembly_137", "label": "Assembly", "role": "service-registration", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 137, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 137 } ] }, { "id": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_assembly_return_137_137", "label": "Return assembly", "role": "service-registration", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 137, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 137 } ] }, { "id": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_iinfrastructuremarker_140", "label": "IInfrastructureMarker", "role": "unknown", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 140, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 140 } ] }, { "id": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_infrastructuremarker_141", "label": "InfrastructureMarker", "role": "unknown", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 141, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 141 } ] }, { "id": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_appdbcontext_36", "label": "AppDbContext", "role": "service", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 36, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 36 } ] }, { "id": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_appdbcontext_41", "label": "AppDbContext", "role": "service", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 41, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 41 } ] }, { "id": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_appdbcontext_47", "label": "AppDbContext", "role": "service", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 47 } ] }, { "id": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_appdbcontext_51", "label": "AppDbContext", "role": "service", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 51, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 51 } ] }, { "id": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_qdrantclient_57", "label": "QdrantClient", "role": "service", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 57, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 57 } ] }, { "id": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_neo4j_driver_graphdatabase_driver_61", "label": "Neo4j.Driver (GraphDatabase.Driver)", "role": "service", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 61 } ] }, { "id": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_hangfire_postgres_storage_66", "label": "Hangfire/Postgres storage", "role": "service", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 66 } ] }, { "id": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_geminichatclient_99", "label": "GeminiChatClient", "role": "service", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 99, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 99 } ] }, { "id": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_geminiembeddinggenerator_105", "label": "GeminiEmbeddingGenerator", "role": "service", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 105, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 105 } ] }, { "id": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_knowledgeservice_112", "label": "KnowledgeService", "role": "service", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 112, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 112 } ] }, { "id": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19", "label": "UpdateProgress", "role": "endpoint", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 19, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 19 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_21_21", "label": "Reads repository or persistence state", "role": "endpoint", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 21, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 21 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_guard_clause_21_21", "label": "Requires authenticated user id", "role": "endpoint", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 21, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 21 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_branch_22_22", "label": "Evaluates branch condition", "role": "endpoint", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 22, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 22 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_24_24", "label": "Reads repository or persistence state", "role": "endpoint", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 24, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 24 } ] }, { "id": "flow_file_nexusreader_application_commands_sync_updatereadingprogresscommand_cs_file_1", "label": "UpdateReadingProgressCommand", "role": "handler", "layer": "application", "kind": "file", "filePath": "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs", "sourcePath": "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs", "line": 1 } ] }, { "id": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28", "label": "OnConnectedAsync", "role": "endpoint", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 28, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 28 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_30_30", "label": "Reads repository or persistence state", "role": "endpoint", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 30, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 30 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_branch_31_31", "label": "Evaluates branch condition", "role": "endpoint", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 31, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 31 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_guard_clause_31_31", "label": "Only add to group if userId present", "role": "endpoint", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 31, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 31 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_33_33", "label": "Reads repository or persistence state", "role": "endpoint", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 33, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 33 } ] }, { "id": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38", "label": "OnDisconnectedAsync", "role": "endpoint", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 38, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 38 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_40_40", "label": "Reads repository or persistence state", "role": "endpoint", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 40, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 40 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_branch_41_41", "label": "Evaluates branch condition", "role": "endpoint", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 41, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 41 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_guard_clause_41_41", "label": "Only remove from group if userId present", "role": "endpoint", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 41, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 41 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_43_43", "label": "Reads repository or persistence state", "role": "endpoint", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 43, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 43 } ] }, { "id": "flow_type_nexusreader_infrastructure_realtime_synchub_cs_synchub_10", "label": "SyncHub", "role": "unknown", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 10, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 10 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_knowledgeservice_38", "label": "KnowledgeService", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 38, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 38 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeasync_61", "label": "GetKnowledgeAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 61 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeasync_return_63_63", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 63, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 63 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getgraphdataasync_66", "label": "GetGraphDataAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 66 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getgraphdataasync_return_68_68", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 68, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 68 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getsummaryandquizasync_71", "label": "GetSummaryAndQuizAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 71, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 71 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getsummaryandquizasync_return_73_73", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 73, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 73 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgemapasync_76", "label": "GetKnowledgeMapAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 76, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 76 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgemapasync_return_78_78", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 78 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_81", "label": "GetKnowledgeInternalAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 81, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 81 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_guard_clause_83_83", "label": "Guards early exit or rejection path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 83, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 83 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_branch_93_93", "label": "Cache hit path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 93, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 93 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_guard_clause_99_99", "label": "Guards early exit or rejection path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 99, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 99 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_log_103_103", "label": "Logs runtime state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 103, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 103 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_branch_122_122", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 122, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 122 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_return_127_127", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 127, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 127 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_140", "label": "ExecuteAiRequestAndCacheAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 140, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 140 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_validation_166_166", "label": "Rejects empty AI response", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 166, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 166 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_guard_clause_167_167", "label": "Guards early exit or rejection path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 167, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 167 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_guard_clause_176_176", "label": "Guards early exit or rejection path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 176, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 176 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_branch_193_193", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 193, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 193 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_repository_write_193_193", "label": "Writes repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 193, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 193 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_fallback_194_194", "label": "Falls back to alternate path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 194, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 194 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_return_205_205", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 205, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 205 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_log_209_209", "label": "Logs runtime state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 209, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 209 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_return_210_210", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 210, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 210 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_return_215_215", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 215, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 215 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_225", "label": "ProcessKnowledgeUnitsAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 225, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 225 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_read_235_235", "label": "Reads repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 235, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 235 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_240_240", "label": "Repeats work over a collection or condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 240, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 240 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_branch_245_245", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 245, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 245 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_write_248_248", "label": "Writes repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 248, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 248 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_266_266", "label": "Maps links to KnowledgeUnitLink entities", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 266, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 266 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_branch_271_271", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 271, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 271 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_write_281_281", "label": "Writes repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 281, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 281 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_fallback_283_283", "label": "Falls back to alternate path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 283, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 283 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_log_285_285", "label": "Logs runtime state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 285, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 285 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_290", "label": "VerifyGroundednessAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 290, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 290 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_return_295_295", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 295, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 295 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_return_320_320", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 320, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 320 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_return_324_324", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 324, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 324 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_328", "label": "GetRelevantContextAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 328, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 328 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_336_336", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 336, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 336 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_337_337", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 337, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 337 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_339_339", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 339, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 339 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_342_342", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 342, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 342 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_345_345", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 345, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 345 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_347_347", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 347, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 347 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_350_350", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 350, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 350 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_354_354", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 354, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 354 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_368_368", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 368, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 368 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_return_377_377", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 377, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 377 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_return_381_381", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 381, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 381 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_385", "label": "SearchLibrarySemanticallyAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 385, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 385 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_399_399", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 399, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 399 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_400_400", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 400, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 400 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_402_402", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 402, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 402 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_405_405", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 405, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 405 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_408_408", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 408, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 408 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_410_410", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 410, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 410 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_413_413", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 413, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 413 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_417_417", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 417, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 417 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_log_431_431", "label": "Logs runtime state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 431, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 431 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_432_432", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 432, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 432 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_435_435", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 435, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 435 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_437_437", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 437, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 437 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_444_444", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 444, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 444 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_452_452", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 452, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 452 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_457_457", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 457, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 457 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_loop_460_460", "label": "Repeats work over a collection or condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 460, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 460 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_464_464", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 464, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 464 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_log_473_473", "label": "Logs runtime state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 473, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 473 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_repository_read_479_479", "label": "Reads repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 479, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 479 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_485_485", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 485 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_repository_read_489_489", "label": "Reads repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 489, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 489 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_501_501", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 501, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 501 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_507_507", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 507, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 507 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_513_513", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 513, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 513 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_533_533", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 533, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 533 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_538_538", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 538, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 538 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_541_541", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 541, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 541 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_545_545", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 545, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 545 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_549", "label": "AskQuestionAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 549, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 549 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_568_568", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 568, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 568 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_571_571", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 571, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 571 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_572_572", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 572, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 572 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_574_574", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 574, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 574 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_577_577", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 577, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 577 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_580_580", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 580, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 580 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_582_582", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 582, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 582 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_585_585", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 585, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 585 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_588_588", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 588, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 588 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_590_590", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 590, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 590 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_592_592", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 592, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 592 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_594_594", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 594, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 594 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_597_597", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 597, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 597 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_602_602", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 602, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 602 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_616_616", "label": "Logs runtime state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 616, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 616 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_617_617", "label": "Calls external dependency", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 617, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 617 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_620_620", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 620, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 620 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_622_622", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 622, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 622 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_624_624", "label": "Reads repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 624, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 624 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_636_636", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 636, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 636 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_645_645", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 645, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 645 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_651_651", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 651, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 651 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_654_654", "label": "Repeats work over a collection or condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 654, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 654 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_659_659", "label": "Writes repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 659, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 659 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_662_662", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 662, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 662 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_664_664", "label": "Repeats work over a collection or condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 664, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 664 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_671_671", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 671, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 671 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_673_673", "label": "Writes repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 673, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 673 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_682_682", "label": "Logs runtime state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 682, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 682 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_683_683", "label": "Repeats work over a collection or condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 683, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 683 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_687_687", "label": "Writes repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 687, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 687 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_694_694", "label": "Reads repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 694, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 694 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_700_700", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 700, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 700 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_704_704", "label": "Reads repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 704, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 704 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_715_715", "label": "Reads repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 715, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 715 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_716_716", "label": "Reads repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 716, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 716 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_717_717", "label": "Reads repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 717, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 717 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_754_754", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 754, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 754 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_756_756", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 756, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 756 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_760_760", "label": "Repeats work over a collection or condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 760, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 760 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_762_762", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 762, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 762 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_771_771", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 771, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 771 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_775_775", "label": "Logs runtime state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 775, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 775 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_776_776", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 776, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 776 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_781_781", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourcePath": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 781, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 781 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_30", "label": "GetEpubContentAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 30, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 30 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_repository_read_41_41", "label": "Reads repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 41, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 41 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_47_47", "label": "Ebook existence check", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 47 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_47_47", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 47 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_49_49", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 49, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 49 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_55_55", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 55 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_log_57_57", "label": "Logs runtime state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 57, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 57 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_58_58", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 58, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 58 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_65_65", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 65, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 65 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_65_65", "label": "ReadingOrder empty check", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 65, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 65 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_67_67", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 67, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 67 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_70_70", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 70, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 70 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_repository_read_77_77", "label": "Reads repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 77, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 77 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_loop_89_89", "label": "Paragraph -> block building loop", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 89, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 89 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_92_92", "label": "Guards early exit or rejection path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 92, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 92 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_99_99", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 99, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 99 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_106_106", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 106, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 106 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_111_111", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 111, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 111 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_log_115_115", "label": "Logs runtime state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 115, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 115 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_116_116", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 116, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 116 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_124", "label": "ResolvePath", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 124, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 124 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_loop_129_129", "label": "Search upward through parent directories", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 129, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 129 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_loop_130_130", "label": "Repeats work over a collection or condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 130, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 130 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_guard_clause_133_133", "label": "Guards early exit or rejection path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 133, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 133 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_guard_clause_137_137", "label": "Guards early exit or rejection path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 137, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 137 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_fallback_142_142", "label": "Return null if not found", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 142, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 142 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_return_142_142", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 142, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 142 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_145", "label": "ExtractParagraphs", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 145, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 145 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_loop_153_153", "label": "Repeats work over a collection or condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 153, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 153 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_branch_158_158", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 158, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 158 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_fallback_158_158", "label": "Split by breaks if no blocks found", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 158, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 158 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_return_163_163", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 163, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 163 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_sanitizeparagraph_166", "label": "SanitizeParagraph", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 166, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 166 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_sanitizeparagraph_return_172_172", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 172, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 172 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175", "label": "CountWords", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 175, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 175 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_guard_clause_177_177", "label": "Empty text check", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 177, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 177 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_return_178_178", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 178, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 178 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_createaitrigger_181", "label": "CreateAiTrigger", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 181, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 181 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_186", "label": "FindTitleInNavigation", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 186, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 186 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_repository_read_186_186", "label": "Reads repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 186, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 186 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_guard_clause_188_188", "label": "Guards early exit or rejection path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 188, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 188 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_loop_191_191", "label": "Iterate navigation items", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 191, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 191 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_branch_193_193", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 193, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 193 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_return_194_194", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 194, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 194 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_branch_196_196", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 196, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 196 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_repository_read_198_198", "label": "Reads repository or persistence state", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 198, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 198 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_guard_clause_199_199", "label": "Guards early exit or rejection path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 199, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 199 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_return_203_203", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 203, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 203 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_15", "label": "ExtractMetadataAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourceLine": 15, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "line": 15 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_guard_clause_20_20", "label": "Default title when null", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourceLine": 20, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "line": 20 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_guard_clause_21_21", "label": "Default author when null", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourceLine": 21, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "line": 21 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_return_24_24", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourceLine": 24, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "line": 24 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_return_28_28", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourcePath": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourceLine": 28, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "line": 28 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_19", "label": "SaveEbookAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 19, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 19 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_return_22_22", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 22, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 22 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_25", "label": "SaveEbookAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 25, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 25 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_guard_clause_28_28", "label": "Ensure uploads directory exists", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 28, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 28 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_return_40_40", "label": "Return web-relative uploads path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 40, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 40 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_43", "label": "SaveCoverAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 43, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 43 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_guard_clause_45_45", "label": "Guards early exit or rejection path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 45 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_return_47_47", "label": "Returns result", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 47 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_50", "label": "SaveCoverAsync", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 50, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 50 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_guard_clause_53_53", "label": "Ensure covers directory exists", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 53, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 53 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_return_63_63", "label": "Return web-relative covers path", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 63, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 63 } ] }, { "id": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_ensuredirectoryexists_66", "label": "EnsureDirectoryExists", "role": "service", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 66 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_ensuredirectoryexists_guard_clause_68_68", "label": "Check directory existence", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 68, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 68 } ] }, { "id": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_ensuredirectoryexists_branch_68_68", "label": "Evaluates branch condition", "role": "service", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 68, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 68 } ] }, { "id": "flow_type_nexusreader_infrastructure_services_bookstorageservice_cs_bookstorageservice_10", "label": "BookStorageService", "role": "unknown", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourcePath": "NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 10, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 10 } ] }, { "id": "flow_method_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_21", "label": "BroadcastProgressAsync", "role": "integration-client", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 21, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 21 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_guard_clause_30_30", "label": "Check excludedConnectionId", "role": "integration-client", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 30, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 30 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_branch_30_30", "label": "Evaluates branch condition", "role": "integration-client", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 30, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 30 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_external_call_34_34", "label": "Calls external dependency", "role": "integration-client", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 34, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 34 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_fallback_40_40", "label": "Falls back to alternate path", "role": "integration-client", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 40, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 40 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_external_call_44_44", "label": "Calls external dependency", "role": "integration-client", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 44, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 44 } ] }, { "id": "flow_method_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastingestionprogressasync_49", "label": "BroadcastIngestionProgressAsync", "role": "integration-client", "layer": "infrastructure", "kind": "method", "filePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 49, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 49 } ] }, { "id": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastingestionprogressasync_external_call_59_59", "label": "Calls external dependency", "role": "integration-client", "layer": "infrastructure", "kind": "action", "filePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 59, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 59 } ] }, { "id": "flow_type_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_signalrsyncbroadcaster_11", "label": "SignalRSyncBroadcaster", "role": "unknown", "layer": "infrastructure", "kind": "type", "filePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourcePath": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 11, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 11 } ] }, { "id": "flow_type_nexusreader_application_commands_sync_updatereadingprogresscommand_cs_updatereadingprogresscommand_6", "label": "UpdateReadingProgressCommand", "role": "unknown", "layer": "application", "kind": "type", "filePath": "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs", "sourcePath": "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs", "sourceLine": 6, "evidencePaths": [ "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs", "line": 6 } ] } ], "edges": [ { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_invokes_27", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "kind": "invokes", "label": "SendAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 27 } ] }, { "id": "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_invokes_27", "from": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 27, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 27 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32_evaluates-condition_32", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32", "kind": "evaluates-condition", "label": "isAuthEndpoint / notAuthEndpoint", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 32 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39_evaluates-condition_39", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39", "kind": "evaluates-condition", "label": "isTrustedHost / untrusted", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 39, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 39 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45_evaluates-condition_45", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45", "kind": "evaluates-condition", "label": "attached / skipped", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 45 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45_evaluates-condition_45", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 45 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48_evaluates-condition_48", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 48, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 48 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55_invokes_55", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 55 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58_evaluates-condition_58", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 58, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 58 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69_evaluates-condition_69", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69", "kind": "evaluates-condition", "label": "alreadyRefreshed / needsRefresh", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 69, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 69 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69_evaluates-condition_69", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 69, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 69 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73_falls-back_73", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 73, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 73 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79_evaluates-condition_79", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 79 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_falls-back_85", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 85, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 85 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_falls-back_85", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85", "kind": "falls-back", "label": "Logout on failed refresh", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 85, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 85 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91_evaluates-condition_91", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 91, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 91 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_retry_91_91_retries_91", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_retry_91_91", "kind": "retries", "label": "Retry original request with new token", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 91, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 91 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_retry_91_91_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_95_95_invokes_95", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_retry_91_91", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_95_95", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 95, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 95 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_95_95_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_95_95_returns_95", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_95_95", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_95_95", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 95, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 95 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_95_95_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_109_109_returns_109", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_95_95", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_109_109", "kind": "returns", "label": "Return response", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 109, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 109 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_109_109_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_109_109_returns_109", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_109_109", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_return_109_109", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 109, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 109 } ] }, { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112_invokes_112", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "kind": "invokes", "label": "CloneHttpRequestMessageAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 112, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 112 } ] }, { "id": "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119_evaluates-condition_119", "from": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 119, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 119 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126_loops-to_126", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126", "kind": "loops-to", "label": "var h in req.Content.Headers", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 126, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 126 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132_loops-to_132", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_126_126", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132", "kind": "loops-to", "label": "var h in req.Headers", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 132, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 132 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_return_139_139_returns_139", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_loop_132_132", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_return_139_139", "kind": "returns", "label": "Return cloned request", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 139, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 139 } ] }, { "id": "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_return_139_139_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_return_139_139_returns_139", "from": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_return_139_139", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_return_139_139", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 139, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 139 } ] }, { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_type_nexusreader_web_client_handlers_authenticationheaderhandler_cs_authenticationheaderhandler_14_defines-type_14", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_type_nexusreader_web_client_handlers_authenticationheaderhandler_cs_authenticationheaderhandler_14", "kind": "defines-type", "label": "model AuthenticationHeaderHandler", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 14, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 14 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_program_top_level_startup_15_invokes_15", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_program_top_level_startup_15", "kind": "handles-route", "label": "Program (top-level startup)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 15, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 15 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_getservice_71_invokes_71", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_getservice_71", "kind": "handles-route", "label": "GetService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 71, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 71 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_getservice_71_flow_action_nexusreader_web_client_program_cs_getservice_return_71_71_returns_71", "from": "flow_method_nexusreader_web_client_program_cs_getservice_71", "to": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "kind": "returns", "label": "returns null", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 71, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 71 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88_invokes_88", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "kind": "handles-route", "label": "FindAuthorByNameAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88_flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88_invokes_88", "from": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "to": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 88 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines-type_61", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "kind": "defines-type", "label": "model ThrowingDbContextFactory", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 61 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines-type_66", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "kind": "defines-type", "label": "model ThrowingEmbeddingGenerator", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 66 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines-type_74", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "kind": "defines-type", "label": "model ThrowingBookStorageService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 74 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines-type_84", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "kind": "defines-type", "label": "model ThrowingEbookRepository", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 84 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines-type_94", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "kind": "defines-type", "label": "model ThrowingSyncBroadcaster", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 94, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 94 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers-service_18", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "kind": "registers-service", "label": "IPlatformService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 18 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33_registers-service_33", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "kind": "registers-service", "label": "NexusAuthenticationStateProvider", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 33, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 33 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38_registers-service_38", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "kind": "registers-service", "label": "IKnowledgeService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 38, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 38 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_configured_httpclient_40_registers-service_40", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "kind": "registers-service", "label": "HttpClient (named 'NexusAPI')", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 40, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 40 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49_registers-service_49", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "kind": "registers-service", "label": "IDbContextFactory", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 49, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 49 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_n_a_55_registers-service_55", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_n_a_55", "kind": "registers-service", "label": "application services (via extension)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 55 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmepubreader_56_registers-service_56", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "kind": "registers-service", "label": "IEpubReader", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 56, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 56 } ] }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_run_wasm_host_59_configures-pipeline_59", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_run_wasm_host_59", "kind": "configures-pipeline", "label": "unknown", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 59, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 59 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_wasmepubservice_cs_file_1_flow_method_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_17_invokes_17", "from": "flow_file_nexusreader_web_client_services_wasmepubservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_17", "kind": "invokes", "label": "GetEpubContentAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 17, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 17 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_17_flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_branch_26_26_evaluates-condition_26", "from": "flow_method_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_17", "to": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_branch_26_26", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 26, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 26 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_branch_26_26_flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_guard_clause_29_29_evaluates-condition_29", "from": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_branch_26_26", "to": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_guard_clause_29_29", "kind": "evaluates-condition", "label": "fail: Failed to deserialize response. / ok: return viewModel", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 29 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_guard_clause_29_29_flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_return_29_29_returns_29", "from": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_guard_clause_29_29", "to": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_return_29_29", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 29 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_return_29_29_flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_return_33_33_returns_33", "from": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_return_29_29", "to": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_return_33_33", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 33, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 33 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_return_33_33_flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_return_37_37_returns_37", "from": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_return_33_33", "to": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_getepubcontentasync_return_37_37", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 37, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 37 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_wasmepubservice_cs_file_1_flow_method_nexusreader_web_client_services_wasmepubservice_cs_extractmetadataasync_45_invokes_45", "from": "flow_file_nexusreader_web_client_services_wasmepubservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_wasmepubservice_cs_extractmetadataasync_45", "kind": "invokes", "label": "ExtractMetadataAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 45 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_wasmepubservice_cs_extractmetadataasync_45_flow_action_nexusreader_web_client_services_wasmepubservice_cs_extractmetadataasync_return_53_53_returns_53", "from": "flow_method_nexusreader_web_client_services_wasmepubservice_cs_extractmetadataasync_45", "to": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_extractmetadataasync_return_53_53", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 53, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 53 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmepubservice_cs_extractmetadataasync_return_53_53_flow_action_nexusreader_web_client_services_wasmepubservice_cs_extractmetadataasync_return_57_57_returns_57", "from": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_extractmetadataasync_return_53_53", "to": "flow_action_nexusreader_web_client_services_wasmepubservice_cs_extractmetadataasync_return_57_57", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 57, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmEpubService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmEpubService.cs", "line": 57 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgeasync_17_invokes_17", "from": "flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgeasync_17", "kind": "invokes", "label": "GetKnowledgeAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 17, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 17 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgeasync_17_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgeasync_return_19_19_returns_19", "from": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgeasync_17", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgeasync_return_19_19", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 19, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 19 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getgraphdataasync_22_invokes_22", "from": "flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getgraphdataasync_22", "kind": "invokes", "label": "GetGraphDataAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 22, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 22 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getgraphdataasync_22_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getgraphdataasync_return_24_24_returns_24", "from": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getgraphdataasync_22", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getgraphdataasync_return_24_24", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 24, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 24 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgemapasync_27_invokes_27", "from": "flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgemapasync_27", "kind": "invokes", "label": "GetKnowledgeMapAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 27, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 27 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgemapasync_27_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgemapasync_return_29_29_returns_29", "from": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgemapasync_27", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getknowledgemapasync_return_29_29", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 29 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getsummaryandquizasync_32_invokes_32", "from": "flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getsummaryandquizasync_32", "kind": "invokes", "label": "GetSummaryAndQuizAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 32 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getsummaryandquizasync_32_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getsummaryandquizasync_return_34_34_returns_34", "from": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getsummaryandquizasync_32", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getsummaryandquizasync_return_34_34", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 34, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 34 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_37_invokes_37", "from": "flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_37", "kind": "invokes", "label": "GetRelevantContextAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 37, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 37 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_37_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_branch_42_42_evaluates-condition_42", "from": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_37", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_branch_42_42", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 42, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 42 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_branch_42_42_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_repository_read_45_45_invokes_45", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_branch_42_42", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_repository_read_45_45", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 45 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_repository_read_45_45_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_45_45_returns_45", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_repository_read_45_45", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_45_45", "kind": "returns", "label": "Return Ok or Fail depending on deserialization", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 45 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_45_45_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_45_45_returns_45", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_45_45", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_45_45", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 45 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_45_45_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_branch_48_48_evaluates-condition_48", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_45_45", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_branch_48_48", "kind": "evaluates-condition", "label": "Error path: read error body and return Fail", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 48, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 48 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_branch_48_48_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_49_49_returns_49", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_branch_48_48", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_49_49", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 49, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 49 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_49_49_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_53_53_returns_53", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_49_49", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_getrelevantcontextasync_return_53_53", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 53, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 53 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_56_invokes_56", "from": "flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_56", "kind": "invokes", "label": "VerifyGroundednessAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 56, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 56 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_56_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_branch_61_61_evaluates-condition_61", "from": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_56", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_branch_61_61", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 61 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_branch_61_61_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_64_64_returns_64", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_branch_61_61", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_64_64", "kind": "returns", "label": "Return Ok or Fail depending on deserialization", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 64, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 64 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_64_64_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_64_64_returns_64", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_64_64", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_64_64", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 64, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 64 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_64_64_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_branch_67_67_evaluates-condition_67", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_64_64", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_branch_67_67", "kind": "evaluates-condition", "label": "Error path: read error body and return Fail", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 67, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 67 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_branch_67_67_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_68_68_returns_68", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_branch_67_67", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_68_68", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 68, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 68 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_68_68_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_72_72_returns_72", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_68_68", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_verifygroundednessasync_return_72_72", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 72, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 72 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_76_invokes_76", "from": "flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_76", "kind": "invokes", "label": "SearchLibrarySemanticallyAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 76, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 76 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_76_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_branch_81_81_evaluates-condition_81", "from": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_76", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_branch_81_81", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 81, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 81 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_branch_81_81_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_84_84_returns_84", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_branch_81_81", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_84_84", "kind": "returns", "label": "Return Ok(results) or Ok(empty list)", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 84 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_84_84_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_84_84_returns_84", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_84_84", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_84_84", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 84, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 84 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_84_84_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_branch_87_87_evaluates-condition_87", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_84_84", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_branch_87_87", "kind": "evaluates-condition", "label": "Error path: read error body and return Fail", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 87, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 87 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_branch_87_87_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_88_88_returns_88", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_branch_87_87", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_88_88", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 88, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 88 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_88_88_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_92_92_returns_92", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_88_88", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_searchlibrarysemanticallyasync_return_92_92", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 92, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 92 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_96_invokes_96", "from": "flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_96", "kind": "invokes", "label": "AskQuestionAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 96, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 96 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_96_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_branch_101_101_evaluates-condition_101", "from": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_96", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_branch_101_101", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 101, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 101 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_branch_101_101_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_104_104_returns_104", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_branch_101_101", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_104_104", "kind": "returns", "label": "Return Ok or Fail depending on deserialization", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 104, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 104 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_104_104_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_104_104_returns_104", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_104_104", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_104_104", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 104, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 104 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_104_104_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_branch_107_107_evaluates-condition_107", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_104_104", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_branch_107_107", "kind": "evaluates-condition", "label": "Error path: read error body and return Fail", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 107, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 107 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_branch_107_107_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_108_108_returns_108", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_branch_107_107", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_108_108", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 108, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 108 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_108_108_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_112_112_returns_112", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_108_108", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_askquestionasync_return_112_112", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 112, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 112 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_116_invokes_116", "from": "flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_116", "kind": "invokes", "label": "CallKnowledgeApiAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 116, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 116 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_116_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_branch_121_121_evaluates-condition_121", "from": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_116", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_branch_121_121", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 121, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 121 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_branch_121_121_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_124_124_returns_124", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_branch_121_121", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_124_124", "kind": "returns", "label": "Return Ok(packet) or Fail on null", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 124, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 124 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_124_124_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_124_124_returns_124", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_124_124", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_124_124", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 124, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 124 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_124_124_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_branch_127_127_evaluates-condition_127", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_124_124", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_branch_127_127", "kind": "evaluates-condition", "label": "Error path: read error body and return Fail", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 127, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 127 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_branch_127_127_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_128_128_returns_128", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_branch_127_127", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_128_128", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 128, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 128 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_128_128_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_132_132_returns_132", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_128_128", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_callknowledgeapiasync_return_132_132", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 132, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 132 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_136_invokes_136", "from": "flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_136", "kind": "invokes", "label": "ClearCacheAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 136, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 136 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_136_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_branch_142_142_evaluates-condition_142", "from": "flow_method_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_136", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_branch_142_142", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 142, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 142 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_branch_142_142_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_return_145_145_returns_145", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_branch_142_142", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_return_145_145", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 145, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 145 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_return_145_145_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_branch_148_148_evaluates-condition_148", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_return_145_145", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_branch_148_148", "kind": "evaluates-condition", "label": "Error path: read error body and return Fail", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 148, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 148 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_branch_148_148_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_return_149_149_returns_149", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_branch_148_148", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_return_149_149", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 149, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 149 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_return_149_149_flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_return_153_153_returns_153", "from": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_return_149_149", "to": "flow_action_nexusreader_web_client_services_wasmknowledgeservice_cs_clearcacheasync_return_153_153", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 153, "evidencePaths": [ "NexusReader.Web.Client/Services/WasmKnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "line": 153 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1_flow_method_nexusreader_web_client_services_webplatformservice_cs_vibratesuccessasync_16_invokes_16", "from": "flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_webplatformservice_cs_vibratesuccessasync_16", "kind": "invokes", "label": "VibrateSuccessAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 16, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 16 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1_flow_method_nexusreader_web_client_services_webplatformservice_cs_vibrateerrorasync_17_invokes_17", "from": "flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_webplatformservice_cs_vibrateerrorasync_17", "kind": "invokes", "label": "VibrateErrorAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 17, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 17 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1_flow_method_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_19_invokes_19", "from": "flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_19", "kind": "invokes", "label": "VibrateAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 19, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 19 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_19_flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_24_24_returns_24", "from": "flow_method_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_19", "to": "flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_24_24", "kind": "returns", "label": "Return success", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 24, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 24 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_24_24_flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_24_24_returns_24", "from": "flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_24_24", "to": "flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_24_24", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 24, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 24 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_24_24_flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_28_28_returns_28", "from": "flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_24_24", "to": "flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_28_28", "kind": "returns", "label": "Return failure", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 28, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 28 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_28_28_flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_28_28_returns_28", "from": "flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_28_28", "to": "flow_action_nexusreader_web_client_services_webplatformservice_cs_vibrateasync_return_28_28", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 28, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 28 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1_flow_method_nexusreader_web_client_services_webplatformservice_cs_getdevicecontext_32_invokes_32", "from": "flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1", "to": "flow_method_nexusreader_web_client_services_webplatformservice_cs_getdevicecontext_32", "kind": "invokes", "label": "GetDeviceContext", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 32 } ] }, { "id": "edge_flow_method_nexusreader_web_client_services_webplatformservice_cs_getdevicecontext_32_flow_action_nexusreader_web_client_services_webplatformservice_cs_getdevicecontext_return_34_34_returns_34", "from": "flow_method_nexusreader_web_client_services_webplatformservice_cs_getdevicecontext_32", "to": "flow_action_nexusreader_web_client_services_webplatformservice_cs_getdevicecontext_return_34_34", "kind": "returns", "label": "Return device context wrapped in Result.Ok", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 34, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 34 } ] }, { "id": "edge_flow_action_nexusreader_web_client_services_webplatformservice_cs_getdevicecontext_return_34_34_flow_action_nexusreader_web_client_services_webplatformservice_cs_getdevicecontext_return_34_34_returns_34", "from": "flow_action_nexusreader_web_client_services_webplatformservice_cs_getdevicecontext_return_34_34", "to": "flow_action_nexusreader_web_client_services_webplatformservice_cs_getdevicecontext_return_34_34", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 34, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 34 } ] }, { "id": "edge_flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1_flow_type_nexusreader_web_client_services_webplatformservice_cs_webplatformservice_7_defines-type_7", "from": "flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1", "to": "flow_type_nexusreader_web_client_services_webplatformservice_cs_webplatformservice_7", "kind": "defines-type", "label": "model WebPlatformService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 7, "evidencePaths": [ "NexusReader.Web.Client/Services/WebPlatformService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Services/WebPlatformService.cs", "line": 7 } ] }, { "id": "edge_flow_file_nexusreader_web_client_nexusreader_web_client_csproj_file_1_flow_method_nexusreader_web_client_nexusreader_web_client_csproj_project_configuration_1_configures-pipeline_1", "from": "flow_file_nexusreader_web_client_nexusreader_web_client_csproj_file_1", "to": "flow_method_nexusreader_web_client_nexusreader_web_client_csproj_project_configuration_1", "kind": "configures-pipeline", "label": "unknown", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/NexusReader.Web.Client.csproj", "sourceLine": 1, "evidencePaths": [ "NexusReader.Web.Client/NexusReader.Web.Client.csproj" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "line": 1 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_invokes_12", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "kind": "handles-route", "label": "CreateMauiApp", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 12, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 12 } ] }, { "id": "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "from": "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "to": "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 57, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 57 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines-type_10", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "kind": "defines-type", "label": "model MauiProgram", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 10, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 10 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers-service_28", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "kind": "registers-service", "label": "IPlatformService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 28 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers-service_29", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "kind": "registers-service", "label": "INativeStorageService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 29 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers-service_32", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "kind": "registers-service", "label": "NexusAuthenticationStateProvider", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 32 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_via_factory_33_registers-service_33", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_via_factory_33", "kind": "registers-service", "label": "Microsoft.AspNetCore.Components.Authorization.AuthenticationStateProvider", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 33 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_configured_38_registers-service_38", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_configured_38", "kind": "registers-service", "label": "HttpClient", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 38 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_focusmodeservice_quizstateservice_readernavigationservice_knowledgegraphservice_readerinteractionservice_knowledgecoordinator_syncservice_identityservice_1_registers-service_1", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_focusmodeservice_quizstateservice_readernavigationservice_knowledgegraphservice_readerinteractionservice_knowledgecoordinator_syncservice_identityservice_1", "kind": "registers-service", "label": "UI and app state services", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 1 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusreader_application_registrations_51_registers-service_51", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusreader_application_registrations_51", "kind": "registers-service", "label": "Application layer services (extension)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 51, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 51 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_handlers_from_nexusreader_application_assembly_53_registers-service_53", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_handlers_from_nexusreader_application_assembly_53", "kind": "registers-service", "label": "MediatR handlers", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 53, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 53 } ] }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_create_and_build_mauiapp_16_configures-pipeline_16", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_method_nexusreader_maui_mauiprogram_cs_create_and_build_mauiapp_16", "kind": "configures-pipeline", "label": "unknown", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 16, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 16 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_program_top_level_29_invokes_29", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_program_top_level_29", "kind": "handles-route", "label": "Program (top-level)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 29, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 29 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates-condition_62", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 62 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls-back_66", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 66 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_invokes_125", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 125, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 125 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_invokes_126", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 126, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 126 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_invokes_127", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 127, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 127 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129_evaluates-condition_129", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 129, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 129 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_131_131_invokes_131", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_131_131", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 131, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 131 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_131_131_flow_action_nexusreader_web_program_cs_program_top_level_fallback_133_133_falls-back_133", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_131_131", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_133_133", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 133, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 133 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_133_133_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_135_135_invokes_135", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_133_133", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_135_135", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 135, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 135 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_135_135_flow_action_nexusreader_web_program_cs_program_top_level_return_137_137_returns_137", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_135_135", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_137_137", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 137, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 137 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_137_137_flow_action_nexusreader_web_program_cs_program_top_level_branch_169_169_evaluates-condition_169", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_137_137", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_169_169", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 169, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 169 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_169_169_flow_action_nexusreader_web_program_cs_program_top_level_validation_171_171_evaluates-condition_171", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_169_169", "to": "flow_action_nexusreader_web_program_cs_program_top_level_validation_171_171", "kind": "evaluates-condition", "label": "Validates input or state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 171, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 171 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_validation_171_171_flow_action_nexusreader_web_program_cs_program_top_level_loop_186_186_loops-to_186", "from": "flow_action_nexusreader_web_program_cs_program_top_level_validation_171_171", "to": "flow_action_nexusreader_web_program_cs_program_top_level_loop_186_186", "kind": "loops-to", "label": "int i = 0; i < maxRetries; i++", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 186, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 186 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_loop_186_186_flow_action_nexusreader_web_program_cs_program_top_level_branch_190_190_evaluates-condition_190", "from": "flow_action_nexusreader_web_program_cs_program_top_level_loop_186_186", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_190_190", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 190, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 190 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_190_190_flow_action_nexusreader_web_program_cs_program_top_level_branch_198_198_evaluates-condition_198", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_190_190", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_198_198", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 198, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 198 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_198_198_flow_action_nexusreader_web_program_cs_program_top_level_branch_206_206_evaluates-condition_206", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_198_198", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_206_206", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 206, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 206 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_206_206_flow_action_nexusreader_web_program_cs_program_top_level_log_206_206_invokes_206", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_206_206", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_206_206", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 206, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 206 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_206_206_flow_action_nexusreader_web_program_cs_program_top_level_log_208_208_invokes_208", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_206_206", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_208_208", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 208, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 208 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_208_208_flow_action_nexusreader_web_program_cs_program_top_level_branch_216_216_evaluates-condition_216", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_208_208", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_216_216", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 216, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 216 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_216_216_flow_action_nexusreader_web_program_cs_program_top_level_log_216_216_invokes_216", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_216_216", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_216_216", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 216, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 216 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_216_216_flow_action_nexusreader_web_program_cs_program_top_level_log_218_218_invokes_218", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_216_216", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_218_218", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 218, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 218 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_218_218_flow_action_nexusreader_web_program_cs_program_top_level_branch_226_226_evaluates-condition_226", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_218_218", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_226_226", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 226, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 226 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_226_226_flow_action_nexusreader_web_program_cs_program_top_level_fallback_230_230_falls-back_230", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_226_226", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_230_230", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 230, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 230 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_230_230_flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237_evaluates-condition_237", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_230_230", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 237, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 237 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_252_252_invokes_252", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_252_252", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 252, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 252 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_252_252_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_255_255_evaluates-condition_255", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_252_252", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_255_255", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 255, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 255 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_255_255_flow_action_nexusreader_web_program_cs_program_top_level_return_258_258_returns_258", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_255_255", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_258_258", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 258, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 258 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_258_258_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_267_267_invokes_267", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_258_258", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_267_267", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 267, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 267 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_267_267_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_269_269_evaluates-condition_269", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_267_267", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_269_269", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 269, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 269 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_269_269_flow_action_nexusreader_web_program_cs_program_top_level_return_270_270_returns_270", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_269_269", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_270_270", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 270, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 270 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_270_270_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_275_275_invokes_275", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_270_270", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_275_275", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 275, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 275 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_275_275_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_277_277_evaluates-condition_277", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_275_275", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_277_277", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 277, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 277 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_277_277_flow_action_nexusreader_web_program_cs_program_top_level_return_278_278_returns_278", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_277_277", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_278_278", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 278, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 278 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_278_278_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_283_283_invokes_283", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_278_278", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_283_283", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 283, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 283 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_283_283_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_285_285_evaluates-condition_285", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_283_283", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_285_285", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 285, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 285 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_285_285_flow_action_nexusreader_web_program_cs_program_top_level_return_286_286_returns_286", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_285_285", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_286_286", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 286, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 286 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_286_286_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_291_291_invokes_291", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_286_286", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_291_291", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 291, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 291 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_291_291_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_293_293_evaluates-condition_293", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_291_291", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_293_293", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 293, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 293 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_293_293_flow_action_nexusreader_web_program_cs_program_top_level_return_294_294_returns_294", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_293_293", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_294_294", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 294, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 294 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_294_294_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_299_299_invokes_299", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_294_294", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_299_299", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 299, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 299 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_299_299_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_301_301_evaluates-condition_301", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_299_299", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_301_301", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 301, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 301 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_301_301_flow_action_nexusreader_web_program_cs_program_top_level_return_302_302_returns_302", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_301_301", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_302_302", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 302, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 302 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_302_302_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_307_307_invokes_307", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_302_302", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_307_307", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 307, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 307 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_307_307_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_309_309_evaluates-condition_309", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_307_307", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_309_309", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 309, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 309 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_309_309_flow_action_nexusreader_web_program_cs_program_top_level_return_310_310_returns_310", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_309_309", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_310_310", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 310, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 310 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_310_310_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_315_315_invokes_315", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_310_310", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_315_315", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 315, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 315 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_315_315_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_317_317_evaluates-condition_317", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_315_315", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_317_317", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 317, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 317 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_317_317_flow_action_nexusreader_web_program_cs_program_top_level_return_318_318_returns_318", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_317_317", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_318_318", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 318, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 318 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_318_318_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_324_324_evaluates-condition_324", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_318_318", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_324_324", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 324, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 324 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_324_324_flow_action_nexusreader_web_program_cs_program_top_level_return_327_327_returns_327", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_324_324", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_327_327", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 327, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 327 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_327_327_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_332_332_invokes_332", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_327_327", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_332_332", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 332, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 332 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_332_332_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_333_333_evaluates-condition_333", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_332_332", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_333_333", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 333, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 333 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_333_333_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_350_350_evaluates-condition_350", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_333_333", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_350_350", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 350, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 350 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_350_350_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_352_352_invokes_352", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_350_350", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_352_352", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 352, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 352 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_352_352_flow_action_nexusreader_web_program_cs_program_top_level_return_352_352_returns_352", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_352_352", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_352_352", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 352, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 352 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_352_352_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_357_357_invokes_357", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_352_352", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_357_357", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 357, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 357 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_357_357_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_358_358_evaluates-condition_358", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_357_357", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_358_358", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 358, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 358 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_358_358_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_361_361_evaluates-condition_361", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_358_358", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_361_361", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 361, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 361 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_361_361_flow_action_nexusreader_web_program_cs_program_top_level_return_364_364_returns_364", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_361_361", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_364_364", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 364, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 364 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_364_364_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_374_374_invokes_374", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_364_364", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_374_374", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 374, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 374 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_374_374_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_381_381_invokes_381", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_374_374", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_381_381", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 381, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 381 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_381_381_flow_action_nexusreader_web_program_cs_program_top_level_switch_385_385_evaluates-condition_385", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_381_381", "to": "flow_action_nexusreader_web_program_cs_program_top_level_switch_385_385", "kind": "evaluates-condition", "label": "stripeEvent.Type", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 385, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 385 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_switch_385_385_flow_action_nexusreader_web_program_cs_program_top_level_return_402_402_returns_402", "from": "flow_action_nexusreader_web_program_cs_program_top_level_switch_385_385", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_402_402", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 402, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 402 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_402_402_flow_action_nexusreader_web_program_cs_program_top_level_return_406_406_returns_406", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_402_402", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_406_406", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 406, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 406 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_406_406_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_416_416_evaluates-condition_416", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_406_406", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_416_416", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 416, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 416 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_416_416_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_418_418_invokes_418", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_416_416", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_418_418", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 418, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 418 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_418_418_flow_action_nexusreader_web_program_cs_program_top_level_branch_419_419_evaluates-condition_419", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_418_418", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_419_419", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 419, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 419 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_419_419_flow_action_nexusreader_web_program_cs_program_top_level_branch_424_424_evaluates-condition_424", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_419_419", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_424_424", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 424, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 424 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_424_424_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_439_439_evaluates-condition_439", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_424_424", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_439_439", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 439, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 439 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_439_439_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_441_441_invokes_441", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_439_439", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_441_441", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 441, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 441 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_441_441_flow_action_nexusreader_web_program_cs_program_top_level_branch_442_442_evaluates-condition_442", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_441_441", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_442_442", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 442, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 442 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_442_442_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_444_444_invokes_444", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_442_442", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_444_444", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 444, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 444 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_444_444_flow_action_nexusreader_web_program_cs_program_top_level_return_460_460_returns_460", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_444_444", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_460_460", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 460, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 460 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_460_460_flow_action_nexusreader_web_program_cs_program_top_level_branch_470_470_evaluates-condition_470", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_460_460", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_470_470", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 470, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 470 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_470_470_flow_action_nexusreader_web_program_cs_program_top_level_log_472_472_invokes_472", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_470_470", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_472_472", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 472, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 472 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_472_472_flow_action_nexusreader_web_program_cs_program_top_level_return_473_473_returns_473", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_472_472", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_473_473", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 473, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 473 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_473_473_flow_action_nexusreader_web_program_cs_program_top_level_branch_477_477_evaluates-condition_477", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_473_473", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_477_477", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 477, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 477 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_477_477_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_479_479_invokes_479", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_477_477", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_479_479", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 479, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 479 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_479_479_flow_action_nexusreader_web_program_cs_program_top_level_return_480_480_returns_480", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_479_479", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_480_480", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 480, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 480 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_480_480_flow_action_nexusreader_web_program_cs_program_top_level_branch_483_483_evaluates-condition_483", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_480_480", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_483_483", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 483, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 483 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_483_483_flow_action_nexusreader_web_program_cs_program_top_level_log_485_485_invokes_485", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_483_483", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_485_485", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 485 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_485_485_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_485_485_invokes_485", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_485_485", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_485_485", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 485 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_485_485_flow_action_nexusreader_web_program_cs_program_top_level_return_486_486_returns_486", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_485_485", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_486_486", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 486, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 486 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_486_486_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_490_490_invokes_490", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_486_486", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_490_490", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 490, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 490 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_490_490_flow_action_nexusreader_web_program_cs_program_top_level_branch_491_491_evaluates-condition_491", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_490_490", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_491_491", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 491, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 491 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_491_491_flow_action_nexusreader_web_program_cs_program_top_level_branch_496_496_evaluates-condition_496", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_491_491", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_496_496", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 496, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 496 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_496_496_flow_action_nexusreader_web_program_cs_program_top_level_return_501_501_returns_501", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_496_496", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_501_501", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 501, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 501 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_501_501_flow_action_nexusreader_web_program_cs_program_top_level_loop_505_505_loops-to_505", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_501_501", "to": "flow_action_nexusreader_web_program_cs_program_top_level_loop_505_505", "kind": "loops-to", "label": "var error in createResult.Errors", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 505, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 505 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_loop_505_505_flow_action_nexusreader_web_program_cs_program_top_level_log_507_507_invokes_507", "from": "flow_action_nexusreader_web_program_cs_program_top_level_loop_505_505", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_507_507", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 507, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 507 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_507_507_flow_action_nexusreader_web_program_cs_program_top_level_branch_510_510_evaluates-condition_510", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_507_507", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_510_510", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 510, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 510 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_510_510_flow_action_nexusreader_web_program_cs_program_top_level_return_512_512_returns_512", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_510_510", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_512_512", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 512, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 512 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_512_512_flow_action_nexusreader_web_program_cs_program_top_level_log_516_516_invokes_516", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_512_512", "to": "flow_action_nexusreader_web_program_cs_program_top_level_log_516_516", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 516, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 516 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_log_516_516_flow_action_nexusreader_web_program_cs_program_top_level_return_517_517_returns_517", "from": "flow_action_nexusreader_web_program_cs_program_top_level_log_516_516", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_517_517", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 517, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 517 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_517_517_flow_action_nexusreader_web_program_cs_program_top_level_branch_529_529_evaluates-condition_529", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_517_517", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_529_529", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 529, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 529 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_529_529_flow_action_nexusreader_web_program_cs_program_top_level_return_532_532_returns_532", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_529_529", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_532_532", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 532, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 532 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_532_532_flow_action_nexusreader_web_program_cs_program_top_level_return_536_536_returns_536", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_532_532", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_536_536", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 536, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 536 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_536_536_flow_action_nexusreader_web_program_cs_program_top_level_return_545_545_returns_545", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_536_536", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_545_545", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 545, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 545 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_return_545_545_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_550_550_invokes_550", "from": "flow_action_nexusreader_web_program_cs_program_top_level_return_545_545", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_550_550", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 550, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 550 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_550_550_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_551_551_evaluates-condition_551", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_550_550", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_551_551", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 551, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 551 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_551_551_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_554_554_evaluates-condition_554", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_551_551", "to": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_554_554", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 554, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 554 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_554_554_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_554_554_invokes_554", "from": "flow_action_nexusreader_web_program_cs_program_top_level_guard_clause_554_554", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_554_554", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 554, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 554 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_554_554_flow_action_nexusreader_web_program_cs_program_top_level_return_556_556_returns_556", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_554_554", "to": "flow_action_nexusreader_web_program_cs_program_top_level_return_556_556", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 556, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 556 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8_uses-service_78", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8", "kind": "uses-service", "label": "AddApplication", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 78 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31_uses-service_79", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31", "kind": "uses-service", "label": "AddInfrastructure", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 79 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237_flow_method_nexusreader_infrastructure_realtime_synchub_cs_synchub_14_uses-service_247", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237", "to": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_synchub_14", "kind": "uses-service", "label": "SyncHub", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 247, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 247 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_startupvalidation_scope_check_165_invokes_165", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_startupvalidation_scope_check_165", "kind": "handles-route", "label": "StartupValidation (scope check)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 165, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 165 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_startupvalidation_scope_check_165_flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_branch_169_169_evaluates-condition_169", "from": "flow_method_nexusreader_web_program_cs_startupvalidation_scope_check_165", "to": "flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_branch_169_169", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 169, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 169 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_branch_169_169_flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_guard_clause_169_169_evaluates-condition_169", "from": "flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_branch_169_169", "to": "flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_guard_clause_169_169", "kind": "evaluates-condition", "label": "throw / continue", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 169, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 169 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_guard_clause_169_169_flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_validation_171_171_evaluates-condition_171", "from": "flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_guard_clause_169_169", "to": "flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_validation_171_171", "kind": "evaluates-condition", "label": "Validates input or state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 171, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 171 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_ensuredatabaseinitialized_175_invokes_175", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_ensuredatabaseinitialized_175", "kind": "handles-route", "label": "EnsureDatabaseInitialized", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 175, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 175 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_ensuredatabaseinitialized_175_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_loop_186_186_loops-to_186", "from": "flow_method_nexusreader_web_program_cs_ensuredatabaseinitialized_175", "to": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_loop_186_186", "kind": "loops-to", "label": "int i = 0; i < maxRetries; i++", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 186, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 186 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_loop_186_186_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_190_190_evaluates-condition_190", "from": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_loop_186_186", "to": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_190_190", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 190, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 190 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_190_190_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_198_198_evaluates-condition_198", "from": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_190_190", "to": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_198_198", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 198, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 198 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_198_198_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_206_206_evaluates-condition_206", "from": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_198_198", "to": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_206_206", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 206, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 206 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_206_206_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_206_206_invokes_206", "from": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_206_206", "to": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_206_206", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 206, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 206 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_206_206_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_208_208_invokes_208", "from": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_206_206", "to": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_208_208", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 208, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 208 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_208_208_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_216_216_evaluates-condition_216", "from": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_208_208", "to": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_216_216", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 216, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 216 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_216_216_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_216_216_invokes_216", "from": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_branch_216_216", "to": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_216_216", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 216, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 216 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_216_216_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_218_218_invokes_218", "from": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_216_216", "to": "flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_log_218_218", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 218, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 218 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_get_api_epub_ebookid_index_249_invokes_249", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_get_api_epub_ebookid_index_249", "kind": "handles-route", "label": "GET /api/epub/{ebookId}/{index}", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 249, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 249 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_get_api_epub_ebookid_index_249_flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_guard_clause_252_252_evaluates-condition_252", "from": "flow_method_nexusreader_web_program_cs_get_api_epub_ebookid_index_249", "to": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_guard_clause_252_252", "kind": "evaluates-condition", "label": "continue", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 252, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 252 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_guard_clause_252_252_flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_repository_read_252_252_invokes_252", "from": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_guard_clause_252_252", "to": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_repository_read_252_252", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 252, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 252 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_repository_read_252_252_flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_guard_clause_255_255_evaluates-condition_255", "from": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_repository_read_252_252", "to": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_guard_clause_255_255", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 255, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 255 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_guard_clause_255_255_flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_branch_255_255_evaluates-condition_255", "from": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_guard_clause_255_255", "to": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_branch_255_255", "kind": "evaluates-condition", "label": "Return Ok on success, BadRequest on failure", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 255, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 255 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_branch_255_255_flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_return_258_258_returns_258", "from": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_branch_255_255", "to": "flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_return_258_258", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 258, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 258 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_265_invokes_265", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_265", "kind": "handles-route", "label": "KnowledgeApi POST /api/knowledge/ (GetKnowledge)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 265, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 265 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_265_flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_repository_read_267_267_invokes_267", "from": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_265", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_repository_read_267_267", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 267, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 267 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_repository_read_267_267_flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_guard_clause_267_267_evaluates-condition_267", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_repository_read_267_267", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_guard_clause_267_267", "kind": "evaluates-condition", "label": "tenantId", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 267, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 267 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_guard_clause_267_267_flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_guard_clause_269_269_evaluates-condition_269", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_guard_clause_267_267", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_guard_clause_269_269", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 269, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 269 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_guard_clause_269_269_flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_branch_269_269_evaluates-condition_269", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_guard_clause_269_269", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_branch_269_269", "kind": "evaluates-condition", "label": "Return Ok or BadRequest based on result.IsSuccess", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 269, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 269 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_branch_269_269_flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_return_270_270_returns_270", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_branch_269_269", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_return_270_270", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 270, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 270 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_273_invokes_273", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_273", "kind": "handles-route", "label": "KnowledgeApi POST /graph (GetGraphDataAsync)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 273, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 273 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_273_flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_repository_read_275_275_invokes_275", "from": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_273", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_repository_read_275_275", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 275, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 275 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_repository_read_275_275_flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_guard_clause_277_277_evaluates-condition_277", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_repository_read_275_275", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_guard_clause_277_277", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 277, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 277 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_guard_clause_277_277_flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_branch_277_277_evaluates-condition_277", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_guard_clause_277_277", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_branch_277_277", "kind": "evaluates-condition", "label": "Return Ok or BadRequest based on result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 277, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 277 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_branch_277_277_flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_return_278_278_returns_278", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_branch_277_277", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_return_278_278", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 278, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 278 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_281_invokes_281", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_281", "kind": "handles-route", "label": "KnowledgeApi POST /summary (GetSummaryAndQuizAsync)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 281, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 281 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_281_flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_repository_read_283_283_invokes_283", "from": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_281", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_repository_read_283_283", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 283, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 283 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_repository_read_283_283_flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_guard_clause_285_285_evaluates-condition_285", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_repository_read_283_283", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_guard_clause_285_285", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 285, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 285 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_guard_clause_285_285_flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_branch_285_285_evaluates-condition_285", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_guard_clause_285_285", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_branch_285_285", "kind": "evaluates-condition", "label": "Return Ok or BadRequest based on result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 285, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 285 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_branch_285_285_flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_return_286_286_returns_286", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_branch_285_285", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_return_286_286", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 286, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 286 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_289_invokes_289", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_289", "kind": "handles-route", "label": "KnowledgeApi POST /map (GetKnowledgeMapAsync)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 289, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 289 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_289_flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_repository_read_291_291_invokes_291", "from": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_289", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_repository_read_291_291", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 291, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 291 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_repository_read_291_291_flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_guard_clause_293_293_evaluates-condition_293", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_repository_read_291_291", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_guard_clause_293_293", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 293, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 293 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_guard_clause_293_293_flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_branch_293_293_evaluates-condition_293", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_guard_clause_293_293", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_branch_293_293", "kind": "evaluates-condition", "label": "Return Ok or BadRequest based on result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 293, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 293 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_branch_293_293_flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_return_294_294_returns_294", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_branch_293_293", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_return_294_294", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 294, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 294 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_297_invokes_297", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_297", "kind": "handles-route", "label": "KnowledgeApi POST /verify-groundedness", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 297, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 297 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_297_flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_repository_read_299_299_invokes_299", "from": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_297", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_repository_read_299_299", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 299, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 299 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_repository_read_299_299_flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_guard_clause_301_301_evaluates-condition_301", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_repository_read_299_299", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_guard_clause_301_301", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 301, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 301 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_guard_clause_301_301_flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_branch_301_301_evaluates-condition_301", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_guard_clause_301_301", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_branch_301_301", "kind": "evaluates-condition", "label": "Return Ok or BadRequest based on verification result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 301, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 301 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_branch_301_301_flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_return_302_302_returns_302", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_branch_301_301", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_return_302_302", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 302, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 302 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_305_invokes_305", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_305", "kind": "handles-route", "label": "KnowledgeApi POST /search (SearchLibrarySemanticallyAsync)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 305, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 305 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_305_flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_repository_read_307_307_invokes_307", "from": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_305", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_repository_read_307_307", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 307, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 307 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_repository_read_307_307_flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_guard_clause_309_309_evaluates-condition_309", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_repository_read_307_307", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_guard_clause_309_309", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 309, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 309 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_guard_clause_309_309_flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_branch_309_309_evaluates-condition_309", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_guard_clause_309_309", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_branch_309_309", "kind": "evaluates-condition", "label": "Return Ok or BadRequest based on result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 309, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 309 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_branch_309_309_flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_return_310_310_returns_310", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_branch_309_309", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_return_310_310", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 310, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 310 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_313_invokes_313", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_313", "kind": "handles-route", "label": "KnowledgeApi POST /ask (AskQuestionAsync)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 313, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 313 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_313_flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_repository_read_315_315_invokes_315", "from": "flow_method_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_313", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_repository_read_315_315", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 315, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 315 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_repository_read_315_315_flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_guard_clause_317_317_evaluates-condition_317", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_repository_read_315_315", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_guard_clause_317_317", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 317, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 317 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_guard_clause_317_317_flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_branch_317_317_evaluates-condition_317", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_guard_clause_317_317", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_branch_317_317", "kind": "evaluates-condition", "label": "Return Ok or BadRequest based on result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 317, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 317 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_branch_317_317_flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_return_318_318_returns_318", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_branch_317_317", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_return_318_318", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 318, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 318 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_321_invokes_321", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_321", "kind": "handles-route", "label": "KnowledgeApi DELETE /api/knowledge/ (ClearCacheAsync)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 321, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 321 } ] }, { "id": "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_321_flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_branch_323_323_evaluates-condition_323", "from": "flow_method_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_321", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_branch_323_323", "kind": "evaluates-condition", "label": "Return Ok on success; BadRequest with message on failure", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 323, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 323 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_branch_323_323_flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_guard_clause_324_324_evaluates-condition_324", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_branch_323_323", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_guard_clause_324_324", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 324, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 324 } ] }, { "id": "edge_flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_guard_clause_324_324_flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_return_327_327_returns_327", "from": "flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_guard_clause_324_324", "to": "flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_return_327_327", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 327, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 327 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_knowledgerequest_566_maps-dto_566", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_knowledgerequest_566", "kind": "maps-dto", "label": "dto KnowledgeRequest", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 566, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 566 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_groundednessrequest_567_maps-dto_567", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_groundednessrequest_567", "kind": "maps-dto", "label": "dto GroundednessRequest", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 567, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 567 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_semanticsearchrequest_568_maps-dto_568", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_semanticsearchrequest_568", "kind": "maps-dto", "label": "dto SemanticSearchRequest", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 568, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 568 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_askquestionrequest_569_maps-dto_569", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_askquestionrequest_569", "kind": "maps-dto", "label": "dto AskQuestionRequest", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 569, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 569 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_webplatformservice_47_registers-service_47", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_webplatformservice_47", "kind": "registers-service", "label": "IPlatformService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 47 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_knowledgecoordinator_55_registers-service_55", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_knowledgecoordinator_55", "kind": "registers-service", "label": "KnowledgeCoordinator", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 55 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_httpclient_configured_with_base_address_58_registers-service_58", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_httpclient_configured_with_base_address_58", "kind": "registers-service", "label": "HttpClient (named NexusAPI)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 58, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 58 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_nexusreader_application_assembly_extension_78_registers-service_78", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_nexusreader_application_assembly_extension_78", "kind": "registers-service", "label": "Application services", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 78 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_nexusreader_infrastructure_assembly_extension_79_registers-service_79", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_nexusreader_infrastructure_assembly_extension_79", "kind": "registers-service", "label": "Infrastructure services", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 79, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 79 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_identity_with_appdbcontext_107_registers-service_107", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_identity_with_appdbcontext_107", "kind": "registers-service", "label": "Identity endpoints and EF stores", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 107, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 107 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_usehangfiredashboard_163_configures-pipeline_163", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_usehangfiredashboard_163", "kind": "configures-pipeline", "label": "middleware", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 163, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 163 } ] }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_configure_request_pipeline_routing_auth_antiforgery_static_assets_hubs_225_configures-pipeline_225", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_configure_request_pipeline_routing_auth_antiforgery_static_assets_hubs_225", "kind": "configures-pipeline", "label": "middleware", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 225, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 225 } ] }, { "id": "edge_flow_file_nexusreader_application_dependencyinjection_cs_file_1_flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8_invokes_8", "from": "flow_file_nexusreader_application_dependencyinjection_cs_file_1", "to": "flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8", "kind": "invokes", "label": "AddApplication", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/DependencyInjection.cs", "sourceLine": 8, "evidencePaths": [ "NexusReader.Application/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/DependencyInjection.cs", "line": 8 } ] }, { "id": "edge_flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8_flow_action_nexusreader_application_dependencyinjection_cs_addapplication_return_13_13_returns_13", "from": "flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8", "to": "flow_action_nexusreader_application_dependencyinjection_cs_addapplication_return_13_13", "kind": "returns", "label": "Return IServiceCollection", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/DependencyInjection.cs", "sourceLine": 13, "evidencePaths": [ "NexusReader.Application/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/DependencyInjection.cs", "line": 13 } ] }, { "id": "edge_flow_action_nexusreader_application_dependencyinjection_cs_addapplication_return_13_13_flow_action_nexusreader_application_dependencyinjection_cs_addapplication_return_13_13_returns_13", "from": "flow_action_nexusreader_application_dependencyinjection_cs_addapplication_return_13_13", "to": "flow_action_nexusreader_application_dependencyinjection_cs_addapplication_return_13_13", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/DependencyInjection.cs", "sourceLine": 13, "evidencePaths": [ "NexusReader.Application/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/DependencyInjection.cs", "line": 13 } ] }, { "id": "edge_flow_file_nexusreader_application_dependencyinjection_cs_file_1_flow_type_nexusreader_application_dependencyinjection_cs_configured_via_addmapsterconfiguration_extension_10_registers-service_10", "from": "flow_file_nexusreader_application_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_application_dependencyinjection_cs_configured_via_addmapsterconfiguration_extension_10", "kind": "registers-service", "label": "Mapster configuration / mapping profiles", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/DependencyInjection.cs", "sourceLine": 10, "evidencePaths": [ "NexusReader.Application/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/DependencyInjection.cs", "line": 10 } ] }, { "id": "edge_flow_file_nexusreader_application_dependencyinjection_cs_file_1_flow_type_nexusreader_application_dependencyinjection_cs_handlers_discovered_in_this_assembly_11_registers-service_11", "from": "flow_file_nexusreader_application_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_application_dependencyinjection_cs_handlers_discovered_in_this_assembly_11", "kind": "registers-service", "label": "MediatR handlers (from this assembly)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/DependencyInjection.cs", "sourceLine": 11, "evidencePaths": [ "NexusReader.Application/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/DependencyInjection.cs", "line": 11 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31_invokes_31", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31", "kind": "invokes", "label": "AddInfrastructure", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 31, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 31 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_33_33_evaluates-condition_33", "from": "flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31", "to": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_33_33", "kind": "evaluates-condition", "label": "Selects DB provider", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 33, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 33 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_33_33_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_34_34_evaluates-condition_34", "from": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_33_33", "to": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_34_34", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 34, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 34 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_34_34_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_fallback_44_44_falls-back_44", "from": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_34_34", "to": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_fallback_44_44", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 44, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 44 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_fallback_44_44_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_64_64_evaluates-condition_64", "from": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_fallback_44_44", "to": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_64_64", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 64, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 64 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_64_64_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76_evaluates-condition_76", "from": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_64_64", "to": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 76, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 76 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_return_134_134_returns_134", "from": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76", "to": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_return_134_134", "kind": "returns", "label": "Returns IServiceCollection", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 134, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 134 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_return_134_134_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_return_134_134_returns_134", "from": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_return_134_134", "to": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_return_134_134", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 134, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 134 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76_flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1_uses-service_112", "from": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76", "to": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "kind": "uses-service", "label": "KnowledgeService (implementation)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 112, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 112 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76_flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1_uses-service_113", "from": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76", "to": "flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1", "kind": "uses-service", "label": "EpubReaderService (implementation)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 113, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 113 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76_flow_file_nexusreader_infrastructure_services_epubmetadataextractor_cs_file_1_uses-service_114", "from": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76", "to": "flow_file_nexusreader_infrastructure_services_epubmetadataextractor_cs_file_1", "kind": "uses-service", "label": "EpubMetadataExtractor (implementation)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 114, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 114 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76_flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1_uses-service_118", "from": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76", "to": "flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1", "kind": "uses-service", "label": "BookStorageService (implementation)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 118, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 118 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76_flow_file_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_file_1_calls-external_124", "from": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_branch_76_76", "to": "flow_file_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_file_1", "kind": "calls-external", "label": "SignalRSyncBroadcaster (implementation)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 124, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 124 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_method_nexusreader_infrastructure_dependencyinjection_cs_assembly_137_invokes_137", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_method_nexusreader_infrastructure_dependencyinjection_cs_assembly_137", "kind": "invokes", "label": "Assembly", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 137, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 137 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_dependencyinjection_cs_assembly_137_flow_action_nexusreader_infrastructure_dependencyinjection_cs_assembly_return_137_137_returns_137", "from": "flow_method_nexusreader_infrastructure_dependencyinjection_cs_assembly_137", "to": "flow_action_nexusreader_infrastructure_dependencyinjection_cs_assembly_return_137_137", "kind": "returns", "label": "Return assembly", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 137, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 137 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_type_nexusreader_infrastructure_dependencyinjection_cs_iinfrastructuremarker_140_defines-type_140", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_iinfrastructuremarker_140", "kind": "defines-type", "label": "interface IInfrastructureMarker", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 140, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 140 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_type_nexusreader_infrastructure_dependencyinjection_cs_infrastructuremarker_141_defines-type_141", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_infrastructuremarker_141", "kind": "defines-type", "label": "model InfrastructureMarker", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 141, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 141 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_type_nexusreader_infrastructure_dependencyinjection_cs_appdbcontext_36_registers-service_36", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_appdbcontext_36", "kind": "registers-service", "label": "AppDbContext (DbContextFactory)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 36, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 36 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_type_nexusreader_infrastructure_dependencyinjection_cs_appdbcontext_41_registers-service_41", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_appdbcontext_41", "kind": "registers-service", "label": "AppDbContext (DbContext)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 41, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 41 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_type_nexusreader_infrastructure_dependencyinjection_cs_appdbcontext_47_registers-service_47", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_appdbcontext_47", "kind": "registers-service", "label": "AppDbContext (DbContextFactory)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 47 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_type_nexusreader_infrastructure_dependencyinjection_cs_appdbcontext_51_registers-service_51", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_appdbcontext_51", "kind": "registers-service", "label": "AppDbContext (DbContext)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 51, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 51 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_type_nexusreader_infrastructure_dependencyinjection_cs_qdrantclient_57_registers-service_57", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_qdrantclient_57", "kind": "registers-service", "label": "QdrantClient", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 57, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 57 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_type_nexusreader_infrastructure_dependencyinjection_cs_neo4j_driver_graphdatabase_driver_61_registers-service_61", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_neo4j_driver_graphdatabase_driver_61", "kind": "registers-service", "label": "IDriver", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 61 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_type_nexusreader_infrastructure_dependencyinjection_cs_hangfire_postgres_storage_66_registers-service_66", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_hangfire_postgres_storage_66", "kind": "registers-service", "label": "Hangfire (storage/server)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 66 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_type_nexusreader_infrastructure_dependencyinjection_cs_geminichatclient_99_registers-service_99", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_geminichatclient_99", "kind": "registers-service", "label": "ChatClient / GeminiChatClient", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 99, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 99 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_type_nexusreader_infrastructure_dependencyinjection_cs_geminiembeddinggenerator_105_registers-service_105", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_geminiembeddinggenerator_105", "kind": "registers-service", "label": "EmbeddingGenerator / GeminiEmbeddingGenerator", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 105, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 105 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1_flow_type_nexusreader_infrastructure_dependencyinjection_cs_knowledgeservice_112_registers-service_112", "from": "flow_file_nexusreader_infrastructure_dependencyinjection_cs_file_1", "to": "flow_type_nexusreader_infrastructure_dependencyinjection_cs_knowledgeservice_112", "kind": "registers-service", "label": "IKnowledgeService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 112, "evidencePaths": [ "NexusReader.Infrastructure/DependencyInjection.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/DependencyInjection.cs", "line": 112 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1_flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19_invokes_19", "from": "flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1", "to": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19", "kind": "handles-route", "label": "UpdateProgress", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 19, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 19 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19_flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_21_21_invokes_21", "from": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_21_21", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 21, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 21 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_21_21_flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_guard_clause_21_21_evaluates-condition_21", "from": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_21_21", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_guard_clause_21_21", "kind": "evaluates-condition", "label": "forward command / no-op", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 21, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 21 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_guard_clause_21_21_flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_branch_22_22_evaluates-condition_22", "from": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_guard_clause_21_21", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_branch_22_22", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 22, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 22 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_branch_22_22_flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_24_24_invokes_24", "from": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_branch_22_22", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_24_24", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 24, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 24 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_24_24_flow_file_nexusreader_application_commands_sync_updatereadingprogresscommand_cs_file_1_dispatches-command_24", "from": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_24_24", "to": "flow_file_nexusreader_application_commands_sync_updatereadingprogresscommand_cs_file_1", "kind": "dispatches-command", "label": "UpdateReadingProgressCommand (ctor)", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 24, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 24 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1_flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28_invokes_28", "from": "flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1", "to": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28", "kind": "handles-route", "label": "OnConnectedAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 28, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 28 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28_flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_30_30_invokes_30", "from": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_30_30", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 30, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 30 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_30_30_flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_branch_31_31_evaluates-condition_31", "from": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_30_30", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_branch_31_31", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 31, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 31 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_branch_31_31_flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_guard_clause_31_31_evaluates-condition_31", "from": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_branch_31_31", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_guard_clause_31_31", "kind": "evaluates-condition", "label": "AddToGroup / skip", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 31, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 31 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_guard_clause_31_31_flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_33_33_invokes_33", "from": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_guard_clause_31_31", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_33_33", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 33, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 33 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1_flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38_invokes_38", "from": "flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1", "to": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38", "kind": "handles-route", "label": "OnDisconnectedAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 38, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 38 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38_flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_40_40_invokes_40", "from": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_40_40", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 40, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 40 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_40_40_flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_branch_41_41_evaluates-condition_41", "from": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_40_40", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_branch_41_41", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 41, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 41 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_branch_41_41_flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_guard_clause_41_41_evaluates-condition_41", "from": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_branch_41_41", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_guard_clause_41_41", "kind": "evaluates-condition", "label": "RemoveFromGroup / skip", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 41, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 41 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_guard_clause_41_41_flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_43_43_invokes_43", "from": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_guard_clause_41_41", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_43_43", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 43, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 43 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1_flow_type_nexusreader_infrastructure_realtime_synchub_cs_synchub_10_defines-type_10", "from": "flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1", "to": "flow_type_nexusreader_infrastructure_realtime_synchub_cs_synchub_10", "kind": "defines-type", "label": "model SyncHub", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 10, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SyncHub.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "line": 10 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_knowledgeservice_38_invokes_38", "from": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_knowledgeservice_38", "kind": "invokes", "label": "KnowledgeService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 38, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 38 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeasync_61_invokes_61", "from": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeasync_61", "kind": "invokes", "label": "GetKnowledgeAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 61, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 61 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeasync_61_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeasync_return_63_63_returns_63", "from": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeasync_61", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeasync_return_63_63", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 63, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 63 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getgraphdataasync_66_invokes_66", "from": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getgraphdataasync_66", "kind": "invokes", "label": "GetGraphDataAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 66 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getgraphdataasync_66_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getgraphdataasync_return_68_68_returns_68", "from": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getgraphdataasync_66", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getgraphdataasync_return_68_68", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 68, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 68 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getsummaryandquizasync_71_invokes_71", "from": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getsummaryandquizasync_71", "kind": "invokes", "label": "GetSummaryAndQuizAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 71, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 71 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getsummaryandquizasync_71_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getsummaryandquizasync_return_73_73_returns_73", "from": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getsummaryandquizasync_71", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getsummaryandquizasync_return_73_73", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 73, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 73 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgemapasync_76_invokes_76", "from": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgemapasync_76", "kind": "invokes", "label": "GetKnowledgeMapAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 76, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 76 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgemapasync_76_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgemapasync_return_78_78_returns_78", "from": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgemapasync_76", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgemapasync_return_78_78", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 78, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 78 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_81_invokes_81", "from": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_81", "kind": "invokes", "label": "GetKnowledgeInternalAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 81, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 81 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_81_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_guard_clause_83_83_evaluates-condition_83", "from": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_81", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_guard_clause_83_83", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 83, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 83 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_guard_clause_83_83_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_branch_93_93_evaluates-condition_93", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_guard_clause_83_83", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_branch_93_93", "kind": "evaluates-condition", "label": "Cache hit path", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 93, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 93 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_branch_93_93_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_guard_clause_99_99_evaluates-condition_99", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_branch_93_93", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_guard_clause_99_99", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 99, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 99 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_guard_clause_99_99_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_log_103_103_invokes_103", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_guard_clause_99_99", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_log_103_103", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 103, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 103 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_log_103_103_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_branch_122_122_evaluates-condition_122", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_log_103_103", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_branch_122_122", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 122, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 122 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_branch_122_122_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_return_127_127_returns_127", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_branch_122_122", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getknowledgeinternalasync_return_127_127", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 127, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 127 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_140_invokes_140", "from": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_140", "kind": "invokes", "label": "ExecuteAiRequestAndCacheAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 140, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 140 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_140_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_validation_166_166_evaluates-condition_166", "from": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_140", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_validation_166_166", "kind": "evaluates-condition", "label": "Rejects empty AI response", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 166, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 166 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_validation_166_166_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_guard_clause_167_167_evaluates-condition_167", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_validation_166_166", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_guard_clause_167_167", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 167, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 167 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_guard_clause_167_167_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_guard_clause_176_176_evaluates-condition_176", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_guard_clause_167_167", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_guard_clause_176_176", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 176, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 176 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_guard_clause_176_176_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_branch_193_193_evaluates-condition_193", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_guard_clause_176_176", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_branch_193_193", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 193, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 193 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_branch_193_193_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_repository_write_193_193_invokes_193", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_branch_193_193", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_repository_write_193_193", "kind": "invokes", "label": "Writes repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 193, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 193 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_repository_write_193_193_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_fallback_194_194_falls-back_194", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_repository_write_193_193", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_fallback_194_194", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 194, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 194 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_fallback_194_194_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_return_205_205_returns_205", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_fallback_194_194", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_return_205_205", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 205, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 205 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_return_205_205_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_log_209_209_invokes_209", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_return_205_205", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_log_209_209", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 209, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 209 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_log_209_209_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_return_210_210_returns_210", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_log_209_209", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_return_210_210", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 210, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 210 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_return_210_210_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_return_215_215_returns_215", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_return_210_210", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_executeairequestandcacheasync_return_215_215", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 215, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 215 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_225_invokes_225", "from": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_225", "kind": "invokes", "label": "ProcessKnowledgeUnitsAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 225, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 225 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_225_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_read_235_235_invokes_235", "from": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_225", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_read_235_235", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 235, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 235 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_read_235_235_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_240_240_loops-to_240", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_read_235_235", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_240_240", "kind": "loops-to", "label": "var unitDto in packet.Units", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 240, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 240 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_240_240_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_240_240_loops-to_240", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_240_240", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_240_240", "kind": "loops-to", "label": "Upserts units from packet", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 240, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 240 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_240_240_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_branch_245_245_evaluates-condition_245", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_240_240", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_branch_245_245", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 245, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 245 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_branch_245_245_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_write_248_248_invokes_248", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_branch_245_245", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_write_248_248", "kind": "invokes", "label": "Writes repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 248, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 248 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_write_248_248_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_266_266_loops-to_266", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_write_248_248", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_266_266", "kind": "loops-to", "label": "Maps links to KnowledgeUnitLink entities", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 266, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 266 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_266_266_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_266_266_loops-to_266", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_266_266", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_266_266", "kind": "loops-to", "label": "var linkDto in packet.Links", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 266, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 266 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_266_266_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_branch_271_271_evaluates-condition_271", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_loop_266_266", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_branch_271_271", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 271, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 271 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_branch_271_271_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_write_281_281_invokes_281", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_branch_271_271", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_write_281_281", "kind": "invokes", "label": "Writes repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 281, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 281 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_write_281_281_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_fallback_283_283_falls-back_283", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_repository_write_281_281", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_fallback_283_283", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 283, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 283 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_fallback_283_283_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_log_285_285_invokes_285", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_fallback_283_283", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_processknowledgeunitsasync_log_285_285", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 285, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 285 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_290_invokes_290", "from": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_290", "kind": "invokes", "label": "VerifyGroundednessAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 290, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 290 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_290_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_return_295_295_returns_295", "from": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_290", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_return_295_295", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 295, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 295 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_return_295_295_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_return_320_320_returns_320", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_return_295_295", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_return_320_320", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 320, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 320 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_return_320_320_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_return_324_324_returns_324", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_return_320_320", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_verifygroundednessasync_return_324_324", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 324, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 324 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_328_invokes_328", "from": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_328", "kind": "invokes", "label": "GetRelevantContextAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 328, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 328 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_328_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_336_336_invokes_336", "from": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_328", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_336_336", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 336, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 336 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_336_336_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_337_337_invokes_337", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_336_336", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_337_337", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 337, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 337 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_337_337_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_339_339_invokes_339", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_337_337", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_339_339", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 339, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 339 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_339_339_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_342_342_invokes_342", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_339_339", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_342_342", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 342, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 342 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_342_342_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_345_345_invokes_345", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_342_342", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_345_345", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 345, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 345 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_345_345_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_347_347_invokes_347", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_345_345", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_347_347", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 347, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 347 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_347_347_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_350_350_invokes_350", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_347_347", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_350_350", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 350, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 350 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_350_350_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_354_354_invokes_354", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_350_350", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_354_354", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 354, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 354 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_354_354_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_368_368_invokes_368", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_354_354", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_368_368", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 368, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 368 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_368_368_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_return_377_377_returns_377", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_external_call_368_368", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_return_377_377", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 377, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 377 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_return_377_377_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_return_381_381_returns_381", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_return_377_377", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_getrelevantcontextasync_return_381_381", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 381, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 381 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_385_invokes_385", "from": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_385", "kind": "invokes", "label": "SearchLibrarySemanticallyAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 385, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 385 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_385_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_399_399_invokes_399", "from": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_385", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_399_399", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 399, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 399 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_399_399_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_400_400_invokes_400", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_399_399", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_400_400", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 400, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 400 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_400_400_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_402_402_invokes_402", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_400_400", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_402_402", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 402, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 402 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_402_402_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_405_405_invokes_405", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_402_402", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_405_405", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 405, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 405 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_405_405_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_408_408_invokes_408", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_405_405", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_408_408", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 408, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 408 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_408_408_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_410_410_invokes_410", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_408_408", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_410_410", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 410, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 410 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_410_410_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_413_413_invokes_413", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_410_410", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_413_413", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 413, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 413 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_413_413_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_417_417_invokes_417", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_413_413", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_417_417", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 417, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 417 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_417_417_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_log_431_431_invokes_431", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_417_417", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_log_431_431", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 431, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 431 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_log_431_431_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_432_432_invokes_432", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_log_431_431", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_432_432", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 432, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 432 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_432_432_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_435_435_evaluates-condition_435", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_external_call_432_432", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_435_435", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 435, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 435 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_435_435_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_437_437_returns_437", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_435_435", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_437_437", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 437, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 437 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_437_437_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_444_444_evaluates-condition_444", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_437_437", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_444_444", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 444, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 444 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_444_444_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_452_452_returns_452", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_444_444", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_452_452", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 452, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 452 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_452_452_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_457_457_returns_457", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_452_452", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_457_457", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 457, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 457 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_457_457_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_loop_460_460_loops-to_460", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_457_457", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_loop_460_460", "kind": "loops-to", "label": "var record in neoResult", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 460, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 460 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_loop_460_460_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_464_464_evaluates-condition_464", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_loop_460_460", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_464_464", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 464, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 464 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_464_464_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_log_473_473_invokes_473", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_464_464", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_log_473_473", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 473, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 473 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_log_473_473_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_repository_read_479_479_invokes_479", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_log_473_473", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_repository_read_479_479", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 479, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 479 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_repository_read_479_479_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_485_485_evaluates-condition_485", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_repository_read_479_479", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_485_485", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 485, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 485 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_485_485_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_repository_read_489_489_invokes_489", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_485_485", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_repository_read_489_489", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 489, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 489 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_repository_read_489_489_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_501_501_evaluates-condition_501", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_repository_read_489_489", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_501_501", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 501, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 501 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_501_501_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_507_507_evaluates-condition_507", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_501_501", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_507_507", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 507, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 507 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_507_507_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_513_513_evaluates-condition_513", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_507_507", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_513_513", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 513, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 513 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_513_513_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_533_533_evaluates-condition_533", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_513_513", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_533_533", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 533, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 533 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_533_533_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_538_538_returns_538", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_branch_533_533", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_538_538", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 538, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 538 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_538_538_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_541_541_returns_541", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_538_538", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_541_541", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 541, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 541 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_541_541_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_545_545_returns_545", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_541_541", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_searchlibrarysemanticallyasync_return_545_545", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 545, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 545 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_549_invokes_549", "from": "flow_file_nexusreader_infrastructure_services_knowledgeservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_549", "kind": "invokes", "label": "AskQuestionAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 549, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 549 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_549_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_568_568_invokes_568", "from": "flow_method_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_549", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_568_568", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 568, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 568 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_568_568_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_571_571_invokes_571", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_568_568", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_571_571", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 571, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 571 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_571_571_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_572_572_invokes_572", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_571_571", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_572_572", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 572, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 572 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_572_572_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_574_574_invokes_574", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_572_572", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_574_574", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 574, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 574 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_574_574_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_577_577_invokes_577", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_574_574", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_577_577", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 577, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 577 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_577_577_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_580_580_invokes_580", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_577_577", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_580_580", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 580, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 580 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_580_580_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_582_582_invokes_582", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_580_580", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_582_582", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 582, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 582 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_582_582_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_585_585_invokes_585", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_582_582", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_585_585", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 585, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 585 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_585_585_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_588_588_invokes_588", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_585_585", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_588_588", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 588, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 588 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_588_588_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_590_590_evaluates-condition_590", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_588_588", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_590_590", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 590, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 590 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_590_590_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_592_592_invokes_592", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_590_590", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_592_592", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 592, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 592 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_592_592_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_594_594_invokes_594", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_592_592", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_594_594", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 594, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 594 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_594_594_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_597_597_invokes_597", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_594_594", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_597_597", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 597, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 597 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_597_597_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_602_602_invokes_602", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_597_597", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_602_602", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 602, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 602 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_602_602_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_616_616_invokes_616", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_602_602", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_616_616", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 616, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 616 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_616_616_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_617_617_invokes_617", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_616_616", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_617_617", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 617, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 617 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_617_617_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_620_620_evaluates-condition_620", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_external_call_617_617", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_620_620", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 620, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 620 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_620_620_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_622_622_returns_622", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_620_620", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_622_622", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 622, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 622 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_622_622_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_624_624_invokes_624", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_622_622", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_624_624", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 624, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 624 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_624_624_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_636_636_evaluates-condition_636", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_624_624", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_636_636", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 636, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 636 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_636_636_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_645_645_returns_645", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_636_636", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_645_645", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 645, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 645 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_645_645_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_651_651_returns_651", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_645_645", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_651_651", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 651, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 651 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_651_651_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_654_654_loops-to_654", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_651_651", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_654_654", "kind": "loops-to", "label": "var record in neoResult", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 654, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 654 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_654_654_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_659_659_invokes_659", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_654_654", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_659_659", "kind": "invokes", "label": "Writes repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 659, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 659 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_659_659_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_662_662_evaluates-condition_662", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_659_659", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_662_662", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 662, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 662 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_662_662_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_664_664_loops-to_664", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_662_662", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_664_664", "kind": "loops-to", "label": "var relObj in relations", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 664, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 664 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_664_664_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_671_671_evaluates-condition_671", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_664_664", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_671_671", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 671, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 671 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_671_671_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_673_673_invokes_673", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_671_671", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_673_673", "kind": "invokes", "label": "Writes repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 673, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 673 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_673_673_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_682_682_invokes_682", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_673_673", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_682_682", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 682, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 682 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_682_682_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_683_683_loops-to_683", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_682_682", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_683_683", "kind": "loops-to", "label": "var point in searchResult", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 683, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 683 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_683_683_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_687_687_invokes_687", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_683_683", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_687_687", "kind": "invokes", "label": "Writes repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 687, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 687 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_687_687_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_694_694_invokes_694", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_write_687_687", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_694_694", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 694, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 694 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_694_694_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_700_700_evaluates-condition_700", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_694_694", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_700_700", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 700, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 700 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_700_700_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_704_704_invokes_704", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_700_700", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_704_704", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 704, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 704 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_704_704_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_715_715_invokes_715", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_704_704", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_715_715", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 715, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 715 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_715_715_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_716_716_invokes_716", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_715_715", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_716_716", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 716, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 716 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_716_716_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_717_717_invokes_717", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_716_716", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_717_717", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 717, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 717 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_717_717_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_754_754_evaluates-condition_754", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_repository_read_717_717", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_754_754", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 754, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 754 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_754_754_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_756_756_returns_756", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_754_754", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_756_756", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 756, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 756 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_756_756_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_760_760_loops-to_760", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_756_756", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_760_760", "kind": "loops-to", "label": "var citation in groundedResult.Citations", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 760, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 760 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_760_760_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_762_762_evaluates-condition_762", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_loop_760_760", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_762_762", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 762, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 762 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_762_762_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_771_771_returns_771", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_branch_762_762", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_771_771", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 771, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 771 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_771_771_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_775_775_invokes_775", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_771_771", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_775_775", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 775, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 775 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_775_775_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_776_776_returns_776", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_log_775_775", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_776_776", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 776, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 776 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_776_776_flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_781_781_returns_781", "from": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_776_776", "to": "flow_action_nexusreader_infrastructure_services_knowledgeservice_cs_askquestionasync_return_781_781", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/KnowledgeService.cs", "sourceLine": 781, "evidencePaths": [ "NexusReader.Infrastructure/Services/KnowledgeService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/KnowledgeService.cs", "line": 781 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_30_invokes_30", "from": "flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_30", "kind": "invokes", "label": "GetEpubContentAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 30, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 30 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_30_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_repository_read_41_41_invokes_41", "from": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_30", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_repository_read_41_41", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 41, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 41 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_repository_read_41_41_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_47_47_evaluates-condition_47", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_repository_read_41_41", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_47_47", "kind": "evaluates-condition", "label": "fail / continue", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 47 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_47_47_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_47_47_evaluates-condition_47", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_47_47", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_47_47", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 47 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_47_47_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_49_49_returns_49", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_47_47", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_49_49", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 49, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 49 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_49_49_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_55_55_evaluates-condition_55", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_49_49", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_55_55", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 55, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 55 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_55_55_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_log_57_57_invokes_57", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_55_55", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_log_57_57", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 57, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 57 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_log_57_57_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_58_58_returns_58", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_log_57_57", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_58_58", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 58, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 58 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_58_58_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_65_65_evaluates-condition_65", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_58_58", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_65_65", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 65, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 65 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_65_65_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_65_65_evaluates-condition_65", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_65_65", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_65_65", "kind": "evaluates-condition", "label": "fail / continue", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 65, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 65 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_65_65_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_67_67_returns_67", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_65_65", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_67_67", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 67, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 67 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_67_67_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_70_70_evaluates-condition_70", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_67_67", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_70_70", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 70, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 70 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_70_70_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_repository_read_77_77_invokes_77", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_70_70", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_repository_read_77_77", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 77, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 77 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_repository_read_77_77_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_loop_89_89_loops-to_89", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_repository_read_77_77", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_loop_89_89", "kind": "loops-to", "label": "Paragraph -> block building loop", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 89, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 89 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_loop_89_89_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_loop_89_89_loops-to_89", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_loop_89_89", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_loop_89_89", "kind": "loops-to", "label": "var p in paragraphs", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 89, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 89 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_loop_89_89_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_92_92_evaluates-condition_92", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_loop_89_89", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_92_92", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 92, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 92 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_92_92_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_99_99_evaluates-condition_99", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_guard_clause_92_92", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_99_99", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 99, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 99 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_99_99_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_106_106_evaluates-condition_106", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_99_99", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_106_106", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 106, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 106 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_106_106_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_111_111_returns_111", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_branch_106_106", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_111_111", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 111, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 111 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_111_111_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_log_115_115_invokes_115", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_111_111", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_log_115_115", "kind": "invokes", "label": "Logs runtime state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 115, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 115 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_log_115_115_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_116_116_returns_116", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_log_115_115", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_getepubcontentasync_return_116_116", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 116, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 116 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_124_invokes_124", "from": "flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_124", "kind": "invokes", "label": "ResolvePath", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 124, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 124 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_124_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_loop_129_129_loops-to_129", "from": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_124", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_loop_129_129", "kind": "loops-to", "label": "Search upward through parent directories", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 129, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 129 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_loop_129_129_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_loop_130_130_loops-to_130", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_loop_129_129", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_loop_130_130", "kind": "loops-to", "label": "currentDir != null", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 130, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 130 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_loop_130_130_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_guard_clause_133_133_evaluates-condition_133", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_loop_130_130", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_guard_clause_133_133", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 133, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 133 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_guard_clause_133_133_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_guard_clause_137_137_evaluates-condition_137", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_guard_clause_133_133", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_guard_clause_137_137", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 137, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 137 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_guard_clause_137_137_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_fallback_142_142_falls-back_142", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_guard_clause_137_137", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_fallback_142_142", "kind": "falls-back", "label": "Return null if not found", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 142, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 142 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_fallback_142_142_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_return_142_142_returns_142", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_fallback_142_142", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_resolvepath_return_142_142", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 142, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 142 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_145_invokes_145", "from": "flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_145", "kind": "invokes", "label": "ExtractParagraphs", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 145, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 145 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_145_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_loop_153_153_loops-to_153", "from": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_145", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_loop_153_153", "kind": "loops-to", "label": "Match match in matches", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 153, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 153 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_loop_153_153_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_branch_158_158_evaluates-condition_158", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_loop_153_153", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_branch_158_158", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 158, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 158 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_branch_158_158_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_fallback_158_158_falls-back_158", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_branch_158_158", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_fallback_158_158", "kind": "falls-back", "label": "Split by breaks if no blocks found", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 158, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 158 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_fallback_158_158_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_return_163_163_returns_163", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_fallback_158_158", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_extractparagraphs_return_163_163", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 163, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 163 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_sanitizeparagraph_166_invokes_166", "from": "flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_sanitizeparagraph_166", "kind": "invokes", "label": "SanitizeParagraph", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 166, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 166 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_sanitizeparagraph_166_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_sanitizeparagraph_return_172_172_returns_172", "from": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_sanitizeparagraph_166", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_sanitizeparagraph_return_172_172", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 172, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 172 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175_invokes_175", "from": "flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175", "kind": "invokes", "label": "CountWords", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 175, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 175 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_guard_clause_177_177_evaluates-condition_177", "from": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_guard_clause_177_177", "kind": "evaluates-condition", "label": "return 0 / continue", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 177, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 177 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_guard_clause_177_177_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_return_178_178_returns_178", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_guard_clause_177_177", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_return_178_178", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 178, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 178 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_createaitrigger_181_invokes_181", "from": "flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_createaitrigger_181", "kind": "invokes", "label": "CreateAiTrigger", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 181, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 181 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_186_invokes_186", "from": "flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_186", "kind": "invokes", "label": "FindTitleInNavigation", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 186, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 186 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_186_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_repository_read_186_186_invokes_186", "from": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_186", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_repository_read_186_186", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 186, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 186 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_repository_read_186_186_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_guard_clause_188_188_evaluates-condition_188", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_repository_read_186_186", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_guard_clause_188_188", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 188, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 188 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_guard_clause_188_188_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_loop_191_191_loops-to_191", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_guard_clause_188_188", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_loop_191_191", "kind": "loops-to", "label": "Iterate navigation items", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 191, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 191 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_loop_191_191_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_loop_191_191_loops-to_191", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_loop_191_191", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_loop_191_191", "kind": "loops-to", "label": "var item in navigation", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 191, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 191 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_loop_191_191_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_branch_193_193_evaluates-condition_193", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_loop_191_191", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_branch_193_193", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 193, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 193 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_branch_193_193_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_return_194_194_returns_194", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_branch_193_193", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_return_194_194", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 194, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 194 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_return_194_194_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_branch_196_196_evaluates-condition_196", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_return_194_194", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_branch_196_196", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 196, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 196 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_branch_196_196_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_repository_read_198_198_invokes_198", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_branch_196_196", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_repository_read_198_198", "kind": "invokes", "label": "Reads repository or persistence state", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 198, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 198 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_repository_read_198_198_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_guard_clause_199_199_evaluates-condition_199", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_repository_read_198_198", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_guard_clause_199_199", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 199, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 199 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_guard_clause_199_199_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_return_203_203_returns_203", "from": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_guard_clause_199_199", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_findtitleinnavigation_return_203_203", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 203, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubReaderService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "line": 203 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_epubmetadataextractor_cs_file_1_flow_method_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_15_invokes_15", "from": "flow_file_nexusreader_infrastructure_services_epubmetadataextractor_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_15", "kind": "invokes", "label": "ExtractMetadataAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourceLine": 15, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "line": 15 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_15_flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_guard_clause_20_20_evaluates-condition_20", "from": "flow_method_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_15", "to": "flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_guard_clause_20_20", "kind": "evaluates-condition", "label": "use 'Unknown Title' / use actual title", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourceLine": 20, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "line": 20 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_guard_clause_20_20_flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_guard_clause_21_21_evaluates-condition_21", "from": "flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_guard_clause_20_20", "to": "flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_guard_clause_21_21", "kind": "evaluates-condition", "label": "use 'Unknown Author' / use actual author", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourceLine": 21, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "line": 21 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_guard_clause_21_21_flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_return_24_24_returns_24", "from": "flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_guard_clause_21_21", "to": "flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_return_24_24", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourceLine": 24, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "line": 24 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_return_24_24_flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_return_28_28_returns_28", "from": "flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_return_24_24", "to": "flow_action_nexusreader_infrastructure_services_epubmetadataextractor_cs_extractmetadataasync_return_28_28", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "sourceLine": 28, "evidencePaths": [ "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "line": 28 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1_flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_19_invokes_19", "from": "flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_19", "kind": "invokes", "label": "SaveEbookAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 19, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 19 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_19_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_return_22_22_returns_22", "from": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_19", "to": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_return_22_22", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 22, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 22 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1_flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_25_invokes_25", "from": "flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_25", "kind": "invokes", "label": "SaveEbookAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 25, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 25 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_25_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_guard_clause_28_28_evaluates-condition_28", "from": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_25", "to": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_guard_clause_28_28", "kind": "evaluates-condition", "label": "create-directory / continue", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 28, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 28 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_guard_clause_28_28_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_return_40_40_returns_40", "from": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_guard_clause_28_28", "to": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_return_40_40", "kind": "returns", "label": "Return web-relative uploads path", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 40, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 40 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_return_40_40_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_return_40_40_returns_40", "from": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_return_40_40", "to": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_saveebookasync_return_40_40", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 40, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 40 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1_flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_43_invokes_43", "from": "flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_43", "kind": "invokes", "label": "SaveCoverAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 43, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 43 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_43_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_guard_clause_45_45_evaluates-condition_45", "from": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_43", "to": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_guard_clause_45_45", "kind": "evaluates-condition", "label": "exit / continue", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 45, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 45 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_guard_clause_45_45_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_return_47_47_returns_47", "from": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_guard_clause_45_45", "to": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_return_47_47", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 47, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 47 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1_flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_50_invokes_50", "from": "flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_50", "kind": "invokes", "label": "SaveCoverAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 50, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 50 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_50_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_guard_clause_53_53_evaluates-condition_53", "from": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_50", "to": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_guard_clause_53_53", "kind": "evaluates-condition", "label": "create-directory / continue", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 53, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 53 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_guard_clause_53_53_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_return_63_63_returns_63", "from": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_guard_clause_53_53", "to": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_return_63_63", "kind": "returns", "label": "Return web-relative covers path", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 63, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 63 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_return_63_63_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_return_63_63_returns_63", "from": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_return_63_63", "to": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_savecoverasync_return_63_63", "kind": "returns", "label": "Returns result", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 63, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 63 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1_flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_ensuredirectoryexists_66_invokes_66", "from": "flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_ensuredirectoryexists_66", "kind": "invokes", "label": "EnsureDirectoryExists", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 66, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 66 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_ensuredirectoryexists_66_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_ensuredirectoryexists_guard_clause_68_68_evaluates-condition_68", "from": "flow_method_nexusreader_infrastructure_services_bookstorageservice_cs_ensuredirectoryexists_66", "to": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_ensuredirectoryexists_guard_clause_68_68", "kind": "evaluates-condition", "label": "create-directory / noop", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 68, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 68 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_ensuredirectoryexists_guard_clause_68_68_flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_ensuredirectoryexists_branch_68_68_evaluates-condition_68", "from": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_ensuredirectoryexists_guard_clause_68_68", "to": "flow_action_nexusreader_infrastructure_services_bookstorageservice_cs_ensuredirectoryexists_branch_68_68", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 68, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 68 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1_flow_type_nexusreader_infrastructure_services_bookstorageservice_cs_bookstorageservice_10_defines-type_10", "from": "flow_file_nexusreader_infrastructure_services_bookstorageservice_cs_file_1", "to": "flow_type_nexusreader_infrastructure_services_bookstorageservice_cs_bookstorageservice_10", "kind": "defines-type", "label": "model BookStorageService", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/BookStorageService.cs", "sourceLine": 10, "evidencePaths": [ "NexusReader.Infrastructure/Services/BookStorageService.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/Services/BookStorageService.cs", "line": 10 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_file_1_flow_method_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_21_invokes_21", "from": "flow_file_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_file_1", "to": "flow_method_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_21", "kind": "invokes", "label": "BroadcastProgressAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 21, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 21 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_21_flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_guard_clause_30_30_evaluates-condition_30", "from": "flow_method_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_21", "to": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_guard_clause_30_30", "kind": "evaluates-condition", "label": "branch-true: attempt comment & send / branch-false: send", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 30, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 30 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_guard_clause_30_30_flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_branch_30_30_evaluates-condition_30", "from": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_guard_clause_30_30", "to": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_branch_30_30", "kind": "evaluates-condition", "label": "true / false", "confidence": "medium", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 30, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 30 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_branch_30_30_flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_external_call_34_34_invokes_34", "from": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_branch_30_30", "to": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_external_call_34_34", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 34, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 34 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_external_call_34_34_flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_fallback_40_40_falls-back_40", "from": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_external_call_34_34", "to": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_fallback_40_40", "kind": "falls-back", "label": "fallback", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 40, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 40 } ] }, { "id": "edge_flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_fallback_40_40_flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_external_call_44_44_invokes_44", "from": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_fallback_40_40", "to": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastprogressasync_external_call_44_44", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 44, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 44 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_file_1_flow_method_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastingestionprogressasync_49_invokes_49", "from": "flow_file_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_file_1", "to": "flow_method_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastingestionprogressasync_49", "kind": "invokes", "label": "BroadcastIngestionProgressAsync", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 49, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 49 } ] }, { "id": "edge_flow_method_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastingestionprogressasync_49_flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastingestionprogressasync_external_call_59_59_invokes_59", "from": "flow_method_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastingestionprogressasync_49", "to": "flow_action_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_broadcastingestionprogressasync_external_call_59_59", "kind": "invokes", "label": "Calls external dependency", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 59, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 59 } ] }, { "id": "edge_flow_file_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_file_1_flow_type_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_signalrsyncbroadcaster_11_defines-type_11", "from": "flow_file_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_file_1", "to": "flow_type_nexusreader_infrastructure_realtime_signalrsyncbroadcaster_cs_signalrsyncbroadcaster_11", "kind": "defines-type", "label": "model SignalRSyncBroadcaster", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "sourceLine": 11, "evidencePaths": [ "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs" ], "evidenceReferences": [ { "path": "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "line": 11 } ] }, { "id": "edge_flow_file_nexusreader_application_commands_sync_updatereadingprogresscommand_cs_file_1_flow_type_nexusreader_application_commands_sync_updatereadingprogresscommand_cs_updatereadingprogresscommand_6_defines-type_6", "from": "flow_file_nexusreader_application_commands_sync_updatereadingprogresscommand_cs_file_1", "to": "flow_type_nexusreader_application_commands_sync_updatereadingprogresscommand_cs_updatereadingprogresscommand_6", "kind": "defines-type", "label": "command UpdateReadingProgressCommand", "confidence": "high", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs", "sourceLine": 6, "evidencePaths": [ "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ], "evidenceReferences": [ { "path": "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs", "line": 6 } ] } ], "flows": [ { "id": "flow_1_nexusreader_web_client_program_cs", "name": "Program.cs", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_web_client_program_cs_file_1", "nodeIds": [ "flow_file_nexusreader_web_client_program_cs_file_1", "flow_method_nexusreader_web_client_program_cs_program_top_level_startup_15", "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "flow_type_nexusreader_web_client_program_cs_n_a_55", "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "flow_method_nexusreader_web_client_program_cs_run_wasm_host_59", "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "flow_method_nexusreader_web_client_program_cs_getservice_71", "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "flow_file_nexusreader_web_program_cs_file_1", "flow_method_nexusreader_web_program_cs_program_top_level_29", "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125" ], "edgeIds": [ "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_program_top_level_startup_15_invokes_15", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_getservice_71_invokes_71", "edge_flow_method_nexusreader_web_client_program_cs_getservice_71_flow_action_nexusreader_web_client_program_cs_getservice_return_71_71_returns_71", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88_invokes_88", "edge_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88_flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88_invokes_88", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines-type_61", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines-type_66", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines-type_74", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines-type_84", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines-type_94", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers-service_18", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33_registers-service_33", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38_registers-service_38", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_configured_httpclient_40_registers-service_40", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49_registers-service_49", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_n_a_55_registers-service_55", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmepubreader_56_registers-service_56", "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_run_wasm_host_59_configures-pipeline_59", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_program_top_level_29_invokes_29", "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates-condition_62", "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls-back_66", "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_invokes_125", "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_invokes_126", "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8_uses-service_78", "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31_uses-service_79", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_startupvalidation_scope_check_165_invokes_165", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_ensuredatabaseinitialized_175_invokes_175", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_get_api_epub_ebookid_index_249_invokes_249", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_265_invokes_265", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_273_invokes_273", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_281_invokes_281", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_289_invokes_289", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_297_invokes_297", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_305_invokes_305", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_313_invokes_313", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_321_invokes_321", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_knowledgerequest_566_maps-dto_566", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_groundednessrequest_567_maps-dto_567", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_semanticsearchrequest_568_maps-dto_568", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_askquestionrequest_569_maps-dto_569" ], "confidence": "high", "businessValue": 89, "evidencePaths": [ "NexusReader.Web.Client/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Program.cs", "line": 1 } ], "businessSignals": [ "trigger", "validation-decision" ], "scoreBreakdown": { "entrypointQuality": 25, "crossLayerDepth": 7, "businessSignals": 22, "evidenceStrength": 20, "contractCoverage": 15, "total": 89 }, "validationIssues": [], "recommendedDiagramKinds": [ "primary-runtime", "control-flow", "dependency-map", "class-diagram", "method-flow" ], "producedArtifacts": [ { "id": "web_client_wasm_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/flows__web-client-wasm.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "web_client_wasm_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/web_client_wasm.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" }, { "id": "web_client_wasm_md_planning_debug", "label": "Planning Debug", "path": "debug/planning.debug.json", "producerPath": "src/documentation/v4/phase1Orientation.ts", "status": "generated" }, { "id": "web_client_wasm_md_flow_catalog", "label": "Flow Catalog", "path": "machine/flow-catalog.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "web_client_wasm_md_flow_selection", "label": "Flow Selection", "path": "machine/flow-selection.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "web_client_wasm_md_business_map", "label": "Business Map", "path": "machine/business-map.json", "producerPath": "src/documentation/v4/phase3_5BusinessUnderstanding.ts", "status": "generated" }, { "id": "web_client_wasm_md_index_output", "label": "Published Index", "path": "index.md", "producerPath": "src/documentation/v4/phase5Index.ts", "status": "generated" } ] }, { "id": "flow_2_nexusreader_maui_mauiprogram_cs", "name": "MauiProgram", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "nodeIds": [ "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_focusmodeservice_quizstateservice_readernavigationservice_knowledgegraphservice_readerinteractionservice_knowledgecoordinator_syncservice_identityservice_1", "flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10", "flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12", "flow_method_nexusreader_maui_mauiprogram_cs_create_and_build_mauiapp_16", "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_via_factory_33", "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_configured_38", "flow_type_nexusreader_maui_mauiprogram_cs_nexusreader_application_registrations_51", "flow_type_nexusreader_maui_mauiprogram_cs_handlers_from_nexusreader_application_assembly_53", "flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57", "flow_file_nexusreader_web_program_cs_file_1", "flow_method_nexusreader_web_program_cs_program_top_level_29", "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127", "flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129", "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_131_131", "flow_action_nexusreader_web_program_cs_program_top_level_fallback_133_133", "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_135_135" ], "edgeIds": [ "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_invokes_12", "edge_flow_method_nexusreader_maui_mauiprogram_cs_createmauiapp_12_flow_action_nexusreader_maui_mauiprogram_cs_createmauiapp_return_57_57_returns_57", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiprogram_10_defines-type_10", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers-service_28", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers-service_29", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers-service_32", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_via_factory_33_registers-service_33", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_configured_38_registers-service_38", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_focusmodeservice_quizstateservice_readernavigationservice_knowledgegraphservice_readerinteractionservice_knowledgecoordinator_syncservice_identityservice_1_registers-service_1", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusreader_application_registrations_51_registers-service_51", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_handlers_from_nexusreader_application_assembly_53_registers-service_53", "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_method_nexusreader_maui_mauiprogram_cs_create_and_build_mauiapp_16_configures-pipeline_16", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_program_top_level_29_invokes_29", "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates-condition_62", "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls-back_66", "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_invokes_125", "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_invokes_126", "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_invokes_127", "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_127_127_flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129_evaluates-condition_129", "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_129_129_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_131_131_invokes_131", "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_131_131_flow_action_nexusreader_web_program_cs_program_top_level_fallback_133_133_falls-back_133", "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_133_133_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_135_135_invokes_135", "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_135_135_flow_action_nexusreader_web_program_cs_program_top_level_return_137_137_returns_137", "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8_uses-service_78", "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31_uses-service_79", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_startupvalidation_scope_check_165_invokes_165", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_ensuredatabaseinitialized_175_invokes_175", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_get_api_epub_ebookid_index_249_invokes_249", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_265_invokes_265", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_273_invokes_273", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_281_invokes_281", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_289_invokes_289", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_297_invokes_297", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_305_invokes_305", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_313_invokes_313", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_321_invokes_321", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_knowledgerequest_566_maps-dto_566", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_groundednessrequest_567_maps-dto_567", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_semanticsearchrequest_568_maps-dto_568", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_askquestionrequest_569_maps-dto_569" ], "confidence": "high", "businessValue": 89, "evidencePaths": [ "NexusReader.Maui/MauiProgram.cs" ], "evidenceReferences": [ { "path": "NexusReader.Maui/MauiProgram.cs", "line": 1 } ], "businessSignals": [ "trigger", "validation-decision" ], "scoreBreakdown": { "entrypointQuality": 25, "crossLayerDepth": 7, "businessSignals": 22, "evidenceStrength": 20, "contractCoverage": 15, "total": 89 }, "validationIssues": [], "recommendedDiagramKinds": [ "primary-runtime", "control-flow", "dependency-map", "class-diagram", "method-flow" ], "producedArtifacts": [ { "id": "web_client_wasm_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/flows__web-client-wasm.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "web_client_wasm_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/web_client_wasm.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" }, { "id": "web_client_wasm_md_planning_debug", "label": "Planning Debug", "path": "debug/planning.debug.json", "producerPath": "src/documentation/v4/phase1Orientation.ts", "status": "generated" }, { "id": "web_client_wasm_md_flow_catalog", "label": "Flow Catalog", "path": "machine/flow-catalog.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "web_client_wasm_md_flow_selection", "label": "Flow Selection", "path": "machine/flow-selection.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "web_client_wasm_md_business_map", "label": "Business Map", "path": "machine/business-map.json", "producerPath": "src/documentation/v4/phase3_5BusinessUnderstanding.ts", "status": "generated" }, { "id": "web_client_wasm_md_index_output", "label": "Published Index", "path": "index.md", "producerPath": "src/documentation/v4/phase5Index.ts", "status": "generated" } ] }, { "id": "flow_0_nexusreader_web_program_cs", "name": "Program.cs", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_web_program_cs_file_1", "nodeIds": [ "flow_file_nexusreader_web_program_cs_file_1", "flow_method_nexusreader_web_program_cs_program_top_level_29", "flow_type_nexusreader_web_program_cs_webplatformservice_47", "flow_type_nexusreader_web_program_cs_knowledgecoordinator_55", "flow_type_nexusreader_web_program_cs_httpclient_configured_with_base_address_58", "flow_type_nexusreader_web_program_cs_nexusreader_application_assembly_extension_78", "flow_type_nexusreader_web_program_cs_nexusreader_infrastructure_assembly_extension_79", "flow_type_nexusreader_web_program_cs_identity_with_appdbcontext_107", "flow_method_nexusreader_web_program_cs_usehangfiredashboard_163", "flow_method_nexusreader_web_program_cs_startupvalidation_scope_check_165", "flow_method_nexusreader_web_program_cs_ensuredatabaseinitialized_175", "flow_method_nexusreader_web_program_cs_configure_request_pipeline_routing_auth_antiforgery_static_assets_hubs_225", "flow_method_nexusreader_web_program_cs_get_api_epub_ebookid_index_249", "flow_method_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_265", "flow_method_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_273", "flow_method_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_281", "flow_method_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_289", "flow_method_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_297", "flow_method_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_305", "flow_method_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_313", "flow_method_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_321", "flow_type_nexusreader_web_program_cs_knowledgerequest_566", "flow_type_nexusreader_web_program_cs_groundednessrequest_567", "flow_type_nexusreader_web_program_cs_semanticsearchrequest_568" ], "edgeIds": [ "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_program_top_level_29_invokes_29", "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates-condition_62", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_startupvalidation_scope_check_165_invokes_165", "edge_flow_method_nexusreader_web_program_cs_startupvalidation_scope_check_165_flow_action_nexusreader_web_program_cs_startupvalidation_scope_check_branch_169_169_evaluates-condition_169", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_ensuredatabaseinitialized_175_invokes_175", "edge_flow_method_nexusreader_web_program_cs_ensuredatabaseinitialized_175_flow_action_nexusreader_web_program_cs_ensuredatabaseinitialized_loop_186_186_loops-to_186", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_get_api_epub_ebookid_index_249_invokes_249", "edge_flow_method_nexusreader_web_program_cs_get_api_epub_ebookid_index_249_flow_action_nexusreader_web_program_cs_get_api_epub_ebookid_index_guard_clause_252_252_evaluates-condition_252", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_265_invokes_265", "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_265_flow_action_nexusreader_web_program_cs_knowledgeapi_post_api_knowledge_getknowledge_repository_read_267_267_invokes_267", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_273_invokes_273", "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_273_flow_action_nexusreader_web_program_cs_knowledgeapi_post_graph_getgraphdataasync_repository_read_275_275_invokes_275", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_281_invokes_281", "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_281_flow_action_nexusreader_web_program_cs_knowledgeapi_post_summary_getsummaryandquizasync_repository_read_283_283_invokes_283", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_289_invokes_289", "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_289_flow_action_nexusreader_web_program_cs_knowledgeapi_post_map_getknowledgemapasync_repository_read_291_291_invokes_291", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_297_invokes_297", "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_297_flow_action_nexusreader_web_program_cs_knowledgeapi_post_verify_groundedness_repository_read_299_299_invokes_299", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_305_invokes_305", "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_305_flow_action_nexusreader_web_program_cs_knowledgeapi_post_search_searchlibrarysemanticallyasync_repository_read_307_307_invokes_307", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_313_invokes_313", "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_313_flow_action_nexusreader_web_program_cs_knowledgeapi_post_ask_askquestionasync_repository_read_315_315_invokes_315", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_321_invokes_321", "edge_flow_method_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_321_flow_action_nexusreader_web_program_cs_knowledgeapi_delete_api_knowledge_clearcacheasync_branch_323_323_evaluates-condition_323", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_knowledgerequest_566_maps-dto_566", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_groundednessrequest_567_maps-dto_567", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_semanticsearchrequest_568_maps-dto_568", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_askquestionrequest_569_maps-dto_569", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_webplatformservice_47_registers-service_47", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_knowledgecoordinator_55_registers-service_55", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_httpclient_configured_with_base_address_58_registers-service_58", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_nexusreader_application_assembly_extension_78_registers-service_78", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_nexusreader_infrastructure_assembly_extension_79_registers-service_79", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_identity_with_appdbcontext_107_registers-service_107", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_usehangfiredashboard_163_configures-pipeline_163", "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_configure_request_pipeline_routing_auth_antiforgery_static_assets_hubs_225_configures-pipeline_225" ], "confidence": "high", "businessValue": 82, "evidencePaths": [ "NexusReader.Web/Program.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web/Program.cs", "line": 1 } ], "businessSignals": [ "trigger", "validation-decision" ], "scoreBreakdown": { "entrypointQuality": 25, "crossLayerDepth": 0, "businessSignals": 22, "evidenceStrength": 20, "contractCoverage": 15, "total": 82 }, "validationIssues": [], "recommendedDiagramKinds": [ "primary-runtime", "dependency-map", "class-diagram", "method-flow" ], "producedArtifacts": [ { "id": "web_client_wasm_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/flows__web-client-wasm.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "web_client_wasm_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/web_client_wasm.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" }, { "id": "web_client_wasm_md_planning_debug", "label": "Planning Debug", "path": "debug/planning.debug.json", "producerPath": "src/documentation/v4/phase1Orientation.ts", "status": "generated" }, { "id": "web_client_wasm_md_flow_catalog", "label": "Flow Catalog", "path": "machine/flow-catalog.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "web_client_wasm_md_flow_selection", "label": "Flow Selection", "path": "machine/flow-selection.json", "producerPath": "src/documentation/v4/phase3_7FlowRanking.ts", "status": "generated" }, { "id": "web_client_wasm_md_business_map", "label": "Business Map", "path": "machine/business-map.json", "producerPath": "src/documentation/v4/phase3_5BusinessUnderstanding.ts", "status": "generated" }, { "id": "web_client_wasm_md_index_output", "label": "Published Index", "path": "index.md", "producerPath": "src/documentation/v4/phase5Index.ts", "status": "generated" } ] }, { "id": "xref_web_client_wasm_md_wasm_authentication_header_and_token_refresh", "name": "WASM Authentication Header and Token Refresh", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "nodeIds": [ "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69" ], "edgeIds": [ "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_invokes_27", "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_invokes_27", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32_evaluates-condition_32", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39_evaluates-condition_39", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45_evaluates-condition_45", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45_evaluates-condition_45", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48_evaluates-condition_48", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55_invokes_55", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58_evaluates-condition_58", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69_evaluates-condition_69", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69_evaluates-condition_69", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73_falls-back_73", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79_evaluates-condition_79", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_falls-back_85", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_falls-back_85", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91_evaluates-condition_91" ], "confidence": "medium", "businessValue": 56, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 1 } ], "businessSignals": [], "scoreBreakdown": { "entrypointQuality": 14, "crossLayerDepth": 0, "businessSignals": 22, "evidenceStrength": 20, "contractCoverage": 0, "total": 56 }, "validationIssues": [ { "code": "missing-contract-node", "severity": "warn", "message": "Business flow is missing DTO or entity nodes that explain its data shape." } ], "recommendedDiagramKinds": [ "primary-runtime", "control-flow", "method-flow" ], "producedArtifacts": [ { "id": "web_client_wasm_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/flows__web-client-wasm.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "web_client_wasm_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/web_client_wasm.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" } ] }, { "id": "xref_web_client_wasm_md_epub_content_retrieval_flow", "name": "Epub Content Retrieval Flow", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "nodeIds": [ "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69" ], "edgeIds": [ "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_invokes_27", "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_invokes_27", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32_evaluates-condition_32", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39_evaluates-condition_39", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45_evaluates-condition_45", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45_evaluates-condition_45", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48_evaluates-condition_48", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55_invokes_55", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58_evaluates-condition_58", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69_evaluates-condition_69", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69_evaluates-condition_69", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73_falls-back_73", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79_evaluates-condition_79", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_falls-back_85", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_falls-back_85", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91_evaluates-condition_91" ], "confidence": "medium", "businessValue": 56, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 1 } ], "businessSignals": [], "scoreBreakdown": { "entrypointQuality": 14, "crossLayerDepth": 0, "businessSignals": 22, "evidenceStrength": 20, "contractCoverage": 0, "total": 56 }, "validationIssues": [ { "code": "missing-contract-node", "severity": "warn", "message": "Business flow is missing DTO or entity nodes that explain its data shape." } ], "recommendedDiagramKinds": [ "primary-runtime", "control-flow", "method-flow" ], "producedArtifacts": [ { "id": "web_client_wasm_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/flows__web-client-wasm.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "web_client_wasm_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/web_client_wasm.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" } ] }, { "id": "xref_web_client_wasm_md_knowledge_api_call_flow", "name": "Knowledge API Call Flow", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "nodeIds": [ "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69" ], "edgeIds": [ "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_invokes_27", "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_invokes_27", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32_evaluates-condition_32", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39_evaluates-condition_39", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45_evaluates-condition_45", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45_evaluates-condition_45", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48_evaluates-condition_48", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55_invokes_55", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58_evaluates-condition_58", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69_evaluates-condition_69", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69_evaluates-condition_69", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73_falls-back_73", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79_evaluates-condition_79", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_falls-back_85", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_falls-back_85", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91_evaluates-condition_91" ], "confidence": "medium", "businessValue": 56, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 1 } ], "businessSignals": [], "scoreBreakdown": { "entrypointQuality": 14, "crossLayerDepth": 0, "businessSignals": 22, "evidenceStrength": 20, "contractCoverage": 0, "total": 56 }, "validationIssues": [ { "code": "missing-contract-node", "severity": "warn", "message": "Business flow is missing DTO or entity nodes that explain its data shape." } ], "recommendedDiagramKinds": [ "primary-runtime", "control-flow", "method-flow" ], "producedArtifacts": [ { "id": "web_client_wasm_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/flows__web-client-wasm.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "web_client_wasm_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/web_client_wasm.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" } ] }, { "id": "xref_web_client_wasm_md_program_top_level", "name": "Program (top level)", "category": "frontend-to-backend", "entryNodeId": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "nodeIds": [ "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69", "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69" ], "edgeIds": [ "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_invokes_27", "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_invokes_27", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_27_27_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32_evaluates-condition_32", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_32_32_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39_evaluates-condition_39", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_39_39_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45_evaluates-condition_45", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_45_45_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45_evaluates-condition_45", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_45_45_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48_evaluates-condition_48", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_48_48_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55_invokes_55", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_external_call_55_55_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58_evaluates-condition_58", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_58_58_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69_evaluates-condition_69", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_guard_clause_69_69_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69_evaluates-condition_69", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_69_69_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73_falls-back_73", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_73_73_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79_evaluates-condition_79", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_79_79_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_falls-back_85", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_falls-back_85", "edge_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_fallback_85_85_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_sendasync_branch_91_91_evaluates-condition_91" ], "confidence": "medium", "businessValue": 56, "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs" ], "evidenceReferences": [ { "path": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "line": 1 } ], "businessSignals": [], "scoreBreakdown": { "entrypointQuality": 14, "crossLayerDepth": 0, "businessSignals": 22, "evidenceStrength": 20, "contractCoverage": 0, "total": 56 }, "validationIssues": [ { "code": "missing-contract-node", "severity": "warn", "message": "Business flow is missing DTO or entity nodes that explain its data shape." } ], "recommendedDiagramKinds": [ "primary-runtime", "control-flow", "method-flow" ], "producedArtifacts": [ { "id": "web_client_wasm_md_phase_inputs", "label": "Phase Inputs", "path": "machine/phase-inputs/flows__web-client-wasm.phase-inputs.json", "producerPath": "src/documentation/v4/phase4Generation.ts", "status": "generated" }, { "id": "web_client_wasm_md_context_bag", "label": "Context Bag", "path": "machine/context-bags/web_client_wasm.context-bag.json", "producerPath": "src/documentation/v4/buildContextBags.ts", "status": "generated" } ] } ] }, "testLinkMetadata": [] }, "generatedDiagrams": [ { "id": "dependency_map_graph", "kind": "dependency-map", "title": "Dependency and Model Map", "direction": "TD", "nodes": [ { "id": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "kind": "dependency", "label": "AuthenticationHeaderHandler", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 1 }, { "id": "flow_type_nexusreader_web_client_handlers_authenticationheaderhandler_cs_authenticationheaderhandler_14", "kind": "dependency", "label": "AuthenticationHeaderHandler", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 14 }, { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "kind": "dependency", "label": "ThrowingDbContextFactory", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 61 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "kind": "dependency", "label": "ThrowingEmbeddingGenerator", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 66 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "kind": "dependency", "label": "ThrowingBookStorageService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "kind": "dependency", "label": "ThrowingEbookRepository", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "kind": "dependency", "label": "ThrowingSyncBroadcaster", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 94 }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "kind": "dependency", "label": "WebPlatformService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18 }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "kind": "dependency", "label": "NexusAuthenticationStateProvider", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 33 }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "kind": "dependency", "label": "WasmKnowledgeService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 38 }, { "id": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "kind": "dependency", "label": "configured HttpClient", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "kind": "dependency", "label": "ThrowingDbContextFactory", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 49 }, { "id": "flow_type_nexusreader_web_client_program_cs_n_a_55", "kind": "dependency", "label": "N/A", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 55 }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "kind": "dependency", "label": "WasmEpubReader", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 56 }, { "id": "flow_file_nexusreader_web_client_services_wasmepubservice_cs_file_1", "kind": "service", "label": "WasmEpubReader", "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs", "sourceLine": 1 }, { "id": "flow_file_nexusreader_web_client_services_wasmknowledgeservice_cs_file_1", "kind": "dependency", "label": "WasmKnowledgeService", "sourcePath": "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "sourceLine": 1 }, { "id": "flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1", "kind": "service", "label": "WebPlatformService", "sourcePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 1 }, { "id": "flow_type_nexusreader_web_client_services_webplatformservice_cs_webplatformservice_7", "kind": "dependency", "label": "WebPlatformService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 7 }, { "id": "flow_file_nexusreader_web_client_nexusreader_web_client_csproj_file_1", "kind": "dependency", "label": "NexusReader.Web.Client.csproj", "sourcePath": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "sourceLine": 1 } ], "edges": [ { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_type_nexusreader_web_client_handlers_authenticationheaderhandler_cs_authenticationheaderhandler_14_defines_type_14", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_type_nexusreader_web_client_handlers_authenticationheaderhandler_cs_authenticationheaderhandler_14", "semanticLabel": "model AuthenticationHeaderHandler", "visibleLabel": "model AuthenticationHeaderHandler", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 14, "includeInMetadata": true, "payload": { "outputSummary": "DelegatingHandler that attaches JWTs to trusted requests and orchestrates token refresh and retry behavior.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines_type_61", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "semanticLabel": "model ThrowingDbContextFactory", "visibleLabel": "model ThrowingDbContextFactory", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 61, "includeInMetadata": true, "payload": { "outputSummary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines_type_66", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "semanticLabel": "model ThrowingEmbeddingGenerator", "visibleLabel": "model ThrowingEmbeddingGenerator", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 66, "includeInMetadata": true, "payload": { "outputSummary": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines_type_74", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "semanticLabel": "model ThrowingBookStorageService", "visibleLabel": "model ThrowingBookStorageService", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "includeInMetadata": true, "payload": { "outputSummary": "IBookStorageService implementation that throws for all file storage operations in WASM.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines_type_84", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "semanticLabel": "model ThrowingEbookRepository", "visibleLabel": "model ThrowingEbookRepository", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "includeInMetadata": true, "payload": { "outputSummary": "IEbookRepository implementation that throws for all repository operations in WASM.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines_type_94", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "semanticLabel": "model ThrowingSyncBroadcaster", "visibleLabel": "model ThrowingSyncBroadcaster", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 94, "includeInMetadata": true, "payload": { "outputSummary": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers_service_18", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "semanticLabel": "IPlatformService", "visibleLabel": "IPlatformService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "includeInMetadata": true, "payload": { "outputSummary": "Registers platform abstraction for browser.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33_registers_service_33", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "semanticLabel": "NexusAuthenticationStateProvider", "visibleLabel": "NexusAuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 33, "includeInMetadata": true, "payload": { "outputSummary": "Authentication state provider and wiring to AuthenticationStateProvider.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38_registers_service_38", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "semanticLabel": "IKnowledgeService", "visibleLabel": "IKnowledgeService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 38, "includeInMetadata": true, "payload": { "outputSummary": "Registers a WASM-specific knowledge service implementation.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_configured_httpclient_40_registers_service_40", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "semanticLabel": "HttpClient (named 'NexusAPI')", "visibleLabel": "uses", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 40, "includeInMetadata": true, "payload": { "outputSummary": "Adds named HTTP client with base address and authentication header handler.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49_registers_service_49", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "semanticLabel": "IDbContextFactory", "visibleLabel": "IDbContextFactory AppDbContext>", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 49, "includeInMetadata": true, "payload": { "outputSummary": "Registers throw-only stub to avoid using DbContext in WASM.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_n_a_55_registers_service_55", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_n_a_55", "semanticLabel": "application services (via extension)", "visibleLabel": "application services via extension", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 55, "includeInMetadata": true, "payload": { "outputSummary": "Calls AddApplication() to register application-layer services.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmepubreader_56_registers_service_56", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "semanticLabel": "IEpubReader", "visibleLabel": "IEpubReader", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 56, "includeInMetadata": true, "payload": { "outputSummary": "Registers WASM epub reader implementation.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1_flow_type_nexusreader_web_client_services_webplatformservice_cs_webplatformservice_7_defines_type_7", "from": "flow_file_nexusreader_web_client_services_webplatformservice_cs_file_1", "to": "flow_type_nexusreader_web_client_services_webplatformservice_cs_webplatformservice_7", "semanticLabel": "model WebPlatformService", "visibleLabel": "model WebPlatformService", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Services/WebPlatformService.cs", "sourceLine": 7, "includeInMetadata": true, "payload": { "outputSummary": "Concrete platform service for the web client that implements IPlatformService using JS interop.", "expandedLabel": "defines-type" } } ], "metadata": { "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] }, "subgraphs": [] }, { "id": "startup_runtime_graph", "kind": "primary-runtime", "title": "Startup and Service Registration Flow", "direction": "TD", "nodes": [ { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1 }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "kind": "dependency", "label": "WebPlatformService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18 }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "kind": "dependency", "label": "NexusAuthenticationStateProvider", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 33 }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "kind": "dependency", "label": "WasmKnowledgeService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 38 }, { "id": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "kind": "dependency", "label": "configured HttpClient", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "kind": "dependency", "label": "ThrowingDbContextFactory", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 49 }, { "id": "flow_type_nexusreader_web_client_program_cs_n_a_55", "kind": "dependency", "label": "N/A", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 55 }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "kind": "dependency", "label": "WasmEpubReader", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 56 }, { "id": "flow_method_nexusreader_web_client_program_cs_run_wasm_host_59", "kind": "method", "label": "Run WASM Host", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 59 }, { "id": "flow_file_nexusreader_web_client_nexusreader_web_client_csproj_file_1", "kind": "dependency", "label": "NexusReader.Web.Client.csproj", "sourcePath": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "sourceLine": 1 }, { "id": "flow_method_nexusreader_web_client_nexusreader_web_client_csproj_project_configuration_1", "kind": "method", "label": "project-configuration", "sourcePath": "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "sourceLine": 1 }, { "id": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "kind": "service", "label": "MauiProgram", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "kind": "dependency", "label": "MauiPlatformService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 28 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "kind": "dependency", "label": "MauiStorageService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 29 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "kind": "dependency", "label": "NexusAuthenticationStateProvider", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 32 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_via_factory_33", "kind": "dependency", "label": "NexusAuthenticationStateProvider (via factory)", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 33 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_configured_38", "kind": "dependency", "label": "HttpClient (configured)", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 38 }, { "id": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_focusmodeservice_quizstateservice_readernavigationservice_knowledgegraphservice_readerinteractionservice_knowledgecoordinator_syncservice_identityservice_1", "kind": "dependency", "label": "ThemeService, FocusModeService, QuizStateService, ReaderNavigationService, KnowledgeGraphService, ReaderInteractionService, KnowledgeCoordinator, SyncService, IdentityService", "shape": "doc", "sourcePath": "NexusReader.Maui/MauiProgram.cs", "sourceLine": 1 } ], "edges": [ { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers_service_18", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "semanticLabel": "IPlatformService", "visibleLabel": "IPlatformService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "includeInMetadata": true, "payload": { "outputSummary": "Registers platform abstraction for browser.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33_registers_service_33", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "semanticLabel": "NexusAuthenticationStateProvider", "visibleLabel": "NexusAuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 33, "includeInMetadata": true, "payload": { "outputSummary": "Authentication state provider and wiring to AuthenticationStateProvider.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38_registers_service_38", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "semanticLabel": "IKnowledgeService", "visibleLabel": "IKnowledgeService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 38, "includeInMetadata": true, "payload": { "outputSummary": "Registers a WASM-specific knowledge service implementation.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_configured_httpclient_40_registers_service_40", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "semanticLabel": "HttpClient (named 'NexusAPI')", "visibleLabel": "uses", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 40, "includeInMetadata": true, "payload": { "outputSummary": "Adds named HTTP client with base address and authentication header handler.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49_registers_service_49", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "semanticLabel": "IDbContextFactory", "visibleLabel": "IDbContextFactory AppDbContext>", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 49, "includeInMetadata": true, "payload": { "outputSummary": "Registers throw-only stub to avoid using DbContext in WASM.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_n_a_55_registers_service_55", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_n_a_55", "semanticLabel": "application services (via extension)", "visibleLabel": "application services via extension", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 55, "includeInMetadata": true, "payload": { "outputSummary": "Calls AddApplication() to register application-layer services.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmepubreader_56_registers_service_56", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "semanticLabel": "IEpubReader", "visibleLabel": "IEpubReader", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 56, "includeInMetadata": true, "payload": { "outputSummary": "Registers WASM epub reader implementation.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_run_wasm_host_59_configures_pipeline_59", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_run_wasm_host_59", "semanticLabel": "unknown", "visibleLabel": "unknown", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 59, "includeInMetadata": true, "payload": { "outputSummary": "unknown", "expandedLabel": "configures-pipeline" } }, { "id": "edge_flow_file_nexusreader_web_client_nexusreader_web_client_csproj_file_1_flow_method_nexusreader_web_client_nexusreader_web_client_csproj_project_configuration_1_configures_pipeline_1", "from": "flow_file_nexusreader_web_client_nexusreader_web_client_csproj_file_1", "to": "flow_method_nexusreader_web_client_nexusreader_web_client_csproj_project_configuration_1", "semanticLabel": "unknown", "visibleLabel": "unknown", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/NexusReader.Web.Client.csproj", "sourceLine": 1, "includeInMetadata": true, "payload": { "outputSummary": "unknown", "expandedLabel": "configures-pipeline" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28_registers_service_28", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauiplatformservice_28", "semanticLabel": "IPlatformService", "visibleLabel": "IPlatformService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 28, "includeInMetadata": true, "payload": { "outputSummary": "Registers platform abstraction implemented for MAUI", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29_registers_service_29", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_mauistorageservice_29", "semanticLabel": "INativeStorageService", "visibleLabel": "INativeStorageService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 29, "includeInMetadata": true, "payload": { "outputSummary": "Registers platform native storage implementation", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32_registers_service_32", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_32", "semanticLabel": "NexusAuthenticationStateProvider", "visibleLabel": "NexusAuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 32, "includeInMetadata": true, "payload": { "outputSummary": "Concrete auth state provider registered", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_via_factory_33_registers_service_33", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_nexusauthenticationstateprovider_via_factory_33", "semanticLabel": "Microsoft.AspNetCore.Components.Authorization.AuthenticationStateProvider", "visibleLabel": "Microsoft.AspNetCore.Components.Authorization.AuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 33, "includeInMetadata": true, "payload": { "outputSummary": "Maps framework AuthenticationStateProvider to NexusAuthenticationStateProvider via service locator factory", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_httpclient_configured_38_registers_service_38", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_httpclient_configured_38", "semanticLabel": "HttpClient", "visibleLabel": "HttpClient", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 38, "includeInMetadata": true, "payload": { "outputSummary": "Registers HttpClient with BaseAddress = http://10.0.2.2:5000 (Android emulator to local server)", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_maui_mauiprogram_cs_file_1_flow_type_nexusreader_maui_mauiprogram_cs_themeservice_focusmodeservice_quizstateservice_readernavigationservice_knowledgegraphservice_readerinteractionservice_knowledgecoordinator_syncservice_identityservice_1_registers_service_1", "from": "flow_file_nexusreader_maui_mauiprogram_cs_file_1", "to": "flow_type_nexusreader_maui_mauiprogram_cs_themeservice_focusmodeservice_quizstateservice_readernavigationservice_knowledgegraphservice_readerinteractionservice_knowledgecoordinator_syncservice_identityservice_1", "semanticLabel": "UI and app state services", "visibleLabel": "UI and app state services", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Maui/MauiProgram.cs", "sourceLine": 1, "includeInMetadata": true, "payload": { "outputSummary": "Registers multiple scoped services handling UI state, knowledge coordination, sync and identity", "expandedLabel": "registers-service" } } ], "subgraphs": [ { "id": "flow_1_nexusreader_web_client_program_cs", "label": "Program.cs" }, { "id": "flow_2_nexusreader_maui_mauiprogram_cs", "label": "MauiProgram" } ], "metadata": { "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] } }, { "id": "primary_runtime_flow_1_nexusreader_web_client_program_cs", "kind": "primary-runtime", "title": "Program.cs Flow", "direction": "TD", "nodes": [ { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_web_client_program_cs_program_top_level_startup_15", "kind": "method", "label": "Program (top-level startup)", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 15 }, { "id": "flow_method_nexusreader_web_client_program_cs_getservice_71", "kind": "method", "label": "GetService", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71 }, { "id": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "kind": "return", "label": "returns null", "shape": "stadium", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71 }, { "id": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "kind": "method", "label": "FindAuthorByNameAsync", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88 }, { "id": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "kind": "dependency", "label": "ThrowingDbContextFactory", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 61 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "kind": "dependency", "label": "ThrowingEmbeddingGenerator", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 66 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "kind": "dependency", "label": "ThrowingBookStorageService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "kind": "dependency", "label": "ThrowingEbookRepository", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "kind": "dependency", "label": "ThrowingSyncBroadcaster", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 94 }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "kind": "dependency", "label": "WebPlatformService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18 }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "kind": "dependency", "label": "NexusAuthenticationStateProvider", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 33 }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "kind": "dependency", "label": "WasmKnowledgeService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 38 }, { "id": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "kind": "dependency", "label": "configured HttpClient", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "kind": "dependency", "label": "ThrowingDbContextFactory", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 49 }, { "id": "flow_type_nexusreader_web_client_program_cs_n_a_55", "kind": "dependency", "label": "N/A", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 55 }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "kind": "dependency", "label": "WasmEpubReader", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 56 }, { "id": "flow_method_nexusreader_web_client_program_cs_run_wasm_host_59", "kind": "method", "label": "Run WASM Host", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 59 }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "kind": "method", "label": "Program (top-level)", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "kind": "step", "label": "Evaluates branch condition", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "kind": "step", "label": "Falls back to alternate path", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 125 } ], "edges": [ { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_program_top_level_startup_15_invokes_15", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_program_top_level_startup_15", "semanticLabel": "Program (top-level startup)", "visibleLabel": "Program top-level startup", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 15, "includeInMetadata": true, "payload": { "outputSummary": "Create the WebAssemblyHostBuilder, register application and platform services, add HTTP client and dummy server-only stubs, then build and run the WASM host.", "expandedLabel": "handles-route" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_getservice_71_invokes_71", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_getservice_71", "semanticLabel": "GetService", "visibleLabel": "GetService", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 71, "includeInMetadata": true, "payload": { "outputSummary": "Fallback service resolver stub that always returns null.", "expandedLabel": "handles-route" } }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_getservice_71_flow_action_nexusreader_web_client_program_cs_getservice_return_71_71_returns_71", "from": "flow_method_nexusreader_web_client_program_cs_getservice_71", "to": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "semanticLabel": "returns null", "visibleLabel": "returns null", "relation": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 71, "includeInMetadata": true, "payload": { "outputSummary": "public object? GetService(...) => null", "expandedLabel": "returns" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88_invokes_88", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "semanticLabel": "FindAuthorByNameAsync", "visibleLabel": "FindAuthorByNameAsync", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "includeInMetadata": true, "payload": { "outputSummary": "Repository lookup stub that throws because repository access is unsupported in WASM.", "expandedLabel": "handles-route" } }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88_flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88_invokes_88", "from": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "to": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "includeInMetadata": true, "payload": { "outputSummary": "public Task FindAuthorByNameAsync(string name, CancellationToken cancellationToken = default) => throw new NotSupportedException(ErrorMessage);", "expandedLabel": "invokes" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines_type_61", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "semanticLabel": "model ThrowingDbContextFactory", "visibleLabel": "model ThrowingDbContextFactory", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 61, "includeInMetadata": true, "payload": { "outputSummary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines_type_66", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "semanticLabel": "model ThrowingEmbeddingGenerator", "visibleLabel": "model ThrowingEmbeddingGenerator", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 66, "includeInMetadata": true, "payload": { "outputSummary": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines_type_74", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "semanticLabel": "model ThrowingBookStorageService", "visibleLabel": "model ThrowingBookStorageService", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "includeInMetadata": true, "payload": { "outputSummary": "IBookStorageService implementation that throws for all file storage operations in WASM.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines_type_84", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "semanticLabel": "model ThrowingEbookRepository", "visibleLabel": "model ThrowingEbookRepository", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "includeInMetadata": true, "payload": { "outputSummary": "IEbookRepository implementation that throws for all repository operations in WASM.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines_type_94", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "semanticLabel": "model ThrowingSyncBroadcaster", "visibleLabel": "model ThrowingSyncBroadcaster", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 94, "includeInMetadata": true, "payload": { "outputSummary": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers_service_18", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "semanticLabel": "IPlatformService", "visibleLabel": "IPlatformService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "includeInMetadata": true, "payload": { "outputSummary": "Registers platform abstraction for browser.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33_registers_service_33", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "semanticLabel": "NexusAuthenticationStateProvider", "visibleLabel": "NexusAuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 33, "includeInMetadata": true, "payload": { "outputSummary": "Authentication state provider and wiring to AuthenticationStateProvider.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38_registers_service_38", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "semanticLabel": "IKnowledgeService", "visibleLabel": "IKnowledgeService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 38, "includeInMetadata": true, "payload": { "outputSummary": "Registers a WASM-specific knowledge service implementation.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_configured_httpclient_40_registers_service_40", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "semanticLabel": "HttpClient (named 'NexusAPI')", "visibleLabel": "uses", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 40, "includeInMetadata": true, "payload": { "outputSummary": "Adds named HTTP client with base address and authentication header handler.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49_registers_service_49", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "semanticLabel": "IDbContextFactory", "visibleLabel": "IDbContextFactory AppDbContext>", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 49, "includeInMetadata": true, "payload": { "outputSummary": "Registers throw-only stub to avoid using DbContext in WASM.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_n_a_55_registers_service_55", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_n_a_55", "semanticLabel": "application services (via extension)", "visibleLabel": "application services via extension", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 55, "includeInMetadata": true, "payload": { "outputSummary": "Calls AddApplication() to register application-layer services.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmepubreader_56_registers_service_56", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "semanticLabel": "IEpubReader", "visibleLabel": "IEpubReader", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 56, "includeInMetadata": true, "payload": { "outputSummary": "Registers WASM epub reader implementation.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_method_nexusreader_web_client_program_cs_run_wasm_host_59_configures_pipeline_59", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_method_nexusreader_web_client_program_cs_run_wasm_host_59", "semanticLabel": "unknown", "visibleLabel": "unknown", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 59, "includeInMetadata": true, "payload": { "outputSummary": "unknown", "expandedLabel": "configures-pipeline" } }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_method_nexusreader_web_program_cs_program_top_level_29_invokes_29", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_method_nexusreader_web_program_cs_program_top_level_29", "semanticLabel": "Program (top-level)", "visibleLabel": "Program top-level", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 29, "includeInMetadata": true, "payload": { "outputSummary": "Top-level program: build host, register services and middleware, map routes/endpoints, run the app.", "expandedLabel": "handles-route" } }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates_condition_62", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "semanticLabel": "true / false", "visibleLabel": "true / false", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "includeInMetadata": true, "payload": { "outputSummary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "expandedLabel": "evaluates-condition" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "semanticLabel": "fallback", "visibleLabel": "fallback", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "includeInMetadata": true, "payload": { "outputSummary": "else", "expandedLabel": "falls-back" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_invokes_125", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 125, "includeInMetadata": true, "payload": { "outputSummary": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "expandedLabel": "invokes" } } ], "subgraphs": [ { "id": "flow_1_nexusreader_web_client_program_cs", "label": "Program.cs" }, { "id": "flow_2_nexusreader_maui_mauiprogram_cs", "label": "MauiProgram" }, { "id": "flow_0_nexusreader_web_program_cs", "label": "Program.cs" } ], "metadata": { "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] } }, { "id": "control_flow_flow_1_nexusreader_web_client_program_cs", "kind": "control-flow", "title": "Program.cs Execution Control Flow", "direction": "TD", "nodes": [ { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_web_client_program_cs_program_top_level_startup_15", "kind": "method", "label": "Program (top-level startup)", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 15 }, { "id": "flow_method_nexusreader_web_client_program_cs_getservice_71", "kind": "method", "label": "GetService", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71 }, { "id": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "kind": "return", "label": "returns null", "shape": "stadium", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71 }, { "id": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "kind": "method", "label": "FindAuthorByNameAsync", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88 }, { "id": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88 }, { "id": "flow_method_nexusreader_web_client_program_cs_run_wasm_host_59", "kind": "method", "label": "Run WASM Host", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 59 }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "kind": "method", "label": "Program (top-level)", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "kind": "step", "label": "Evaluates branch condition", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "kind": "step", "label": "Falls back to alternate path", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 125 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 126 }, { "id": "flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8", "kind": "method", "label": "AddApplication", "sourcePath": "NexusReader.Application/DependencyInjection.cs", "sourceLine": 8 }, { "id": "flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31", "kind": "method", "label": "AddInfrastructure", "sourcePath": "NexusReader.Infrastructure/DependencyInjection.cs", "sourceLine": 31 } ], "edges": [ { "id": "edge_flow_method_nexusreader_web_client_program_cs_getservice_71_flow_action_nexusreader_web_client_program_cs_getservice_return_71_71_returns_71", "from": "flow_method_nexusreader_web_client_program_cs_getservice_71", "to": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "semanticLabel": "returns null", "visibleLabel": "returns null", "relation": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 71, "includeInMetadata": true, "payload": { "outputSummary": "public object? GetService(...) => null", "expandedLabel": "returns" } }, { "id": "edge_flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88_flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88_invokes_88", "from": "flow_method_nexusreader_web_client_program_cs_findauthorbynameasync_88", "to": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 88, "includeInMetadata": true, "payload": { "outputSummary": "public Task FindAuthorByNameAsync(string name, CancellationToken cancellationToken = default) => throw new NotSupportedException(ErrorMessage);", "expandedLabel": "invokes" } }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates_condition_62", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "semanticLabel": "true / false", "visibleLabel": "true / false", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "includeInMetadata": true, "payload": { "outputSummary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "expandedLabel": "evaluates-condition" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "semanticLabel": "fallback", "visibleLabel": "fallback", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "includeInMetadata": true, "payload": { "outputSummary": "else", "expandedLabel": "falls-back" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_invokes_125", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 125, "includeInMetadata": true, "payload": { "outputSummary": "var isApiRequest = context.Request.Path.StartsWithSegments(\"/api\") ||", "expandedLabel": "invokes" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125_flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126_invokes_126", "from": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_125_125", "to": "flow_action_nexusreader_web_program_cs_program_top_level_repository_read_126_126", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 126, "includeInMetadata": true, "payload": { "outputSummary": "context.Request.Path.StartsWithSegments(\"/identity\") ||", "expandedLabel": "invokes" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8_uses_service_78", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_method_nexusreader_application_dependencyinjection_cs_addapplication_8", "semanticLabel": "AddApplication", "visibleLabel": "AddApplication", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 78, "includeInMetadata": true, "payload": { "outputSummary": "IServiceCollection", "expandedLabel": "uses-service" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31_uses_service_79", "from": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "to": "flow_method_nexusreader_infrastructure_dependencyinjection_cs_addinfrastructure_31", "semanticLabel": "AddInfrastructure", "visibleLabel": "AddInfrastructure", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 79, "includeInMetadata": true, "payload": { "outputSummary": "IServiceCollection, IConfiguration", "expandedLabel": "uses-service" } } ], "subgraphs": [ { "id": "NexusReader_Web_Client_Program", "label": "Program" }, { "id": "NexusReader_Web_Program", "label": "Program" }, { "id": "NexusReader_Application_DependencyInjection", "label": "DependencyInjection" }, { "id": "NexusReader_Infrastructure_DependencyInjection", "label": "DependencyInjection" } ], "metadata": { "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] } }, { "id": "contracts_flow_1_nexusreader_web_client_program_cs", "kind": "class-diagram", "title": "Program.cs Contracts and Entities", "direction": "LR", "nodes": [ { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "kind": "dependency", "label": "ThrowingDbContextFactory", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 61 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "kind": "dependency", "label": "ThrowingEmbeddingGenerator", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 66 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "kind": "dependency", "label": "ThrowingBookStorageService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "kind": "dependency", "label": "ThrowingEbookRepository", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "kind": "dependency", "label": "ThrowingSyncBroadcaster", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 94 }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "kind": "dependency", "label": "WebPlatformService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18 }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "kind": "dependency", "label": "NexusAuthenticationStateProvider", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 33 }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "kind": "dependency", "label": "WasmKnowledgeService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 38 }, { "id": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "kind": "dependency", "label": "configured HttpClient", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40 }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "kind": "dependency", "label": "ThrowingDbContextFactory", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 49 }, { "id": "flow_type_nexusreader_web_client_program_cs_n_a_55", "kind": "dependency", "label": "N/A", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 55 }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "kind": "dependency", "label": "WasmEpubReader", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 56 }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1 }, { "id": "flow_type_nexusreader_web_program_cs_knowledgerequest_566", "kind": "dependency", "label": "KnowledgeRequest", "shape": "doc", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 566 }, { "id": "flow_type_nexusreader_web_program_cs_groundednessrequest_567", "kind": "dependency", "label": "GroundednessRequest", "shape": "doc", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 567 }, { "id": "flow_type_nexusreader_web_program_cs_semanticsearchrequest_568", "kind": "dependency", "label": "SemanticSearchRequest", "shape": "doc", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 568 }, { "id": "flow_type_nexusreader_web_program_cs_askquestionrequest_569", "kind": "dependency", "label": "AskQuestionRequest", "shape": "doc", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 569 } ], "edges": [ { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines_type_61", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "semanticLabel": "model ThrowingDbContextFactory", "visibleLabel": "model ThrowingDbContextFactory", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 61, "includeInMetadata": true, "payload": { "outputSummary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines_type_66", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "semanticLabel": "model ThrowingEmbeddingGenerator", "visibleLabel": "model ThrowingEmbeddingGenerator", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 66, "includeInMetadata": true, "payload": { "outputSummary": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines_type_74", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "semanticLabel": "model ThrowingBookStorageService", "visibleLabel": "model ThrowingBookStorageService", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "includeInMetadata": true, "payload": { "outputSummary": "IBookStorageService implementation that throws for all file storage operations in WASM.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines_type_84", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "semanticLabel": "model ThrowingEbookRepository", "visibleLabel": "model ThrowingEbookRepository", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "includeInMetadata": true, "payload": { "outputSummary": "IEbookRepository implementation that throws for all repository operations in WASM.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines_type_94", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "semanticLabel": "model ThrowingSyncBroadcaster", "visibleLabel": "model ThrowingSyncBroadcaster", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 94, "includeInMetadata": true, "payload": { "outputSummary": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_knowledgerequest_566_maps_dto_566", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_knowledgerequest_566", "semanticLabel": "dto KnowledgeRequest", "visibleLabel": "dto KnowledgeRequest", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 566, "includeInMetadata": true, "payload": { "outputSummary": "Request DTO carrying free-text input and optional ebook context for knowledge APIs.", "expandedLabel": "maps-dto" } }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_groundednessrequest_567_maps_dto_567", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_groundednessrequest_567", "semanticLabel": "dto GroundednessRequest", "visibleLabel": "dto GroundednessRequest", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 567, "includeInMetadata": true, "payload": { "outputSummary": "Request DTO for verifying answer groundedness in a context.", "expandedLabel": "maps-dto" } }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_semanticsearchrequest_568_maps_dto_568", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_semanticsearchrequest_568", "semanticLabel": "dto SemanticSearchRequest", "visibleLabel": "dto SemanticSearchRequest", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 568, "includeInMetadata": true, "payload": { "outputSummary": "DTO for semantic search requests with a limit.", "expandedLabel": "maps-dto" } }, { "id": "edge_flow_file_nexusreader_web_program_cs_file_1_flow_type_nexusreader_web_program_cs_askquestionrequest_569_maps_dto_569", "from": "flow_file_nexusreader_web_program_cs_file_1", "to": "flow_type_nexusreader_web_program_cs_askquestionrequest_569", "semanticLabel": "dto AskQuestionRequest", "visibleLabel": "dto AskQuestionRequest", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 569, "includeInMetadata": true, "payload": { "outputSummary": "DTO for question-asking APIs including optional ebook context and limit.", "expandedLabel": "maps-dto" } } ], "metadata": { "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ], "previewCompatibility": { "preferredSurface": "two-d", "fallback": "open-2d-preview", "reason": "class-diagram is preserved for 2D Mermaid rendering while 3D preview stays flowchart-only." } }, "subgraphs": [] }, { "id": "layer_flow_1_nexusreader_web_client_program_cs", "kind": "dependency-map", "title": "Program.cs Layer View", "direction": "LR", "nodes": [ { "id": "flow_file_nexusreader_web_client_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 1, "subgraphId": "layer_frontend" }, { "id": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "kind": "return", "label": "returns null", "shape": "stadium", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71, "subgraphId": "layer_frontend" }, { "id": "flow_action_nexusreader_web_client_program_cs_findauthorbynameasync_repository_read_88_88", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 88, "subgraphId": "layer_frontend" }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "kind": "dependency", "label": "ThrowingDbContextFactory", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 61, "subgraphId": "layer_frontend" }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "kind": "dependency", "label": "ThrowingEmbeddingGenerator", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 66, "subgraphId": "layer_frontend" }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "kind": "dependency", "label": "ThrowingBookStorageService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 74, "subgraphId": "layer_frontend" }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "kind": "dependency", "label": "ThrowingEbookRepository", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 84, "subgraphId": "layer_frontend" }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "kind": "dependency", "label": "ThrowingSyncBroadcaster", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 94, "subgraphId": "layer_frontend" }, { "id": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "kind": "dependency", "label": "WebPlatformService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 18, "subgraphId": "layer_frontend" }, { "id": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "kind": "dependency", "label": "NexusAuthenticationStateProvider", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 33, "subgraphId": "layer_frontend" }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "kind": "dependency", "label": "WasmKnowledgeService", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 38, "subgraphId": "layer_frontend" }, { "id": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "kind": "dependency", "label": "configured HttpClient", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 40, "subgraphId": "layer_frontend" }, { "id": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "kind": "dependency", "label": "ThrowingDbContextFactory", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 49, "subgraphId": "layer_frontend" }, { "id": "flow_type_nexusreader_web_client_program_cs_n_a_55", "kind": "dependency", "label": "N/A", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 55, "subgraphId": "layer_frontend" }, { "id": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "kind": "dependency", "label": "WasmEpubReader", "shape": "doc", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 56, "subgraphId": "layer_frontend" }, { "id": "flow_file_nexusreader_web_program_cs_file_1", "kind": "service", "label": "Program.cs", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 1, "subgraphId": "layer_application" }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "kind": "step", "label": "Evaluates branch condition", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62, "subgraphId": "layer_application" }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "kind": "step", "label": "Falls back to alternate path", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66, "subgraphId": "layer_application" } ], "edges": [ { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61_defines_type_61", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_61", "semanticLabel": "model ThrowingDbContextFactory", "visibleLabel": "model ThrowingDbContextFactory", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 61, "includeInMetadata": true, "payload": { "outputSummary": "IDbContextFactory implementation that prevents use of EF DbContext in WASM by throwing on creation.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66_defines_type_66", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingembeddinggenerator_66", "semanticLabel": "model ThrowingEmbeddingGenerator", "visibleLabel": "model ThrowingEmbeddingGenerator", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 66, "includeInMetadata": true, "payload": { "outputSummary": "IEmbeddingGenerator implementation that disables local embedding generation in WASM (throws on GenerateAsync).", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74_defines_type_74", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingbookstorageservice_74", "semanticLabel": "model ThrowingBookStorageService", "visibleLabel": "model ThrowingBookStorageService", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 74, "includeInMetadata": true, "payload": { "outputSummary": "IBookStorageService implementation that throws for all file storage operations in WASM.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84_defines_type_84", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingebookrepository_84", "semanticLabel": "model ThrowingEbookRepository", "visibleLabel": "model ThrowingEbookRepository", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 84, "includeInMetadata": true, "payload": { "outputSummary": "IEbookRepository implementation that throws for all repository operations in WASM.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94_defines_type_94", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingsyncbroadcaster_94", "semanticLabel": "model ThrowingSyncBroadcaster", "visibleLabel": "model ThrowingSyncBroadcaster", "relation": "transforms", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 94, "includeInMetadata": true, "payload": { "outputSummary": "ISyncBroadcaster implementation that throws because real-time broadcasting must run on the server.", "expandedLabel": "defines-type" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_webplatformservice_18_registers_service_18", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_webplatformservice_18", "semanticLabel": "IPlatformService", "visibleLabel": "IPlatformService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 18, "includeInMetadata": true, "payload": { "outputSummary": "Registers platform abstraction for browser.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33_registers_service_33", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_nexusauthenticationstateprovider_33", "semanticLabel": "NexusAuthenticationStateProvider", "visibleLabel": "NexusAuthenticationStateProvider", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 33, "includeInMetadata": true, "payload": { "outputSummary": "Authentication state provider and wiring to AuthenticationStateProvider.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38_registers_service_38", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmknowledgeservice_38", "semanticLabel": "IKnowledgeService", "visibleLabel": "IKnowledgeService", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 38, "includeInMetadata": true, "payload": { "outputSummary": "Registers a WASM-specific knowledge service implementation.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_configured_httpclient_40_registers_service_40", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_configured_httpclient_40", "semanticLabel": "HttpClient (named 'NexusAPI')", "visibleLabel": "uses", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 40, "includeInMetadata": true, "payload": { "outputSummary": "Adds named HTTP client with base address and authentication header handler.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49_registers_service_49", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_throwingdbcontextfactory_49", "semanticLabel": "IDbContextFactory", "visibleLabel": "IDbContextFactory AppDbContext>", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 49, "includeInMetadata": true, "payload": { "outputSummary": "Registers throw-only stub to avoid using DbContext in WASM.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_n_a_55_registers_service_55", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_n_a_55", "semanticLabel": "application services (via extension)", "visibleLabel": "application services via extension", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 55, "includeInMetadata": true, "payload": { "outputSummary": "Calls AddApplication() to register application-layer services.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_file_nexusreader_web_client_program_cs_file_1_flow_type_nexusreader_web_client_program_cs_wasmepubreader_56_registers_service_56", "from": "flow_file_nexusreader_web_client_program_cs_file_1", "to": "flow_type_nexusreader_web_client_program_cs_wasmepubreader_56", "semanticLabel": "IEpubReader", "visibleLabel": "IEpubReader", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 56, "includeInMetadata": true, "payload": { "outputSummary": "Registers WASM epub reader implementation.", "expandedLabel": "registers-service" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "semanticLabel": "fallback", "visibleLabel": "fallback", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "includeInMetadata": true, "payload": { "outputSummary": "else", "expandedLabel": "falls-back" } } ], "subgraphs": [ { "id": "layer_frontend", "label": "frontend" }, { "id": "layer_application", "label": "application" } ], "metadata": { "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] } }, { "id": "failure_flow_1_nexusreader_web_client_program_cs", "kind": "control-flow", "title": "Program.cs Guardrails and Failure Paths", "direction": "TD", "nodes": [ { "id": "flow_method_nexusreader_web_client_program_cs_getservice_71", "kind": "method", "label": "GetService", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71 }, { "id": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "kind": "return", "label": "returns null", "shape": "stadium", "sourcePath": "NexusReader.Web.Client/Program.cs", "sourceLine": 71 }, { "id": "flow_method_nexusreader_web_program_cs_program_top_level_29", "kind": "method", "label": "Program (top-level)", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 29 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "kind": "step", "label": "Evaluates branch condition", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 62 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "kind": "step", "label": "Falls back to alternate path", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 66 } ], "edges": [ { "id": "edge_flow_method_nexusreader_web_client_program_cs_getservice_71_flow_action_nexusreader_web_client_program_cs_getservice_return_71_71_returns_71", "from": "flow_method_nexusreader_web_client_program_cs_getservice_71", "to": "flow_action_nexusreader_web_client_program_cs_getservice_return_71_71", "semanticLabel": "returns null", "visibleLabel": "returns null", "relation": "returns", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Program.cs", "sourceLine": 71, "includeInMetadata": true, "payload": { "outputSummary": "public object? GetService(...) => null", "expandedLabel": "returns" } }, { "id": "edge_flow_method_nexusreader_web_program_cs_program_top_level_29_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_evaluates_condition_62", "from": "flow_method_nexusreader_web_program_cs_program_top_level_29", "to": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "semanticLabel": "true / false", "visibleLabel": "true / false", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 62, "includeInMetadata": true, "payload": { "outputSummary": "if (!string.IsNullOrEmpty(apiBaseUrl))", "expandedLabel": "evaluates-condition" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62_flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66_falls_back_66", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_62_62", "to": "flow_action_nexusreader_web_program_cs_program_top_level_fallback_66_66", "semanticLabel": "fallback", "visibleLabel": "fallback", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 66, "includeInMetadata": true, "payload": { "outputSummary": "else", "expandedLabel": "falls-back" } } ], "subgraphs": [ { "id": "NexusReader_Web_Client_Program", "label": "Program" }, { "id": "NexusReader_Web_Program", "label": "Program" } ], "metadata": { "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ], "warnings": [] } }, { "id": "method_flows_graph", "kind": "method-flow", "title": "Method Flow Details", "direction": "TD", "nodes": [ { "id": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "kind": "dependency", "label": "AuthenticationHeaderHandler", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "kind": "method", "label": "CloneHttpRequestMessageAsync", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 112 }, { "id": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "kind": "step", "label": "Evaluates branch condition", "shape": "diamond", "sourcePath": "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 119 }, { "id": "flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237", "kind": "step", "label": "Evaluates branch condition", "shape": "diamond", "sourcePath": "NexusReader.Web/Program.cs", "sourceLine": 237 }, { "id": "flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1", "kind": "dependency", "label": "SyncHub", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_synchub_14", "kind": "method", "label": "SyncHub", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 14 }, { "id": "flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1", "kind": "service", "label": "EpubReaderService", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 1 }, { "id": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19", "kind": "method", "label": "UpdateProgress", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 19 }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_21_21", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 21 }, { "id": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28", "kind": "method", "label": "OnConnectedAsync", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 28 }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_30_30", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 30 }, { "id": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38", "kind": "method", "label": "OnDisconnectedAsync", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 38 }, { "id": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_40_40", "kind": "step", "label": "Reads repository or persistence state", "shape": "rect", "sourcePath": "NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 40 }, { "id": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175", "kind": "method", "label": "CountWords", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 175 }, { "id": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_guard_clause_177_177", "kind": "step", "label": "Empty text check", "shape": "diamond", "sourcePath": "NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 177 } ], "edges": [ { "id": "edge_flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112_invokes_112", "from": "flow_file_nexusreader_web_client_handlers_authenticationheaderhandler_cs_file_1", "to": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "semanticLabel": "CloneHttpRequestMessageAsync", "visibleLabel": "CloneHttpRequestMessageAsync", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 112, "includeInMetadata": true, "payload": { "outputSummary": "Creates a deep-ish clone of an HttpRequestMessage including method, URI, version, headers and buffered content to allow safe retry.", "expandedLabel": "invokes" } }, { "id": "edge_flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112_flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119_evaluates_condition_119", "from": "flow_method_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_112", "to": "flow_action_nexusreader_web_client_handlers_authenticationheaderhandler_cs_clonehttprequestmessageasync_branch_119_119", "semanticLabel": "true / false", "visibleLabel": "true / false", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "sourceLine": 119, "includeInMetadata": true, "payload": { "outputSummary": "if (req.Content != null)", "expandedLabel": "evaluates-condition" } }, { "id": "edge_flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237_flow_method_nexusreader_infrastructure_realtime_synchub_cs_synchub_14_uses_service_247", "from": "flow_action_nexusreader_web_program_cs_program_top_level_branch_237_237", "to": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_synchub_14", "semanticLabel": "SyncHub", "visibleLabel": "SyncHub", "relation": "uses", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Web/Program.cs", "sourceLine": 247, "includeInMetadata": true, "payload": { "outputSummary": "Hub mapping for realtime sync", "expandedLabel": "uses-service" } }, { "id": "edge_flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1_flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19_invokes_19", "from": "flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1", "to": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19", "semanticLabel": "UpdateProgress", "visibleLabel": "UpdateProgress", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 19, "includeInMetadata": true, "payload": { "outputSummary": "Receives client progress updates, obtains the calling user id and forwards an UpdateReadingProgressCommand via MediatR when user is present.", "expandedLabel": "handles-route" } }, { "id": "edge_flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19_flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_21_21_invokes_21", "from": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_19", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_updateprogress_repository_read_21_21", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 21, "includeInMetadata": true, "payload": { "outputSummary": "var userId = Context.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value;", "expandedLabel": "invokes" } }, { "id": "edge_flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1_flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28_invokes_28", "from": "flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1", "to": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28", "semanticLabel": "OnConnectedAsync", "visibleLabel": "OnConnectedAsync", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 28, "includeInMetadata": true, "payload": { "outputSummary": "When a client connects, adds their connection to a per-user SignalR group (User_{userId}) and calls base connection logic.", "expandedLabel": "handles-route" } }, { "id": "edge_flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28_flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_30_30_invokes_30", "from": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_28", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_onconnectedasync_repository_read_30_30", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 30, "includeInMetadata": true, "payload": { "outputSummary": "var userId = Context.UserIdentifier;", "expandedLabel": "invokes" } }, { "id": "edge_flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1_flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38_invokes_38", "from": "flow_file_nexusreader_infrastructure_realtime_synchub_cs_file_1", "to": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38", "semanticLabel": "OnDisconnectedAsync", "visibleLabel": "OnDisconnectedAsync", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 38, "includeInMetadata": true, "payload": { "outputSummary": "When a client disconnects, removes their connection from the per-user SignalR group and invokes base disconnect logic.", "expandedLabel": "handles-route" } }, { "id": "edge_flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38_flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_40_40_invokes_40", "from": "flow_method_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_38", "to": "flow_action_nexusreader_infrastructure_realtime_synchub_cs_ondisconnectedasync_repository_read_40_40", "semanticLabel": "Reads repository or persistence state", "visibleLabel": "Reads repository or persistence state", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/RealTime/SyncHub.cs", "sourceLine": 40, "includeInMetadata": true, "payload": { "outputSummary": "var userId = Context.UserIdentifier;", "expandedLabel": "invokes" } }, { "id": "edge_flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175_invokes_175", "from": "flow_file_nexusreader_infrastructure_services_epubreaderservice_cs_file_1", "to": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175", "semanticLabel": "CountWords", "visibleLabel": "CountWords", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 175, "includeInMetadata": true, "payload": { "outputSummary": "Count words in a string using whitespace separators; returns 0 for null/whitespace.", "expandedLabel": "invokes" } }, { "id": "edge_flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175_flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_guard_clause_177_177_evaluates_condition_177", "from": "flow_method_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_175", "to": "flow_action_nexusreader_infrastructure_services_epubreaderservice_cs_countwords_guard_clause_177_177", "semanticLabel": "return 0 / continue", "visibleLabel": "return 0 / continue", "relation": "calls", "sourcePath": "c:/Users/micht/source/repos/Nexus.Reader/src/NexusReader.Infrastructure/Services/EpubReaderService.cs", "sourceLine": 177, "includeInMetadata": true, "payload": { "outputSummary": "Empty text check", "expandedLabel": "evaluates-condition" } } ], "subgraphs": [ { "id": "NexusReader_Web_Client_Handlers_AuthenticationHeaderHandler", "label": "AuthenticationHeaderHandler" }, { "id": "NexusReader_Infrastructure_RealTime_SyncHub", "label": "SyncHub" }, { "id": "NexusReader_Infrastructure_Services_EpubReaderService", "label": "EpubReaderService" } ], "metadata": { "evidencePaths": [ "NexusReader.Web.Client/Handlers/AuthenticationHeaderHandler.cs", "NexusReader.Web.Client/Program.cs", "NexusReader.Web.Client/Services/WasmEpubService.cs", "NexusReader.Web.Client/Services/WasmKnowledgeService.cs", "NexusReader.Web.Client/Services/WebPlatformService.cs", "NexusReader.Web.Client/NexusReader.Web.Client.csproj", "NexusReader.Maui/MauiProgram.cs", "NexusReader.Web/Program.cs", "NexusReader.Application/DependencyInjection.cs", "NexusReader.Infrastructure/DependencyInjection.cs", "NexusReader.Infrastructure/RealTime/SyncHub.cs", "NexusReader.Infrastructure/Services/KnowledgeService.cs", "NexusReader.Infrastructure/Services/EpubReaderService.cs", "NexusReader.Infrastructure/Services/EpubMetadataExtractor.cs", "NexusReader.Infrastructure/Services/BookStorageService.cs", "NexusReader.Infrastructure/RealTime/SignalRSyncBroadcaster.cs", "NexusReader.Application/Commands/Sync/UpdateReadingProgressCommand.cs" ] } } ] }