* Components: improved authoring experience + component registration refactor
+ BotComponent base class that acts as the base component definition. New Components implement the Startup() method where they can register services
+ Component registration refactor: resource explorer now receives the list of custom types and converters on construction instead of from a global variable. DialogStateManager now receives the memory scopes and path resolvers from turn state instead of from the global component registrations.
+ Component registration backward compat: introduced component registration bridge generic class that allows any new BotComponent to be exposed through component registration for legacy code
+ Bot components for each of our 1st party components: created new component for Adaptive, QnAMaker, Luis, Orchestrator, Dialogs, Declarative, etc. Also updated their respective component registrations to use the new bridge classes to avoid registration duplication.
* Component registration refactor: add path resolvers and memory scopes to turn state through DI -> AdaptiveDialogBot
* Runtime extensions: remove commented line
* Components: Delete Botcomponent attribute, was not needed
* Component: fix xml comment
* ComponentReigstration refactor: fix tests build
* Adaptive bot component: add DialogSetconverter
* Runtime: move to ConfigurationResourceExplorer, adjust tests
* Runtime: remove unused variable
* Components: REname 'plugins' setting to 'components'
* Runtime: Delete component registrations
* Components: Add CommandActivity related declarative type registrations
* Teams + Adaptive: Make teams a component
* Component: Rename BotComponent.Startup() -> BotComponent.ConfigureServices()
* Runtime: Remove teams from built-in components
* Component: remove component registration unused classes in runtime tests
* Remove property GeneratePackageOnBuild from the projects
* Revert "Remove property GeneratePackageOnBuild from the projects"
This reverts commit ee14394ea1.
* Use $(GeneratePackages) to set value for GeneratePackageOnBuild property in projects
* Add a Clean target for outputpackages directory.
* Move GeneratePackageOnBuild property from 31 projects to Directory.Build.props in libraries folder
This props file also enfoces warnings as errors.
Left a bunch of excludes in the Streaming project, we can remove that once we merge the outstanting PR.
* add uischema to editor settings
* port ui schema from composer
* add new line at EOF
* update OnCancelDialog
* remove extraneous properties
* remove empty ui schemas
* include uischemas in csproj references
Applied Dispose pattern to some classes.
Excluded some CA2000 errors (related to ownership transfer)
Added comment for TaskDelay code in ResourceExplorer.
* Added FxCop to Microsoft.BotBuilder and addressed errors.
Enabled the SX1309 (FieldNamesShouldBeginWithUnderscores) stylecop rule and addressed the violations on BotBuilder but excluded it from the other projects for now to avoid collisions.
Enabled CA1309 (Use ordinal StringComparison) to the main ruleset and addressed violations.
Added ($NoWarn) to root dir props to make sure tests take this value.
* Enabled AsyncUsage analyzer and fixed violations wherever ir was possible.
* Refactore Task.Run usages to await/async equivalents.
* Updated Adapters folder to use FxCop 3.0
* Refactored ShowTypingMiddleware to avoid using Task.Run so we don't create unnecessary threads.
* Updated constructor to use _httpClient field instead of the expression.
* Configured TreatWarningsAsErrors on all projects in the libraries folder except for Microsoft.Bot.Builder.Dialogs.Adaptive.Testing (that needs to be addressed separatelly).
Created Directory.Build.props for FunctionalTests and Tests to manage excludes for the projects in those folders.
Added NoWarn properties for documentation on each project (these will be addressed by another issue).
Fixed long hanging fruit warnings.
Added Roslyn FxCop analyzer to Microsoft.Bot.Schema and fixed violation or excluded them using #pragma.
* Fixed binary compat issues
* Fixed more binary compat issues
Worse, nuget.client had a bad prerelase package pushed in 2017 that breaks install adaptive into linqpad.
also fixed .dialog files which were not compliant to schema (missing actions node)
* [Expression] Add formatNumber, formatEpoch and formatTicks as prebuilt functions (#3876) (#3883)
* add formatNumber prebuilt function
* change to string output to keep tailing zeors
* Add formatEpoch and formatTicks.
Removed ticks from formatDate and fixed some bugs.
Fixed a bug in JSON conversion where 64 bit/double values were getting truncated.
* Add tests that were dropped.
* Add locale to formatNumber.
* Add 1000's seperators.
* fix a test case
* change a test case
Co-authored-by: Chris McConnell <chrimc@microsoft.com>
Co-authored-by: Chris McConnell <chrimc@microsoft.com>
* override OnComputeId in AdaptiveSkillDialog (#3882)
* override OnComputeId in AdaptiveSkillDialog
* refactor AdaptiveSkillDialog.OnComputeId()
* remove superfluous parenthesis around activity
* apply @stevenic's PR feedback
* Rename $kind Microsoft.SkillDialog => Microsoft.BeginSkillDialog
Rename class AdaptiveSkillDialog => BeginSkillDialog
Move files into actions folders
replace all $kind => new $kind
* Style: Async method nomenclature, missing ConfigureAwait and CancellationTokens
* Rename $kind Microsoft.BeginSkillDialog => Microsoft.BeginSkill
Rename class BeginSkillDialog to BeginSkill
* update title for begin skill
* Cancellation, nomenclature and style improvements
* Cancellation tokens and propagation
* merge CheckForVersionChangeAsync()
* Missing cancellation tokens
Co-authored-by: Shuai Wang <shuwan@microsoft.com>
Co-authored-by: Chris McConnell <chrimc@microsoft.com>
Co-authored-by: Tom Laird-McConnell <tomlm@microsoft.com>
Co-authored-by: Carlos Castro <ccastro@microsoft.com>
Co-authored-by: Carlos Castro <carlosscastro@users.noreply.github.com>
* Add fallback for stringonly reference binding "foo.xxx" => looks for "foo.xxx.dialog" and if not found attempts to bind to "foo.xxx",
The point of these changes is that it allows new extensions to be added to the resource explorer, and if there are object bindings for those extensions they will be used.
For example, this captures 2 scenarios:
1. "recognizer":"foo.lu" => will bind to lubuild output of "foo.lu.dialog"
2. "schema":"foo.schema" => will attempt to bind to foo.schema.dialog, and then fall back to foo.schema, which is a valid JSON object to bind. (Thus removing the need to have schema file be foo.schema.dialog which is kind of nonsense.
* removed some unused fields,
* cleaned up some nonsense I disovered in .csproj files
* added .qna files to pattern list
* Updated schema.
* Added DynamicList and External entity support to declarative LUIS Recognizer.
Improved MockLuis to pay attention to parameters.
* Update cache files.
* Update LuisRecognizerOptionsV3 to include support for DialogContext.
* ExternalEntity recognizer tests running.
* Move LUIS loader and convert to LUIS library.
* Update TestBot to better handle one dialog.
* Fix TestBot to work more reliably.
* Move expression properties to its own library in order to support using them in LUIS Recognizer without introducing cycles.
* Fix bogus build warnings.
* Connect expresssion to dynamic lists.
* Add LuisAdaptiveRecognizer to wrap LUISRecognizer functionality including expressions. This is also a breaking change because appid, etc. now is expressions.
Fixed bug in ArrayExpressionConverter where other convertes would not be used.
* Add explicit adapter dynamic list to get around serialization/deserialization issues.
Add test that uses expression.
* Update generator unit tests.
* Switch to $role filling in string type.
Get rid of lg and memorypath roles.
* Update tests to run without a secret when LUIS results are cached.
* Add back in extension method.
* Remove LuisRecognizer from Recognizer since LuisAdaptiveRecognizer handles the mismatch.
* Remove unneeded dependency.
* Address code review comments.
* regexrecognizer didn't correclty hook up regex capture groups with results of entityRecognizerSet
Also had bugs around mapping from Entity to RecognizerResult format.
* update csproj for local 4.8
* clean up entity recognizers signatures to be virtual and have text recognizer based base class for the text recgonizer classes
* normalize entity properties to be camelcase
* add virtual
Change all preview libraries to use ${PreviewPackageVersion)
Drop -standard.sln, consolidating to one solution
Add Debug-Windows, Release-Windows build configurations (Debug/Release is core libraries)
update all project files to have correct nuget package references
* move language generation assets out of dialog and into languagegeneration libs
* rename LanguageGenerator.Render -> LanguageGenerator.TEmplates
* refactor Type registration out of TypeLoader and into respective dialogs
Dropped WelcomeRule
Added NoneIntentRule
Added BeginDialogRule
Added AdaptiveDialog.AutoEndDialog
Renamed CancelDialog -> CancelAllDialogs
Changed all tests to use EndDialog instead of CancelDialog
Fixed consultation to properly handle CanProcess with NoneIntents
Changed expression combination to use structured Expression objects.
Moved debugger to Dialog library
Added Debugger .NET registrations for executation against instance graph
Changed FileLogger append instead of rewrite file