refactor: consume PatternKit v0.112 to delete bespoke EIP implementations#25
Merged
Conversation
… execution
- Replace qwen3:30b-instruct with qwen2.5:1.5b (1.5B params, <=2B constraint)
everywhere the model is configured: OllamaAgentProvider default, OllamaFixture,
SemanticKernelE2ETests, AiDsl sample, TaskStream sample extension
- Reduce OllamaFixture warmup timeout from 300s to 120s; remove /no_think from
warmup prompt (qwen3-specific; harmless on qwen2.5 but unnecessary)
- Add xunit.runner.json to Tests.E2E with parallelizeTestCollections:false and
maxParallelThreads:1 – combined with the existing [Collection("Ollama")] attribute
this guarantees all Ollama-backed tests run one at a time
- Update OllamaFactAttribute skip message to reference new model
- Update OllamaOptionsTests default model assertion to match new default
- Update prerequisite XML doc comment in AgentLoopOllamaE2ETests
To run the Ollama-backed E2E tests locally:
ollama pull qwen2.5:1.5b
dotnet test tests/WorkflowFramework.Tests.E2E/WorkflowFramework.Tests.E2E.csproj \
--filter Category=E2E
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… seeded workflow
Adds the AI DSL Emitter demo to the dashboard in two complementary ways:
1. Template ("New from Template" browser): id=ai-dsl-emitter, name="AI DSL Emitter",
category="AI & Agents", marked IsFeatured=true with preview SVG.
2. Seeded workflow (open-existing list): id=sample-ai-dsl-emitter,
name="AI DSL Emitter", immediately visible in the workflow list on startup.
Step types used match the Extensions.AI implementation:
SelectProvider (Action) → EmitSteps (DslEmitterStep) → ApprovePlan (ApprovalStep)
→ BridgeContext (Action) → ExecuteEmittedSteps (WorkflowDslExecutorStep)
Also registers DslEmitterStep and WorkflowDslExecutorStep in StepTypeRegistry
so the designer UI can render their config schemas.
Tests: 43/43 passed (WorkflowTemplateLibraryTests + SampleWorkflowSeederTests).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…orkflow
The SelectProvider step in SampleWorkflowSeeder had the old expression
"Resolve the agent provider from {provider} (echo or ollama)..." with an
unresolved {provider} template variable. This made the seeded/open-existing
workflow appear broken in the dashboard.
Aligned the expression to match InMemoryWorkflowTemplateLibrary:
"Provider is configured as echo (offline/demo default). To run live,
change the provider field in EmitSteps to ollama before executing."
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Upgrades PatternKit.Core from 0.105.0 to 0.112.0, which ships new messaging primitives (AsyncWireTap, AsyncScatterGather, AsyncContentEnricher, Normalizer, AsyncPollingConsumer, IIdempotencyStore, IClaimCheckStore<T>, IOutboxStore<T>) that are candidates for absorbing bespoke EIP step implementations. All 588 TinyBDD characterization tests pass against 0.112.0. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…15 lines) Refactors WireTapStep to delegate to PatternKit.Messaging.Channels. AsyncWireTap<IWorkflowContext>. The caller-supplied Func<IWorkflowContext, Task> is wrapped in a typed tap handler; swallowErrors maps to TapErrorPolicy. Swallow/Propagate. Public constructor signature and Name property unchanged. All 8 Phase G.3 characterization tests pass without modification. Net: -15 lines of bespoke logic (try/catch + direct await replaced by primitive). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…rrals - Bumps adoption inventory to PatternKit 0.112.0 - Moves WireTapStep from Intentionally Bespoke to Adopted - Adds full deferral analysis for 7 steps evaluated against 0.112.0 primitives: NormalizerStep, ContentEnricherStep, IdempotentReceiverStep, ClaimCheckStep, PollingConsumerStep, ScatterGatherStep, TransactionalOutboxStep - Creates docs/patternkit-followup.md with per-step deferral rationale and resumption conditions for the next adoption pass Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Code Coverage |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #25 +/- ##
==========================================
+ Coverage 89.77% 89.92% +0.15%
==========================================
Files 291 291
Lines 8280 8282 +2
Branches 1496 1496
==========================================
+ Hits 7433 7448 +15
+ Misses 522 504 -18
- Partials 325 330 +5
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PatternKit.Corefrom 0.105.0 to 0.112.0 (backwards-compatible; all 588 characterization tests pass on net8.0, net9.0, net10.0 after the bump)WireTapStepto delegate internally toPatternKit.Messaging.Channels.AsyncWireTap<IWorkflowContext>— the only clean adoption from the 0.112.0 primitive setdocs/patternkit-followup.mddocs/patternkit-adoption.md: WireTapStep moved to Adopted, Future Evaluation Targets updated with 0.112.0-era analysisSteps refactored
WireTapStepAsyncWireTap<IWorkflowContext>Steps deferred (evaluated but not adopted)
NormalizerStepContentEnricherStepIdempotentReceiverStepClaimCheckStep/ClaimRetrieveStepIClaimCheckStorevs typedIClaimCheckStore<TPayload>withMessageHeadersPollingConsumerStepScatterGatherStepTransactionalOutboxStepSaveAsync(object)→stringvsEnqueueAsync(Message<TPayload>)→OutboxMessage<TPayload>Totals
Test plan
dotnet restore --use-lock-file --force-evaluatecompleted without errordotnet build src/WorkflowFramework.Extensions.Integration— 0 errorsdotnet test WorkflowFramework.Tests.TinyBDD --filter "FullyQualifiedName~WireTap"— 8/8 passdotnet test WorkflowFramework.Tests.TinyBDD -c Release— 588/588 on net8, net9, net10🤖 Generated with Claude Code