Fix scheduled chat automation dispatch - #3610
Conversation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 50868deb0f
ℹ️ 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".
| NormalizeOptional(fact.Authority.CatalogContractVersion, string.Empty), | ||
| NormalizeOptional(fact.Authority.CatalogPolicyVersion, string.Empty), | ||
| fact.Authority.CatalogEvaluatedAt.ToUniversalTime()), | ||
| null); |
There was a problem hiding this comment.
Preserve owner LLM selection through schedule mapping
When the authorization planner resolves an owner-specific LLM route, it sets both OwnerLlmStateVersion > 0 and OwnerLlmSelection, but this mapper unconditionally discards the selection. ScheduledServiceInvocationDispatchPort.ValidateOwnerLLMSelectionAndPayload then rejects every fired schedule in such a scope because IsValidExplicitOwnerLLMSelection(null) is false; the workflow schedule model must carry the typed selection and BuildWorkflowChatRequest must copy its route/model into LlmControl, as the Studio scheduling path already does.
AGENTS.md reference: AGENTS.md:L11-L11
Useful? React with 👍 / 👎.
| var metadata = ScheduledDeliveryMetadataBuilder.CreateNyxIdAssistantMetadata( | ||
| actorId, | ||
| assistantActionsOptions?.ScheduledDeliveryProviderSlug, | ||
| assistantActionsOptions?.ScheduledDeliveryProviderUserServiceId); |
There was a problem hiding this comment.
Configure the NyxID assistant delivery provider
With the checked Mainnet configuration, both new option values passed here are null: appsettings.json configures only AssistantActions:Enabled, and MainnetHostBuilderExtensions only supplies that same default. Consequently CreateNyxIdAssistantMetadata emits no outbound provider slug, and an ordinary public-chat reminder that does not invent nyx_provider_slug reaches ScheduledAgentCreateRequestMapper.Plan and fails with channel_outbound_provider_slug_unavailable; configure or resolve the provider for the Mainnet NyxID assistant path rather than exposing a creator that cannot use its default metadata.
Useful? React with 👍 / 👎.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Issue
Closes aevatarAI/aevatar-framework#171
Scope
Verification
dotnet test test/Aevatar.AI.Tests/Aevatar.AI.Tests.csproj --nologo --filter AgentTurnToolCatalogMaterializerTests -v minimaldotnet test test/Aevatar.Capabilities.Tests/Aevatar.Capabilities.Tests.csproj --nologo --filter MainnetBootScriptTests -v minimaldotnet test test/Aevatar.GAgents.ChannelRuntime.Tests/Aevatar.GAgents.ChannelRuntime.Tests.csproj --nologo --filter ScheduledAgentCreatorToolTests -v minimaldotnet test test/Aevatar.Workflow.Application.Tests/Aevatar.Workflow.Application.Tests.csproj --nologo --filter WorkflowScheduleApplicationServiceTests -v minimalbash tools/ci/test_stability_guards.shbash tools/ci/architecture_guards.shhttp://127.0.0.1:5107; selected NyxID nodece344be6-dcd3-46d0-ac81-b4902633ab4brestored to online/dispatchable./api/workflow/observatory/meand one-shot fired delivery retest: blocked by local HTTPS TLS handshake EOF tohttps://nyx-api.chrono-ai.fun, also affecting unrelateduser-context-mockproxy requests.Notes
ScheduledDispatchFireStartedEventbut failed because the scheduled invocation authorization fact was missing from the workflow target. This PR maps that fact from the creator authorization plan into the workflow schedule configuration and service invocation target.curl https://nyx-api.chrono-ai.fun/healthfails withLibreSSL SSL_connect: SSL_ERROR_SYSCALL, andnyxid proxy request user-context-mock /api/statusfails with the same TLS handshake EOF.Generated with Claude Code.