@aifabrix/builder 2.52.0 → 2.53.0
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/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/deploy-config.js +3 -2
- package/lib/app/down.js +16 -1
- package/lib/channels/add-channel.js +134 -57
- package/lib/channels/approval-guides/chatgpt.js +1 -1
- package/lib/channels/approval-guides/index.js +3 -0
- package/lib/channels/approval-guides/microsoft-copilot.js +27 -14
- package/lib/channels/channel-add-ensure.js +128 -0
- package/lib/channels/channel-add-existing.js +72 -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 +107 -14
- package/lib/channels/channel-status-display.js +36 -3
- package/lib/channels/microsoft-copilot-channel-add.js +138 -0
- package/lib/channels/microsoft-copilot-entra-sso-form.js +251 -0
- package/lib/channels/microsoft-copilot-entra-sso.js +285 -0
- package/lib/channels/microsoft-copilot-icons.js +74 -0
- package/lib/channels/microsoft-copilot-limits.js +103 -0
- package/lib/channels/microsoft-copilot-package.js +178 -52
- package/lib/channels/microsoft-copilot-validate.js +227 -0
- package/lib/cli/attach-default-help-examples.js +102 -0
- package/lib/cli/index.js +4 -0
- package/lib/cli/infra-guided.js +13 -6
- package/lib/cli/setup-credential-deployment.js +7 -5
- package/lib/cli/setup-infra.js +31 -4
- package/lib/cli/setup-utility-validate.js +1 -0
- package/lib/commands/channel-add-setup.js +28 -9
- package/lib/commands/channel.js +14 -10
- package/lib/commands/credential-push.js +37 -5
- package/lib/commands/integration-definition.js +158 -0
- package/lib/commands/package-score.js +72 -0
- 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 +163 -166
- package/lib/datasource/capability/capability-resolve.js +15 -5
- package/lib/datasource/capability/copy-operations.js +14 -4
- package/lib/deployment/deployer-poll-run.js +2 -2
- package/lib/deployment/deployer.js +1 -1
- package/lib/deployment/environment.js +2 -2
- package/lib/external-system/deploy.js +11 -21
- package/lib/infrastructure/index.js +19 -4
- package/lib/integration-definition/apply.js +476 -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 +433 -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/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/lab/package-parity-score.js +417 -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 +20 -0
- package/lib/programmatic/help-content/channel-onboarding.md +35 -0
- package/lib/programmatic/help-content/cip-overview.md +27 -0
- package/lib/programmatic/help-content/connected-system-ui.md +70 -0
- package/lib/programmatic/help-content/dimensions-guide.md +23 -0
- package/lib/programmatic/help-content/enterprise-sync-fabrix.md +123 -0
- package/lib/programmatic/help-content/overview.md +25 -0
- package/lib/programmatic/help-content/subscription-guide.md +27 -0
- package/lib/programmatic/help-content/workflow.md +50 -0
- package/lib/programmatic/openapi-component-schemas.js +7 -1
- package/lib/programmatic/openapi-descriptions.js +46 -0
- package/lib/programmatic/openapi-envelope-examples.js +280 -0
- package/lib/programmatic/openapi-operation-bindings.js +50 -0
- package/lib/programmatic/openapi-request-schemas.js +40 -0
- package/lib/programmatic/openapi-result-schemas-overflow.js +101 -0
- package/lib/programmatic/openapi-result-schemas.js +76 -99
- package/lib/programmatic/openapi-schema-descriptions-core.js +25 -4
- package/lib/programmatic/openapi-schema-descriptions-help.js +1 -1
- package/lib/programmatic/openapi-schema-descriptions-operations.js +43 -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/persist-supplied-openapi.js +180 -0
- package/lib/programmatic/route-handler-map.js +35 -1
- package/lib/programmatic/run-channel-package.js +236 -0
- package/lib/programmatic/run-integration-definition.js +77 -0
- package/lib/role-assistant/evidence-sync.js +55 -7
- package/lib/role-assistant/knowledge-sync-logging.js +58 -0
- package/lib/role-assistant/knowledge-sync.js +88 -93
- 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-attachments.js +118 -0
- package/lib/role-assistant/test-runner-bid-apply.js +201 -0
- package/lib/role-assistant/test-runner-bid-document.js +278 -0
- package/lib/role-assistant/test-runner-start-payload.js +96 -0
- package/lib/role-assistant/test-runner-workhub-answers.js +249 -20
- package/lib/role-assistant/test-runner-workhub-helpers.js +100 -0
- package/lib/role-assistant/test-runner-workhub-soft.js +86 -0
- package/lib/role-assistant/test-runner-workhub.js +152 -107
- package/lib/role-assistant/test-runner.js +5 -63
- package/lib/role-assistant/test-suite.js +112 -0
- package/lib/schema/application-schema.json +56 -6
- package/lib/schema/external-datasource.schema.json +103 -17
- package/lib/schema/external-system.schema.json +54 -3
- package/lib/schema/integration-definition.schema.json +195 -0
- package/lib/utils/authentication-shape.js +6 -0
- package/lib/utils/compose-generator.js +10 -1
- package/lib/utils/compose-traefik-extra-routes.js +107 -0
- package/lib/utils/docker-build.js +2 -2
- package/lib/utils/help-builder.js +3 -1
- package/lib/utils/promote-dev-docker-image.js +102 -18
- package/lib/utils/transient-developer-id.js +28 -0
- package/package.json +14 -16
- package/templates/README.md +12 -1
- package/templates/applications/dataplane/application.yaml +10 -2
- package/templates/applications/dataplane/env.template +7 -6
- package/templates/applications/miso-controller/application.yaml +23 -8
- package/templates/applications/miso-controller/env.template +8 -2
- package/templates/applications/miso-controller/rbac.yaml +1 -0
- 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 +6 -4
- package/templates/channels/chatgpt/integration/README.md +4 -5
- package/templates/channels/chatgpt/integration/chatgpt-system.json +1 -16
- package/templates/channels/microsoft-copilot/ai-plugin.template.json.hbs +14 -16
- package/templates/channels/microsoft-copilot/declarative-agent.template.json.hbs +5 -3
- package/templates/channels/microsoft-copilot/entra-sso-registration.template.md.hbs +30 -0
- package/templates/channels/microsoft-copilot/fi-fi.template.json.hbs +7 -0
- package/templates/channels/microsoft-copilot/install.template.md.hbs +93 -22
- 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 +34 -19
- package/templates/channels/microsoft-copilot/oauth-plugin-vault-required.template.md.hbs +15 -0
- 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 +36 -0
- package/templates/typescript/docker-compose.hbs +36 -0
- package/.cursor/plans/Done/157.1-security-quality-violations-by-type.csv +0 -374
- package/.cursor/process/README.md +0 -9
- package/.cursor/rules/anchor-docs.mdc +0 -15
- package/.cursor/rules/assistant-driven-integration-build.mdc +0 -40
- package/.cursor/rules/cli-layout.mdc +0 -81
- package/.cursor/rules/cli-product-neutral.mdc +0 -43
- package/.cursor/rules/deploy-rules/docker-image-ip-policy.mdc +0 -49
- package/.cursor/rules/docs-rules.mdc +0 -32
- package/.cursor/rules/plan-rules/application-lifecycle.mdc +0 -30
- package/.cursor/rules/plan-rules/plan-frontmatter.mdc +0 -35
- package/.cursor/rules/plan-rules/plan-lifecycle.mdc +0 -31
- package/.cursor/rules/plan-rules/plan-validation-gate.mdc +0 -34
- package/.cursor/rules/project-rules.mdc +0 -913
- package/.cursor/skills/README.md +0 -15
- package/.dockerignore +0 -52
- package/.eslintignore +0 -22
- package/.markdownlint.json +0 -14
- package/anchor-docs/README.md +0 -10
- package/anchor-docs/_TEMPLATE +0 -24
- package/babel.config.js +0 -6
- package/bin/builder-api-cleanup.js +0 -26
- package/bin/builder-api-nest.js +0 -10
- package/bin/builder-api-spike.js +0 -19
- package/enterprise-knowledge/README.md +0 -50
- package/enterprise-knowledge/enterprise-integration-lifecycle/README.md +0 -22
- package/enterprise-knowledge/enterprise-integration-lifecycle/application.json +0 -15
- package/enterprise-knowledge/enterprise-integration-lifecycle/deploy.js +0 -69
- package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-deploy.json +0 -52
- package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-system.json +0 -29
- package/enterprise-knowledge/enterprise-integration-lifecycle/env.template +0 -2
- package/integration/README.md +0 -81
- package/integration/github/README.md +0 -53
- package/integration/github/application.json +0 -21
- package/integration/github/deploy.js +0 -72
- package/integration/github/env.template +0 -11
- package/integration/github/github-datasource-issue-comments.json +0 -239
- package/integration/github/github-datasource-issues.json +0 -399
- package/integration/github/github-datasource-repository.json +0 -354
- package/integration/github/github-deploy.json +0 -1202
- package/integration/github/github-system.json +0 -82
- package/integration/hubspot-test/README.md +0 -159
- package/integration/hubspot-test/application.json +0 -54
- package/integration/hubspot-test/companies.json +0 -2048
- package/integration/hubspot-test/create-hubspot.js +0 -523
- package/integration/hubspot-test/env.template +0 -4
- package/integration/hubspot-test/hubspot-test-datasource-company.json +0 -138
- package/integration/hubspot-test/hubspot-test-datasource-contact.json +0 -146
- package/integration/hubspot-test/hubspot-test-datasource-deal.json +0 -146
- package/integration/hubspot-test/hubspot-test-datasource-users.json +0 -76
- package/integration/hubspot-test/hubspot-test-deploy.json +0 -2160
- package/integration/hubspot-test/hubspot-test-system.json +0 -74
- package/integration/hubspot-test/rbac.json +0 -166
- package/integration/hubspot-test/test-artifacts/wizard-hubspot-credential-real.yaml +0 -20
- package/integration/hubspot-test/test-artifacts/wizard-hubspot-env-vars.yaml +0 -9
- package/integration/hubspot-test/test-artifacts/wizard-invalid-add-datasource.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-invalid-app-name.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-invalid-credential-create.yaml +0 -7
- package/integration/hubspot-test/test-artifacts/wizard-invalid-credential-select.yaml +0 -7
- package/integration/hubspot-test/test-artifacts/wizard-invalid-known-platform.yaml +0 -4
- package/integration/hubspot-test/test-artifacts/wizard-invalid-missing-app.yaml +0 -4
- package/integration/hubspot-test/test-artifacts/wizard-invalid-missing-source.yaml +0 -2
- package/integration/hubspot-test/test-artifacts/wizard-invalid-mode.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-invalid-openapi-file.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-invalid-openapi-url.yaml +0 -4
- package/integration/hubspot-test/test-artifacts/wizard-invalid-source.yaml +0 -4
- package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-array-test.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-key-test.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-path-test.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-test.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-valid-for-rbac-test.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-valid-for-rbac-yaml-test.yaml +0 -5
- package/integration/hubspot-test/test-dataplane-down-helpers.js +0 -249
- package/integration/hubspot-test/test-dataplane-down-tests.js +0 -386
- package/integration/hubspot-test/test-dataplane-down.js +0 -209
- package/integration/hubspot-test/test.js +0 -1588
- package/integration/hubspot-test/wizard-hubspot-e2e.yaml +0 -16
- package/integration/hubspot-test/wizard-hubspot-platform.yaml +0 -8
- package/integration/hubspot-test/wizard-hubspot-test-headless.yaml +0 -23
- package/integration/roundtrip-test-local/README.md +0 -143
- package/integration/roundtrip-test-local/application.yaml +0 -13
- package/integration/roundtrip-test-local/env.template +0 -15
- package/integration/roundtrip-test-local/roundtrip-test-local-datasource-roundtrip-test-company.yaml +0 -14
- package/integration/roundtrip-test-local/roundtrip-test-local-deploy.json +0 -61
- package/integration/roundtrip-test-local/roundtrip-test-local-system.yaml +0 -25
- package/integration/roundtrip-test-local2/README.md +0 -143
- package/integration/roundtrip-test-local2/application.yaml +0 -13
- package/integration/roundtrip-test-local2/env.template +0 -15
- package/integration/roundtrip-test-local2/roundtrip-test-local2-datasource-company.yaml +0 -31
- package/integration/roundtrip-test-local2/roundtrip-test-local2-deploy.json +0 -86
- package/integration/roundtrip-test-local2/roundtrip-test-local2-system.yaml +0 -25
- package/integration/test/wizard.yaml +0 -8
- package/jest.config.coverage.js +0 -37
- package/jest.config.default.js +0 -11
- package/jest.config.integration.fixtures.js +0 -22
- package/jest.config.integration.js +0 -33
- package/jest.config.isolated.js +0 -11
- package/jest.config.manual.js +0 -30
- package/jest.global-live-fabrix-hooks.js +0 -36
- package/jest.isolated-projects.js +0 -260
- package/jest.projects.js +0 -76
- package/packages/builder-api/README.md +0 -120
- package/packages/builder-api/package.json +0 -30
- package/packages/builder-api/src/app.module.ts +0 -7
- package/packages/builder-api/src/auth/auth.module.ts +0 -5
- package/packages/builder-api/src/external-system/external-system.module.ts +0 -5
- package/packages/builder-api/src/main.ts +0 -16
- package/packages/builder-api/tsconfig.json +0 -15
- package/scripts/check-builder-api-architecture-grep.js +0 -79
- package/scripts/check-datasource-test-run-schema-sync.js +0 -34
- package/scripts/ci-fix.sh +0 -19
- package/scripts/ci-simulate.sh +0 -19
- package/scripts/diagnose-cli.js +0 -150
- package/scripts/docker_image_content_gate.js +0 -47
- package/scripts/docker_image_content_gate.sh +0 -5
- package/scripts/export-builder-api-evidence.js +0 -262
- package/scripts/install-local.js +0 -490
- package/scripts/lib/builder-api-docker-staging-copy.js +0 -60
- package/scripts/lib/builder-api-docker-staging-core.js +0 -183
- package/scripts/lib/docker-image-content-gate-core.js +0 -166
- package/scripts/lib/plan-actor.js +0 -109
- package/scripts/lib/plan-config.js +0 -20
- package/scripts/lib/plan-gates.js +0 -154
- package/scripts/lib/plan-meta.js +0 -104
- package/scripts/lib/plan-parse.js +0 -162
- package/scripts/lib/plan-prevalidate-gates.js +0 -337
- package/scripts/lib/plan-run-core.js +0 -125
- package/scripts/lib/plan-run-report.js +0 -119
- package/scripts/plan-approve.js +0 -24
- package/scripts/plan-archive.js +0 -49
- package/scripts/plan-run.js +0 -13
- package/scripts/plan-set-actor.js +0 -21
- package/scripts/plan-validate.js +0 -80
- package/scripts/pnpm/af.mjs +0 -110
- package/scripts/pnpm/check-quiet.mjs +0 -32
- package/scripts/pnpm/dev-install.mjs +0 -29
- package/scripts/pnpm/dev-reload.mjs +0 -18
- package/scripts/pnpm/help.mjs +0 -55
- package/scripts/pnpm/lib/dev-reload-core.mjs +0 -189
- package/scripts/pnpm/lib/dev-reload-log-capture.mjs +0 -67
- package/scripts/pnpm/lib/dev-reload-log-utils.mjs +0 -32
- package/scripts/pnpm/lib/resolve-aifabrix-bin.mjs +0 -124
- package/scripts/pnpm/lib/resolve-app-url.mjs +0 -183
- package/scripts/pnpm/lib/spinner.mjs +0 -42
- package/scripts/pnpm-global-remove.js +0 -48
- package/scripts/stage_builder_api_for_docker.js +0 -65
- package/scripts/sync-builder-api-template.js +0 -44
- package/scripts/test-dataplane-bootstrap.js +0 -331
|
@@ -74,8 +74,8 @@ ENABLE_API_DOCS=true
|
|
|
74
74
|
# Rate Limiting Configuration (for local development)
|
|
75
75
|
# Set DISABLE_RATE_LIMIT=true to disable rate limiting entirely (local development only)
|
|
76
76
|
DISABLE_RATE_LIMIT=true
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
RATE_LIMIT_WINDOW_MS=600000
|
|
78
|
+
RATE_LIMIT_MAX=100
|
|
79
79
|
|
|
80
80
|
# Package Version (auto-set by npm/pnpm, optional override)
|
|
81
81
|
# npm_package_version=1.0.0
|
|
@@ -142,6 +142,11 @@ KEYCLOAK_VERIFY_AUDIENCE=false
|
|
|
142
142
|
KEYCLOAK_TOKEN_TIMEOUT=5000
|
|
143
143
|
KEYCLOAK_DEFAULT_PASSWORD=kv://keycloak-default-passwordKeyVault
|
|
144
144
|
|
|
145
|
+
# Password setup for new local users (plan 209.0)
|
|
146
|
+
# email = send invitation email so the user sets their own password (default)
|
|
147
|
+
# admin-reveal = show a one-time temporary password to the admin (labs / no mail)
|
|
148
|
+
IDENTITY_LOCAL_PASSWORD_MODE=admin-reveal
|
|
149
|
+
|
|
145
150
|
# Keycloak Events Configuration
|
|
146
151
|
KEYCLOAK_EVENTS_ENABLED=true
|
|
147
152
|
KEYCLOAK_EVENTS_VERIFY_SIGNATURE=true
|
|
@@ -317,6 +322,7 @@ MORI_PASSWORD=kv://mori-controller-basic-passwordKeyVault
|
|
|
317
322
|
# LOG_FILE_PATH=/mnt/data/logs via deploy JSON and ensure the directory exists.
|
|
318
323
|
|
|
319
324
|
LOG_TO_FILE=true
|
|
325
|
+
LOG_LEVEL=info
|
|
320
326
|
LOG_FILE_PATH=./logs
|
|
321
327
|
|
|
322
328
|
# =============================================================================
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Channel integration templates
|
|
2
2
|
|
|
3
|
-
Published copies of communication external-system manifests for `aifabrix channel scaffold <target
|
|
3
|
+
Published copies of communication external-system manifests for `aifabrix channel scaffold <target>` (also used automatically by `aifabrix channel add`).
|
|
4
4
|
|
|
5
5
|
## SSOT
|
|
6
6
|
|
|
@@ -13,6 +13,16 @@ Published copies of communication external-system manifests for `aifabrix channe
|
|
|
13
13
|
|
|
14
14
|
Do **not** hardcode manifests in `lib/channels/*.js`.
|
|
15
15
|
|
|
16
|
+
## Brand icons (`brand/`)
|
|
17
|
+
|
|
18
|
+
Default AI Fabrix app icons for channel packages (from product icon pack).
|
|
19
|
+
|
|
20
|
+
| File / folder | Use |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| `color-192.png` | Microsoft Copilot / Teams `color.png` (192×192) |
|
|
23
|
+
| `outline-32.png` | Microsoft Copilot / Teams `outline.png` (32×32 mono) |
|
|
24
|
+
| `light/`, `dark/`, `mono-white/` | Size variants 32–512 for overrides / other surfaces |
|
|
25
|
+
|
|
16
26
|
## Slack App manifest (install)
|
|
17
27
|
|
|
18
28
|
`manifest.template.json.hbs` and `install.template.md.hbs` are for `aifabrix channel add slack` (Slack developer portal), separate from the external-system integration tree above.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -54,7 +54,7 @@ Before ChatGPT can connect successfully, the MCP deployment must meet all of the
|
|
|
54
54
|
|
|
55
55
|
If this development endpoint is deliberately anonymous, select **No authentication** instead and declare `noauth` on the applicable tools. Do not describe the app as “OAuth or API key”; the selected mechanism must match the behavior advertised by the MCP server.
|
|
56
56
|
|
|
57
|
-
## Expected
|
|
57
|
+
## Expected governed tools
|
|
58
58
|
|
|
59
59
|
ChatGPT should discover the following tools from the live MCP server during **Scan tools**:
|
|
60
60
|
|
|
@@ -62,12 +62,14 @@ ChatGPT should discover the following tools from the live MCP server during **Sc
|
|
|
62
62
|
- `{{this}}`
|
|
63
63
|
{{/each}}
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
{{#if installReady}}Install ready: yes{{else}}Install ready: no{{#if discoveryBlocker}} ({{discoveryBlocker}}){{/if}}{{/if}}
|
|
66
|
+
|
|
67
|
+
The live server response is authoritative. This list is an expected deployment contract from External AI Discovery, not a substitute for MCP tool discovery.
|
|
66
68
|
|
|
67
69
|
## Runtime and Role Assistant boundaries
|
|
68
70
|
|
|
69
71
|
- Runtime resolves assistants dynamically for the current user from `{{{assistantCatalogUrl}}}`.
|
|
70
|
-
- ChatGPT's top-level tool surface remains limited to the
|
|
72
|
+
- ChatGPT's top-level tool surface remains limited to the governed tools listed above.
|
|
71
73
|
- Evidence authoring remains an internal Business Transformation Assistant capability. It is reached through `ChatGPT → runtime-orchestration → Business Transformation Assistant → internal evidence capabilities` and is not exposed as a top-level ChatGPT tool.
|
|
72
74
|
- One authenticated Runtime connection can support multiple Role Assistants, subject to the current user's authorization.
|
|
73
75
|
|
|
@@ -90,7 +92,7 @@ Then run the AI Fabrix probe:
|
|
|
90
92
|
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
|
|
91
93
|
```
|
|
92
94
|
|
|
93
|
-
The probe should validate Runtime through the first-party MCP gateway, including
|
|
95
|
+
The probe should validate Runtime through the first-party MCP gateway, including governed tool discovery and BTA Evidence-authoring reachability. A successful AI Fabrix probe does not replace ChatGPT's own **Scan tools**, OAuth, and workspace publication checks.
|
|
94
96
|
|
|
95
97
|
Use `--force` only to regenerate artifacts and patch channel metadata. It does not rotate credentials.
|
|
96
98
|
|
|
@@ -5,11 +5,10 @@ Generated by `aifabrix channel scaffold chatgpt`.
|
|
|
5
5
|
Recommended flow:
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
aifabrix upload chatgpt --force
|
|
9
8
|
aifabrix channel add chatgpt --name "Your Assistant" --probe
|
|
10
9
|
```
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
`INSTALL.md`. Those files are
|
|
14
|
-
connects to the remote Runtime MCP URL
|
|
15
|
-
install the JSON as a plugin archive.
|
|
11
|
+
`channel add` scaffolds (if needed), uploads when missing (always with `--force`), then
|
|
12
|
+
generates `dist/channels/chatgpt/channel-chatgpt.json` and `INSTALL.md`. Those files are
|
|
13
|
+
deployment references for workspace admins: ChatGPT connects to the remote Runtime MCP URL
|
|
14
|
+
(OAuth) and discovers tools; it does not install the JSON as a plugin archive.
|
|
@@ -6,22 +6,7 @@
|
|
|
6
6
|
"systemKind": "communication",
|
|
7
7
|
"enabled": true,
|
|
8
8
|
"authentication": {
|
|
9
|
-
"authType": "
|
|
10
|
-
"credential": {
|
|
11
|
-
"credentialKey": "chatgpt-channel",
|
|
12
|
-
"displayName": "ChatGPT custom MCP app channel",
|
|
13
|
-
"method": "apikey",
|
|
14
|
-
"writeOnce": true,
|
|
15
|
-
"variables": {
|
|
16
|
-
"baseUrl": "https://api.openai.com/v1"
|
|
17
|
-
},
|
|
18
|
-
"security": {
|
|
19
|
-
"apiKey": "kv://chatgpt/apiKey"
|
|
20
|
-
},
|
|
21
|
-
"formFields": [
|
|
22
|
-
{ "name": "apiKey", "required": true }
|
|
23
|
-
]
|
|
24
|
-
}
|
|
9
|
+
"authType": "system"
|
|
25
10
|
},
|
|
26
11
|
"configuration": [],
|
|
27
12
|
"dataSources": [],
|
|
@@ -1,28 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://developer.microsoft.com/json-schemas/copilot/plugin/v2.4/schema.json",
|
|
3
3
|
"schema_version": "v2.4",
|
|
4
|
-
"name_for_human": "{{
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
4
|
+
"name_for_human": "{{pluginNameForHuman}}",
|
|
5
|
+
"description_for_human": "{{pluginDescriptionForHuman}}",
|
|
6
|
+
"description_for_model": "Governed enterprise work tools for Role Assistants. Prefer discovery tool names only; resolve Role Assistants dynamically for the signed-in user. For listing available Role Assistants use work.roles; use assistant.describe only when an assistantKey is already known.",
|
|
7
|
+
"namespace": "{{pluginNamespace}}",
|
|
8
|
+
"privacy_policy_url": "{{{dataplaneBaseUrl}}}/privacy",
|
|
9
|
+
"legal_info_url": "{{{dataplaneBaseUrl}}}/terms",
|
|
10
|
+
"functions": [],
|
|
8
11
|
"runtimes": [
|
|
9
12
|
{
|
|
10
13
|
"type": "RemoteMCPServer",
|
|
11
14
|
"spec": {
|
|
12
|
-
"url": "{{mcpUrl}}"
|
|
15
|
+
"url": "{{{mcpUrl}}}"
|
|
13
16
|
},
|
|
17
|
+
"run_for_functions": [
|
|
18
|
+
"*"
|
|
19
|
+
],
|
|
14
20
|
"auth": {
|
|
15
|
-
"type": "
|
|
16
|
-
"
|
|
21
|
+
"type": "OAuthPluginVault",
|
|
22
|
+
"reference_id": "{{{oauthPluginVaultReferenceId}}}"
|
|
17
23
|
}
|
|
18
24
|
}
|
|
19
|
-
]
|
|
20
|
-
"mcp_tool_description": {
|
|
21
|
-
"mode": "dynamic",
|
|
22
|
-
"layerBToolNames": [
|
|
23
|
-
{{#each layerBToolNames}}
|
|
24
|
-
"{{this}}"{{#unless @last}},{{/unless}}
|
|
25
|
-
{{/each}}
|
|
26
|
-
]
|
|
27
|
-
}
|
|
25
|
+
]
|
|
28
26
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
+
"$schema": "https://developer.microsoft.com/json-schemas/copilot/declarative-agent/v1.4/schema.json",
|
|
3
|
+
"version": "v1.4",
|
|
2
4
|
"id": "{{packageAppId}}-agent",
|
|
3
|
-
"name": "{{
|
|
4
|
-
"description": "{{
|
|
5
|
-
"instructions": "Use
|
|
5
|
+
"name": "{{fullName}}",
|
|
6
|
+
"description": "{{fullDescription}}",
|
|
7
|
+
"instructions": "Use governed enterprise work tools only. Resolve Role Assistants dynamically and keep business reasoning inside authorized Role Assistant boundaries.",
|
|
6
8
|
"conversation_starters": [
|
|
7
9
|
{
|
|
8
10
|
"title": "Show my role assistants",
|
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
Do this **before** organisation publish. The registration / auth-config ID becomes `--oauth-plugin-vault-reference-id`. It is **not** the Entra Client (application) ID.
|
|
10
|
+
|
|
11
|
+
### Values to paste into the form
|
|
12
|
+
|
|
13
|
+
| Field | Value |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| Registration name | `{{appName}}` |
|
|
16
|
+
| Base URL | {{#if entraSsoBaseUrl}}`{{{entraSsoBaseUrl}}}`{{else}}*(missing — Remote MCP URL not resolved)*{{/if}} |
|
|
17
|
+
| Restrict usage by organization | My organization only |
|
|
18
|
+
| Restrict usage by Teams app | Stable Teams app / manifest ID `{{packageAppId}}` (known before Import — bind to this ID at registration; do not use “Any Teams app”) |
|
|
19
|
+
| 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
|
+
| Scope | {{#if entraSsoScope}}`{{entraSsoScope}}`{{else}}*(missing — set Runtime MCP delegated scopes on Trust source `microsoft-entra-id` `allowedScopes`; not openid/profile alone)*{{/if}} |
|
|
21
|
+
|
|
22
|
+
### Related (for your records)
|
|
23
|
+
|
|
24
|
+
{{#if mcpUrl}}- **Remote MCP URL (package):** `{{{mcpUrl}}}`{{/if}}
|
|
25
|
+
{{#if packageAppId}}- **Teams app / manifest ID:** `{{packageAppId}}` (preserve on Import app — do not create a new unrelated app){{/if}}
|
|
26
|
+
{{#if entraIssuer}}- **Entra issuer (Trust source):** `{{{entraIssuer}}}`{{/if}}
|
|
27
|
+
{{#if entraTenantId}}- **Tenant id:** `{{entraTenantId}}`{{/if}}
|
|
28
|
+
{{#if entraEnterpriseAppId}}- **Entra Client (application) ID (Keycloak enterprise app):** `{{entraEnterpriseAppId}}`{{/if}}
|
|
29
|
+
|
|
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`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.21/MicrosoftTeams.Localization.schema.json",
|
|
3
|
+
"name.short": "{{shortName}}",
|
|
4
|
+
"name.full": "{{fullName}}",
|
|
5
|
+
"description.short": "{{fiShortDescription}}",
|
|
6
|
+
"description.full": "{{fiFullDescription}}"
|
|
7
|
+
}
|
|
@@ -2,53 +2,124 @@
|
|
|
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
|
|
11
13
|
dist/channels/microsoft-copilot/source/declarativeAgent.json
|
|
12
14
|
dist/channels/microsoft-copilot/source/ai-plugin.json
|
|
15
|
+
dist/channels/microsoft-copilot/source/fi-fi.json
|
|
13
16
|
dist/channels/microsoft-copilot/build/appPackage.{{environment}}.zip
|
|
14
17
|
```
|
|
15
18
|
|
|
16
|
-
## Microsoft
|
|
19
|
+
## Three Microsoft records (do not confuse)
|
|
17
20
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
| Record | What it is | Typical ID |
|
|
22
|
+
| --- | --- | --- |
|
|
23
|
+
| **Entra app registration** | Protects the Runtime MCP API. **Client (application) ID** from Entra / Keycloak Trust. | Entra Client (application) ID |
|
|
24
|
+
| **Teams Developer Portal app** | Package definition (`manifest.json.id`) and organisation publish request. | Teams app / manifest ID |
|
|
25
|
+
| **Teams admin centre catalogue** | Approval, availability, policy, published state. | Catalogue entry after org publish |
|
|
26
|
+
|
|
27
|
+
`--oauth-plugin-vault-reference-id` is the **Teams Entra SSO registration / auth-config ID** from Developer Portal Tools → Microsoft Entra SSO. It is **not** the Entra Client (application) ID and **not** a client secret.
|
|
28
|
+
|
|
29
|
+
Do **not** configure AI Fabrix OAuth client secrets under Connected Systems → Authentication for this Entra SSO flow.
|
|
30
|
+
|
|
31
|
+
## Package prerequisites (before Import)
|
|
32
|
+
|
|
33
|
+
1. Generate the channel package with `aifabrix channel add microsoft-copilot`.
|
|
34
|
+
2. Configure Microsoft Entra SSO: **Tools → Microsoft Entra SSO client ID registration** (see table below). Copy the generated registration / auth-config ID.
|
|
35
|
+
3. Re-run packaging so `ai-plugin.json` gets `auth.type = OAuthPluginVault` and `auth.reference_id = <auth-config-id>`:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
aifabrix channel add microsoft-copilot --name "{{baseName}}" --oauth-plugin-vault-reference-id "<auth-config-id>"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Keep any `webApplicationInfo` the portal binds for Entra SSO — do not strip it on re-import.
|
|
42
|
+
|
|
43
|
+
Upload **only** the ZIP package. Do not upload individual source files or `channel-microsoft-copilot.json`.
|
|
44
|
+
|
|
45
|
+
## Install and publish
|
|
46
|
+
|
|
47
|
+
1. Open [Teams Developer Portal](https://dev.teams.microsoft.com/).
|
|
48
|
+
2. Click **Import an app** → import `appPackage.{{environment}}.zip`. Preserve the generated stable `manifest.json.id`. Do not create an unrelated new Teams app.
|
|
49
|
+
3. Developer Portal → selected app → **Publish to your org** → Distribute / submit.
|
|
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
|
+
5. Open **Teams** → **Apps** (**Built for your org**), click **{{appName}}**, **Add** the application, then choose **Open with Copilot**.
|
|
52
|
+
6. In Copilot, click **Show my role assistants** and run the command.
|
|
53
|
+
7. Confirm Runtime MCP and governed tools using this guide, then re-run with `--probe` after organisation publish:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --oauth-plugin-vault-reference-id "{{{oauthPluginVaultReferenceId}}}" --probe
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
8. After the app is available under **Built for your org**, re-run:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
aifabrix channel add {{channelTarget}} --name "{{appName}}"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
This is a **tenant-private organisation publish**. Microsoft Store app validation is not the Runtime/MCP functional test for this integration.
|
|
66
|
+
|
|
67
|
+
Do **not** use Developer Portal **Preview in Teams** as the normal organisation installation test (it sideloads and may be blocked by tenant policy).
|
|
68
|
+
|
|
69
|
+
### Optional sideloading for development
|
|
70
|
+
|
|
71
|
+
Use **Upload a custom app** or **Preview in Teams** only if tenant policy permits custom app uploads. Sideloading is **not** required for central organisation publishing. A policy failure such as “Uploading custom apps is not allowed” does **not** mean the organisation-published package is invalid.
|
|
72
|
+
|
|
73
|
+
## Activate languages
|
|
74
|
+
|
|
75
|
+
The package includes `localizationInfo` with **en-us** (default) and **fi-fi** (`fi-fi.json`). After import in Developer Portal, open the app → **Languages** (or localization) and **activate** additional languages you need for the organisation. Re-import an updated ZIP if you regenerate translations.
|
|
24
76
|
|
|
25
77
|
## Runtime connection contract
|
|
26
78
|
|
|
27
79
|
- **Runtime system key:** `{{runtimeSystemKey}}`
|
|
28
|
-
- **Remote MCP URL:** `{{mcpUrl}}`
|
|
80
|
+
- **Remote MCP URL:** `{{{mcpUrl}}}`
|
|
29
81
|
- **Transport:** `{{runtimeTransport}}`
|
|
30
|
-
- **Auth mode:** `{{runtimeAuthMode}}`
|
|
31
|
-
- **
|
|
82
|
+
- **Auth mode:** `{{runtimeAuthMode}}` (Entra SSO / trustedIssuer; controller exchanges the Microsoft user token)
|
|
83
|
+
- **Plugin auth:** `OAuthPluginVault` · Teams auth-config reference id `{{{oauthPluginVaultReferenceId}}}`
|
|
84
|
+
{{#if entraIssuer}}- **Entra issuer (from Trust source):** `{{{entraIssuer}}}`{{/if}}
|
|
85
|
+
- **Delegated scopes:** {{#if entraSsoScope}}`{{entraSsoScope}}`{{else}}{{#each scopes}}`{{this}}` {{else}}*(set Runtime MCP delegated scopes on Trust source `microsoft-entra-id` `allowedScopes` — not openid/profile alone)*{{/each}}{{/if}}
|
|
86
|
+
- **Package / Runtime ready:** {{#if packageReady}}yes{{else}}no{{#if packageBlocker}} ({{packageBlocker}}){{/if}}{{/if}}
|
|
87
|
+
- **Microsoft publication:** {{#if microsoftPublicationPending}}pending — Developer Portal import → Publish to your org → Teams admin approval{{else}}cleared{{/if}}
|
|
88
|
+
- **Governed tools expected:**
|
|
32
89
|
{{#each layerBToolNames}}
|
|
33
90
|
- `{{this}}`
|
|
34
91
|
{{/each}}
|
|
35
92
|
|
|
93
|
+
{{> entraSsoRegistration}}
|
|
94
|
+
|
|
95
|
+
## Package links
|
|
96
|
+
|
|
97
|
+
- README / install guide: `INSTALL.md`
|
|
98
|
+
- Package ZIP: `build/appPackage.{{environment}}.zip`
|
|
99
|
+
|
|
36
100
|
## Assistant catalog
|
|
37
101
|
|
|
38
|
-
Runtime lists
|
|
102
|
+
Runtime lists the assistants available to the signed-in user from:
|
|
39
103
|
|
|
40
|
-
{{assistantCatalogUrl}}
|
|
104
|
+
{{{assistantCatalogUrl}}}
|
|
41
105
|
|
|
42
106
|
## Probe truthfulness
|
|
43
107
|
|
|
44
|
-
- `builderValidated`
|
|
45
|
-
- `runtimeValidated`
|
|
46
|
-
- `requiresMicrosoftAdmin`
|
|
108
|
+
- `builderValidated` — package files, ZIP structure, hashes, and secret checks passed.
|
|
109
|
+
- `runtimeValidated` — Runtime MCP is reachable and tool-boundary checks passed.
|
|
110
|
+
- `requiresMicrosoftAdmin` — organisation publish / Teams admin approval is still pending. This is **not** a sideload requirement and is separate from package/Runtime readiness.
|
|
47
111
|
|
|
48
|
-
|
|
112
|
+
`--force` regenerates the package artifacts. microsoft-copilot does not create Fabrix oauth2 channel credentials for Entra SSO.
|
|
49
113
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
114
|
+
## Delete / remove from the organisation
|
|
115
|
+
|
|
116
|
+
Use this when replacing the app, cleaning a failed publish, or removing **{{appName}}** entirely. Delete in this order so catalogue and Developer Portal records stay consistent.
|
|
117
|
+
|
|
118
|
+
1. Open [Teams admin centre → Manage apps](https://admin.teams.microsoft.com/policies/manage-apps).
|
|
119
|
+
2. Search for **{{appName}}**, open the app, open the action menu, choose **Delete**, and confirm.
|
|
120
|
+
3. Open [Teams Developer Portal → Apps](https://dev.teams.microsoft.com/apps).
|
|
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).
|
|
123
|
+
6. Find the registration for this channel (same registration / auth-config used as `--oauth-plugin-vault-reference-id`), open **…** (Actions) → **Delete**, and confirm.
|
|
53
124
|
|
|
54
|
-
|
|
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.
|
|
@@ -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": [],
|
|
@@ -1,36 +1,51 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.
|
|
3
|
-
"manifestVersion": "1.21",
|
|
2
|
+
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.27/MicrosoftTeams.schema.json",
|
|
4
3
|
"version": "{{packageVersion}}",
|
|
4
|
+
"manifestVersion": "1.27",
|
|
5
5
|
"id": "{{packageAppId}}",
|
|
6
6
|
"name": {
|
|
7
|
-
"short": "{{
|
|
8
|
-
"full": "{{
|
|
9
|
-
},
|
|
10
|
-
"description": {
|
|
11
|
-
"short": "{{appDescription}}",
|
|
12
|
-
"full": "{{appDescription}}"
|
|
7
|
+
"short": "{{shortName}}",
|
|
8
|
+
"full": "{{fullName}}"
|
|
13
9
|
},
|
|
14
10
|
"developer": {
|
|
15
11
|
"name": "AI Fabrix",
|
|
16
|
-
"websiteUrl": "{{dataplaneBaseUrl}}",
|
|
17
|
-
"privacyUrl": "{{dataplaneBaseUrl}}/privacy",
|
|
18
|
-
"termsOfUseUrl": "{{dataplaneBaseUrl}}/terms"
|
|
12
|
+
"websiteUrl": "{{{dataplaneBaseUrl}}}",
|
|
13
|
+
"privacyUrl": "{{{dataplaneBaseUrl}}}/privacy",
|
|
14
|
+
"termsOfUseUrl": "{{{dataplaneBaseUrl}}}/terms"
|
|
15
|
+
},
|
|
16
|
+
"description": {
|
|
17
|
+
"short": "{{shortDescription}}",
|
|
18
|
+
"full": "{{fullDescription}}"
|
|
19
19
|
},
|
|
20
20
|
"icons": {
|
|
21
|
-
"
|
|
22
|
-
"
|
|
21
|
+
"outline": "outline.png",
|
|
22
|
+
"color": "color.png"
|
|
23
23
|
},
|
|
24
24
|
"accentColor": "#0F172A",
|
|
25
|
+
"validDomains": [
|
|
26
|
+
"{{runtimeDomain}}"
|
|
27
|
+
],
|
|
28
|
+
{{#if webApplicationInfoId}}
|
|
29
|
+
"webApplicationInfo": {
|
|
30
|
+
"id": "{{webApplicationInfoId}}",
|
|
31
|
+
"resource": "{{{webApplicationInfoResource}}}"
|
|
32
|
+
},
|
|
33
|
+
{{/if}}
|
|
34
|
+
"localizationInfo": {
|
|
35
|
+
"defaultLanguageTag": "en-us",
|
|
36
|
+
"additionalLanguages": [
|
|
37
|
+
{
|
|
38
|
+
"languageTag": "fi-fi",
|
|
39
|
+
"file": "fi-fi.json"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
25
43
|
"copilotAgents": {
|
|
26
44
|
"declarativeAgents": [
|
|
27
45
|
{
|
|
28
|
-
"
|
|
29
|
-
"
|
|
46
|
+
"file": "declarativeAgent.json",
|
|
47
|
+
"id": "{{packageAppId}}-agent"
|
|
30
48
|
}
|
|
31
49
|
]
|
|
32
|
-
}
|
|
33
|
-
"validDomains": [
|
|
34
|
-
"{{runtimeDomain}}"
|
|
35
|
-
]
|
|
50
|
+
}
|
|
36
51
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
microsoft-copilot packaging requires `--oauth-plugin-vault-reference-id` with the Teams Entra SSO **registration / auth-config ID**.
|
|
2
|
+
|
|
3
|
+
That value is **not** the Entra Client (application) ID and **not** a client secret.
|
|
4
|
+
|
|
5
|
+
Register Entra SSO in the Teams Developer Portal **before** packaging (no ZIP needed first): paste the values below, Save, copy the registration id, then re-run.
|
|
6
|
+
|
|
7
|
+
{{> entraSsoRegistration}}
|
|
8
|
+
|
|
9
|
+
Then:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
aifabrix channel add microsoft-copilot --name "{{baseName}}" --oauth-plugin-vault-reference-id "<Teams-Entra-SSO-registration-id>"
|
|
13
|
+
```
|
|
14
|
+
|
|
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.
|
|
@@ -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.
|