Skip to content

Fix scheduled chat automation dispatch - #3610

Open
louis4li wants to merge 6 commits into
feature/integratefrom
fix/2026-09-07_scheduled-task-tools
Open

Fix scheduled chat automation dispatch#3610
louis4li wants to merge 6 commits into
feature/integratefrom
fix/2026-09-07_scheduled-task-tools

Conversation

@louis4li

@louis4li louis4li commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Issue

Closes aevatarAI/aevatar-framework#171

Scope

  • Expose scheduled automation tools for NyxID chat turns when published profile members are empty.
  • Prefer direct scheduled automation tools while retaining Ornn search/publish for explicit Ornn intent or fallback.
  • Carry provider-confirmed scheduled creator receipts through NyxID chat task lifecycle.
  • Propagate NyxID Assistant owner/provider metadata through shared scheduled delivery metadata mapping.
  • Persist scheduled invocation authorization facts into workflow schedule targets so fired schedules pass dispatch authorization.

Verification

  • dotnet test test/Aevatar.AI.Tests/Aevatar.AI.Tests.csproj --nologo --filter AgentTurnToolCatalogMaterializerTests -v minimal
  • dotnet test test/Aevatar.Capabilities.Tests/Aevatar.Capabilities.Tests.csproj --nologo --filter MainnetBootScriptTests -v minimal
  • dotnet test test/Aevatar.GAgents.ChannelRuntime.Tests/Aevatar.GAgents.ChannelRuntime.Tests.csproj --nologo --filter ScheduledAgentCreatorToolTests -v minimal
  • dotnet test test/Aevatar.Workflow.Application.Tests/Aevatar.Workflow.Application.Tests.csproj --nologo --filter WorkflowScheduleApplicationServiceTests -v minimal
  • Focused NyxID chat regression set: 326 passed.
  • Focused channel runtime regression set: 95 passed.
  • bash tools/ci/test_stability_guards.sh
  • bash tools/ci/architecture_guards.sh
  • Local Mainnet host reachable on http://127.0.0.1:5107; selected NyxID node ce344be6-dcd3-46d0-ac81-b4902633ab4b restored to online/dispatchable.
  • Final NyxID proxy /api/workflow/observatory/me and one-shot fired delivery retest: blocked by local HTTPS TLS handshake EOF to https://nyx-api.chrono-ai.fun, also affecting unrelated user-context-mock proxy requests.

Notes

  • Earlier local one-shot schedule creation reached ScheduledDispatchFireStartedEvent but 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.
  • The final proxy blocker is external/connectivity-level: direct curl https://nyx-api.chrono-ai.fun/health fails with LibreSSL SSL_connect: SSL_ERROR_SYSCALL, and nyxid proxy request user-context-mock /api/status fails with the same TLS handshake EOF.

Generated with Claude Code.

louis4li and others added 3 commits September 8, 2026 12:51
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>
@louis4li
louis4li requested a review from jason-aelf as a code owner September 9, 2026 04:14
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 9, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-09T04:19:58.221838Z 50868de PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment on lines +285 to +288
var metadata = ScheduledDeliveryMetadataBuilder.CreateNyxIdAssistantMetadata(
actorId,
assistantActionsOptions?.ScheduledDeliveryProviderSlug,
assistantActionsOptions?.ScheduledDeliveryProviderUserServiceId);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

louis4li and others added 3 commits September 9, 2026 12:24
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant