Skip to content

Added event nodes.#37

Merged
lextatic merged 7 commits into
mainfrom
feature/event-nodes
Jun 21, 2026
Merged

Added event nodes.#37
lextatic merged 7 commits into
mainfrom
feature/event-nodes

Conversation

@lextatic

Copy link
Copy Markdown
Contributor

Added

  • Added RaiseEventNode for raising events.
  • Added EventListenerNode for listening to events..
  • Added EventPayloadResolvers for handling custom event payloads.

@lextatic lextatic added the added New features label Jun 21, 2026
@lextatic lextatic requested a review from Copilot June 21, 2026 02:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR introduces event support to Statescript graphs by adding a raise-event action node, an event-listener state node, and a provider-based system for authoring/decomposing typed event payloads, alongside an update to the event bus semantics so generic raises also reach non-generic subscribers (with boxed payloads).

Changes:

  • Added RaiseEventNode and EventListenerNode with optional typed payload support via new event-payload resolvers/providers.
  • Added IEventPayloadProvider + EventPayloadProvider<TPayload> and supporting input/output binding helpers for payload IO.
  • Updated EventManager so generic raises also invoke non-generic handlers (boxing only when needed), plus docs/tests updates and provider namespace consolidation.

Reviewed changes

Copilot reviewed 47 out of 47 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
Forge/Statescript/Providers/IEventPayloadProvider.cs New interface for building/decomposing typed event payloads and routing typed subscribe/raise.
Forge/Statescript/Providers/IEffectContextDataProvider.cs Moved provider interface into .Providers namespace.
Forge/Statescript/Providers/ICueCustomParametersProvider.cs Moved provider interface into .Providers namespace.
Forge/Statescript/Providers/EventPayloadProvider.cs Base class implementing typed payload provider with non-boxing typed subscribe/raise.
Forge/Statescript/Providers/EventPayloadOutputs.cs Helper to write provider outputs into bound graph/shared variables.
Forge/Statescript/Providers/EventPayloadOutput.cs Declares a provider output (name + value type).
Forge/Statescript/Providers/EventPayloadInputs.cs Helper to lazily resolve authored input values for payload creation.
Forge/Statescript/Providers/EventPayloadInput.cs Declares a provider input (name + expected type).
Forge/Statescript/Providers/EventOutputBinding.cs Binds a provider output name to a graph/shared variable.
Forge/Statescript/Providers/EffectContextDataProvider.cs Namespace update to .Providers.
Forge/Statescript/Providers/EffectContextDataInputs.cs Namespace update to .Providers.
Forge/Statescript/Providers/EffectContextDataInput.cs Namespace update to .Providers.
Forge/Statescript/Providers/CueCustomParametersProvider.cs Namespace update to .Providers.
Forge/Statescript/Providers/CueCustomParameterInputs.cs Namespace update to .Providers.
Forge/Statescript/Providers/CueCustomParameterInput.cs Namespace update to .Providers.
Forge/Statescript/Properties/EventPayloadWriter.cs New runtime helper that subscribes/writes payload outputs via a provider.
Forge/Statescript/Properties/EventPayloadResolver.cs New resolver producing an EventPayloadRaiser for RaiseEventNode.
Forge/Statescript/Properties/EventPayloadRaiser.cs New helper that builds provider payload and raises typed events.
Forge/Statescript/Properties/EventPayloadOutputResolver.cs New resolver producing an EventPayloadWriter for EventListenerNode.
Forge/Statescript/Properties/EffectContextDataResolver.cs Updated imports for provider namespace move.
Forge/Statescript/Properties/CueCustomParametersResolver.cs Updated imports for provider namespace move.
Forge/Statescript/Nodes/State/EventListenerNodeContext.cs New node context to track subscriptions + payload writer.
Forge/Statescript/Nodes/State/EventListenerNode.cs New state node to subscribe to events and emit OnEvent.
Forge/Statescript/Nodes/State/EffectNode.cs Doc ref updated for provider namespace change.
Forge/Statescript/Nodes/Action/RaiseEventNode.cs New action node to raise events on one/many targets with optional typed payload.
Forge/Statescript/Nodes/Action/ApplyEffectNode.cs Doc ref updated for provider namespace change.
Forge/Events/EventManager.cs Generic raises now also invoke non-generic handlers with boxed payload (when any exist).
Forge.Tests/Statescript/Resolvers/EventPayloadResolverTests.cs Tests for raise-side payload resolver/raiser behavior.
Forge.Tests/Statescript/Resolvers/EventPayloadOutputResolverTests.cs Tests for listener-side payload output writer behavior.
Forge.Tests/Statescript/Resolvers/EffectContextDataResolverTests.cs Updated imports for provider namespace move.
Forge.Tests/Statescript/Resolvers/CueCustomParametersResolverTests.cs Updated imports for provider namespace move.
Forge.Tests/Statescript/Nodes/State/EventListenerNodeTests.cs Tests for event listener behavior (built-ins, payload, unsubscribe, catch-all).
Forge.Tests/Statescript/Nodes/State/EffectNodeTests.cs Updated imports for provider namespace move.
Forge.Tests/Statescript/Nodes/Action/RaiseEventNodeTests.cs Tests for raise node behavior (fields, multi-tags, multi-targets, typed payload).
Forge.Tests/Statescript/Nodes/Action/ApplyEffectNodeTests.cs Updated imports for provider namespace move.
Forge.Tests/Helpers/TestEventPayloadProvider.cs Test provider implementing bidirectional payload build/decompose.
Forge.Tests/Helpers/TestEventPayload.cs Test payload type for event-node tests.
Forge.Tests/Helpers/TestCueCustomParametersProvider.cs Updated imports for provider namespace move.
Forge.Tests/Helpers/StatescriptTestHelpers.cs Added helpers to build/bind the new event nodes in tests.
Forge.Tests/Events/EventTests.cs Updated event semantics test for generic raise forwarding to non-generic handlers.
docs/statescript/resolvers/README.md Added documentation index entries for event payload resolvers.
docs/statescript/resolvers/event-payload-resolver.md New documentation for event payload resolvers and provider usage.
docs/statescript/nodes/state/README.md Added EventListenerNode to state node index.
docs/statescript/nodes/state/event-listener-node.md New documentation page for EventListenerNode.
docs/statescript/nodes/action/README.md Added RaiseEventNode to action node index.
docs/statescript/nodes/action/raise-event-node.md New documentation page for RaiseEventNode.
docs/events.md Updated documentation to reflect generic-to-non-generic forwarding semantics.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Forge/Statescript/Nodes/Action/RaiseEventNode.cs Outdated
Comment thread Forge/Statescript/Properties/EventPayloadWriter.cs
Comment thread Forge/Statescript/Providers/EventPayloadOutputs.cs
@lextatic lextatic merged commit 22853f6 into main Jun 21, 2026
1 check passed
@lextatic lextatic deleted the feature/event-nodes branch June 21, 2026 17:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

added New features

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants