@aifabrix/builder 2.51.1 → 2.52.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/jest.isolated-projects.js +25 -2
- package/jest.projects.js +4 -1
- package/lib/api/datasources-extended.api.js +8 -8
- package/lib/api/keycloak.api.js +92 -0
- package/lib/api/token-providers.api.js +77 -0
- package/lib/api/types/keycloak.types.js +23 -0
- package/lib/api/types/token-providers.types.js +65 -0
- package/lib/app/down.js +16 -1
- package/lib/app/run-container-start.js +4 -0
- package/lib/app/run-deploy-job.js +135 -27
- package/lib/app/run-env-compose.js +32 -0
- package/lib/app/run-env-recovery.js +35 -0
- package/lib/app/run-helpers.js +5 -6
- package/lib/app/run.js +11 -3
- package/lib/channels/add-channel.js +126 -19
- package/lib/channels/approval-guides/chatgpt.js +12 -9
- package/lib/channels/approval-guides/microsoft-copilot.js +16 -12
- package/lib/channels/channel-add-ensure.js +128 -0
- package/lib/channels/channel-artifact-generator.js +11 -1
- package/lib/channels/channel-branding.js +94 -0
- package/lib/channels/channel-credential.js +8 -0
- package/lib/channels/channel-discovery.js +330 -0
- package/lib/channels/channel-external-system.js +1 -1
- package/lib/channels/channel-runtime-resolver.js +103 -14
- package/lib/channels/channel-status-display.js +7 -1
- package/lib/channels/channel-targets.js +18 -1
- package/lib/channels/chatgpt-runtime-contract.js +1 -1
- package/lib/channels/microsoft-copilot-channel-add.js +138 -0
- package/lib/channels/microsoft-copilot-entra-sso-form.js +180 -0
- package/lib/channels/microsoft-copilot-entra-sso.js +264 -0
- package/lib/channels/microsoft-copilot-icons.js +74 -0
- package/lib/channels/microsoft-copilot-limits.js +84 -0
- package/lib/channels/microsoft-copilot-package.js +130 -49
- package/lib/channels/microsoft-copilot-validate.js +197 -0
- package/lib/cli/index.js +2 -0
- package/lib/cli/infra-guided-footers.js +1 -1
- package/lib/cli/infra-guided-public-url-warn.js +55 -0
- package/lib/cli/infra-guided.js +78 -62
- package/lib/cli/setup-app.help.js +4 -0
- package/lib/cli/setup-app.test-commands.js +59 -28
- package/lib/cli/setup-external-system.js +50 -12
- package/lib/cli/setup-infra.js +31 -4
- package/lib/commands/channel-add-setup.js +35 -10
- package/lib/commands/channel.js +27 -12
- package/lib/commands/deploy-gate-orchestrator.js +3 -2
- package/lib/commands/governance-verify-external.js +2 -5
- package/lib/commands/integration-definition.js +158 -0
- package/lib/commands/lifecycle-external.js +14 -7
- package/lib/commands/repair-auth-apply.js +19 -5
- package/lib/commands/repair-datasource-sync-operations.js +4 -1
- package/lib/commands/role-assistant-test-output.js +200 -0
- package/lib/commands/role-assistant.js +131 -114
- package/lib/commands/test-governance-external.js +2 -5
- package/lib/commands/up-miso.js +61 -24
- package/lib/commands/upload-data-sync-finalize.js +20 -3
- package/lib/commands/verify-governance-external.js +2 -5
- package/lib/commands/verify-operations-external.js +2 -5
- package/lib/commands/verify-operations-step-plan.js +31 -0
- package/lib/commands/verify-trust-command-action.js +2 -5
- package/lib/datasource/capability/capability-resolve.js +15 -5
- package/lib/datasource/capability/copy-operations.js +14 -4
- package/lib/datasource/datasource-identifier.js +4 -3
- package/lib/datasource/integration-context.js +3 -3
- package/lib/datasource/resolve-app.js +90 -8
- package/lib/datasource/test-e2e.js +2 -2
- package/lib/datasource/unified-validation-run-body.js +15 -1
- package/lib/datasource/unified-validation-run-resolve.js +2 -2
- package/lib/external-system/deploy-helpers.js +9 -5
- package/lib/external-system/deploy.js +2 -1
- package/lib/external-system/test-system-level.js +21 -3
- package/lib/external-system/test.js +4 -4
- package/lib/generator/builders.js +9 -15
- package/lib/infrastructure/index.js +19 -4
- package/lib/integration-definition/apply.js +478 -0
- package/lib/integration-definition/canonical-json.js +51 -0
- package/lib/integration-definition/emit-suite-bid.js +94 -0
- package/lib/integration-definition/enrich-crm-field-mappings.js +240 -0
- package/lib/integration-definition/enrich-openapi-operations.js +434 -0
- package/lib/integration-definition/from-discovery.js +339 -0
- package/lib/integration-definition/hash.js +37 -0
- package/lib/integration-definition/index.js +37 -0
- package/lib/integration-definition/openapi-enrichment/hubspot-crm-companies.json +205 -0
- package/lib/integration-definition/resource-type-catalog.js +59 -0
- package/lib/integration-definition/system-kind-enum.js +40 -0
- package/lib/integration-definition/validate.js +148 -0
- package/lib/programmatic/builder-api-request.js +5 -1
- package/lib/programmatic/builder-help-governance.js +3 -2
- package/lib/programmatic/capability-registry.js +19 -0
- package/lib/programmatic/openapi-component-schemas.js +6 -1
- package/lib/programmatic/openapi-descriptions.js +40 -0
- package/lib/programmatic/openapi-envelope-examples.js +269 -0
- package/lib/programmatic/openapi-operation-bindings.js +45 -0
- package/lib/programmatic/openapi-request-schemas.js +14 -0
- package/lib/programmatic/openapi-result-schemas-overflow.js +101 -0
- package/lib/programmatic/openapi-result-schemas.js +46 -99
- package/lib/programmatic/openapi-schema-descriptions-core.js +7 -4
- package/lib/programmatic/openapi-schema-descriptions-help.js +1 -1
- package/lib/programmatic/openapi-schema-descriptions-operations.js +24 -0
- package/lib/programmatic/openapi-schema-helpers.js +9 -9
- package/lib/programmatic/openapi-spec.js +11 -1
- package/lib/programmatic/orchestration-openapi-meta.js +10 -0
- package/lib/programmatic/route-handler-map.js +29 -1
- package/lib/programmatic/run-channel-package.js +236 -0
- package/lib/programmatic/run-integration-definition.js +69 -0
- package/lib/role-assistant/knowledge-markdown-frontmatter.js +75 -0
- package/lib/role-assistant/knowledge-sync-logging.js +58 -0
- package/lib/role-assistant/knowledge-sync.js +104 -89
- package/lib/role-assistant/test-cases-bid.js +155 -0
- package/lib/role-assistant/test-cases-evaluate.js +9 -1
- package/lib/role-assistant/test-cases-honesty.js +24 -10
- package/lib/role-assistant/test-cases.js +28 -0
- package/lib/role-assistant/test-runner-bid-apply.js +122 -0
- package/lib/role-assistant/test-runner-bid-document.js +278 -0
- package/lib/role-assistant/test-runner-workhub-answers.js +289 -46
- package/lib/role-assistant/test-runner-workhub.js +121 -25
- package/lib/role-assistant/test-suite.js +119 -0
- package/lib/schema/application-schema.json +64 -32
- package/lib/schema/external-datasource.schema.json +103 -17
- package/lib/schema/external-system.schema.json +54 -3
- package/lib/schema/infra.parameter.yaml +0 -20
- package/lib/schema/integration-definition.schema.json +195 -0
- package/lib/utils/authentication-shape.js +6 -0
- package/lib/utils/certify-external-workspace.js +40 -0
- package/lib/utils/docker-build.js +3 -3
- package/lib/utils/docker-run-ephemeral.js +77 -17
- package/lib/utils/health-check-public-warn.js +31 -13
- package/lib/utils/health-check.js +11 -1
- package/lib/utils/help-builder.js +1 -0
- package/lib/utils/paths.js +13 -15
- package/lib/utils/promote-dev-docker-image.js +97 -18
- package/lib/utils/role-assistant-paths.js +76 -14
- package/lib/utils/transient-developer-id.js +28 -0
- package/lib/utils/upload-sync-options.js +7 -4
- package/lib/validation/reserved-system-key-prefixes.js +56 -0
- package/lib/validation/validate.js +54 -19
- package/package.json +1 -1
- package/scripts/pnpm/af.mjs +24 -9
- package/scripts/pnpm/help.mjs +1 -1
- package/templates/applications/builder-api/application.yaml +3 -3
- package/templates/applications/dataplane/application.yaml +5 -5
- package/templates/applications/dataplane/env.template +8 -7
- package/templates/applications/dataplane/rbac.yaml +10 -10
- package/templates/applications/keycloak/application.yaml +2 -2
- package/templates/applications/keycloak/env.template +5 -2
- package/templates/applications/miso-controller/application.yaml +25 -11
- package/templates/applications/miso-controller/env.template +24 -5
- package/templates/channels/README.md +11 -1
- package/templates/channels/brand/color-192.png +0 -0
- package/templates/channels/brand/dark/128.png +0 -0
- package/templates/channels/brand/dark/192.png +0 -0
- package/templates/channels/brand/dark/256.png +0 -0
- package/templates/channels/brand/dark/32.png +0 -0
- package/templates/channels/brand/dark/512.png +0 -0
- package/templates/channels/brand/dark/64.png +0 -0
- package/templates/channels/brand/light/128.png +0 -0
- package/templates/channels/brand/light/192.png +0 -0
- package/templates/channels/brand/light/256.png +0 -0
- package/templates/channels/brand/light/32.png +0 -0
- package/templates/channels/brand/light/512.png +0 -0
- package/templates/channels/brand/light/64.png +0 -0
- package/templates/channels/brand/mono-white/128.png +0 -0
- package/templates/channels/brand/mono-white/192.png +0 -0
- package/templates/channels/brand/mono-white/256.png +0 -0
- package/templates/channels/brand/mono-white/32.png +0 -0
- package/templates/channels/brand/mono-white/512.png +0 -0
- package/templates/channels/brand/mono-white/64.png +0 -0
- package/templates/channels/brand/outline-32.png +0 -0
- package/templates/channels/chatgpt/install.template.md.hbs +76 -36
- package/templates/channels/chatgpt/integration/README.md +4 -4
- package/templates/channels/chatgpt/integration/chatgpt-system.json +1 -16
- package/templates/channels/chatgpt/manifest.template.json.hbs +3 -3
- package/templates/channels/microsoft-copilot/ai-plugin.template.json.hbs +10 -16
- package/templates/channels/microsoft-copilot/declarative-agent.template.json.hbs +5 -3
- package/templates/channels/microsoft-copilot/entra-sso-registration.template.md.hbs +27 -0
- package/templates/channels/microsoft-copilot/install.template.md.hbs +39 -20
- package/templates/channels/microsoft-copilot/integration/README.md +2 -3
- package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +1 -22
- package/templates/channels/microsoft-copilot/manifest.template.json.hbs +7 -7
- package/templates/channels/microsoft-copilot/oauth-plugin-vault-required.template.md.hbs +11 -0
- package/templates/channels/slack/install.template.md.hbs +6 -1
- package/templates/channels/slack/integration/README.md +2 -4
- package/templates/channels/teams-bot/install.template.md.hbs +4 -0
- package/templates/channels/teams-bot/integration/README.md +3 -5
- package/templates/channels/web-embed/integration/web-embed-system.json +1 -16
- package/templates/python/docker-compose.hbs +10 -0
- package/templates/typescript/docker-compose.hbs +10 -0
- /package/.cursor/plans/{Done → Archive}/157.1-security-quality-violations-by-type.csv +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
## Microsoft Entra SSO registration (Teams Developer Portal)
|
|
2
|
+
|
|
3
|
+
Direct URL:
|
|
4
|
+
|
|
5
|
+
{{{entraSsoRegistrationUrl}}}
|
|
6
|
+
|
|
7
|
+
Open **Tools → Microsoft Entra SSO client ID registration → Register client ID** (or New).
|
|
8
|
+
|
|
9
|
+
### Values to paste into the form
|
|
10
|
+
|
|
11
|
+
| Field | Value |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| Registration name | `{{appName}}` |
|
|
14
|
+
| Base URL | {{#if entraSsoBaseUrl}}`{{{entraSsoBaseUrl}}}`{{else}}*(missing — dataplane URL not resolved)*{{/if}} |
|
|
15
|
+
| Restrict usage by organization | My organization only (DEV) |
|
|
16
|
+
| Restrict usage by Teams app | Any Teams app (until the Teams app id is stable) |
|
|
17
|
+
| 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}} |
|
|
18
|
+
| Scope | {{#if entraSsoScope}}`{{entraSsoScope}}`{{else}}*(missing — set Runtime MCP delegated scopes on Trust source `microsoft-entra-id` `allowedScopes`; not openid/profile alone)*{{/if}} |
|
|
19
|
+
|
|
20
|
+
### Related (for your records)
|
|
21
|
+
|
|
22
|
+
{{#if mcpUrl}}- **Remote MCP URL (package):** `{{{mcpUrl}}}`{{/if}}
|
|
23
|
+
{{#if entraIssuer}}- **Entra issuer (Trust source):** `{{{entraIssuer}}}`{{/if}}
|
|
24
|
+
{{#if entraTenantId}}- **Tenant id:** `{{entraTenantId}}`{{/if}}
|
|
25
|
+
{{#if entraEnterpriseAppId}}- **Enterprise app id (Keycloak):** `{{entraEnterpriseAppId}}`{{/if}}
|
|
26
|
+
|
|
27
|
+
After Save, copy the **Microsoft Entra SSO registration ID** (auth config id). That value is `--oauth-plugin-vault-reference-id`.
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
{{appDescription}}
|
|
4
4
|
|
|
5
|
-
Environment: **{{environment}}**
|
|
5
|
+
Environment: **{{environment}}**
|
|
6
6
|
|
|
7
|
-
This channel
|
|
7
|
+
This channel uses **Microsoft Entra SSO** (trustedIssuer). Users already signed into
|
|
8
|
+
Microsoft 365 do **not** complete a separate AI Fabrix sign-in. Admin consent may still
|
|
9
|
+
apply for the Runtime MCP delegated scope.
|
|
8
10
|
|
|
9
11
|
```text
|
|
10
12
|
dist/channels/microsoft-copilot/source/manifest.json
|
|
@@ -13,42 +15,59 @@ dist/channels/microsoft-copilot/source/ai-plugin.json
|
|
|
13
15
|
dist/channels/microsoft-copilot/build/appPackage.{{environment}}.zip
|
|
14
16
|
```
|
|
15
17
|
|
|
16
|
-
##
|
|
18
|
+
## Install in Microsoft Teams
|
|
17
19
|
|
|
18
|
-
1.
|
|
19
|
-
2.
|
|
20
|
-
3.
|
|
21
|
-
4.
|
|
22
|
-
5.
|
|
23
|
-
6.
|
|
20
|
+
1. Open Microsoft Teams using your target Microsoft 365 account.
|
|
21
|
+
2. Select **Apps → Manage your apps**.
|
|
22
|
+
3. Select **Upload an app → Upload a custom app**.
|
|
23
|
+
4. Upload `appPackage.{{environment}}.zip`.
|
|
24
|
+
5. Review the requested permissions and select **Add**.
|
|
25
|
+
6. Open **{{appName}}** from your installed apps.
|
|
26
|
+
7. If prompted, complete **Entra / admin consent** for the Runtime MCP resource (not an AI Fabrix OAuth client login).
|
|
27
|
+
|
|
28
|
+
Upload only the ZIP package. Do not upload individual manifest files or `channel-microsoft-copilot.json`.
|
|
29
|
+
|
|
30
|
+
If **Upload a custom app** is unavailable, a Teams administrator must enable custom app uploads for your account in the Teams admin center or deploy the package centrally.
|
|
31
|
+
|
|
32
|
+
Do **not** configure AI Fabrix OAuth client secrets in Connected Systems → Authentication for this flow. Entra SSO uses the Teams OAuthPluginVault auth-config id.
|
|
24
33
|
|
|
25
34
|
## Runtime connection contract
|
|
26
35
|
|
|
27
36
|
- **Runtime system key:** `{{runtimeSystemKey}}`
|
|
28
|
-
- **Remote MCP URL:** `{{mcpUrl}}`
|
|
37
|
+
- **Remote MCP URL:** `{{{mcpUrl}}}`
|
|
29
38
|
- **Transport:** `{{runtimeTransport}}`
|
|
30
|
-
- **Auth mode:** `{{runtimeAuthMode}}`
|
|
31
|
-
- **
|
|
39
|
+
- **Auth mode:** `{{runtimeAuthMode}}` (Entra SSO / trustedIssuer; controller exchanges the Microsoft user token)
|
|
40
|
+
- **Plugin auth:** `OAuthPluginVault` · Teams auth-config reference id `{{oauthPluginVaultReferenceId}}`
|
|
41
|
+
{{#if entraIssuer}}- **Entra issuer (from Trust source):** `{{{entraIssuer}}}`{{/if}}
|
|
42
|
+
- **Delegated scopes:** {{#each scopes}}`{{this}}` {{else}}*(missing — package not install-ready)*{{/each}}
|
|
43
|
+
- **Install ready:** {{#if installReady}}yes{{else}}no{{#if discoveryBlocker}} ({{discoveryBlocker}}){{/if}}{{/if}}
|
|
44
|
+
- **Governed tools expected:**
|
|
32
45
|
{{#each layerBToolNames}}
|
|
33
46
|
- `{{this}}`
|
|
34
47
|
{{/each}}
|
|
35
48
|
|
|
49
|
+
{{> entraSsoRegistration}}
|
|
50
|
+
|
|
51
|
+
## Package links
|
|
52
|
+
|
|
53
|
+
- README / install guide: `INSTALL.md`
|
|
54
|
+
- Package ZIP: `build/appPackage.{{environment}}.zip`
|
|
36
55
|
## Assistant catalog
|
|
37
56
|
|
|
38
|
-
Runtime lists
|
|
57
|
+
Runtime lists the assistants available to the signed-in user from:
|
|
39
58
|
|
|
40
|
-
{{assistantCatalogUrl}}
|
|
59
|
+
{{{assistantCatalogUrl}}}
|
|
41
60
|
|
|
42
61
|
## Probe truthfulness
|
|
43
62
|
|
|
44
|
-
- `builderValidated` means package files, ZIP, hashes, and secret checks passed.
|
|
45
|
-
- `runtimeValidated` means Runtime MCP is reachable and tool boundary checks
|
|
46
|
-
- `requiresMicrosoftAdmin`
|
|
63
|
+
- `builderValidated` means package files, ZIP structure, hashes, and secret checks passed.
|
|
64
|
+
- `runtimeValidated` means Runtime MCP is reachable and its tool boundary checks passed.
|
|
65
|
+
- `requiresMicrosoftAdmin` means Microsoft-side installation or approval remains incomplete. A user may install the package directly when their Teams custom-app policy permits it; otherwise, Teams administrator action is required.
|
|
47
66
|
|
|
48
|
-
## Validate after
|
|
67
|
+
## Validate after Teams installation
|
|
49
68
|
|
|
50
69
|
```bash
|
|
51
|
-
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
|
|
70
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --oauth-plugin-vault-reference-id "{{oauthPluginVaultReferenceId}}" --probe
|
|
52
71
|
```
|
|
53
72
|
|
|
54
|
-
`--force` regenerates artifacts
|
|
73
|
+
`--force` regenerates the package artifacts. microsoft-copilot does not create Fabrix oauth2 channel credentials for Entra SSO.
|
|
@@ -5,9 +5,8 @@ Generated by `aifabrix channel scaffold microsoft-copilot`.
|
|
|
5
5
|
Recommended flow:
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
aifabrix upload microsoft-copilot --force
|
|
9
8
|
aifabrix channel add microsoft-copilot --name "Your Assistant" --probe
|
|
10
9
|
```
|
|
11
10
|
|
|
12
|
-
`channel add`
|
|
13
|
-
`dist/channels/microsoft-copilot/` for Microsoft 365 tenant admins.
|
|
11
|
+
`channel add` scaffolds (if needed), uploads when missing (always with `--force`), then
|
|
12
|
+
generates package artifacts under `dist/channels/microsoft-copilot/` for Microsoft 365 tenant admins.
|
|
@@ -6,28 +6,7 @@
|
|
|
6
6
|
"systemKind": "communication",
|
|
7
7
|
"enabled": true,
|
|
8
8
|
"authentication": {
|
|
9
|
-
"authType": "
|
|
10
|
-
"credential": {
|
|
11
|
-
"credentialKey": "microsoft-copilot-channel",
|
|
12
|
-
"displayName": "Microsoft Copilot package channel",
|
|
13
|
-
"method": "oauth2",
|
|
14
|
-
"writeOnce": true,
|
|
15
|
-
"variables": {
|
|
16
|
-
"baseUrl": "https://login.microsoftonline.com",
|
|
17
|
-
"authorizationUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
|
|
18
|
-
"tokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token",
|
|
19
|
-
"grantType": "authorization_code",
|
|
20
|
-
"scope": "openid profile offline_access"
|
|
21
|
-
},
|
|
22
|
-
"security": {
|
|
23
|
-
"clientId": "kv://microsoft-copilot/clientId",
|
|
24
|
-
"clientSecret": "kv://microsoft-copilot/clientSecret"
|
|
25
|
-
},
|
|
26
|
-
"formFields": [
|
|
27
|
-
{ "name": "clientId", "required": true },
|
|
28
|
-
{ "name": "clientSecret", "required": true }
|
|
29
|
-
]
|
|
30
|
-
}
|
|
9
|
+
"authType": "system"
|
|
31
10
|
},
|
|
32
11
|
"configuration": [],
|
|
33
12
|
"dataSources": [],
|
|
@@ -4,18 +4,18 @@
|
|
|
4
4
|
"version": "{{packageVersion}}",
|
|
5
5
|
"id": "{{packageAppId}}",
|
|
6
6
|
"name": {
|
|
7
|
-
"short": "{{
|
|
8
|
-
"full": "{{
|
|
7
|
+
"short": "{{shortName}}",
|
|
8
|
+
"full": "{{fullName}}"
|
|
9
9
|
},
|
|
10
10
|
"description": {
|
|
11
|
-
"short": "{{
|
|
12
|
-
"full": "{{
|
|
11
|
+
"short": "{{shortDescription}}",
|
|
12
|
+
"full": "{{fullDescription}}"
|
|
13
13
|
},
|
|
14
14
|
"developer": {
|
|
15
15
|
"name": "AI Fabrix",
|
|
16
|
-
"websiteUrl": "{{dataplaneBaseUrl}}",
|
|
17
|
-
"privacyUrl": "{{dataplaneBaseUrl}}/privacy",
|
|
18
|
-
"termsOfUseUrl": "{{dataplaneBaseUrl}}/terms"
|
|
16
|
+
"websiteUrl": "{{{dataplaneBaseUrl}}}",
|
|
17
|
+
"privacyUrl": "{{{dataplaneBaseUrl}}}/privacy",
|
|
18
|
+
"termsOfUseUrl": "{{{dataplaneBaseUrl}}}/terms"
|
|
19
19
|
},
|
|
20
20
|
"icons": {
|
|
21
21
|
"color": "color.png",
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
microsoft-copilot packaging requires `--oauth-plugin-vault-reference-id` with the Teams Entra SSO auth-config id.
|
|
2
|
+
|
|
3
|
+
Register Entra SSO in the Teams Developer Portal **before** packaging (no ZIP needed first), paste the values below, Save, then re-run with the registration id.
|
|
4
|
+
|
|
5
|
+
{{> entraSsoRegistration}}
|
|
6
|
+
|
|
7
|
+
Then:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
aifabrix channel add microsoft-copilot --name "{{baseName}}" --oauth-plugin-vault-reference-id "<Teams-Entra-SSO-registration-id>"
|
|
11
|
+
```
|
|
@@ -17,7 +17,7 @@ One Slack app delivers **Role Assistant** chat, **Work hub** shortcuts, and **do
|
|
|
17
17
|
5. Confirm **App Home → Messages tab** is **ON** in the manifest (required for bot DMs and proactive notifications; slash commands work without it).
|
|
18
18
|
6. Click **Create**, then open **Install App** → **Install to Workspace** and approve.
|
|
19
19
|
7. Copy **Bot User OAuth Token** and **Signing Secret** from the Slack app settings.
|
|
20
|
-
8. Save **Bot User OAuth Token** and **Signing Secret** in AI Fabrix: [Authentication settings]({{credentialPortalUrl}})
|
|
20
|
+
8. Save **Bot User OAuth Token** and **Signing Secret** in AI Fabrix: [Authentication settings]({{{credentialPortalUrl}}})
|
|
21
21
|
|
|
22
22
|
## Platform callback URLs
|
|
23
23
|
|
|
@@ -32,6 +32,11 @@ Configure these in your Slack app if you edit settings manually. Do not embed se
|
|
|
32
32
|
{{#if commandUrl}}
|
|
33
33
|
- **Slash commands:** {{commandUrl}}
|
|
34
34
|
{{/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).
|
|
35
40
|
|
|
36
41
|
Register these **V1** slash commands in the manifest (all use the same request URL):
|
|
37
42
|
|
|
@@ -30,9 +30,7 @@ Registered at `/api/v1/external/systems/slack/`:
|
|
|
30
30
|
## Workflow
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
|
-
aifabrix channel
|
|
34
|
-
aifabrix upload slack --force
|
|
35
|
-
aifabrix channel add slack --name "Your Assistant"
|
|
33
|
+
aifabrix channel add slack --name "Your Assistant" --probe
|
|
36
34
|
```
|
|
37
35
|
|
|
38
|
-
Publish template changes: `make sync-json` in dataplane → `aifabrix-builder/templates/channels/slack/integration/`.
|
|
36
|
+
Optional low-level: `channel scaffold` / `upload`. Publish template changes: `make sync-json` in dataplane → `aifabrix-builder/templates/channels/slack/integration/`.
|
|
@@ -44,6 +44,10 @@ Users message the bot with:
|
|
|
44
44
|
|
|
45
45
|
Review cards use **Approve**, **Reject**, and **Edit metadata** actions on the **Bot messages** endpoint. Proactive review notifications use the **Notifications** URL.
|
|
46
46
|
|
|
47
|
+
## Authentication
|
|
48
|
+
|
|
49
|
+
Teams bot authentication uses a **Microsoft token**. AI Fabrix controller performs token exchange — generated package and INSTALL files carry public connection specs only (no secrets).
|
|
50
|
+
|
|
47
51
|
## Assistant catalog
|
|
48
52
|
|
|
49
53
|
Runtime lists **assistants** available to each user from:
|
|
@@ -8,11 +8,9 @@ SSOT for Teams Bot Framework communication channel — **Role Assistants** and *
|
|
|
8
8
|
- **Document approval:** `documents`, `document`, `approve`, `help` bot commands; review Adaptive Cards; proactive `/notifications`
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
|
-
|
|
12
|
-
aifabrix validate teams-bot
|
|
13
|
-
aifabrix upload teams-bot --probe
|
|
14
|
-
aifabrix deploy teams-bot
|
|
15
|
-
aifabrix channel add teams-bot --name "Your Assistant"
|
|
11
|
+
aifabrix channel add teams-bot --name "Your Assistant" --probe
|
|
16
12
|
```
|
|
17
13
|
|
|
14
|
+
Optional low-level (dataplane fixture tree): `validate` / `upload` / `deploy` before add.
|
|
15
|
+
|
|
18
16
|
Authentication: oidc — prefilled discovery settings; operators add Microsoft App ID + client secret on Connected Systems → Authentication.
|
|
@@ -6,22 +6,7 @@
|
|
|
6
6
|
"systemKind": "communication",
|
|
7
7
|
"enabled": true,
|
|
8
8
|
"authentication": {
|
|
9
|
-
"authType": "
|
|
10
|
-
"credential": {
|
|
11
|
-
"credentialKey": "web-embed-channel",
|
|
12
|
-
"displayName": "Web embed assistant channel",
|
|
13
|
-
"method": "apikey",
|
|
14
|
-
"writeOnce": true,
|
|
15
|
-
"variables": {
|
|
16
|
-
"baseUrl": "https://embed.aifabrix.dev"
|
|
17
|
-
},
|
|
18
|
-
"security": {
|
|
19
|
-
"apiKey": "kv://web-embed/apiKey"
|
|
20
|
-
},
|
|
21
|
-
"formFields": [
|
|
22
|
-
{ "name": "apiKey", "required": true }
|
|
23
|
-
]
|
|
24
|
-
}
|
|
9
|
+
"authType": "system"
|
|
25
10
|
},
|
|
26
11
|
"configuration": [],
|
|
27
12
|
"dataSources": [],
|
|
@@ -53,6 +53,10 @@ services:
|
|
|
53
53
|
{{/if}}
|
|
54
54
|
env_file:
|
|
55
55
|
- {{envFile}}
|
|
56
|
+
{{#if devMountPath}}
|
|
57
|
+
# Bind-mount replaces /app and hides image ENTRYPOINT scripts (e.g. docker-entrypoint.sh).
|
|
58
|
+
entrypoint: []
|
|
59
|
+
{{/if}}
|
|
56
60
|
{{#if reloadStartCommand}}
|
|
57
61
|
command: ["sh", "-c", "cd /app && {{{reloadStartCommand}}}"]
|
|
58
62
|
{{/if}}
|
|
@@ -111,6 +115,9 @@ services:
|
|
|
111
115
|
- LOCAL_MODE=false
|
|
112
116
|
env_file:
|
|
113
117
|
- {{envFile}}
|
|
118
|
+
{{#if devMountPath}}
|
|
119
|
+
entrypoint: []
|
|
120
|
+
{{/if}}
|
|
114
121
|
command: ["sh", "-c", "cd /app && {{{workerSidecars.worker.command}}}"]
|
|
115
122
|
networks:
|
|
116
123
|
- {{networkName}}
|
|
@@ -136,6 +143,9 @@ services:
|
|
|
136
143
|
- LOCAL_MODE=false
|
|
137
144
|
env_file:
|
|
138
145
|
- {{envFile}}
|
|
146
|
+
{{#if devMountPath}}
|
|
147
|
+
entrypoint: []
|
|
148
|
+
{{/if}}
|
|
139
149
|
command: ["sh", "-c", "cd /app && {{{workerSidecars.beat.command}}}"]
|
|
140
150
|
networks:
|
|
141
151
|
- {{networkName}}
|
|
@@ -53,6 +53,10 @@ services:
|
|
|
53
53
|
{{/if}}
|
|
54
54
|
env_file:
|
|
55
55
|
- {{envFile}}
|
|
56
|
+
{{#if devMountPath}}
|
|
57
|
+
# Bind-mount replaces /app and hides image ENTRYPOINT scripts (e.g. docker-entrypoint.sh).
|
|
58
|
+
entrypoint: []
|
|
59
|
+
{{/if}}
|
|
56
60
|
{{#if reloadStartCommand}}
|
|
57
61
|
command: ["sh", "-c", "cd /app && {{reloadStartCommand}}"]
|
|
58
62
|
{{/if}}
|
|
@@ -111,6 +115,9 @@ services:
|
|
|
111
115
|
- LOCAL_MODE=false
|
|
112
116
|
env_file:
|
|
113
117
|
- {{envFile}}
|
|
118
|
+
{{#if devMountPath}}
|
|
119
|
+
entrypoint: []
|
|
120
|
+
{{/if}}
|
|
114
121
|
command: ["sh", "-c", "cd /app && {{{workerSidecars.worker.command}}}"]
|
|
115
122
|
networks:
|
|
116
123
|
- {{networkName}}
|
|
@@ -134,6 +141,9 @@ services:
|
|
|
134
141
|
- LOCAL_MODE=false
|
|
135
142
|
env_file:
|
|
136
143
|
- {{envFile}}
|
|
144
|
+
{{#if devMountPath}}
|
|
145
|
+
entrypoint: []
|
|
146
|
+
{{/if}}
|
|
137
147
|
command: ["sh", "-c", "cd /app && {{{workerSidecars.beat.command}}}"]
|
|
138
148
|
networks:
|
|
139
149
|
- {{networkName}}
|
|
File without changes
|