@aifabrix/builder 2.53.1 → 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 +112 -18
- 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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"app": {
|
|
3
3
|
"key": "microsoft-copilot",
|
|
4
|
-
"displayName": "Microsoft Copilot
|
|
5
|
-
"description": "
|
|
4
|
+
"displayName": "Microsoft Copilot",
|
|
5
|
+
"description": "Publish a Microsoft Copilot package for Microsoft 365.",
|
|
6
6
|
"type": "external"
|
|
7
7
|
},
|
|
8
8
|
"externalIntegration": {
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
# Microsoft Copilot
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
|
|
5
|
-
KV_MICROSOFT_COPILOT_CLIENTID=kv://microsoft-copilot/clientId
|
|
6
|
-
KV_MICROSOFT_COPILOT_CLIENTSECRET=kv://microsoft-copilot/clientSecret
|
|
1
|
+
# Microsoft Copilot
|
|
2
|
+
# OAuth / Entra app secrets are not stored here (authType: system).
|
|
3
|
+
# Remaining Microsoft 365 publish uses the generated package and OAuth plugin vault.
|
|
@@ -1,14 +1,73 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "microsoft-copilot",
|
|
3
|
-
"displayName": "Microsoft Copilot
|
|
4
|
-
"description": "
|
|
3
|
+
"displayName": "Microsoft Copilot",
|
|
4
|
+
"description": "Publish a Microsoft Copilot package for Microsoft 365.",
|
|
5
5
|
"type": "custom",
|
|
6
6
|
"systemKind": "communication",
|
|
7
7
|
"enabled": true,
|
|
8
8
|
"authentication": {
|
|
9
9
|
"authType": "system"
|
|
10
10
|
},
|
|
11
|
-
"configuration": [
|
|
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
|
+
],
|
|
12
39
|
"dataSources": [],
|
|
13
|
-
"endpointsActive": false
|
|
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
|
+
}
|
|
14
73
|
}
|
|
@@ -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
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
microsoft-copilot packaging
|
|
1
|
+
microsoft-copilot packaging needs a Microsoft **auth-config ID** in `OAuthPluginVault.reference_id`.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
AI Fabrix provisions that value with **Microsoft 365 Agents Toolkit**. Sign in with Microsoft (`atk auth login m365`), then re-run `aifabrix channel add microsoft-copilot`. Do not paste an Entra Client (application) ID or a client secret.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Teams Developer Portal is fallback, inspection, restrictions, or recovery only — not the normal provisioning path.
|
|
6
6
|
|
|
7
7
|
{{> entraSsoRegistration}}
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
If Toolkit cannot create the id:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
aifabrix channel add microsoft-copilot --name "{{
|
|
12
|
+
aifabrix channel add microsoft-copilot --name "{{appName}}" --oauth-plugin-vault-reference-id "<auth-config-id>"
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
Next: Developer Portal → Apps → Import app (`appPackage.<env>.zip`) → Publish to your org → Teams admin centre approval. Sideloading is optional and not the organisation path.
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "slack",
|
|
3
|
+
"displayName": "Slack",
|
|
4
|
+
"description": "Chat with Role Assistants, send notifications, and review documents in Slack.",
|
|
5
|
+
"type": "custom",
|
|
6
|
+
"enabled": true,
|
|
7
|
+
"authentication": {
|
|
8
|
+
"authType": "credential",
|
|
9
|
+
"credential": {
|
|
10
|
+
"credentialKey": "slack-app",
|
|
11
|
+
"displayName": "Slack App",
|
|
12
|
+
"method": "hmac",
|
|
13
|
+
"writeOnce": true,
|
|
14
|
+
"variables": {
|
|
15
|
+
"algorithm": "sha256",
|
|
16
|
+
"signatureHeader": "X-Slack-Signature",
|
|
17
|
+
"timestampHeader": "X-Slack-Request-Timestamp",
|
|
18
|
+
"signaturePrefix": "v0=",
|
|
19
|
+
"timestampMaxAge": "300",
|
|
20
|
+
"baseUrl": "https://slack.com",
|
|
21
|
+
"testEndpoint": "https://slack.com/api/auth.test"
|
|
22
|
+
},
|
|
23
|
+
"security": {
|
|
24
|
+
"signingSecret": "kv://slack/signingSecret",
|
|
25
|
+
"botToken": "kv://slack/botToken",
|
|
26
|
+
"clientSecret": "kv://slack/clientSecret"
|
|
27
|
+
},
|
|
28
|
+
"formFields": [
|
|
29
|
+
{
|
|
30
|
+
"name": "signingSecret",
|
|
31
|
+
"required": true,
|
|
32
|
+
"label": "Signing secret"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "botToken",
|
|
36
|
+
"required": true,
|
|
37
|
+
"label": "Bot user OAuth token",
|
|
38
|
+
"placeholder": "xoxb-…"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "clientSecret",
|
|
42
|
+
"required": false,
|
|
43
|
+
"label": "Client secret"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"authentications": [
|
|
49
|
+
{
|
|
50
|
+
"key": "default",
|
|
51
|
+
"usage": "api",
|
|
52
|
+
"authType": "credential",
|
|
53
|
+
"credential": {
|
|
54
|
+
"credentialKey": "slack-app",
|
|
55
|
+
"displayName": "Slack App",
|
|
56
|
+
"method": "hmac",
|
|
57
|
+
"writeOnce": true,
|
|
58
|
+
"variables": {
|
|
59
|
+
"algorithm": "sha256",
|
|
60
|
+
"signatureHeader": "X-Slack-Signature",
|
|
61
|
+
"timestampHeader": "X-Slack-Request-Timestamp",
|
|
62
|
+
"signaturePrefix": "v0=",
|
|
63
|
+
"timestampMaxAge": "300",
|
|
64
|
+
"baseUrl": "https://slack.com",
|
|
65
|
+
"testEndpoint": "https://slack.com/api/auth.test"
|
|
66
|
+
},
|
|
67
|
+
"security": {
|
|
68
|
+
"signingSecret": "kv://slack/signingSecret",
|
|
69
|
+
"botToken": "kv://slack/botToken",
|
|
70
|
+
"clientSecret": "kv://slack/clientSecret"
|
|
71
|
+
},
|
|
72
|
+
"formFields": [
|
|
73
|
+
{
|
|
74
|
+
"name": "signingSecret",
|
|
75
|
+
"required": true,
|
|
76
|
+
"label": "Signing secret"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name": "botToken",
|
|
80
|
+
"required": true,
|
|
81
|
+
"label": "Bot user OAuth token",
|
|
82
|
+
"placeholder": "xoxb-…"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "clientSecret",
|
|
86
|
+
"required": false,
|
|
87
|
+
"label": "Client secret"
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"key": "webhookInbound",
|
|
94
|
+
"usage": "webhookInbound",
|
|
95
|
+
"authType": "credential",
|
|
96
|
+
"credential": {
|
|
97
|
+
"credentialKey": "slack-app",
|
|
98
|
+
"displayName": "Slack inbound webhook",
|
|
99
|
+
"method": "hmac",
|
|
100
|
+
"writeOnce": true,
|
|
101
|
+
"variables": {
|
|
102
|
+
"algorithm": "sha256",
|
|
103
|
+
"signatureHeader": "X-Slack-Signature",
|
|
104
|
+
"timestampHeader": "X-Slack-Request-Timestamp",
|
|
105
|
+
"signaturePrefix": "v0=",
|
|
106
|
+
"timestampMaxAge": "300"
|
|
107
|
+
},
|
|
108
|
+
"security": {
|
|
109
|
+
"signingSecret": "kv://slack/signingSecret"
|
|
110
|
+
},
|
|
111
|
+
"formFields": [
|
|
112
|
+
{
|
|
113
|
+
"name": "signingSecret",
|
|
114
|
+
"required": true,
|
|
115
|
+
"label": "Signing secret"
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
"configuration": [
|
|
122
|
+
{
|
|
123
|
+
"name": "CHANNEL_APP_DESCRIPTION",
|
|
124
|
+
"value": "Enterprise AI assistant for employees. Approved assistants, enterprise knowledge, workflows, and governed actions via AI Fabrix.",
|
|
125
|
+
"location": "variable",
|
|
126
|
+
"required": false,
|
|
127
|
+
"portalInput": {
|
|
128
|
+
"field": "textarea",
|
|
129
|
+
"label": "Description",
|
|
130
|
+
"placeholder": "Shown to people who connect this app",
|
|
131
|
+
"validation": {
|
|
132
|
+
"maxLength": 4000
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"name": "CHANNEL_COMMAND_PREFIX",
|
|
138
|
+
"value": "af",
|
|
139
|
+
"location": "variable",
|
|
140
|
+
"required": false,
|
|
141
|
+
"portalInput": {
|
|
142
|
+
"field": "text",
|
|
143
|
+
"label": "Slash command prefix",
|
|
144
|
+
"placeholder": "Letters and numbers, for example af",
|
|
145
|
+
"validation": {
|
|
146
|
+
"pattern": "^[a-z][a-z0-9]{0,15}$"
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"name": "ENABLE_PROACTIVE_MESSAGING",
|
|
152
|
+
"value": "true",
|
|
153
|
+
"location": "variable",
|
|
154
|
+
"required": false
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"name": "ENABLE_CHANNEL_NOTIFICATIONS",
|
|
158
|
+
"value": "true",
|
|
159
|
+
"location": "variable",
|
|
160
|
+
"required": false
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"name": "ENABLE_DIRECT_MESSAGES",
|
|
164
|
+
"value": "true",
|
|
165
|
+
"location": "variable",
|
|
166
|
+
"required": false
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"name": "ENABLE_MODALS",
|
|
170
|
+
"value": "true",
|
|
171
|
+
"location": "variable",
|
|
172
|
+
"required": false
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"name": "ENABLE_SHORTCUTS",
|
|
176
|
+
"value": "true",
|
|
177
|
+
"location": "variable",
|
|
178
|
+
"required": false
|
|
179
|
+
}
|
|
180
|
+
],
|
|
181
|
+
"dataSources": [
|
|
182
|
+
"slack-interactive",
|
|
183
|
+
"slack-commands",
|
|
184
|
+
"slack-events",
|
|
185
|
+
"slack-conversations",
|
|
186
|
+
"slack-messages"
|
|
187
|
+
],
|
|
188
|
+
"endpoints": [],
|
|
189
|
+
"endpointsActive": true,
|
|
190
|
+
"systemKind": "communication",
|
|
191
|
+
"channel": {
|
|
192
|
+
"definitionKey": "slack",
|
|
193
|
+
"provisioning": {
|
|
194
|
+
"mode": "automatic"
|
|
195
|
+
},
|
|
196
|
+
"runtimeTarget": {
|
|
197
|
+
"defaultSystemKey": "runtime-orchestration",
|
|
198
|
+
"configurable": true
|
|
199
|
+
},
|
|
200
|
+
"experimental": false,
|
|
201
|
+
"maxInstances": 1,
|
|
202
|
+
"profiles": [],
|
|
203
|
+
"packaging": {
|
|
204
|
+
"channelType": "slack",
|
|
205
|
+
"templateDir": "slack",
|
|
206
|
+
"artifactFileName": "channel-slack.json",
|
|
207
|
+
"artifactFormat": "json",
|
|
208
|
+
"credentialKey": "slack-app",
|
|
209
|
+
"capabilities": [
|
|
210
|
+
"chat",
|
|
211
|
+
"notify",
|
|
212
|
+
"documentApproval"
|
|
213
|
+
],
|
|
214
|
+
"displayLabel": "Slack",
|
|
215
|
+
"category": "communication",
|
|
216
|
+
"wizardOrder": 40,
|
|
217
|
+
"remainingManualStep": "Workspace admin approval if Slack asks.",
|
|
218
|
+
"docsAnchor": "slack",
|
|
219
|
+
"approvalRequired": true,
|
|
220
|
+
"vendorAuthRequired": true
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Slack</title><path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"/></svg>
|
|
@@ -1,21 +1,52 @@
|
|
|
1
|
-
# {{appName}} — Slack
|
|
1
|
+
# {{appName}} — Slack install
|
|
2
2
|
|
|
3
3
|
{{appDescription}}
|
|
4
4
|
|
|
5
|
-
Environment: **{{environment}}** · Credential key: `{{credentialKey}}` · Command prefix: `{{commandPrefix}}`
|
|
5
|
+
Environment: **{{environment}}** · Credential key: `{{credentialKey}}` · Command prefix: `{{commandPrefix}}` · Package version: **{{packageVersion}}**
|
|
6
6
|
|
|
7
7
|
One Slack app delivers **Role Assistant** chat, **Work hub** shortcuts, and **document approval**.
|
|
8
8
|
|
|
9
9
|
**Chat with your assistant:** DM this app (no slash command for Q&A).
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Automated install
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Sign in with Slack CLI (`slack login`) to the workspace that should own the app. Builder creates or **updates** the Slack app from the generated manifest (`dist/channels/slack/channel-slack.json`) and stores the bot token and signing secret in AI Fabrix Authentication. Re-run with the same name to apply new settings (slash prefix, URLs, description). Package version increases on each update (1.0.0 → 1.1.0). Approve the workspace install when Slack asks.
|
|
18
|
+
|
|
19
|
+
Complete remaining Slack steps in this order:
|
|
20
|
+
|
|
21
|
+
1. Open the **Open Slack Apps** URL and upload your logo (**Basic Information**).
|
|
22
|
+
2. Open the **Activate the application** URL (Slack **Install App**).
|
|
23
|
+
3. Open **Approve for this workspace** in Slack Manage and approve.
|
|
24
|
+
4. If Authentication still needs values, copy **Signing Secret** (Basic Information) and **Bot User OAuth Token** from the Slack app into [Authentication settings]({{{credentialPortalUrl}}}).
|
|
25
|
+
|
|
26
|
+
`aifabrix channel add` prints the filled URLs for your app. Do not paste client secrets into this file.
|
|
27
|
+
|
|
28
|
+
The command may ask **Onboard users?** Yes matches Slack profile email to an existing platform user email and stores the mapping. Unmatched people still use **Link account**. Non-interactive: `--onboard-users` or `--no-onboard-users`. `--force` does not re-onboard unless you pass `--onboard-users` or answer yes again.
|
|
29
|
+
|
|
30
|
+
Optional validation:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
To use a different slash prefix (default `af`):
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --command-prefix <key>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Recovery (only if automation cannot create the app)
|
|
12
43
|
|
|
13
44
|
1. Open [Slack API — Your Apps](https://api.slack.com/apps) and sign in as a workspace admin.
|
|
14
45
|
2. Click **Create New App** → **From an app manifest**.
|
|
15
46
|
3. Select your workspace, then paste or upload the generated manifest JSON from `dist/channels/slack/channel-slack.json` (same folder as this file).
|
|
16
47
|
4. Review callback URLs and OAuth scopes — they must match the values in **Platform callback URLs** below.
|
|
17
48
|
5. Confirm **App Home → Messages tab** is **ON** in the manifest (required for bot DMs and proactive notifications; slash commands work without it).
|
|
18
|
-
6. Click **Create**, then open **
|
|
49
|
+
6. Click **Create**, then open the **Activate the application** URL the command prints (Slack **Install App** / `install-on-team`) and approve.
|
|
19
50
|
7. Copy **Bot User OAuth Token** and **Signing Secret** from the Slack app settings.
|
|
20
51
|
8. Save **Bot User OAuth Token** and **Signing Secret** in AI Fabrix: [Authentication settings]({{{credentialPortalUrl}}})
|
|
21
52
|
|
|
@@ -32,11 +63,6 @@ Configure these in your Slack app if you edit settings manually. Do not embed se
|
|
|
32
63
|
{{#if commandUrl}}
|
|
33
64
|
- **Slash commands:** {{commandUrl}}
|
|
34
65
|
{{/if}}
|
|
35
|
-
{{#if oauthCallbackUrl}}
|
|
36
|
-
- **OAuth Redirect URL:** {{oauthCallbackUrl}}
|
|
37
|
-
{{/if}}
|
|
38
|
-
|
|
39
|
-
Paste the **OAuth Redirect URL** into Slack app settings → **OAuth & Permissions** → **Redirect URLs** (required for Add to Slack / OAuth).
|
|
40
66
|
|
|
41
67
|
Register these **V1** slash commands in the manifest (all use the same request URL):
|
|
42
68
|
|
|
@@ -51,7 +77,7 @@ Single-task and single-document detail, plus approve-in-Slack, are **not** regis
|
|
|
51
77
|
|
|
52
78
|
Document review **block actions** use the **Interactivity** URL above.
|
|
53
79
|
|
|
54
|
-
## Validate after
|
|
80
|
+
## Validate after install
|
|
55
81
|
|
|
56
82
|
1. `/{{commandPrefix}}-help` — returns Block Kit help (proves command is registered and dataplane responds).
|
|
57
83
|
2. `/{{commandPrefix}}-assistants` — Role Assistant status cards or activation offer.
|
|
@@ -64,21 +90,3 @@ Document review **block actions** use the **Interactivity** URL above.
|
|
|
64
90
|
Runtime lists **assistants** available to each user from:
|
|
65
91
|
|
|
66
92
|
{{assistantCatalogUrl}}
|
|
67
|
-
|
|
68
|
-
## After Slack install
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
aifabrix channel add {{channelTarget}} --name "{{baseName}}"
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Optional validation:
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
To use a different slash prefix (default `af`):
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --command-prefix <key>
|
|
84
|
-
```
|