@aifabrix/builder 2.53.0 → 2.54.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/aifabrix.js +2 -2
- package/lib/api/assistants.api.js +8 -5
- package/lib/api/channel-identity.api.js +41 -0
- package/lib/api/evidence-authoring.api.js +5 -1
- package/lib/api/evidence.api.js +2 -0
- package/lib/api/types/evidence.types.js +2 -0
- package/lib/api/work-search.api.js +136 -0
- package/lib/channels/add-channel.js +163 -126
- package/lib/channels/approval-guides/chatgpt.js +14 -18
- package/lib/channels/approval-guides/claude.js +29 -0
- package/lib/channels/approval-guides/index.js +88 -22
- package/lib/channels/approval-guides/mcp-client.js +27 -0
- package/lib/channels/approval-guides/microsoft-copilot.js +52 -3
- package/lib/channels/approval-guides/slack.js +10 -10
- package/lib/channels/approval-guides/teams-bot.js +8 -12
- package/lib/channels/channel-add-continuations.js +91 -0
- package/lib/channels/channel-add-ensure.js +124 -27
- package/lib/channels/channel-add-existing.js +160 -28
- package/lib/channels/channel-add-failure.js +60 -0
- package/lib/channels/channel-add-remaining.js +486 -0
- package/lib/channels/channel-add-tty.js +190 -0
- package/lib/channels/channel-add-wizard-config.js +138 -0
- package/lib/channels/channel-add-wizard.js +250 -0
- package/lib/channels/channel-artifact-generator.js +27 -13
- package/lib/channels/channel-cardinality.js +83 -0
- package/lib/channels/channel-catalog-icon.js +45 -0
- package/lib/channels/channel-cli-instructions.js +75 -0
- package/lib/channels/channel-configuration-map.js +213 -0
- package/lib/channels/channel-credential.js +11 -14
- package/lib/channels/channel-definition-project.js +101 -0
- package/lib/channels/channel-definition-registry.js +154 -0
- package/lib/channels/channel-description.js +59 -2
- package/lib/channels/channel-discovery.js +16 -2
- package/lib/channels/channel-external-system.js +86 -9
- package/lib/channels/channel-install-envelope-actions.js +88 -0
- package/lib/channels/channel-install-envelope-microsoft.js +155 -0
- package/lib/channels/channel-install-envelope.js +356 -0
- package/lib/channels/channel-install-help-md.js +172 -0
- package/lib/channels/channel-install-http-payload.js +62 -0
- package/lib/channels/channel-install-inventory.js +115 -0
- package/lib/channels/channel-install-profiles.js +90 -0
- package/lib/channels/channel-instance-collision.js +118 -0
- package/lib/channels/channel-instance-key.js +100 -0
- package/lib/channels/channel-instance-materialize.js +240 -0
- package/lib/channels/channel-integration-generator.js +16 -9
- package/lib/channels/channel-integration-template.js +101 -22
- package/lib/channels/channel-inventory-fetch.js +79 -0
- package/lib/channels/channel-oauth-preflight.js +104 -0
- package/lib/channels/channel-package-version.js +76 -0
- package/lib/channels/channel-predefined-client.js +154 -0
- package/lib/channels/channel-probe.js +7 -2
- package/lib/channels/channel-runtime-resolver.js +180 -72
- package/lib/channels/channel-status-display.js +86 -16
- package/lib/channels/channel-targets.js +106 -92
- package/lib/channels/chatgpt-callback.js +318 -0
- package/lib/channels/chatgpt-channel-add.js +229 -0
- package/lib/channels/chatgpt-preflight.js +396 -0
- package/lib/channels/chatgpt-runtime-contract.js +17 -0
- package/lib/channels/chatgpt-setup-values.js +124 -0
- package/lib/channels/claude-callback.js +67 -0
- package/lib/channels/claude-channel-add.js +254 -0
- package/lib/channels/claude-runtime-contract.js +40 -0
- package/lib/channels/claude-runtime.js +58 -0
- package/lib/channels/claude-setup-values.js +89 -0
- package/lib/channels/mcp-client/config-merge.js +148 -0
- package/lib/channels/mcp-client/ensure-client.js +231 -0
- package/lib/channels/mcp-client/paths.js +53 -0
- package/lib/channels/mcp-client/profiles.js +122 -0
- package/lib/channels/mcp-client/redirect-uris.js +99 -0
- package/lib/channels/mcp-client/runtime.js +59 -0
- package/lib/channels/mcp-client-channel-add.js +186 -0
- package/lib/channels/microsoft-copilot-channel-add.js +117 -7
- package/lib/channels/microsoft-copilot-entra-identifier-uris.js +187 -0
- package/lib/channels/microsoft-copilot-entra-sso-form.js +106 -18
- package/lib/channels/microsoft-copilot-entra-sso.js +31 -2
- package/lib/channels/microsoft-copilot-package-prior.js +107 -0
- package/lib/channels/microsoft-copilot-package.js +29 -28
- package/lib/channels/microsoft-provisioning/a365.js +80 -0
- package/lib/channels/microsoft-provisioning/auth-config.js +240 -0
- package/lib/channels/microsoft-provisioning/auth.js +179 -0
- package/lib/channels/microsoft-provisioning/cli.js +71 -0
- package/lib/channels/microsoft-provisioning/constants.js +75 -0
- package/lib/channels/microsoft-provisioning/errors.js +117 -0
- package/lib/channels/microsoft-provisioning/index.js +55 -0
- package/lib/channels/microsoft-provisioning/install-atk.js +158 -0
- package/lib/channels/microsoft-provisioning/install-teams.js +115 -0
- package/lib/channels/microsoft-provisioning/login-portal-device.js +236 -0
- package/lib/channels/microsoft-provisioning/login-portal-parse.js +71 -0
- package/lib/channels/microsoft-provisioning/login-portal-teams.js +193 -0
- package/lib/channels/microsoft-provisioning/login-portal.js +230 -0
- package/lib/channels/microsoft-provisioning/persist.js +110 -0
- package/lib/channels/microsoft-provisioning/teams-bot-args.js +119 -0
- package/lib/channels/microsoft-provisioning/teams-bot-controller.js +123 -0
- package/lib/channels/microsoft-provisioning/teams-bot-parse.js +134 -0
- package/lib/channels/microsoft-provisioning/teams-bot-persist.js +113 -0
- package/lib/channels/microsoft-provisioning/teams-bot-provision.js +234 -0
- package/lib/channels/microsoft-provisioning/teams-bot-secrets.js +45 -0
- package/lib/channels/microsoft-provisioning/teams-cli.js +82 -0
- package/lib/channels/runtime-tool-catalog.js +5 -2
- package/lib/channels/slack-channel-add-portal.js +130 -0
- package/lib/channels/slack-channel-add-tty-auth.js +95 -0
- package/lib/channels/slack-channel-add.js +258 -0
- package/lib/channels/slack-provisioning/apps.js +181 -0
- package/lib/channels/slack-provisioning/auth-store.js +110 -0
- package/lib/channels/slack-provisioning/auth-ticket.js +185 -0
- package/lib/channels/slack-provisioning/auth.js +115 -0
- package/lib/channels/slack-provisioning/callbacks.js +41 -0
- package/lib/channels/slack-provisioning/cli.js +226 -0
- package/lib/channels/slack-provisioning/constants.js +37 -0
- package/lib/channels/slack-provisioning/credentials.js +169 -0
- package/lib/channels/slack-provisioning/curl-shim.js +132 -0
- package/lib/channels/slack-provisioning/developer-install.js +118 -0
- package/lib/channels/slack-provisioning/env-file.js +120 -0
- package/lib/channels/slack-provisioning/errors.js +47 -0
- package/lib/channels/slack-provisioning/go-ca-bundle.js +137 -0
- package/lib/channels/slack-provisioning/index.js +250 -0
- package/lib/channels/slack-provisioning/install-cli.js +323 -0
- package/lib/channels/slack-provisioning/manifest.js +89 -0
- package/lib/channels/slack-provisioning/oauth-lock.js +33 -0
- package/lib/channels/slack-provisioning/offer-cli.js +113 -0
- package/lib/channels/slack-provisioning/onboard-members.js +122 -0
- package/lib/channels/slack-provisioning/onboard.js +89 -0
- package/lib/channels/slack-provisioning/persist.js +95 -0
- package/lib/channels/slack-provisioning/remaining-urls.js +158 -0
- package/lib/channels/slack-provisioning/with-curl-on-path.js +48 -0
- package/lib/channels/teams-bot-channel-add.js +94 -0
- package/lib/channels/vendor-dataplane-url.js +249 -0
- package/lib/cli/setup-certification.help.js +2 -0
- package/lib/cli/setup-external-system-help.js +2 -0
- package/lib/cli/setup-external-system.js +1 -1
- package/lib/commands/channel-add-help.js +366 -0
- package/lib/commands/channel-add-setup.js +162 -80
- package/lib/commands/channel-configure.js +118 -0
- package/lib/commands/channel.js +10 -1
- package/lib/commands/governance-upload-external.js +6 -3
- package/lib/commands/lifecycle-command-action.js +2 -5
- package/lib/commands/lifecycle-external.js +93 -21
- package/lib/commands/repair-datasource-test-payload.js +4 -2
- package/lib/commands/repair-datasource-webhooks-sync-bridge.js +23 -2
- package/lib/commands/repair-datasource.js +3 -0
- package/lib/commands/repair-external-run.js +59 -25
- package/lib/commands/repair-openapi-rest-runtime.js +127 -0
- package/lib/commands/repair-orchestration-tag-merge.js +339 -0
- package/lib/commands/repair-rbac-catalog-defaults.js +96 -0
- package/lib/commands/repair-rbac-platform-preset.js +26 -15
- package/lib/commands/repair-rbac-reader-roles.js +8 -21
- package/lib/commands/repair-rbac.js +10 -34
- package/lib/commands/repair-system-permissions.js +24 -22
- package/lib/commands/role-assistant-test-output.js +14 -0
- package/lib/commands/role-assistant.js +59 -21
- package/lib/commands/test-e2e-external.js +148 -21
- package/lib/commands/upload-credential-push-log.js +2 -1
- package/lib/commands/upload-publish-context.js +1 -1
- package/lib/commands/upload-role-assistant-shell.js +124 -0
- package/lib/commands/upload-sidecar-followups.js +6 -3
- package/lib/commands/upload.js +18 -3
- package/lib/core/secrets-docker-env.js +4 -1
- package/lib/core/secrets-env-content.js +17 -3
- package/lib/datasource/capability/capability-manifest.js +0 -3
- package/lib/datasource/capability/copy-test-payload.js +3 -0
- package/lib/external-system/deploy-helpers.js +26 -1
- package/lib/external-system/deploy.js +10 -6
- package/lib/external-system/download-helpers.js +29 -2
- package/lib/external-system/download-role-assistant.js +83 -4
- package/lib/external-system/download.js +40 -30
- package/lib/external-system/sync-deploy-manifest.js +3 -2
- package/lib/external-system/upload-identity.js +42 -0
- package/lib/generator/index.js +19 -15
- package/lib/generator/split.js +13 -2
- package/lib/lifecycle/role-assistant-governance.js +146 -0
- package/lib/lifecycle/scenario-upload.js +181 -30
- package/lib/programmatic/builder-api-cors.js +143 -0
- package/lib/programmatic/builder-api-request.js +6 -0
- package/lib/programmatic/builder-api-route-dispatch.js +56 -42
- package/lib/programmatic/builder-api-server.js +8 -1
- package/lib/programmatic/capability-registry.js +54 -0
- package/lib/programmatic/channel-install-help-resolve.js +359 -0
- package/lib/programmatic/channel-install-session.js +218 -0
- package/lib/programmatic/help-content/channel-onboarding.md +2 -0
- package/lib/programmatic/help-content/cip-overview.md +3 -1
- package/lib/programmatic/http-raw-response.js +62 -0
- package/lib/programmatic/openapi-channel-install-bindings.js +179 -0
- package/lib/programmatic/openapi-channel-install-schemas.js +286 -0
- package/lib/programmatic/openapi-component-schemas.js +18 -1
- package/lib/programmatic/openapi-description-enricher.js +3 -1
- package/lib/programmatic/openapi-descriptions.js +74 -3
- package/lib/programmatic/openapi-envelope-examples.js +117 -0
- package/lib/programmatic/openapi-operation-bindings.js +4 -1
- package/lib/programmatic/openapi-schema-descriptions-channel.js +316 -0
- package/lib/programmatic/openapi-spec.js +12 -8
- package/lib/programmatic/platform-rbac-catalog.js +36 -18
- package/lib/programmatic/route-handler-map.js +51 -1
- package/lib/programmatic/route-handlers-context.js +2 -1
- package/lib/programmatic/run-auth-permissions.js +54 -0
- package/lib/programmatic/run-channel-catalog.js +196 -0
- package/lib/programmatic/run-channel-install-artifacts.js +137 -0
- package/lib/programmatic/run-channel-install-copilot.js +353 -0
- package/lib/programmatic/run-channel-install-options.js +232 -0
- package/lib/programmatic/run-channel-install-teams-bot.js +204 -0
- package/lib/programmatic/run-channel-install.js +346 -0
- package/lib/programmatic/run-channel-package.js +87 -7
- package/lib/programmatic/workspace-context.js +2 -0
- package/lib/role-assistant/evidence-sync.js +4 -2
- package/lib/role-assistant/evidence-validation-issues.js +51 -0
- package/lib/role-assistant/knowledge-sync.js +10 -4
- package/lib/role-assistant/settings.js +49 -2
- package/lib/role-assistant/test-cases-evaluate.js +30 -2
- package/lib/role-assistant/test-cases-evidence.js +175 -0
- package/lib/role-assistant/test-cases-search.js +229 -0
- package/lib/role-assistant/test-cases.js +37 -4
- package/lib/role-assistant/test-runner-search.js +149 -0
- package/lib/role-assistant/test-runner-workhub-helpers.js +40 -2
- package/lib/role-assistant/test-runner-workhub-soft.js +9 -3
- package/lib/role-assistant/test-runner-workhub.js +29 -11
- package/lib/role-assistant/test-runner.js +16 -1
- package/lib/schema/external-datasource.schema.json +119 -16
- package/lib/schema/external-system.schema.json +159 -2
- package/lib/schema/mcp-client-profile.schema.json +103 -0
- package/lib/utils/app-path-resolve.js +4 -0
- package/lib/utils/authentication-env-template.js +44 -6
- package/lib/utils/credential-secrets-env.js +6 -1
- package/lib/utils/env-copy.js +19 -7
- package/lib/utils/external-env-template.js +20 -2
- package/lib/utils/paths.js +18 -1
- package/lib/utils/platform-shell-package.js +69 -0
- package/lib/utils/port-resolver.js +50 -1
- package/lib/utils/rewrite-name-flag.js +20 -0
- package/lib/utils/role-assistant-paths.js +13 -10
- package/lib/utils/schema-resolver.js +11 -1
- package/lib/utils/secrets-helpers.js +12 -21
- package/lib/utils/token-manager.js +10 -5
- package/lib/validation/validate.js +40 -0
- package/package.json +1 -1
- package/templates/README.md +1 -1
- package/templates/applications/builder-api/Dockerfile +1 -1
- package/templates/applications/builder-api/env.template +7 -0
- package/templates/applications/dataplane/application.yaml +6 -5
- package/templates/applications/dataplane/env.template +2 -2
- package/templates/applications/dataplane/rbac.yaml +7 -2
- package/templates/applications/keycloak/Dockerfile +30 -4
- package/templates/applications/keycloak/application.yaml +2 -2
- package/templates/applications/keycloak/cimd-lenient-parse/AbstractClientIdMetadataDocumentExecutor.java +896 -0
- package/templates/applications/keycloak/cimd-lenient-parse/SOURCE.md +19 -0
- package/templates/applications/keycloak/env.template +3 -0
- package/templates/applications/miso-controller/application.yaml +1 -2
- package/templates/applications/miso-controller/env.template +2 -0
- package/templates/channels/README.md +5 -5
- package/templates/channels/chatgpt/TROUBLESHOOTING.md +51 -0
- package/templates/channels/chatgpt/channel.json +59 -0
- package/templates/channels/chatgpt/icon.svg +1 -0
- package/templates/channels/chatgpt/install.template.md.hbs +20 -95
- package/templates/channels/chatgpt/integration/README.md +1 -1
- package/templates/channels/chatgpt/integration/application.json +2 -2
- package/templates/channels/chatgpt/integration/chatgpt-system.json +49 -4
- package/templates/channels/chatgpt/integration/env.template +2 -4
- package/templates/channels/chatgpt/integration/rbac.json +13 -0
- package/templates/channels/claude/TROUBLESHOOTING.md +41 -0
- package/templates/channels/claude/channel.json +59 -0
- package/templates/channels/claude/icon.svg +1 -0
- package/templates/channels/claude/install.template.md.hbs +21 -0
- package/templates/channels/claude/integration/README.md +14 -0
- package/templates/channels/claude/integration/application.json +15 -0
- package/templates/channels/claude/integration/claude-system.json +59 -0
- package/templates/channels/claude/integration/env.template +2 -0
- package/templates/channels/claude/integration/rbac.json +13 -0
- package/templates/channels/claude/manifest.template.json.hbs +40 -0
- package/templates/channels/mcp-client/channel.json +72 -0
- package/templates/channels/mcp-client/icon.svg +1 -0
- package/templates/channels/mcp-client/install.template.md.hbs +24 -0
- package/templates/channels/mcp-client/integration/README.md +13 -0
- package/templates/channels/mcp-client/integration/application.json +15 -0
- package/templates/channels/mcp-client/integration/env.template +2 -0
- package/templates/channels/mcp-client/integration/mcp-client-system.json +72 -0
- package/templates/channels/mcp-client/integration/rbac.json +13 -0
- package/templates/channels/mcp-client/manifest.template.json.hbs +41 -0
- package/templates/channels/mcp-client/profiles/cursor.json +26 -0
- package/templates/channels/mcp-client/profiles/github-copilot.json +29 -0
- package/templates/channels/mcp-client/profiles/vscode.json +29 -0
- package/templates/channels/microsoft-copilot/channel.json +73 -0
- package/templates/channels/microsoft-copilot/declarative-agent.template.json.hbs +8 -4
- package/templates/channels/microsoft-copilot/entra-sso-registration.template.md.hbs +65 -5
- package/templates/channels/microsoft-copilot/icon.svg +1 -0
- package/templates/channels/microsoft-copilot/install.template.md.hbs +9 -9
- package/templates/channels/microsoft-copilot/integration/README.md +1 -1
- package/templates/channels/microsoft-copilot/integration/application.json +2 -2
- package/templates/channels/microsoft-copilot/integration/env.template +3 -6
- package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +63 -4
- package/templates/channels/microsoft-copilot/integration/rbac.json +13 -0
- package/templates/channels/microsoft-copilot/oauth-plugin-vault-required.template.md.hbs +5 -5
- package/templates/channels/slack/channel.json +223 -0
- package/templates/channels/slack/icon.svg +1 -0
- package/templates/channels/slack/install.template.md.hbs +36 -28
- package/templates/channels/slack/integration/README.md +245 -22
- package/templates/channels/slack/integration/application.json +44 -7
- package/templates/channels/slack/integration/env.template +15 -6
- package/templates/channels/slack/integration/openapi/openapi.json +126 -0
- package/templates/channels/slack/integration/rbac.json +84 -0
- package/templates/channels/slack/integration/slack-datasource-commands.json +154 -0
- package/templates/channels/slack/integration/slack-datasource-conversations.json +28 -3
- package/templates/channels/slack/integration/slack-datasource-events.json +154 -0
- package/templates/channels/slack/integration/slack-datasource-interactive.json +154 -0
- package/templates/channels/slack/integration/slack-datasource-messages.json +40 -2
- package/templates/channels/slack/integration/slack-system.json +155 -77
- package/templates/channels/slack/manifest.template.json.hbs +5 -2
- package/templates/channels/teams-bot/channel.json +161 -0
- package/templates/channels/teams-bot/icon.svg +1 -0
- package/templates/channels/teams-bot/install.template.md.hbs +12 -13
- package/templates/channels/teams-bot/integration/README.md +5 -4
- package/templates/channels/teams-bot/integration/application.json +6 -4
- package/templates/channels/teams-bot/integration/env.template +5 -4
- package/templates/channels/teams-bot/integration/openapi/openapi.json +68 -0
- package/templates/channels/teams-bot/integration/rbac.json +21 -0
- package/templates/channels/teams-bot/integration/teams-bot-datasource-activities.json +154 -0
- package/templates/channels/teams-bot/integration/teams-bot-system.json +128 -23
- package/templates/channels/web-embed/channel.json +60 -0
- package/templates/channels/web-embed/install.template.md.hbs +1 -1
- package/templates/channels/web-embed/integration/README.md +2 -2
- package/templates/channels/web-embed/integration/application.json +2 -2
- package/templates/channels/web-embed/integration/env.template +1 -1
- package/templates/channels/web-embed/integration/rbac.json +13 -0
- package/templates/channels/web-embed/integration/web-embed-system.json +50 -4
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"roles": [
|
|
3
|
+
{
|
|
4
|
+
"name": "Everyone",
|
|
5
|
+
"value": "aifabrix-everyone",
|
|
6
|
+
"description": "Authenticated-user consume access for Enterprise LLM and platform search (not a Role Assistant)",
|
|
7
|
+
"groups": [
|
|
8
|
+
"AI-Fabrix-Everyone"
|
|
9
|
+
]
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"permissions": []
|
|
13
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"channelTarget": "{{channelTarget}}",
|
|
3
|
+
"name": "{{appName}}",
|
|
4
|
+
"baseName": "{{baseName}}",
|
|
5
|
+
"description": "{{appDescription}}",
|
|
6
|
+
"environment": "{{environment}}",
|
|
7
|
+
"runtime": {
|
|
8
|
+
"runtimeSystemKey": "{{runtimeSystemKey}}",
|
|
9
|
+
"remoteMcpUrl": "{{{mcpUrl}}}",
|
|
10
|
+
"transport": "{{runtimeTransport}}",
|
|
11
|
+
"assistantCatalogUrl": "{{{assistantCatalogUrl}}}",
|
|
12
|
+
"roleAssistantResolution": "dynamic-runtime",
|
|
13
|
+
"layerBToolNames": [
|
|
14
|
+
{{#each layerBToolNames}}
|
|
15
|
+
"{{this}}"{{#unless @last}},{{/unless}}
|
|
16
|
+
{{/each}}
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"authentication": {
|
|
20
|
+
"mode": "{{runtimeAuthMode}}",
|
|
21
|
+
"credentialKey": "{{credentialKey}}",
|
|
22
|
+
"credentialPortalUrl": "{{{credentialPortalUrl}}}",
|
|
23
|
+
"scopes": {{{scopesJson}}}
|
|
24
|
+
},
|
|
25
|
+
"boundaries": {
|
|
26
|
+
"oneConnectionSupportsManyRoleAssistants": true,
|
|
27
|
+
"topLevelEvidenceToolsExposed": false,
|
|
28
|
+
"runtimeOwnsWorkInterface": true,
|
|
29
|
+
"evidenceCapabilityPath": "Claude -> runtime-orchestration -> Business Transformation Assistant -> internal evidence capabilities"
|
|
30
|
+
},
|
|
31
|
+
"lifecycle": {
|
|
32
|
+
"locallyValidated": true,
|
|
33
|
+
"runtimeValidated": false,
|
|
34
|
+
"requiresClaudeWorkspaceAdmin": true
|
|
35
|
+
},
|
|
36
|
+
"artifact": {
|
|
37
|
+
"format": "claude-custom-connector",
|
|
38
|
+
"version": "1.0.0"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "mcp-client",
|
|
3
|
+
"displayName": "MCP client",
|
|
4
|
+
"description": "Connect a developer MCP client such as Cursor, VS Code, or GitHub Copilot.",
|
|
5
|
+
"type": "custom",
|
|
6
|
+
"systemKind": "communication",
|
|
7
|
+
"enabled": true,
|
|
8
|
+
"authentication": {
|
|
9
|
+
"authType": "system"
|
|
10
|
+
},
|
|
11
|
+
"configuration": [
|
|
12
|
+
{
|
|
13
|
+
"name": "CHANNEL_APP_DESCRIPTION",
|
|
14
|
+
"value": "Enterprise AI assistant for employees. Approved assistants, enterprise knowledge, workflows, and governed actions via AI Fabrix.",
|
|
15
|
+
"location": "variable",
|
|
16
|
+
"required": false,
|
|
17
|
+
"portalInput": {
|
|
18
|
+
"field": "textarea",
|
|
19
|
+
"label": "Description",
|
|
20
|
+
"placeholder": "Shown to people who connect this app",
|
|
21
|
+
"validation": {
|
|
22
|
+
"maxLength": 4000
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"dataSources": [],
|
|
28
|
+
"endpointsActive": false,
|
|
29
|
+
"channel": {
|
|
30
|
+
"definitionKey": "mcp-client",
|
|
31
|
+
"provisioning": {
|
|
32
|
+
"mode": "automatic"
|
|
33
|
+
},
|
|
34
|
+
"runtimeTarget": {
|
|
35
|
+
"defaultSystemKey": "runtime-orchestration",
|
|
36
|
+
"configurable": true
|
|
37
|
+
},
|
|
38
|
+
"experimental": false,
|
|
39
|
+
"profiles": [
|
|
40
|
+
{
|
|
41
|
+
"key": "cursor",
|
|
42
|
+
"displayLabel": "Cursor"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"key": "vscode",
|
|
46
|
+
"displayLabel": "VS Code"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"key": "github-copilot",
|
|
50
|
+
"displayLabel": "GitHub Copilot"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"packaging": {
|
|
54
|
+
"channelType": "mcpClient",
|
|
55
|
+
"templateDir": "mcp-client",
|
|
56
|
+
"artifactFileName": "channel-mcp-client.json",
|
|
57
|
+
"artifactFormat": "json",
|
|
58
|
+
"credentialKey": "mcp-client-channel",
|
|
59
|
+
"capabilities": [
|
|
60
|
+
"chat",
|
|
61
|
+
"enterpriseActions"
|
|
62
|
+
],
|
|
63
|
+
"displayLabel": "MCP client",
|
|
64
|
+
"category": "developer",
|
|
65
|
+
"wizardOrder": 35,
|
|
66
|
+
"remainingManualStep": "Reload the editor to pick up the MCP connection.",
|
|
67
|
+
"docsAnchor": "mcp-client",
|
|
68
|
+
"approvalRequired": false,
|
|
69
|
+
"vendorAuthRequired": true
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Model Context Protocol</title><path d="M13.85 0a4.16 4.16 0 0 0-2.95 1.217L1.456 10.66a.835.835 0 0 0 0 1.18.835.835 0 0 0 1.18 0l9.442-9.442a2.49 2.49 0 0 1 3.541 0 2.49 2.49 0 0 1 0 3.541L8.59 12.97l-.1.1a.835.835 0 0 0 0 1.18.835.835 0 0 0 1.18 0l.1-.098 7.03-7.034a2.49 2.49 0 0 1 3.542 0l.049.05a2.49 2.49 0 0 1 0 3.54l-8.54 8.54a1.96 1.96 0 0 0 0 2.755l1.753 1.753a.835.835 0 0 0 1.18 0 .835.835 0 0 0 0-1.18l-1.753-1.753a.266.266 0 0 1 0-.394l8.54-8.54a4.185 4.185 0 0 0 0-5.9l-.05-.05a4.16 4.16 0 0 0-2.95-1.218c-.2 0-.401.02-.6.048a4.17 4.17 0 0 0-1.17-3.552A4.16 4.16 0 0 0 13.85 0m0 3.333a.84.84 0 0 0-.59.245L6.275 10.56a4.186 4.186 0 0 0 0 5.902 4.186 4.186 0 0 0 5.902 0L19.16 9.48a.835.835 0 0 0 0-1.18.835.835 0 0 0-1.18 0l-6.985 6.984a2.49 2.49 0 0 1-3.54 0 2.49 2.49 0 0 1 0-3.54l6.983-6.985a.835.835 0 0 0 0-1.18.84.84 0 0 0-.59-.245"/></svg>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# {{baseName}} — {{mcpClientDisplayName}}
|
|
2
|
+
|
|
3
|
+
Status: {{#if installReady}}Ready{{else}}Not ready{{/if}}
|
|
4
|
+
{{#unless installReady}}
|
|
5
|
+
Reason: {{discoveryBlockerLabel}}
|
|
6
|
+
|
|
7
|
+
Fix the Runtime connection, then run:
|
|
8
|
+
|
|
9
|
+
aifabrix channel add mcp-client --target {{mcpClientProfileKey}} --name "{{baseName}}"
|
|
10
|
+
{{/unless}}
|
|
11
|
+
|
|
12
|
+
When ready:
|
|
13
|
+
|
|
14
|
+
1. Confirm the editor MCP config includes the AI Fabrix server URL:
|
|
15
|
+
{{{mcpUrl}}}
|
|
16
|
+
|
|
17
|
+
2. Authentication is OAuth with client id `{{oauth2ProfileId}}`.
|
|
18
|
+
Do not paste an API key.
|
|
19
|
+
|
|
20
|
+
3. Reload the editor.
|
|
21
|
+
|
|
22
|
+
4. Sign in with your user account when the editor starts OAuth.
|
|
23
|
+
|
|
24
|
+
AI Fabrix validates Runtime and OAuth automatically. Remaining step: Reload the editor.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# MCP client
|
|
2
|
+
|
|
3
|
+
Generated by `aifabrix channel scaffold mcp-client`.
|
|
4
|
+
|
|
5
|
+
Recommended flow:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
aifabrix channel add mcp-client --target cursor --name "Your Assistant" --probe
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
`channel add` scaffolds (if needed), uploads when missing (always with `--force`), then
|
|
12
|
+
ensures the Integration Client and merges the Runtime MCP URL into the editor MCP config.
|
|
13
|
+
Reload the editor and complete user OAuth there. Do not paste a static API key.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"app": {
|
|
3
|
+
"key": "mcp-client",
|
|
4
|
+
"displayName": "MCP client",
|
|
5
|
+
"description": "Connect a developer MCP client such as Cursor, VS Code, or GitHub Copilot.",
|
|
6
|
+
"type": "external"
|
|
7
|
+
},
|
|
8
|
+
"externalIntegration": {
|
|
9
|
+
"schemaBasePath": "./",
|
|
10
|
+
"systems": ["mcp-client-system.json"],
|
|
11
|
+
"dataSources": [],
|
|
12
|
+
"autopublish": true,
|
|
13
|
+
"version": "1.0.0"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "mcp-client",
|
|
3
|
+
"displayName": "MCP client",
|
|
4
|
+
"description": "Connect a developer MCP client such as Cursor, VS Code, or GitHub Copilot.",
|
|
5
|
+
"type": "custom",
|
|
6
|
+
"systemKind": "communication",
|
|
7
|
+
"enabled": true,
|
|
8
|
+
"authentication": {
|
|
9
|
+
"authType": "system"
|
|
10
|
+
},
|
|
11
|
+
"configuration": [
|
|
12
|
+
{
|
|
13
|
+
"name": "CHANNEL_APP_DESCRIPTION",
|
|
14
|
+
"value": "Enterprise AI assistant for employees. Approved assistants, enterprise knowledge, workflows, and governed actions via AI Fabrix.",
|
|
15
|
+
"location": "variable",
|
|
16
|
+
"required": false,
|
|
17
|
+
"portalInput": {
|
|
18
|
+
"field": "textarea",
|
|
19
|
+
"label": "Description",
|
|
20
|
+
"placeholder": "Shown to people who connect this app",
|
|
21
|
+
"validation": {
|
|
22
|
+
"maxLength": 4000
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"dataSources": [],
|
|
28
|
+
"endpointsActive": false,
|
|
29
|
+
"channel": {
|
|
30
|
+
"definitionKey": "mcp-client",
|
|
31
|
+
"provisioning": {
|
|
32
|
+
"mode": "automatic"
|
|
33
|
+
},
|
|
34
|
+
"runtimeTarget": {
|
|
35
|
+
"defaultSystemKey": "runtime-orchestration",
|
|
36
|
+
"configurable": true
|
|
37
|
+
},
|
|
38
|
+
"experimental": false,
|
|
39
|
+
"profiles": [
|
|
40
|
+
{
|
|
41
|
+
"key": "cursor",
|
|
42
|
+
"displayLabel": "Cursor"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"key": "vscode",
|
|
46
|
+
"displayLabel": "VS Code"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"key": "github-copilot",
|
|
50
|
+
"displayLabel": "GitHub Copilot"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"packaging": {
|
|
54
|
+
"channelType": "mcpClient",
|
|
55
|
+
"templateDir": "mcp-client",
|
|
56
|
+
"artifactFileName": "channel-mcp-client.json",
|
|
57
|
+
"artifactFormat": "json",
|
|
58
|
+
"credentialKey": "mcp-client-channel",
|
|
59
|
+
"capabilities": [
|
|
60
|
+
"chat",
|
|
61
|
+
"enterpriseActions"
|
|
62
|
+
],
|
|
63
|
+
"displayLabel": "MCP client",
|
|
64
|
+
"category": "developer",
|
|
65
|
+
"wizardOrder": 35,
|
|
66
|
+
"remainingManualStep": "Reload the editor to pick up the MCP connection.",
|
|
67
|
+
"docsAnchor": "mcp-client",
|
|
68
|
+
"approvalRequired": false,
|
|
69
|
+
"vendorAuthRequired": true
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"roles": [
|
|
3
|
+
{
|
|
4
|
+
"name": "Everyone",
|
|
5
|
+
"value": "aifabrix-everyone",
|
|
6
|
+
"description": "Authenticated-user consume access for Enterprise LLM and platform search (not a Role Assistant)",
|
|
7
|
+
"groups": [
|
|
8
|
+
"AI-Fabrix-Everyone"
|
|
9
|
+
]
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"permissions": []
|
|
13
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"channelTarget": "{{channelTarget}}",
|
|
3
|
+
"profile": "{{mcpClientProfileKey}}",
|
|
4
|
+
"name": "{{appName}}",
|
|
5
|
+
"baseName": "{{baseName}}",
|
|
6
|
+
"description": "{{appDescription}}",
|
|
7
|
+
"environment": "{{environment}}",
|
|
8
|
+
"runtime": {
|
|
9
|
+
"runtimeSystemKey": "{{runtimeSystemKey}}",
|
|
10
|
+
"remoteMcpUrl": "{{{mcpUrl}}}",
|
|
11
|
+
"transport": "{{runtimeTransport}}",
|
|
12
|
+
"assistantCatalogUrl": "{{{assistantCatalogUrl}}}",
|
|
13
|
+
"roleAssistantResolution": "dynamic-runtime",
|
|
14
|
+
"layerBToolNames": [
|
|
15
|
+
{{#each layerBToolNames}}
|
|
16
|
+
"{{this}}"{{#unless @last}},{{/unless}}
|
|
17
|
+
{{/each}}
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
"authentication": {
|
|
21
|
+
"mode": "{{runtimeAuthMode}}",
|
|
22
|
+
"credentialKey": "{{credentialKey}}",
|
|
23
|
+
"oauth2ProfileId": "{{oauth2ProfileId}}",
|
|
24
|
+
"oauth2ProfilePath": "{{oauth2ProfilePath}}",
|
|
25
|
+
"scopes": {{{scopesJson}}}
|
|
26
|
+
},
|
|
27
|
+
"boundaries": {
|
|
28
|
+
"oneConnectionSupportsManyRoleAssistants": true,
|
|
29
|
+
"topLevelEvidenceToolsExposed": false,
|
|
30
|
+
"runtimeOwnsWorkInterface": true
|
|
31
|
+
},
|
|
32
|
+
"lifecycle": {
|
|
33
|
+
"locallyValidated": true,
|
|
34
|
+
"runtimeValidated": false,
|
|
35
|
+
"requiresEditorReload": true
|
|
36
|
+
},
|
|
37
|
+
"artifact": {
|
|
38
|
+
"format": "mcp-client",
|
|
39
|
+
"version": "1.0.0"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "cursor",
|
|
3
|
+
"displayName": "Cursor",
|
|
4
|
+
"transport": "streamable-http",
|
|
5
|
+
"config": {
|
|
6
|
+
"scope": "user",
|
|
7
|
+
"relativePath": ".cursor/mcp.json",
|
|
8
|
+
"serversKey": "mcpServers",
|
|
9
|
+
"serverKey": "aifabrix"
|
|
10
|
+
},
|
|
11
|
+
"oauth": {
|
|
12
|
+
"integrationClientKey": "cursor",
|
|
13
|
+
"keycloakClientId": "miso-cursor",
|
|
14
|
+
"registrationMode": "predefinedClient",
|
|
15
|
+
"redirectUris": [
|
|
16
|
+
"http://localhost:8787/callback",
|
|
17
|
+
"https://www.cursor.com/agents/mcp/oauth/callback"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
"reload": {
|
|
21
|
+
"remainingStep": "Reload the editor."
|
|
22
|
+
},
|
|
23
|
+
"uninstall": {
|
|
24
|
+
"removeServerKeyOnly": true
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "github-copilot",
|
|
3
|
+
"displayName": "GitHub Copilot",
|
|
4
|
+
"transport": "streamable-http",
|
|
5
|
+
"config": {
|
|
6
|
+
"scope": "user",
|
|
7
|
+
"relativePath": "mcp.json",
|
|
8
|
+
"serversKey": "servers",
|
|
9
|
+
"serverKey": "aifabrix"
|
|
10
|
+
},
|
|
11
|
+
"oauth": {
|
|
12
|
+
"integrationClientKey": "vscode",
|
|
13
|
+
"keycloakClientId": "miso-vscode",
|
|
14
|
+
"registrationMode": "cimd",
|
|
15
|
+
"redirectUris": [
|
|
16
|
+
"https://vscode.dev/redirect",
|
|
17
|
+
"https://insiders.vscode.dev/redirect",
|
|
18
|
+
"http://127.0.0.1:33418",
|
|
19
|
+
"http://localhost:33418"
|
|
20
|
+
],
|
|
21
|
+
"cimdDocumentHosts": ["vscode.dev", "insiders.vscode.dev"]
|
|
22
|
+
},
|
|
23
|
+
"reload": {
|
|
24
|
+
"remainingStep": "Reload the editor."
|
|
25
|
+
},
|
|
26
|
+
"uninstall": {
|
|
27
|
+
"removeServerKeyOnly": true
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "vscode",
|
|
3
|
+
"displayName": "VS Code",
|
|
4
|
+
"transport": "streamable-http",
|
|
5
|
+
"config": {
|
|
6
|
+
"scope": "user",
|
|
7
|
+
"relativePath": "mcp.json",
|
|
8
|
+
"serversKey": "servers",
|
|
9
|
+
"serverKey": "aifabrix"
|
|
10
|
+
},
|
|
11
|
+
"oauth": {
|
|
12
|
+
"integrationClientKey": "vscode",
|
|
13
|
+
"keycloakClientId": "miso-vscode",
|
|
14
|
+
"registrationMode": "cimd",
|
|
15
|
+
"redirectUris": [
|
|
16
|
+
"https://vscode.dev/redirect",
|
|
17
|
+
"https://insiders.vscode.dev/redirect",
|
|
18
|
+
"http://127.0.0.1:33418",
|
|
19
|
+
"http://localhost:33418"
|
|
20
|
+
],
|
|
21
|
+
"cimdDocumentHosts": ["vscode.dev", "insiders.vscode.dev"]
|
|
22
|
+
},
|
|
23
|
+
"reload": {
|
|
24
|
+
"remainingStep": "Reload the editor."
|
|
25
|
+
},
|
|
26
|
+
"uninstall": {
|
|
27
|
+
"removeServerKeyOnly": true
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "microsoft-copilot",
|
|
3
|
+
"displayName": "Microsoft Copilot",
|
|
4
|
+
"description": "Publish a Microsoft Copilot package for Microsoft 365.",
|
|
5
|
+
"type": "custom",
|
|
6
|
+
"systemKind": "communication",
|
|
7
|
+
"enabled": true,
|
|
8
|
+
"authentication": {
|
|
9
|
+
"authType": "system"
|
|
10
|
+
},
|
|
11
|
+
"configuration": [
|
|
12
|
+
{
|
|
13
|
+
"name": "CHANNEL_APP_DESCRIPTION",
|
|
14
|
+
"value": "Enterprise AI assistant for employees. Approved assistants, enterprise knowledge, workflows, and governed actions via AI Fabrix.",
|
|
15
|
+
"location": "variable",
|
|
16
|
+
"required": false,
|
|
17
|
+
"portalInput": {
|
|
18
|
+
"field": "textarea",
|
|
19
|
+
"label": "Description",
|
|
20
|
+
"placeholder": "Shown to people who connect this app",
|
|
21
|
+
"validation": {
|
|
22
|
+
"maxLength": 4000
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "CHANNEL_PACKAGE_VERSION",
|
|
28
|
+
"value": "1.0.0",
|
|
29
|
+
"location": "variable",
|
|
30
|
+
"required": false
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "CHANNEL_OAUTH_PLUGIN_VAULT_REFERENCE_ID",
|
|
34
|
+
"value": "",
|
|
35
|
+
"location": "variable",
|
|
36
|
+
"required": false
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"dataSources": [],
|
|
40
|
+
"endpointsActive": false,
|
|
41
|
+
"channel": {
|
|
42
|
+
"definitionKey": "microsoft-copilot",
|
|
43
|
+
"provisioning": {
|
|
44
|
+
"mode": "automatic"
|
|
45
|
+
},
|
|
46
|
+
"runtimeTarget": {
|
|
47
|
+
"defaultSystemKey": "runtime-orchestration",
|
|
48
|
+
"configurable": true
|
|
49
|
+
},
|
|
50
|
+
"experimental": false,
|
|
51
|
+
"profiles": [],
|
|
52
|
+
"packaging": {
|
|
53
|
+
"channelType": "microsoftCopilot",
|
|
54
|
+
"templateDir": "microsoft-copilot",
|
|
55
|
+
"artifactFileName": "channel-microsoft-copilot.json",
|
|
56
|
+
"artifactFormat": "json",
|
|
57
|
+
"credentialKey": "microsoft-copilot-channel",
|
|
58
|
+
"capabilities": [
|
|
59
|
+
"chat",
|
|
60
|
+
"notify",
|
|
61
|
+
"documentApproval",
|
|
62
|
+
"enterpriseActions"
|
|
63
|
+
],
|
|
64
|
+
"displayLabel": "Microsoft Copilot",
|
|
65
|
+
"category": "employee-ai",
|
|
66
|
+
"wizardOrder": 10,
|
|
67
|
+
"remainingManualStep": "Publish the app in Microsoft 365.",
|
|
68
|
+
"docsAnchor": "microsoft-copilot",
|
|
69
|
+
"approvalRequired": true,
|
|
70
|
+
"vendorAuthRequired": true
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -7,12 +7,16 @@
|
|
|
7
7
|
"instructions": "Use governed enterprise work tools only. Resolve Role Assistants dynamically and keep business reasoning inside authorized Role Assistant boundaries.",
|
|
8
8
|
"conversation_starters": [
|
|
9
9
|
{
|
|
10
|
-
"title": "
|
|
11
|
-
"text": "List my available Role Assistants and what they can do."
|
|
10
|
+
"title": "v{{packageVersion}} — Role Assistants",
|
|
11
|
+
"text": "Package {{packageVersion}}: List my available Role Assistants and what they can do."
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
|
-
"title": "Start
|
|
15
|
-
"text": "Help me start work for my current business objective."
|
|
14
|
+
"title": "v{{packageVersion}} — Start work",
|
|
15
|
+
"text": "Package {{packageVersion}}: Help me start work for my current business objective."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"title": "v{{packageVersion}} — Confirm tools",
|
|
19
|
+
"text": "Package {{packageVersion}}: Call Runtime MCP and confirm which governed tools you can use for me."
|
|
16
20
|
}
|
|
17
21
|
],
|
|
18
22
|
"actions": [
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
## Microsoft
|
|
1
|
+
## Microsoft auth-config (fallback / inspection)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
AI Fabrix normally creates this auth-config with **Microsoft 365 Agents Toolkit**. Use Teams Developer Portal only when Toolkit cannot complete the operation, or to inspect, restrict, or recover a registration.
|
|
4
|
+
|
|
5
|
+
Fallback URL:
|
|
4
6
|
|
|
5
7
|
{{{entraSsoRegistrationUrl}}}
|
|
6
8
|
|
|
7
|
-
Open **Tools → Microsoft Entra SSO client ID registration → Register client ID** (or New).
|
|
9
|
+
Open **Tools → Microsoft Entra SSO client ID registration → Register client ID** (or New) only for that fallback.
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
The registration / auth-config ID is **not** the Entra Client (application) ID.
|
|
10
12
|
|
|
11
13
|
### Values to paste into the form
|
|
12
14
|
|
|
@@ -19,6 +21,62 @@ Do this **before** organisation publish. The registration / auth-config ID becom
|
|
|
19
21
|
| Client (application) ID | {{#if entraSsoClientId}}`{{entraSsoClientId}}`{{else}}*(missing — Entra SSO enterprise app (client) id from controller Keycloak status `entraIdentityProvider.enterpriseAppId`; complete Entra onboarding if empty)*{{/if}} |
|
|
20
22
|
| Scope | {{#if entraSsoScope}}`{{entraSsoScope}}`{{else}}*(missing — set Runtime MCP delegated scopes on Trust source `microsoft-entra-id` `allowedScopes`; not openid/profile alone)*{{/if}} |
|
|
21
23
|
|
|
24
|
+
After Save, Teams may **display** Application ID URI as `api://auth-{registrationId}/{clientId}`. Entra **onboarding already adds** `api://{clientId}` — keep that URI, and **also** add the Teams URI as a second `identifierUri` (required for Microsoft Enterprise token store / Copilot SSO).
|
|
25
|
+
|
|
26
|
+
Package `manifest.json` `webApplicationInfo` stays on the **Azure / Trust** URI (`api://{clientId}`), not the Teams `api://auth-…` display string. Re-run `channel add --force` after registration so the vault `reference_id` is embedded.
|
|
27
|
+
|
|
28
|
+
### Add Teams Application ID URI on the Entra app (az)
|
|
29
|
+
|
|
30
|
+
Entra **onboarding already sets** the first URI: `api://{clientId}` (Trust / Azure Application ID URI). Do not remove it.
|
|
31
|
+
|
|
32
|
+
**Channel add** merges the Teams URI automatically when Azure CLI is signed in with permission to update the app (it keeps every existing identifier URI and adds `api://auth-{registrationId}/{clientId}`). If that step is skipped (no Azure CLI in this environment, or the signed-in account cannot update the app), run Azure CLI yourself. `az ad app update --identifier-uris` replaces the full list, so existing URIs must be listed:
|
|
33
|
+
|
|
34
|
+
{{#if entraSsoClientId}}
|
|
35
|
+
{{#if entraSsoAuthConfigId}}
|
|
36
|
+
```bash
|
|
37
|
+
az ad app update --id "{{entraSsoClientId}}" \
|
|
38
|
+
--identifier-uris \
|
|
39
|
+
"api://{{entraSsoClientId}}" \
|
|
40
|
+
"api://auth-{{entraSsoAuthConfigId}}/{{entraSsoClientId}}"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Verify:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
az ad app show --id "{{entraSsoClientId}}" --query identifierUris -o json
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Expected URIs include:
|
|
50
|
+
|
|
51
|
+
- `api://{{entraSsoClientId}}`
|
|
52
|
+
- `api://auth-{{entraSsoAuthConfigId}}/{{entraSsoClientId}}`
|
|
53
|
+
{{else}}
|
|
54
|
+
```bash
|
|
55
|
+
# Replace <REGISTRATION_ID> with the Teams Entra SSO auth-config id from Developer Portal
|
|
56
|
+
az ad app update --id "{{entraSsoClientId}}" \
|
|
57
|
+
--identifier-uris \
|
|
58
|
+
"api://{{entraSsoClientId}}" \
|
|
59
|
+
"api://auth-<REGISTRATION_ID>/{{entraSsoClientId}}"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Verify:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
az ad app show --id "{{entraSsoClientId}}" --query identifierUris -o json
|
|
66
|
+
```
|
|
67
|
+
{{/if}}
|
|
68
|
+
{{else}}
|
|
69
|
+
```bash
|
|
70
|
+
# Replace <CLIENT_ID> and <REGISTRATION_ID> after Entra onboarding + Teams SSO registration
|
|
71
|
+
az ad app update --id "<CLIENT_ID>" \
|
|
72
|
+
--identifier-uris \
|
|
73
|
+
"api://<CLIENT_ID>" \
|
|
74
|
+
"api://auth-<REGISTRATION_ID>/<CLIENT_ID>"
|
|
75
|
+
```
|
|
76
|
+
{{/if}}
|
|
77
|
+
|
|
78
|
+
Do **not** remove `api://{clientId}`. Do **not** use only `api://auth-…` as the package `webApplicationInfo.resource`.
|
|
79
|
+
|
|
22
80
|
### Related (for your records)
|
|
23
81
|
|
|
24
82
|
{{#if mcpUrl}}- **Remote MCP URL (package):** `{{{mcpUrl}}}`{{/if}}
|
|
@@ -26,5 +84,7 @@ Do this **before** organisation publish. The registration / auth-config ID becom
|
|
|
26
84
|
{{#if entraIssuer}}- **Entra issuer (Trust source):** `{{{entraIssuer}}}`{{/if}}
|
|
27
85
|
{{#if entraTenantId}}- **Tenant id:** `{{entraTenantId}}`{{/if}}
|
|
28
86
|
{{#if entraEnterpriseAppId}}- **Entra Client (application) ID (Keycloak enterprise app):** `{{entraEnterpriseAppId}}`{{/if}}
|
|
87
|
+
{{#if teamsApplicationIdUri}}- **Teams Application ID URI (channel add adds this when Azure CLI can update the app):** `{{{teamsApplicationIdUri}}}`{{/if}}
|
|
88
|
+
{{#if azureApplicationIdUri}}- **Azure / Trust Application ID URI (keep):** `{{{azureApplicationIdUri}}}`{{/if}}
|
|
29
89
|
|
|
30
|
-
After Save, copy the **Microsoft Entra SSO registration ID** (auth-config id). Pass that value as `--oauth-plugin-vault-reference-id` and re-run `channel add` so `ai-plugin.json` embeds `OAuthPluginVault.reference_id`.
|
|
90
|
+
After Save, copy the **Microsoft Entra SSO registration ID** (auth-config id). Pass that value as `--oauth-plugin-vault-reference-id` and re-run `channel add` so `ai-plugin.json` embeds `OAuthPluginVault.reference_id`. Channel add also merges the Teams identifier URI when Azure CLI is available; otherwise run the **az** command above before testing Copilot tool discovery.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub Copilot</title><path d="M23.922 16.997C23.061 18.492 18.063 22.02 12 22.02 5.937 22.02.939 18.492.078 16.997A.641.641 0 0 1 0 16.741v-2.869a.883.883 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.098 10.098 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952C7.255 2.937 9.248 1.98 11.978 1.98c2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.841.841 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256Zm-11.75-5.992h-.344a4.359 4.359 0 0 1-.355.508c-.77.947-1.918 1.492-3.508 1.492-1.725 0-2.989-.359-3.782-1.259a2.137 2.137 0 0 1-.085-.104L4 11.746v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.359 4.359 0 0 1-.355-.508Zm2.328 3.25c.549 0 1 .451 1 1v2c0 .549-.451 1-1 1-.549 0-1-.451-1-1v-2c0-.549.451-1 1-1Zm-5 0c.549 0 1 .451 1 1v2c0 .549-.451 1-1 1-.549 0-1-.451-1-1v-2c0-.549.451-1 1-1Zm3.313-6.185c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"/></svg>
|
|
@@ -24,21 +24,21 @@ dist/channels/microsoft-copilot/build/appPackage.{{environment}}.zip
|
|
|
24
24
|
| **Teams Developer Portal app** | Package definition (`manifest.json.id`) and organisation publish request. | Teams app / manifest ID |
|
|
25
25
|
| **Teams admin centre catalogue** | Approval, availability, policy, published state. | Catalogue entry after org publish |
|
|
26
26
|
|
|
27
|
-
`--oauth-plugin-vault-reference-id` is the **
|
|
27
|
+
`--oauth-plugin-vault-reference-id` is the **Microsoft auth-config ID** that Microsoft 365 Agents Toolkit (`atk` / `oauth/register`) writes into `OAuthPluginVault.reference_id`. It is **not** the Entra Client (application) ID and **not** a client secret. That CLI registration is stored in Microsoft’s token store; it often **does not** appear as a Teams Developer Portal “Entra SSO registration” you can browse. Teams Developer Portal is fallback, inspection, or recovery only.
|
|
28
28
|
|
|
29
29
|
Do **not** configure AI Fabrix OAuth client secrets under Connected Systems → Authentication for this Entra SSO flow.
|
|
30
30
|
|
|
31
31
|
## Package prerequisites (before Import)
|
|
32
32
|
|
|
33
|
-
1.
|
|
34
|
-
2.
|
|
35
|
-
3.
|
|
33
|
+
1. Run `aifabrix channel add microsoft-copilot` (or continue from the portal). Sign in with Microsoft when asked so Agents Toolkit can create or reuse the auth-config.
|
|
34
|
+
2. Toolkit captures the auth-config ID and Application ID URI, then embeds `auth.type = OAuthPluginVault` and `auth.reference_id` in `ai-plugin.json`.
|
|
35
|
+
3. Use `--oauth-plugin-vault-reference-id` only when Toolkit cannot create the id (fallback / recovery):
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
aifabrix channel add microsoft-copilot --name "{{
|
|
38
|
+
aifabrix channel add microsoft-copilot --name "{{appName}}" --oauth-plugin-vault-reference-id "<auth-config-id>"
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
-
Keep
|
|
41
|
+
Keep package `webApplicationInfo` aligned with the **Azure** Application ID URI (`api://{clientId}` / Trust audience). Do not replace it with the Teams portal display URI `api://auth-…` on re-import.
|
|
42
42
|
|
|
43
43
|
Upload **only** the ZIP package. Do not upload individual source files or `channel-microsoft-copilot.json`.
|
|
44
44
|
|
|
@@ -49,11 +49,11 @@ Upload **only** the ZIP package. Do not upload individual source files or `chann
|
|
|
49
49
|
3. Developer Portal → selected app → **Publish to your org** → Distribute / submit.
|
|
50
50
|
4. Teams admin approves in [Teams admin centre → Manage apps](https://admin.teams.microsoft.com/policies/manage-apps) (Manage apps → search → allow). Expect **Published** / **Unblocked** per organisation policy. Allow several minutes for propagation.
|
|
51
51
|
5. Open **Teams** → **Apps** (**Built for your org**), click **{{appName}}**, **Add** the application, then choose **Open with Copilot**.
|
|
52
|
-
6. In Copilot, click **
|
|
52
|
+
6. In Copilot, click a starter titled like **vX.Y.Z — Role Assistants** (package version in the title) and run it.
|
|
53
53
|
7. Confirm Runtime MCP and governed tools using this guide, then re-run with `--probe` after organisation publish:
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
|
-
aifabrix channel add {{channelTarget}} --name "{{
|
|
56
|
+
aifabrix channel add {{channelTarget}} --name "{{appName}}" --oauth-plugin-vault-reference-id "{{{oauthPluginVaultReferenceId}}}" --probe
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
8. After the app is available under **Built for your org**, re-run:
|
|
@@ -119,7 +119,7 @@ Use this when replacing the app, cleaning a failed publish, or removing **{{appN
|
|
|
119
119
|
2. Search for **{{appName}}**, open the app, open the action menu, choose **Delete**, and confirm.
|
|
120
120
|
3. Open [Teams Developer Portal → Apps](https://dev.teams.microsoft.com/apps).
|
|
121
121
|
4. Find the app in the list, open **…** (Actions) → **Delete**, and confirm by typing the app name.
|
|
122
|
-
5. Open [Microsoft Entra SSO client ID registration](https://dev.teams.microsoft.com/tools/entra-configuration).
|
|
122
|
+
5. Open [Teams Developer Portal → Microsoft Entra SSO client ID registration](https://dev.teams.microsoft.com/tools/entra-configuration).
|
|
123
123
|
6. Find the registration for this channel (same registration / auth-config used as `--oauth-plugin-vault-reference-id`), open **…** (Actions) → **Delete**, and confirm.
|
|
124
124
|
|
|
125
125
|
After Microsoft cleanup, delete local package output if needed (`dist/channels/microsoft-copilot/`) and re-run `aifabrix channel add` with a **new** Entra SSO registration / auth-config ID. Do not reuse a deleted registration id.
|