What's Changed
- fix(runtime): a bot run that reports an error result fails by @alexanderwanyoike in #413
- feat(sdk): write down the bot contract and run its cases in Python by @alexanderwanyoike in #414
- feat(sdk-nodejs): run the bot contract cases in the Node SDK by @alexanderwanyoike in #415
- feat(sdk-rust): the Rust SDK follows the bot contract by @alexanderwanyoike in #416
- feat(sdk-dotnet): run the bot contract cases in the .NET SDK by @alexanderwanyoike in #417
- feat(sdk-scala): run the bot contract cases in the Scala SDK by @alexanderwanyoike in #418
- feat(sdk-haskell): run the bot contract cases in the Haskell SDK by @alexanderwanyoike in #419
- fix(runtime): an error result fails the run for every runtime, with one run summary line by @alexanderwanyoike in #420
- test(runtime): run the bot contract cases end to end through runtime execute by @alexanderwanyoike in #422
- feat(sdk-cpp): the C++ SDK follows the bot contract by @alexanderwanyoike in #421
- ci(sdk): publish every SDK on release tags by @alexanderwanyoike in #423
- chore(sdk): bump every SDK to 0.4 by @alexanderwanyoike in #424
- docs: pin the Python and Node.js quick starts to SDK 0.4 by @alexanderwanyoike in #425
- fix(ci): read the Scala SDK coordinates without sbt's trailing ANSI code by @alexanderwanyoike in #426
- Release v1.18.0 by @alexanderwanyoike in #427
Full Changelog: v1.17.0...v1.18.0