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

.Net: Feat: adds support for Microsoft Manifest in dotnet and other fixes. #9436

Open
wants to merge 59 commits into
base: main
Choose a base branch
from

Conversation

baywet
Copy link
Member

@baywet baywet commented Oct 25, 2024

fixes #6614

Motivation and Context

  • Adds support for Microsoft Plugins Manifest to semantic kernel in dotnet.
  • Fixes performance bottleneck for API Manifest loading.
  • Fixes broken integration tests for API manifest loading.
  • Adds an OpenAPI operation id normalization visitor to replace . by _ so function names are valid.
  • Fixes performance bottleneck in OpenAPI operation loading.
  • Fixes experimental ID for API manifest from SKEXP0043 to SKEXP0040 after the renumbering
  • Upgrades OAI.net and ApiManifest references.

Description

Contribution Checklist

On the unit tests: I'd like guidance on where to add unit tests for:

  • API Manifest loading (wasn't done at the time)
  • Microsoft Manifest loading.
  • Operation Id Normalization Visitor

Why so many files?

  • ./kiota: all generated files, it contains kiota workspace configuration, which comes with copies of the OAS descriptions, etc… You don’t need to review it manually. It is useful because it allows us to automatically generate/refresh the integration tests plugins. If you feel like it's adding too much noise, we can remove those, we'll loose the ability to refresh the plugins definitions. https://aka.ms/kiota
  • Samples/concepts: restored the api manifest for astronomy API to fix the API manifest integration test. Added sample Microsoft Manifest for the new integration tests. Those are automatically generated via kiota and can be automatically refreshed later.
  • Src/Functions: Microsoft manifests implementation, API manifest fixes.

How to run the local tests

Create the following JSON file D:\github\semantic-kernel\dotnet\samples\Concepts\bin\Debug\net8.0\appsettings.Development.json (for some reason given how the project is setup this file is not being copied automatically. I didn't to touch any of the project setup out of fear of breaking other things)

{
  "MSGraph": {
    "ClientId": "clientId",
    "TenantId": "tenantId",
    "Scopes": [
      "Calendars.Read",
      "Contacts.Read",
      "Files.Read.All",
      "Mail.Read",
      "User.Read"
    ],
    "RedirectUri": "http://localhost"
  }
}

Replace the clientId and TenantId by your own value.
To create the application registration, go to https://aad.portal.azure.com, create a new application registration, new public client (add the redirect URI). In API access, add the listed Microsoft Graph delegated scopes. Grant consent after adding the scopes. During the first run, your browser will open to get the token.

File paths and copies

Like for the development settings, the project is NOT copying the sample plugin files for some reason. This is why the loading of the files in the integration tests looks at source files directly with ../../../ path segments. Happy to review that upon guidance.

License for Astrology plugins

The description is under the Apache license. I added the plugin (API and Microsoft) to restore the integration test for the former and mirror the setup to the latter. In the case of API plugins, we're only referring to it, so having a plugin is fine. In case of the Microsoft plugin, we have a full copy under the kiota configuration directory, and a sliced down version (derived work) in the example plugin. The value of this API is that it allows us to test scenarios outside of Microsoft Graph. But if the license is a challenge, we can remove those before merging. @RogerBarreto to provide more context on why those were deleted at the first place in #6005

Why so many commits?

Incremental work during the implementation, plus regular merges from main to make sure everything was current and we wouldn't end up with conflicts, etc... Happy to rebase and squash once the initial reviews are through.

zengin and others added 30 commits June 18, 2024 16:10
fix: loading of location OAS descriptions for Microsoft manifests

Signed-off-by: Vincent Biret <[email protected]>
Signed-off-by: Vincent Biret <[email protected]>
Signed-off-by: Vincent Biret <[email protected]>
Signed-off-by: Vincent Biret <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation .NET Issue or Pull requests regarding .NET code openapi Issues related to the OpenAPI function importer
Projects
None yet
Development

Successfully merging this pull request may close these issues.

.Net: Support for Type B plugins
4 participants