Add augmentable activity context #98
Draft
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.
This is a similar draft for being able to create augmentable activity context (See microsoft/teams.ts#288). Here is how it actually looks like in practice:
What this means is that we can build plugins like a GraphPlugin which will then give us access to graph_ctx.user_graph, for example. And it gives plugins additonal flexibility to add custom things to the activity context as desired.
In typescript, the nice thing is that we can just do activityContext.bar, and it'll be correctly inferred. But python's type system is not nearly as powerful as typescript, so we have to explicitly ask ActivityContext the type for the plugin (hence
foo_ctx = ctx.get_plugin_context(FooPlugin)
) so we get the right types.