Commit Graph

25 Commits

Author SHA1 Message Date
local
d3300c7db9 feat: add extract-feature and export-spec portability skills
Two new OpenSpec skills for porting features to sandboxed codebases:
- /opsx:extract-feature generates minimal, printable code recipes
- /opsx:export-spec generates compact specs for AI-assisted reimplementation
Both support cumulative dependency analysis across archived changes.

Includes first export of migrate-to-semantic-kernel in all three formats:
code recipe (~120 lines), portable spec (~40 lines), OpenSpec variant (~25 lines).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 00:59:06 +01:00
local
471e9ce935 feat: migrate chat backend to Semantic Kernel with tool calling support
Replace manual HTTP proxy in ChatController with Semantic Kernel's
OpenAI chat completion service pointed at CLIProxyAPI. Add extraction
plugin with validation function for structured field extraction from
natural language, enabling an agentic loop with auto-retry and
human-in-the-loop escalation.

- Add Microsoft.SemanticKernel 1.74.0 with OpenAI connector
- Create ExtractedFields schema and ValidationResult models
- Create ExtractionPlugin with [KernelFunction] validation
- Rewrite ChatController to use IChatCompletionService streaming
- Configure FunctionChoiceBehavior.Auto() for tool calling
- Preserve existing SSE contract (client unchanged)
- Update tests to mock SK services, add plugin and integration tests
- Archive multi-turn-conversations and migrate-to-semantic-kernel changes
- Sync specs for agent-extraction, semantic-kernel-integration, chat-streaming

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 23:59:13 +01:00
local
3278a408b9 feat: add multi-turn conversation support within a session
Send full conversation history with each API request so the AI maintains
context across exchanges. Add "New Chat" button to clear the conversation
and start fresh. No persistent storage — session resets on page reload.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 02:40:33 +01:00
local
17a5a58e73 test: add xUnit test coverage for API controllers and client services
Create ChatAgent.Api.Tests and ChatAgent.Client.Tests projects with xUnit
and Moq. Test HealthController (200 + valid response), ChatController
(SSE streaming with mocked upstream, error handling), and ChatApiClient
(delta parsing, error events, health endpoint). 6 tests, all passing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 02:21:10 +01:00
local
00e7df2802 feat: wire chat UI to Responses API with streaming
Add ChatController that proxies POST /api/chat to the local Responses API
(localhost:8317/v1/responses) with SSE streaming. Client reads tokens via
SetBrowserResponseStreamingEnabled and renders them incrementally. Includes
thinking indicator, input disabled during streaming, and error handling.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 01:54:28 +01:00
local
1614a61617 feat: add basic chat interface with MudBlazor and propose responses API integration
Install MudBlazor 9.2.0, replace Bootstrap layout with MudLayout/MudAppBar,
create Chat.razor with message list, text input, auto-scroll, and hardcoded
responses. Add ChatMessage shared model. Remove template pages (Counter,
Weather), move health check to /health. Include OpenSpec change artifacts
for the upcoming wire-responses-api work.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 01:24:40 +01:00
local
a462b7dbc7 feat: migrate CLAUDE.md content to OpenSpec specs and initialize workflow
Move project description and tech stack research from CLAUDE.md into
openspec/specs/project/ and openspec/specs/stack/. Slim CLAUDE.md to a
pointer file. Populate config.yaml with project context. Add OpenSpec
CLI skills and commands.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 01:23:13 +01:00
local
7dd4243f01 incorporate openspec 2026-04-03 00:18:34 +01:00
local
697e9dce23 fix(01-02): auto-match API URL protocol to client load protocol
Client now detects whether it was loaded over HTTP or HTTPS and
selects the corresponding API base URL, so both protocols work
without manual config changes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 16:00:43 +00:00
local
1fde98ca79 feat(01-02): implement health check round-trip with CORS and tutorial comments
- Add shared HealthResponse DTO in ChatAgent.Shared
- Add HealthController API endpoint with CORS policy for localhost:5200
- Add ChatApiClient typed HttpClient wrapper in WASM client
- Update Home.razor to display health check result on load
- Simplify MainLayout to minimal centered layout
- Add global imports for Services and Shared.Models
- Replace app.css with clean Phase 1 light theme styles
- Remove unused OpenAPI package from API project
- All files include tutorial-style inline comments (CODE-01)
2026-03-27 22:58:19 +00:00
local
4ef27598a0 docs(01-01): complete solution scaffold plan
- SUMMARY.md with execution results and metrics
- STATE.md advanced to plan 2 of 2 (50%)
- ROADMAP.md updated with plan progress
- CODE-02 requirement marked complete

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:53:47 +00:00
local
c6f1225810 feat(01-01): configure predictable dev ports and API base URL
- Client: https://localhost:5200, http://localhost:5100
- API: https://localhost:7100, http://localhost:7000
- Client wwwroot/appsettings.json with ApiBaseUrl pointing to API

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:52:27 +00:00
local
eeaa9de3c5 feat(01-01): create three-project .NET 9 solution scaffold
- ChatAgent.sln at repo root with Client, Api, Shared projects
- Blazor WASM client, ASP.NET Core Web API, shared class library
- Both Client and Api reference Shared project
- Removed template boilerplate (WeatherForecast, Class1)
- Added .NET ignores to .gitignore
- Pinned .NET 9 SDK via global.json

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:51:55 +00:00
local
b958230216 docs(01): add validation strategy for phase 1
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 01:50:43 +00:00
local
4f1176be19 docs(01-architecture-foundation): create phase plan 2026-03-27 01:48:23 +00:00
local
410150eff9 docs(01): research phase domain 2026-03-27 01:38:56 +00:00
local
ccc9b0da91 docs(state): record phase 1 context session 2026-03-27 01:30:56 +00:00
local
98055dfb04 docs(01): capture phase context 2026-03-27 01:30:44 +00:00
local
7962df1094 docs: create roadmap (5 phases) 2026-03-27 01:21:35 +00:00
local
81bcc49bae docs: define v1 requirements 2026-03-27 01:07:09 +00:00
local
d9878dea73 docs: complete project research 2026-03-27 00:59:24 +00:00
local
b45ae0400e chore: add project config 2026-03-27 00:49:08 +00:00
local
6dbb1085b0 docs: initialize project 2026-03-27 00:43:18 +00:00
local
d963902a28 docs: map existing codebase 2026-03-27 00:21:00 +00:00
f50d2f8446 Initial commit 2026-03-27 00:08:47 +00:00