@aifabrix/builder 2.50.0 → 2.51.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/.cursor/plans/Done/157.1-security-quality-violations-by-type.csv +374 -0
- package/.cursor/rules/assistant-driven-integration-build.mdc +40 -0
- package/integration/hubspot-test/create-hubspot.js +1 -16
- package/jest.isolated-projects.js +77 -1
- package/jest.projects.js +5 -426
- package/lib/api/assistants.api.js +67 -0
- package/lib/api/datasources-extended.api.js +6 -6
- package/lib/api/evidence-authoring-helpers.js +267 -0
- package/lib/api/evidence-authoring.api.js +337 -0
- package/lib/api/evidence-kinds.api.js +128 -0
- package/lib/api/evidence.api.js +57 -1
- package/lib/api/index.js +24 -7
- package/lib/api/pipeline.api.js +47 -3
- package/lib/api/records-bulk.api.js +28 -3
- package/lib/api/resource-types.api.js +4 -4
- package/lib/api/roles.api.js +121 -0
- package/lib/api/types/evidence-kinds.types.js +42 -0
- package/lib/api/types/evidence.types.js +156 -8
- package/lib/api/types/roles.types.js +36 -0
- package/lib/api/work.api.js +283 -0
- package/lib/app/certification-verify-rows.js +1 -1
- package/lib/app/run-deploy-job.js +108 -0
- package/lib/app/run-helpers.js +10 -3
- package/lib/app/run.js +8 -0
- package/lib/app/show.js +2 -2
- package/lib/certification/merge-certification-from-artifact.js +1 -1
- package/lib/channels/add-channel.js +54 -23
- package/lib/channels/approval-guides/chatgpt.js +8 -7
- package/lib/channels/approval-guides/microsoft-copilot.js +7 -8
- package/lib/channels/channel-artifact-generator.js +16 -3
- package/lib/channels/channel-credential.js +3 -1
- package/lib/channels/channel-probe-evidence.js +79 -0
- package/lib/channels/channel-probe.js +265 -13
- package/lib/channels/channel-runtime-resolver.js +120 -29
- package/lib/channels/channel-status-display.js +44 -0
- package/lib/channels/channel-targets.js +7 -0
- package/lib/channels/chatgpt-runtime-contract.js +29 -0
- package/lib/channels/microsoft-copilot-package.js +280 -0
- package/lib/channels/runtime-tool-catalog.js +165 -0
- package/lib/cli/index.js +6 -0
- package/lib/cli/setup-app.js +26 -5
- package/lib/cli/setup-dev.js +23 -7
- package/lib/cli/setup-external-system-help.js +8 -2
- package/lib/cli/setup-external-system.js +12 -0
- package/lib/cli/setup-utility-help-after.js +12 -0
- package/lib/cli/setup-utility-validate.js +41 -2
- package/lib/commands/app-test.js +2 -14
- package/lib/commands/datasource-load-export-cli.js +6 -1
- package/lib/commands/deploy-gate-failure-details.js +23 -0
- package/lib/commands/deploy-gate-orchestrator.js +64 -18
- package/lib/commands/dev-cli-handlers.js +6 -3
- package/lib/commands/dev-down.js +2 -6
- package/lib/commands/dev-init.js +7 -109
- package/lib/commands/dev-refresh.js +197 -0
- package/lib/commands/evidence-kind.js +478 -0
- package/lib/commands/governance-command-action.js +4 -2
- package/lib/commands/governance-generate-external.js +56 -21
- package/lib/commands/lifecycle-external.js +10 -4
- package/lib/commands/repair-datasource-apply.js +10 -1
- package/lib/commands/repair-datasource-run.js +4 -2
- package/lib/commands/repair-datasource-test-payload.js +80 -19
- package/lib/commands/repair-datasource-webhooks-sync-bridge.js +42 -3
- package/lib/commands/repair-internal.js +9 -1
- package/lib/commands/repair-openapi-export.js +1 -1
- package/lib/commands/repair-openapi-sync.js +43 -18
- package/lib/commands/resource-type.js +101 -18
- package/lib/commands/role-assistant.js +313 -0
- package/lib/commands/role.js +452 -0
- package/lib/commands/setup.js +1 -1
- package/lib/commands/upload-data-sync-finalize.js +5 -4
- package/lib/commands/upload-sidecar-followups.js +144 -47
- package/lib/commands/upload.js +43 -6
- package/lib/commands/validate-json.js +230 -0
- package/lib/commands/verify-governance-combined-external.js +73 -9
- package/lib/commands/verify-governance-db.js +80 -25
- package/lib/commands/verify-governance-external.js +29 -5
- package/lib/commands/verify-operations-step-plan.js +78 -40
- package/lib/commands/wizard-core-helpers.js +7 -3
- package/lib/commands/wizard-core.js +78 -9
- package/lib/core/audit-logger.js +1 -1
- package/lib/core/secrets-load.js +1 -3
- package/lib/datasource/bulk-loader-run-batches.js +4 -2
- package/lib/datasource/bulk-loader-service.js +5 -1
- package/lib/datasource/capability/relate-operations.js +1 -1
- package/lib/datasource/datasource-validate-summary.js +2 -2
- package/lib/datasource/validate.js +13 -6
- package/lib/external-system/deploy-helpers.js +35 -1
- package/lib/external-system/deploy.js +23 -10
- package/lib/external-system/download-helpers.js +111 -2
- package/lib/external-system/download-role-assistant.js +55 -0
- package/lib/external-system/download.js +45 -26
- package/lib/external-system/test-helpers.js +1 -1
- package/lib/external-system/test.js +39 -3
- package/lib/generator/builders.js +3 -0
- package/lib/generator/helpers.js +13 -5
- package/lib/generator/split-variables.js +9 -3
- package/lib/generator/wizard.js +51 -4
- package/lib/infrastructure/helpers-docker-check.js +6 -0
- package/lib/infrastructure/helpers.js +1 -1
- package/lib/lifecycle/access-control-abac.js +121 -0
- package/lib/lifecycle/lifecycle-governance-options.js +4 -1
- package/lib/lifecycle/product-model.js +3 -2
- package/lib/lifecycle/report-display.js +14 -2
- package/lib/programmatic/auth-config.js +3 -2
- package/lib/programmatic/bearer-auth.js +1 -1
- package/lib/programmatic/capability-registry.js +20 -1
- package/lib/programmatic/command-options.js +1 -0
- package/lib/programmatic/enterprise-mcp-client.js +18 -2
- package/lib/programmatic/index.js +4 -0
- package/lib/programmatic/manifest-patch-section.js +48 -9
- package/lib/programmatic/manifest-section-registry-data.js +3 -2
- package/lib/programmatic/manifest-section-registry.js +18 -1
- package/lib/programmatic/openapi-apply-result-schemas.js +44 -0
- package/lib/programmatic/openapi-component-schemas.js +16 -1
- package/lib/programmatic/openapi-description-enricher.js +3 -1
- package/lib/programmatic/openapi-descriptions.js +55 -5
- package/lib/programmatic/openapi-evidence-schemas.js +161 -0
- package/lib/programmatic/openapi-manifest-schemas.js +6 -2
- package/lib/programmatic/openapi-operation-bindings.js +99 -0
- package/lib/programmatic/openapi-request-schemas.js +36 -1
- package/lib/programmatic/openapi-result-schemas.js +29 -12
- package/lib/programmatic/openapi-schema-descriptions-certify.js +5 -1
- package/lib/programmatic/openapi-schema-descriptions-core.js +6 -3
- package/lib/programmatic/openapi-schema-descriptions-evidence.js +156 -0
- package/lib/programmatic/openapi-schema-descriptions-manifest.js +4 -3
- package/lib/programmatic/openapi-schema-descriptions-operations.js +70 -0
- package/lib/programmatic/openapi-schema-helpers.js +16 -1
- package/lib/programmatic/openapi-spec.js +48 -29
- package/lib/programmatic/orchestration-openapi-meta.js +5 -0
- package/lib/programmatic/request-timeout.js +3 -0
- package/lib/programmatic/route-handler-map.js +89 -2
- package/lib/programmatic/run-certify.js +15 -2
- package/lib/programmatic/run-deploy.js +74 -0
- package/lib/programmatic/run-evidence-authoring.js +80 -0
- package/lib/programmatic/run-protection.js +124 -0
- package/lib/programmatic/run-repository-emcp.js +11 -3
- package/lib/programmatic/run-template-workspace.js +42 -2
- package/lib/programmatic/workspace-context.js +6 -0
- package/lib/protection/auth-context.js +48 -6
- package/lib/protection/paths.js +22 -0
- package/lib/protection/run-protection-create-helpers.js +22 -1
- package/lib/protection/run-protection-create.js +1 -1
- package/lib/protection/sync-after-upload.js +1 -1
- package/lib/resolvers/evidence-kind-file.js +230 -0
- package/lib/resolvers/resource-type-file.js +36 -1
- package/lib/resolvers/role-file.js +227 -0
- package/lib/role-assistant/evidence-sync.js +450 -0
- package/lib/role-assistant/github-workflow.js +96 -0
- package/lib/role-assistant/knowledge-sync.js +465 -0
- package/lib/role-assistant/settings.js +126 -0
- package/lib/role-assistant/test-cases-evaluate.js +170 -0
- package/lib/role-assistant/test-cases-honesty.js +184 -0
- package/lib/role-assistant/test-cases.js +364 -0
- package/lib/role-assistant/test-runner-workhub-answers.js +203 -0
- package/lib/role-assistant/test-runner-workhub.js +385 -0
- package/lib/role-assistant/test-runner.js +500 -0
- package/lib/schema/application-schema.json +36 -2
- package/lib/schema/deployment-rules.yaml +1 -0
- package/lib/schema/external-datasource.schema.json +121 -4
- package/lib/schema/external-system.schema.json +20 -6
- package/lib/schema/infra.parameter.yaml +45 -1
- package/lib/schema/role-assistant-settings.schema.json +108 -0
- package/lib/schema/type/credential-field-registry.json +19 -3
- package/lib/utils/api.js +52 -21
- package/lib/utils/app-path-resolve.js +72 -24
- package/lib/utils/app-register-config.js +4 -3
- package/lib/utils/authentication-shape.js +3 -1
- package/lib/utils/cli-sync-options.js +59 -3
- package/lib/utils/cli-utils.js +11 -3
- package/lib/utils/deployment-validation.js +28 -3
- package/lib/utils/dev-ca-install.js +5 -6
- package/lib/utils/dev-config.js +2 -2
- package/lib/utils/dev-list-sort.js +145 -0
- package/lib/utils/dev-platform-tls.js +0 -63
- package/lib/utils/docker-build.js +46 -27
- package/lib/utils/docker-daemon-tls-ca.js +1 -1
- package/lib/utils/docker-exec.js +91 -6
- package/lib/utils/docker-run-ephemeral.js +55 -0
- package/lib/utils/enterprise-knowledge-paths.js +29 -12
- package/lib/utils/env-copy-keycloak.js +196 -0
- package/lib/utils/env-copy.js +35 -4
- package/lib/utils/error-formatters/error-parser.js +0 -3
- package/lib/utils/external-env-template.js +1 -1
- package/lib/utils/external-system-readiness-compact-blocks.js +28 -1
- package/lib/utils/external-system-readiness-compact-display.js +3 -0
- package/lib/utils/health-check-request.js +2 -3
- package/lib/utils/help-builder.js +4 -0
- package/lib/utils/image-name.js +22 -4
- package/lib/utils/logger.js +37 -4
- package/lib/utils/manifest-source-emit.js +1 -1
- package/lib/utils/paths.js +98 -26
- package/lib/utils/pipeline-upload-auth-retry.js +19 -3
- package/lib/utils/postgres-platform-bootstrap.js +24 -17
- package/lib/utils/postgres-wipe.js +5 -2
- package/lib/utils/remote-dev-auth.js +39 -4
- package/lib/utils/resolve-docker-image-ref.js +36 -6
- package/lib/utils/role-assistant-paths.js +98 -0
- package/lib/utils/schema-loader.js +41 -0
- package/lib/utils/schema-resolver.js +36 -4
- package/lib/utils/token-manager.js +47 -22
- package/lib/utils/upload-sync-options.js +17 -3
- package/lib/utils/url-declarative-resolve-load-doc.js +38 -1
- package/lib/validation/external-manifest-validator.js +31 -8
- package/lib/validation/openapi-contract-surface-validator.js +4 -0
- package/lib/validation/validate-external-file.js +8 -1
- package/lib/validation/validator.js +6 -5
- package/package.json +35 -12
- package/scripts/export-builder-api-evidence.js +3 -3
- package/scripts/lib/plan-actor.js +2 -2
- package/scripts/lib/plan-meta.js +1 -1
- package/scripts/lib/plan-parse.js +1 -1
- package/scripts/lib/plan-prevalidate-gates.js +12 -1
- package/scripts/lib/plan-run-report.js +13 -2
- package/scripts/pnpm/lib/resolve-aifabrix-bin.mjs +10 -10
- package/templates/applications/dataplane/application.yaml +47 -17
- package/templates/applications/dataplane/env.template +28 -9
- package/templates/applications/dataplane/rbac.yaml +78 -2
- package/templates/applications/miso-controller/application.yaml +10 -1
- package/templates/applications/miso-controller/env.template +13 -8
- package/templates/applications/miso-controller/rbac.yaml +72 -0
- package/templates/channels/chatgpt/install.template.md.hbs +42 -24
- package/templates/channels/chatgpt/integration/README.md +10 -7
- package/templates/channels/chatgpt/integration/application.json +2 -2
- package/templates/channels/chatgpt/integration/chatgpt-system.json +3 -3
- package/templates/channels/chatgpt/integration/env.template +1 -1
- package/templates/channels/chatgpt/manifest.template.json.hbs +36 -5
- package/templates/channels/microsoft-copilot/ai-plugin.template.json.hbs +28 -0
- package/templates/channels/microsoft-copilot/declarative-agent.template.json.hbs +22 -0
- package/templates/channels/microsoft-copilot/install.template.md.hbs +32 -22
- package/templates/channels/microsoft-copilot/integration/README.md +9 -7
- package/templates/channels/microsoft-copilot/integration/application.json +2 -2
- package/templates/channels/microsoft-copilot/integration/env.template +1 -1
- package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +7 -6
- package/templates/channels/microsoft-copilot/manifest.template.json.hbs +34 -6
- package/templates/channels/slack/integration/slack-system.json +60 -2
- package/templates/python/requirements.txt +1 -1
|
@@ -303,6 +303,78 @@ permissions:
|
|
|
303
303
|
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin']
|
|
304
304
|
description: 'Delete dimensions and dimension values'
|
|
305
305
|
|
|
306
|
+
# Resource Type Management
|
|
307
|
+
- name: 'resource-types:read'
|
|
308
|
+
roles:
|
|
309
|
+
[
|
|
310
|
+
'aifabrix-platform-admin',
|
|
311
|
+
'aifabrix-security-admin',
|
|
312
|
+
'aifabrix-deployment-admin',
|
|
313
|
+
'aifabrix-developer',
|
|
314
|
+
'aifabrix-observer'
|
|
315
|
+
]
|
|
316
|
+
description: 'View resource types'
|
|
317
|
+
|
|
318
|
+
- name: 'resource-types:create'
|
|
319
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin', 'aifabrix-deployment-admin']
|
|
320
|
+
description: 'Create resource types'
|
|
321
|
+
|
|
322
|
+
- name: 'resource-types:update'
|
|
323
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin', 'aifabrix-deployment-admin']
|
|
324
|
+
description: 'Update resource types'
|
|
325
|
+
|
|
326
|
+
- name: 'resource-types:delete'
|
|
327
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin']
|
|
328
|
+
description: 'Delete resource types'
|
|
329
|
+
|
|
330
|
+
# Business Role Management (COM — not RBAC auth roles)
|
|
331
|
+
- name: 'roles:read'
|
|
332
|
+
roles:
|
|
333
|
+
[
|
|
334
|
+
'aifabrix-platform-admin',
|
|
335
|
+
'aifabrix-security-admin',
|
|
336
|
+
'aifabrix-deployment-admin',
|
|
337
|
+
'aifabrix-developer',
|
|
338
|
+
'aifabrix-observer'
|
|
339
|
+
]
|
|
340
|
+
description: 'View business roles'
|
|
341
|
+
|
|
342
|
+
- name: 'roles:create'
|
|
343
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin', 'aifabrix-deployment-admin']
|
|
344
|
+
description: 'Create business roles'
|
|
345
|
+
|
|
346
|
+
- name: 'roles:update'
|
|
347
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin', 'aifabrix-deployment-admin']
|
|
348
|
+
description: 'Update business roles'
|
|
349
|
+
|
|
350
|
+
- name: 'roles:delete'
|
|
351
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin']
|
|
352
|
+
description: 'Delete business roles'
|
|
353
|
+
|
|
354
|
+
# Evidence Kind Management
|
|
355
|
+
- name: 'evidence-kinds:read'
|
|
356
|
+
roles:
|
|
357
|
+
[
|
|
358
|
+
'aifabrix-platform-admin',
|
|
359
|
+
'aifabrix-security-admin',
|
|
360
|
+
'aifabrix-deployment-admin',
|
|
361
|
+
'aifabrix-developer',
|
|
362
|
+
'aifabrix-observer'
|
|
363
|
+
]
|
|
364
|
+
description: 'View evidence kinds'
|
|
365
|
+
|
|
366
|
+
- name: 'evidence-kinds:create'
|
|
367
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin', 'aifabrix-deployment-admin']
|
|
368
|
+
description: 'Create evidence kinds'
|
|
369
|
+
|
|
370
|
+
- name: 'evidence-kinds:update'
|
|
371
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin', 'aifabrix-deployment-admin']
|
|
372
|
+
description: 'Update evidence kinds'
|
|
373
|
+
|
|
374
|
+
- name: 'evidence-kinds:delete'
|
|
375
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin']
|
|
376
|
+
description: 'Delete evidence kinds'
|
|
377
|
+
|
|
306
378
|
# Token Providers
|
|
307
379
|
- name: 'token-provider:read'
|
|
308
380
|
roles:
|
|
@@ -1,46 +1,64 @@
|
|
|
1
|
-
# {{appName}} — ChatGPT
|
|
1
|
+
# {{appName}} — ChatGPT custom MCP app setup
|
|
2
2
|
|
|
3
3
|
{{appDescription}}
|
|
4
4
|
|
|
5
5
|
Environment: **{{environment}}** · Credential key: `{{credentialKey}}`
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
This output is connection and administration material (`channel-chatgpt.json` + `INSTALL.md`), not a plugin archive.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
2. Create a custom GPT, workspace connector, or MCP integration using the generated manifest from `dist/channels/chatgpt/channel-chatgpt.json`.
|
|
11
|
-
3. Configure the **OpenAPI specification URL** and **MCP endpoint** from **Platform endpoints** below.
|
|
12
|
-
4. Complete OAuth or API key setup as required by your ChatGPT deployment model.
|
|
13
|
-
5. Save the **API key** or **OAuth client credentials** in AI Fabrix: [Authentication settings]({{credentialPortalUrl}})
|
|
14
|
-
6. Publish the connector to your workspace and complete admin approval if your organization requires it.
|
|
9
|
+
## Workspace admin setup (manual)
|
|
15
10
|
|
|
16
|
-
|
|
11
|
+
1. Sign in to your ChatGPT workspace as an admin and enable **Developer mode / custom MCP apps** if required by workspace policy.
|
|
12
|
+
2. Create a custom MCP app and use the generated artifact from `dist/channels/chatgpt/channel-chatgpt.json` as the connection reference.
|
|
13
|
+
3. Configure the remote MCP URL and transport from **Runtime connection** below.
|
|
14
|
+
4. Complete authentication setup for your workspace policy. Store credential references in AI Fabrix: [Authentication settings]({{credentialPortalUrl}})
|
|
15
|
+
5. Refresh tools in ChatGPT after configuration changes so ChatGPT reads the latest Runtime tool list.
|
|
16
|
+
6. Publish the app to the workspace and configure workspace access controls (RBAC or equivalent).
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
## Runtime connection
|
|
19
|
+
|
|
20
|
+
Configure these values in the ChatGPT custom MCP app. Do not place secrets in generated files.
|
|
19
21
|
|
|
20
|
-
{{#if openapiUrl}}
|
|
21
|
-
- **OpenAPI spec:** {{openapiUrl}}
|
|
22
|
-
{{/if}}
|
|
23
22
|
{{#if mcpUrl}}
|
|
24
|
-
- **MCP:** {{mcpUrl}}
|
|
25
|
-
{{/if}}
|
|
26
|
-
{{#if actionsBaseUrl}}
|
|
27
|
-
- **Actions base:** {{actionsBaseUrl}}
|
|
23
|
+
- **Remote MCP URL:** {{mcpUrl}}
|
|
28
24
|
{{/if}}
|
|
25
|
+
- **Runtime system key:** {{runtimeSystemKey}}
|
|
26
|
+
- **Transport:** {{runtimeTransport}}
|
|
27
|
+
- **Auth mode:** {{runtimeAuthMode}}
|
|
28
|
+
- **Expected Layer B tools:**
|
|
29
|
+
{{#each layerBToolNames}}
|
|
30
|
+
- `{{this}}`
|
|
31
|
+
{{/each}}
|
|
29
32
|
|
|
30
|
-
|
|
33
|
+
AI Fabrix `--probe` validates Runtime through the first-party MCP gateway
|
|
34
|
+
(`/api/v1/mcp/servers/tools` and MCP docs for `{{runtimeSystemKey}}`), including
|
|
35
|
+
Layer B discovery and BTA Evidence authoring reachability. ChatGPT workspace apps still
|
|
36
|
+
require a working streamable-http Remote MCP URL and admin publication.
|
|
31
37
|
|
|
32
|
-
Runtime
|
|
38
|
+
## Runtime and Role Assistant boundary checks
|
|
39
|
+
|
|
40
|
+
- Runtime should resolve assistants dynamically per user from:
|
|
33
41
|
|
|
34
42
|
{{assistantCatalogUrl}}
|
|
35
43
|
|
|
36
|
-
|
|
44
|
+
- The ChatGPT top-level tool surface should stay at Runtime Layer B tools.
|
|
45
|
+
- Evidence authoring remains an internal Business Transformation Assistant capability path, not top-level ChatGPT tools.
|
|
37
46
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
47
|
+
## BTA Evidence-authoring proof scenario
|
|
48
|
+
|
|
49
|
+
Use this scenario to verify ChatGPT → Runtime → BTA path without exposing Evidence commands as top-level ChatGPT tools:
|
|
50
|
+
|
|
51
|
+
1. Ask ChatGPT to improve an existing Role Assistant from process documentation.
|
|
52
|
+
2. Confirm ChatGPT starts or continues Business Transformation Assistant work through Runtime.
|
|
53
|
+
3. Confirm BTA performs evidence metadata/download/upload reasoning and presents certified proposals.
|
|
54
|
+
4. Approve selected proposals and confirm activation remains an explicit human action.
|
|
41
55
|
|
|
42
|
-
|
|
56
|
+
## AI Fabrix validation commands
|
|
57
|
+
|
|
58
|
+
After workspace publication and authentication setup:
|
|
43
59
|
|
|
44
60
|
```bash
|
|
45
61
|
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
|
|
46
62
|
```
|
|
63
|
+
|
|
64
|
+
Use `--force` only to regenerate artifacts and patch channel metadata. It does not rotate credentials.
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
# ChatGPT
|
|
1
|
+
# ChatGPT custom MCP app channel
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Generated by `aifabrix channel scaffold chatgpt`.
|
|
4
|
+
|
|
5
|
+
Recommended flow:
|
|
4
6
|
|
|
5
7
|
```bash
|
|
6
|
-
|
|
7
|
-
aifabrix
|
|
8
|
-
aifabrix upload chatgpt --probe
|
|
9
|
-
aifabrix deploy chatgpt
|
|
10
|
-
aifabrix app add-channel chatgpt --name "Your Assistant"
|
|
8
|
+
aifabrix upload chatgpt --force
|
|
9
|
+
aifabrix channel add chatgpt --name "Your Assistant" --probe
|
|
11
10
|
```
|
|
11
|
+
|
|
12
|
+
The `channel add` step generates `dist/channels/chatgpt/channel-chatgpt.json` and
|
|
13
|
+
`INSTALL.md` for ChatGPT workspace admins to connect a custom MCP app to the
|
|
14
|
+
runtime-orchestration server.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"app": {
|
|
3
3
|
"key": "chatgpt",
|
|
4
|
-
"displayName": "ChatGPT
|
|
5
|
-
"description": "Assistant communication channel — deploy then
|
|
4
|
+
"displayName": "ChatGPT custom MCP app channel",
|
|
5
|
+
"description": "Assistant communication channel — deploy then channel add",
|
|
6
6
|
"type": "external"
|
|
7
7
|
},
|
|
8
8
|
"externalIntegration": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "chatgpt",
|
|
3
|
-
"displayName": "ChatGPT
|
|
4
|
-
"description": "Communication external system for ChatGPT
|
|
3
|
+
"displayName": "ChatGPT custom MCP app channel",
|
|
4
|
+
"description": "Communication external system for ChatGPT custom MCP app onboarding",
|
|
5
5
|
"type": "custom",
|
|
6
6
|
"systemKind": "communication",
|
|
7
7
|
"enabled": true,
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"authType": "credential",
|
|
10
10
|
"credential": {
|
|
11
11
|
"credentialKey": "chatgpt-channel",
|
|
12
|
-
"displayName": "ChatGPT
|
|
12
|
+
"displayName": "ChatGPT custom MCP app channel",
|
|
13
13
|
"method": "apikey",
|
|
14
14
|
"writeOnce": true,
|
|
15
15
|
"variables": {
|
|
@@ -1,9 +1,40 @@
|
|
|
1
1
|
{
|
|
2
|
+
"channelTarget": "{{channelTarget}}",
|
|
2
3
|
"name": "{{appName}}",
|
|
4
|
+
"baseName": "{{baseName}}",
|
|
3
5
|
"description": "{{appDescription}}",
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
"environment": "{{environment}}",
|
|
7
|
+
"runtime": {
|
|
8
|
+
"runtimeSystemKey": "{{runtimeSystemKey}}",
|
|
9
|
+
"remoteMcpUrl": "{{mcpUrl}}",
|
|
10
|
+
"transport": "{{runtimeTransport}}",
|
|
11
|
+
"assistantCatalogUrl": "{{assistantCatalogUrl}}",
|
|
12
|
+
"roleAssistantResolution": "dynamic-runtime",
|
|
13
|
+
"layerBToolNames": [
|
|
14
|
+
{{#each layerBToolNames}}
|
|
15
|
+
"{{this}}"{{#unless @last}},{{/unless}}
|
|
16
|
+
{{/each}}
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"authentication": {
|
|
20
|
+
"mode": "{{runtimeAuthMode}}",
|
|
21
|
+
"credentialKey": "{{credentialKey}}",
|
|
22
|
+
"credentialPortalUrl": "{{credentialPortalUrl}}",
|
|
23
|
+
"scopes": {{{scopesJson}}}
|
|
24
|
+
},
|
|
25
|
+
"boundaries": {
|
|
26
|
+
"oneConnectionSupportsManyRoleAssistants": true,
|
|
27
|
+
"topLevelEvidenceToolsExposed": false,
|
|
28
|
+
"runtimeOwnsWorkInterface": true,
|
|
29
|
+
"evidenceCapabilityPath": "ChatGPT -> runtime-orchestration -> Business Transformation Assistant -> internal evidence capabilities"
|
|
30
|
+
},
|
|
31
|
+
"lifecycle": {
|
|
32
|
+
"locallyValidated": true,
|
|
33
|
+
"runtimeValidated": false,
|
|
34
|
+
"requiresChatGptWorkspaceAdmin": true
|
|
35
|
+
},
|
|
36
|
+
"artifact": {
|
|
37
|
+
"format": "chatgpt-custom-mcp-app",
|
|
38
|
+
"version": "1.0.0"
|
|
39
|
+
}
|
|
9
40
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://developer.microsoft.com/json-schemas/copilot/plugin/v2.4/schema.json",
|
|
3
|
+
"schema_version": "v2.4",
|
|
4
|
+
"name_for_human": "{{appName}}",
|
|
5
|
+
"name_for_model": "aifabrix_runtime_orchestration",
|
|
6
|
+
"description_for_human": "{{appDescription}}",
|
|
7
|
+
"description_for_model": "Runtime orchestration tools for governed enterprise work.",
|
|
8
|
+
"runtimes": [
|
|
9
|
+
{
|
|
10
|
+
"type": "RemoteMCPServer",
|
|
11
|
+
"spec": {
|
|
12
|
+
"url": "{{mcpUrl}}"
|
|
13
|
+
},
|
|
14
|
+
"auth": {
|
|
15
|
+
"type": "oauth",
|
|
16
|
+
"scopes": {{{scopesJson}}}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"mcp_tool_description": {
|
|
21
|
+
"mode": "dynamic",
|
|
22
|
+
"layerBToolNames": [
|
|
23
|
+
{{#each layerBToolNames}}
|
|
24
|
+
"{{this}}"{{#unless @last}},{{/unless}}
|
|
25
|
+
{{/each}}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "{{packageAppId}}-agent",
|
|
3
|
+
"name": "{{appName}}",
|
|
4
|
+
"description": "{{appDescription}}",
|
|
5
|
+
"instructions": "Use Runtime Layer B tools only. Resolve Role Assistants dynamically and keep business reasoning inside authorized Role Assistant boundaries.",
|
|
6
|
+
"conversation_starters": [
|
|
7
|
+
{
|
|
8
|
+
"title": "Show my role assistants",
|
|
9
|
+
"text": "List my available Role Assistants and what they can do."
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"title": "Start guided work",
|
|
13
|
+
"text": "Help me start work for my current business objective."
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"actions": [
|
|
17
|
+
{
|
|
18
|
+
"id": "{{pluginId}}",
|
|
19
|
+
"file": "ai-plugin.json"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -1,29 +1,37 @@
|
|
|
1
|
-
# {{appName}} — Microsoft Copilot
|
|
1
|
+
# {{appName}} — Microsoft 365 Copilot package setup
|
|
2
2
|
|
|
3
3
|
{{appDescription}}
|
|
4
4
|
|
|
5
5
|
Environment: **{{environment}}** · Credential key: `{{credentialKey}}`
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
This channel output is a Microsoft 365 Copilot app package:
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
```text
|
|
10
|
+
dist/channels/microsoft-copilot/source/manifest.json
|
|
11
|
+
dist/channels/microsoft-copilot/source/declarativeAgent.json
|
|
12
|
+
dist/channels/microsoft-copilot/source/ai-plugin.json
|
|
13
|
+
dist/channels/microsoft-copilot/build/appPackage.{{environment}}.zip
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Microsoft admin workflow (manual)
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
1. Sign in to [Microsoft 365 admin](https://admin.cloud.microsoft.com/) or Copilot Studio as a tenant admin.
|
|
19
|
+
2. Upload or sideload `appPackage.{{environment}}.zip` to your organization app catalog.
|
|
20
|
+
3. Review the declarative agent + Remote MCP plugin metadata and approve tenant distribution.
|
|
21
|
+
4. Configure workspace authentication and consent according to your Entra/OAuth policy.
|
|
22
|
+
5. Store credential references in AI Fabrix authentication settings: [Authentication settings]({{credentialPortalUrl}})
|
|
23
|
+
6. Assign the app to users/groups and complete first-user sign-in.
|
|
18
24
|
|
|
19
|
-
|
|
25
|
+
## Runtime connection contract
|
|
20
26
|
|
|
21
|
-
{{
|
|
22
|
-
- **
|
|
23
|
-
{{
|
|
24
|
-
{{
|
|
25
|
-
- **
|
|
26
|
-
{{
|
|
27
|
+
- **Runtime system key:** `{{runtimeSystemKey}}`
|
|
28
|
+
- **Remote MCP URL:** `{{mcpUrl}}`
|
|
29
|
+
- **Transport:** `{{runtimeTransport}}`
|
|
30
|
+
- **Auth mode:** `{{runtimeAuthMode}}`
|
|
31
|
+
- **Layer B tools expected:**
|
|
32
|
+
{{#each layerBToolNames}}
|
|
33
|
+
- `{{this}}`
|
|
34
|
+
{{/each}}
|
|
27
35
|
|
|
28
36
|
## Assistant catalog
|
|
29
37
|
|
|
@@ -31,14 +39,16 @@ Runtime lists **assistants** available to each user from:
|
|
|
31
39
|
|
|
32
40
|
{{assistantCatalogUrl}}
|
|
33
41
|
|
|
34
|
-
##
|
|
42
|
+
## Probe truthfulness
|
|
35
43
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
44
|
+
- `builderValidated` means package files, ZIP, hashes, and secret checks passed.
|
|
45
|
+
- `runtimeValidated` means Runtime MCP is reachable and tool boundary checks pass.
|
|
46
|
+
- `requiresMicrosoftAdmin` remains true until tenant upload/approval/assignment is complete.
|
|
39
47
|
|
|
40
|
-
|
|
48
|
+
## Validate after admin setup
|
|
41
49
|
|
|
42
50
|
```bash
|
|
43
51
|
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
|
|
44
52
|
```
|
|
53
|
+
|
|
54
|
+
`--force` regenerates artifacts but does not rotate credentials.
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
# Microsoft Copilot
|
|
1
|
+
# Microsoft 365 Copilot package channel
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Generated by `aifabrix channel scaffold microsoft-copilot`.
|
|
4
|
+
|
|
5
|
+
Recommended flow:
|
|
4
6
|
|
|
5
7
|
```bash
|
|
6
|
-
|
|
7
|
-
aifabrix
|
|
8
|
-
aifabrix upload microsoft-copilot --probe
|
|
9
|
-
aifabrix deploy microsoft-copilot
|
|
10
|
-
aifabrix app add-channel microsoft-copilot --name "Your Assistant"
|
|
8
|
+
aifabrix upload microsoft-copilot --force
|
|
9
|
+
aifabrix channel add microsoft-copilot --name "Your Assistant" --probe
|
|
11
10
|
```
|
|
11
|
+
|
|
12
|
+
`channel add` generates package artifacts under
|
|
13
|
+
`dist/channels/microsoft-copilot/` for Microsoft 365 tenant admins.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"app": {
|
|
3
3
|
"key": "microsoft-copilot",
|
|
4
|
-
"displayName": "Microsoft Copilot
|
|
5
|
-
"description": "Assistant communication channel — deploy then
|
|
4
|
+
"displayName": "Microsoft Copilot package channel",
|
|
5
|
+
"description": "Assistant communication channel — deploy then channel add",
|
|
6
6
|
"type": "external"
|
|
7
7
|
},
|
|
8
8
|
"externalIntegration": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "microsoft-copilot",
|
|
3
|
-
"displayName": "Microsoft Copilot
|
|
4
|
-
"description": "Communication external system for Microsoft Copilot
|
|
3
|
+
"displayName": "Microsoft Copilot package channel",
|
|
4
|
+
"description": "Communication external system for Microsoft Copilot package onboarding",
|
|
5
5
|
"type": "custom",
|
|
6
6
|
"systemKind": "communication",
|
|
7
7
|
"enabled": true,
|
|
@@ -9,14 +9,15 @@
|
|
|
9
9
|
"authType": "credential",
|
|
10
10
|
"credential": {
|
|
11
11
|
"credentialKey": "microsoft-copilot-channel",
|
|
12
|
-
"displayName": "Microsoft Copilot
|
|
12
|
+
"displayName": "Microsoft Copilot package channel",
|
|
13
13
|
"method": "oauth2",
|
|
14
14
|
"writeOnce": true,
|
|
15
15
|
"variables": {
|
|
16
|
+
"baseUrl": "https://login.microsoftonline.com",
|
|
17
|
+
"authorizationUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
|
|
16
18
|
"tokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token",
|
|
17
|
-
"grantType": "
|
|
18
|
-
"scope": "
|
|
19
|
-
"baseUrl": "https://graph.microsoft.com/v1.0"
|
|
19
|
+
"grantType": "authorization_code",
|
|
20
|
+
"scope": "openid profile offline_access"
|
|
20
21
|
},
|
|
21
22
|
"security": {
|
|
22
23
|
"clientId": "kv://microsoft-copilot/clientId",
|
|
@@ -1,8 +1,36 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
|
|
2
|
+
"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.21/MicrosoftTeams.schema.json",
|
|
3
|
+
"manifestVersion": "1.21",
|
|
4
|
+
"version": "{{packageVersion}}",
|
|
5
|
+
"id": "{{packageAppId}}",
|
|
6
|
+
"name": {
|
|
7
|
+
"short": "{{baseName}}",
|
|
8
|
+
"full": "{{appName}}"
|
|
9
|
+
},
|
|
10
|
+
"description": {
|
|
11
|
+
"short": "{{appDescription}}",
|
|
12
|
+
"full": "{{appDescription}}"
|
|
13
|
+
},
|
|
14
|
+
"developer": {
|
|
15
|
+
"name": "AI Fabrix",
|
|
16
|
+
"websiteUrl": "{{dataplaneBaseUrl}}",
|
|
17
|
+
"privacyUrl": "{{dataplaneBaseUrl}}/privacy",
|
|
18
|
+
"termsOfUseUrl": "{{dataplaneBaseUrl}}/terms"
|
|
19
|
+
},
|
|
20
|
+
"icons": {
|
|
21
|
+
"color": "color.png",
|
|
22
|
+
"outline": "outline.png"
|
|
23
|
+
},
|
|
24
|
+
"accentColor": "#0F172A",
|
|
25
|
+
"copilotAgents": {
|
|
26
|
+
"declarativeAgents": [
|
|
27
|
+
{
|
|
28
|
+
"id": "{{packageAppId}}-agent",
|
|
29
|
+
"file": "declarativeAgent.json"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"validDomains": [
|
|
34
|
+
"{{runtimeDomain}}"
|
|
35
|
+
]
|
|
8
36
|
}
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
"signatureHeader": "X-Slack-Signature",
|
|
18
18
|
"timestampHeader": "X-Slack-Request-Timestamp",
|
|
19
19
|
"signaturePrefix": "v0=",
|
|
20
|
-
"timestampMaxAge": "300"
|
|
20
|
+
"timestampMaxAge": "300",
|
|
21
|
+
"baseUrl": "https://slack.com",
|
|
22
|
+
"testEndpoint": "https://slack.com/api/auth.test"
|
|
21
23
|
},
|
|
22
24
|
"security": {
|
|
23
25
|
"signingSecret": "kv://slack/signingSecret",
|
|
@@ -36,7 +38,63 @@
|
|
|
36
38
|
]
|
|
37
39
|
}
|
|
38
40
|
},
|
|
39
|
-
"configuration": [
|
|
41
|
+
"configuration": [
|
|
42
|
+
{
|
|
43
|
+
"name": "ENABLE_PROACTIVE_MESSAGING",
|
|
44
|
+
"value": "true",
|
|
45
|
+
"location": "variable",
|
|
46
|
+
"required": false,
|
|
47
|
+
"portalInput": {
|
|
48
|
+
"field": "select",
|
|
49
|
+
"label": "Enable proactive messaging",
|
|
50
|
+
"options": ["true", "false"]
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "ENABLE_CHANNEL_NOTIFICATIONS",
|
|
55
|
+
"value": "true",
|
|
56
|
+
"location": "variable",
|
|
57
|
+
"required": false,
|
|
58
|
+
"portalInput": {
|
|
59
|
+
"field": "select",
|
|
60
|
+
"label": "Enable channel notifications",
|
|
61
|
+
"options": ["true", "false"]
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "ENABLE_DIRECT_MESSAGES",
|
|
66
|
+
"value": "true",
|
|
67
|
+
"location": "variable",
|
|
68
|
+
"required": false,
|
|
69
|
+
"portalInput": {
|
|
70
|
+
"field": "select",
|
|
71
|
+
"label": "Enable direct messages",
|
|
72
|
+
"options": ["true", "false"]
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "ENABLE_MODALS",
|
|
77
|
+
"value": "true",
|
|
78
|
+
"location": "variable",
|
|
79
|
+
"required": false,
|
|
80
|
+
"portalInput": {
|
|
81
|
+
"field": "select",
|
|
82
|
+
"label": "Enable modals",
|
|
83
|
+
"options": ["true", "false"]
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"name": "ENABLE_SHORTCUTS",
|
|
88
|
+
"value": "true",
|
|
89
|
+
"location": "variable",
|
|
90
|
+
"required": false,
|
|
91
|
+
"portalInput": {
|
|
92
|
+
"field": "select",
|
|
93
|
+
"label": "Enable shortcuts",
|
|
94
|
+
"options": ["true", "false"]
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
],
|
|
40
98
|
"dataSources": ["slack-messages", "slack-conversations"],
|
|
41
99
|
"endpoints": [
|
|
42
100
|
{
|