Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Turn State Infrastructure #232

Merged
merged 19 commits into from
Jul 11, 2023
Merged

Turn State Infrastructure #232

merged 19 commits into from
Jul 11, 2023

Conversation

singhk97
Copy link
Collaborator

@singhk97 singhk97 commented Jul 10, 2023

Added support for the turn state. resolves #209

Additions

  • Turn State
  • Turn State Manager
  • Conversation history
  • Integration of Turn State with AI, Application, OpenAIPlanner classes

Missing that will come in subsequent PRs:

  • Application unit tests
  • AI class unit tests

A few major differences between this and the JS SDK:

  • Dropped Default from DefaultTurnState to get TurnState. Not sure why Default was there in the first place, I presume it's to signal to the user that this component is configurable. We do that implictly in C# with interfaces (ex. ITurnStateManager) and unsealed class (ex. TurnState).
  • Application class now has two generic parameters, TState and TTurnStateManager. This was to solve the problem that there is virtually no covariance in C# generic types (i.e ITurnStateManager<TurnState> var = TurnStateManager<ChildTurnState> throws compiler errors, even though ChildTurnState extends TurnState).

@singhk97 singhk97 requested a review from swatDong July 10, 2023 18:00
@singhk97 singhk97 changed the title WIP: Turn State Infrastructure Turn State Infrastructure Jul 10, 2023
@singhk97 singhk97 requested a review from vule-msft July 10, 2023 18:01
@singhk97 singhk97 linked an issue Jul 10, 2023 that may be closed by this pull request
@singhk97 singhk97 requested a review from kuojianlu July 11, 2023 00:15
Copy link
Contributor

@swatDong swatDong left a comment

Choose a reason for hiding this comment

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

Left comment on tempState but not block.

@corinagum corinagum merged commit ef713b6 into DOTNET Jul 11, 2023
3 checks passed
@corinagum corinagum deleted the kavin/dotnet/turnstate branch July 11, 2023 23:46
swatDong added a commit that referenced this pull request Jul 12, 2023
Refactor action handling system to support dynamic action import with
necessary parameters, resolves
#212
- Action method can use parameter attributes `ActionTurnContext`,
`ActionTurnState`, `ActionEntities`, `ActionName` to get inputs.
- Support `void` / `bool` / `Task` / `Task<bool>` / `ValueTask` /
`ValueTask<bool>` return types.
- Have runtime type checker.

For example,
``` csharp
        [Action("action1")]
        public void MyAction(
            [ActionTurnContext] ITurnContext context,
            [ActionTurnState] TState state,
            [ActionEntities] MyDataType entities,
            [ActionName] string actionName) { ... }
```

This PR may have conflict with the turn state one. I'll merge and
resolve conflicts after #232
merged.
For code analyzer, created
#237 to track to not block
the action system itself or sample work.
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.

[C# Port] TurnState Infrastructure
5 participants