Conversation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Migrate deterministic build/test/package/validation scripts to Nuke targets: Compile, Test, Publish, PackNuGet, PackReplTool, PackageMsix, InstallReplTool, StartServer, BumpVersion, ValidateConfig, ValidateTraceability, TestMultiInstance, TestGraphRagSmoke, and Clean. Extract testable helpers (ConfigValidator, TraceabilityValidator, GitVersionBumper, MsixHelper) with 43 unit tests. Update Azure Pipelines to use Nuke targets and add GitHub Actions workflow. Update all user-facing documentation with Nuke build commands. Also includes McpAgent REPL integration and REPL migration guide. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Nuke build system with 15 targets (Compile, Test, Publish, PackNuGet, PackReplTool, PackageMsix, InstallReplTool, StartServer, BumpVersion, ValidateConfig, ValidateTraceability, TestMultiInstance, TestGraphRagSmoke, Clean, Restore). Extract testable helpers with 43 unit tests. Migrate Azure Pipelines and add GitHub Actions. Update all documentation.
Add Nuke build system and migrate build scripts
Replace CDN-dependent JavaScript QR code generation with server-side SVG rendering using QRCoder. The /pair/qr endpoint generates the QR code image, which works on LAN-only environments without internet. When a tunnel provider is active, the QR code encodes the tunnel's public URL. When external Keycloak OIDC is configured, the QR code points to the identity server proxy login page through the tunnel. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add server-side QR code to pairing key page
The QR code encoded .../auth/ui{authorityPath} which points to realm
metadata, not the device verification page. AuthConfigController builds
verification_uri as .../auth/ui{authorityPath}/device, so align the QR
URL to match so mobile scans land on the correct login endpoint.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
IntegrationTests projects require a running server and are not suitable for CI pipelines. Filter to only .Tests and .Validation projects. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Relocate TodoWorkflow so the REPL TODO workflow is available to library consumers (e.g. McpServer.Director) without referencing the Repl.Host executable project. Update namespace to McpServer.Repl.Core and fix the Host service registration to match. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 349a90878a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| var queryUri = $"/mcpserver/graphrag/query?q={Uri.EscapeDataString(GraphRagQuery)}"; | ||
| var queryResponse = await http.GetAsync(queryUri); | ||
| queryResponse.EnsureSuccessStatusCode(); |
There was a problem hiding this comment.
Call GraphRAG query endpoint with POST JSON payload
TestGraphRagSmoke issues GET /mcpserver/graphrag/query?q=..., but the server endpoint is implemented as HttpPost("query") and validates a JSON GraphRagQueryRequest body. In practice this step returns 405/400 even when GraphRAG is healthy, so the smoke target fails for normal runs instead of validating query functionality.
Useful? React with 👍 / 👎.
| while (DateTime.UtcNow < deadline) | ||
| { | ||
| if (process.HasExited) | ||
| throw new InvalidOperationException($"Process {process.Id} exited before becoming healthy."); | ||
|
|
There was a problem hiding this comment.
Return from WaitForHealthy after a successful probe
WaitForHealthy never performs a health probe or returns a port on success; it only loops with Task.Delay until the deadline, then throws a timeout. Because both instance checks depend on this method, TestMultiInstance will always fail after TimeoutSeconds (or earlier if a process exits), making the target unusable as a smoke test.
Useful? React with 👍 / 👎.
Summary
Routine develop → main merge.
Notable changes on develop since main:
TodoWorkflowfromMcpServer.Repl.HosttoMcpServer.Repl.Coreso library consumers (e.g. McpServer.Director) can reference it without depending on the Repl.Host executable project/devicepath segment for OIDC+tunnel flowTest plan
🤖 Generated with Claude Code