@aifabrix/builder 2.49.2 → 2.50.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/.cursor/rules/deploy-rules/docker-image-ip-policy.mdc +49 -0
- package/.cursor/rules/plan-rules/application-lifecycle.mdc +30 -0
- package/.cursor/rules/plan-rules/plan-frontmatter.mdc +35 -0
- package/.cursor/rules/plan-rules/plan-lifecycle.mdc +31 -0
- package/.cursor/rules/plan-rules/plan-validation-gate.mdc +34 -0
- package/.cursor/skills/README.md +1 -0
- package/.dockerignore +52 -0
- package/.eslintignore +22 -0
- package/README.md +2 -0
- package/bin/builder-api-cleanup.js +26 -0
- package/bin/builder-api-nest.js +10 -0
- package/bin/builder-api-spike.js +19 -0
- package/enterprise-knowledge/README.md +50 -0
- package/enterprise-knowledge/enterprise-integration-lifecycle/README.md +22 -0
- package/enterprise-knowledge/enterprise-integration-lifecycle/application.json +15 -0
- package/enterprise-knowledge/enterprise-integration-lifecycle/deploy.js +69 -0
- package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-deploy.json +52 -0
- package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-system.json +29 -0
- package/enterprise-knowledge/enterprise-integration-lifecycle/env.template +2 -0
- package/integration/README.md +81 -0
- package/integration/github/README.md +53 -0
- package/integration/github/application.json +21 -0
- package/integration/github/deploy.js +72 -0
- package/integration/github/env.template +11 -0
- package/integration/github/github-datasource-issue-comments.json +239 -0
- package/integration/github/github-datasource-issues.json +399 -0
- package/integration/github/github-datasource-repository.json +354 -0
- package/integration/github/github-deploy.json +1202 -0
- package/integration/github/github-system.json +82 -0
- package/integration/hubspot-test/README.md +1 -1
- package/jest.isolated-projects.js +31 -1
- package/jest.projects.js +87 -1
- package/lib/api/dev-server-https.js +1 -1
- package/lib/api/enterprise-knowledge.api.js +63 -0
- package/lib/api/evidence.api.js +172 -0
- package/lib/api/external-systems.api.js +8 -2
- package/lib/api/resource-types.api.js +1 -0
- package/lib/api/types/enterprise-knowledge.types.js +46 -0
- package/lib/api/types/evidence.types.js +67 -0
- package/lib/api/types/resource-types.types.js +2 -0
- package/lib/app/controller-application-filter.js +36 -0
- package/lib/app/deploy.js +1 -1
- package/lib/app/list-external-systems.js +130 -0
- package/lib/app/list.js +20 -8
- package/lib/app/run.js +3 -1
- package/lib/app/show-display.js +8 -3
- package/lib/app/show-online.js +178 -0
- package/lib/app/show.js +37 -88
- package/lib/build/builder-api-docker-staging.js +47 -0
- package/lib/build/miso-controller-npm-sdk-guard.js +2 -2
- package/lib/build/standard-docker-build.js +2 -0
- package/lib/certification/post-unified-cert-sync.js +4 -31
- package/lib/certification/sync-after-external-command.js +0 -1
- package/lib/certification/sync-system-certification.js +0 -3
- package/lib/channels/add-channel.js +40 -34
- package/lib/channels/approval-guides/chatgpt.js +33 -0
- package/lib/channels/approval-guides/credential-portal.js +38 -0
- package/lib/channels/approval-guides/index.js +110 -0
- package/lib/channels/approval-guides/microsoft-copilot.js +34 -0
- package/lib/channels/approval-guides/slack.js +34 -0
- package/lib/channels/approval-guides/teams-bot.js +35 -0
- package/lib/channels/approval-guides/web-embed.js +32 -0
- package/lib/channels/channel-approval-guide.js +11 -0
- package/lib/channels/channel-artifact-generator.js +16 -4
- package/lib/channels/channel-audit.js +3 -0
- package/lib/channels/channel-auth-context.js +1 -1
- package/lib/channels/channel-description.js +59 -0
- package/lib/channels/channel-integration-generator.js +13 -230
- package/lib/channels/channel-integration-template.js +94 -0
- package/lib/channels/channel-runtime-resolver.js +43 -3
- package/lib/channels/channel-status-display.js +66 -26
- package/lib/channels/channel-targets.js +3 -3
- package/lib/cli/index.js +27 -3
- package/lib/cli/infra-guided.js +5 -1
- package/lib/cli/setup-app-external-create.js +111 -0
- package/lib/cli/setup-app.help.js +1 -1
- package/lib/cli/setup-app.js +38 -125
- package/lib/cli/setup-app.test-commands.js +26 -52
- package/lib/cli/setup-certification-commands.js +4 -4
- package/lib/cli/setup-certification.help.js +9 -9
- package/lib/cli/setup-dev.js +7 -2
- package/lib/cli/setup-external-system-help.js +4 -6
- package/lib/cli/setup-external-system.js +58 -52
- package/lib/cli/setup-infra-up-builder-api-action.js +64 -0
- package/lib/cli/setup-infra-up-platform-action.js +3 -1
- package/lib/cli/setup-infra.js +15 -0
- package/lib/cli/setup-list.js +43 -0
- package/lib/cli/setup-utility-repair.js +26 -7
- package/lib/cli/setup-utility.js +5 -3
- package/lib/commands/app.js +15 -43
- package/lib/commands/channel-add-setup.js +110 -0
- package/lib/commands/channel.js +42 -8
- package/lib/commands/datasource-sync-display.js +96 -0
- package/lib/commands/datasource-sync-policy.js +210 -0
- package/lib/commands/datasource-test-trust-cli.js +6 -6
- package/lib/commands/datasource-unified-test-cli.js +2 -1
- package/lib/commands/datasource-unified-test-cli.options.js +33 -23
- package/lib/commands/deploy-gate-failure-details.js +163 -0
- package/lib/commands/deploy-gate-orchestrator.js +322 -0
- package/lib/commands/dev-cli-handlers.js +1 -59
- package/lib/commands/dev-host-ops-params.js +91 -0
- package/lib/commands/dev-host-ops-poll.js +111 -0
- package/lib/commands/dev-host-ops.js +107 -94
- package/lib/commands/dev-init.js +3 -1
- package/lib/commands/enterprise-knowledge.js +284 -0
- package/lib/commands/evidence-cli-leaves.js +250 -0
- package/lib/commands/evidence.js +51 -0
- package/lib/commands/governance-cli-shared.js +2 -2
- package/lib/commands/governance-command-action.js +2 -2
- package/lib/commands/governance-fixture-subjects.js +85 -0
- package/lib/commands/governance.js +1 -1
- package/lib/commands/lifecycle-command-action.js +2 -2
- package/lib/commands/lifecycle-external.js +3 -3
- package/lib/commands/manifest-cli-auth.js +29 -0
- package/lib/commands/manifest-cli-commands.js +170 -0
- package/lib/commands/manifest-cli-integration-path.js +63 -0
- package/lib/commands/manifest.js +21 -0
- package/lib/commands/protection-cli-leaves.js +3 -3
- package/lib/commands/repair-auth-apply.js +15 -1
- package/lib/commands/repair-authentications-454.js +169 -0
- package/lib/commands/repair-capability-openapi-warnings.js +126 -0
- package/lib/commands/repair-datasource-apply.js +135 -0
- package/lib/commands/repair-datasource-auto-rbac.js +62 -1
- package/lib/commands/repair-datasource-http-service-contract.js +239 -0
- package/lib/commands/repair-datasource-operation-security.js +180 -0
- package/lib/commands/repair-datasource-run.js +7 -2
- package/lib/commands/repair-datasource-sync-operations.js +177 -0
- package/lib/commands/repair-datasource-webhooks-sync-bridge.js +133 -0
- package/lib/commands/repair-datasource.js +12 -68
- package/lib/commands/repair-env-template.js +11 -1
- package/lib/commands/repair-external-run.js +121 -31
- package/lib/commands/repair-internal.js +1 -1
- package/lib/commands/repair-openapi-export.js +156 -0
- package/lib/commands/repair-openapi-sync.js +19 -2
- package/lib/commands/repair-orchestration-datasource-split.js +259 -0
- package/lib/commands/repair-persist.js +22 -1
- package/lib/commands/repair-rbac-platform-preset.js +204 -0
- package/lib/commands/repair-rbac-reader-roles.js +191 -0
- package/lib/commands/repair-rbac.js +163 -86
- package/lib/commands/repair-steps.js +83 -18
- package/lib/commands/repair-system-permissions.js +1 -0
- package/lib/commands/repair.js +1 -1
- package/lib/commands/resource-type.js +65 -26
- package/lib/commands/run-post-publish-data-sync.js +68 -0
- package/lib/commands/setup-modes.js +1 -1
- package/lib/commands/test-e2e-external.js +21 -8
- package/lib/commands/test-governance-cli-options.js +2 -2
- package/lib/commands/test-trust-cli-options.js +2 -2
- package/lib/commands/up-builder-api-bootstrap.js +71 -0
- package/lib/commands/up-builder-api-provision.js +241 -0
- package/lib/commands/up-builder-api.js +88 -0
- package/lib/commands/up-common.js +25 -1
- package/lib/commands/upload-credential-push-log.js +117 -0
- package/lib/commands/upload-data-sync-finalize.js +60 -0
- package/lib/commands/upload-probe.js +66 -0
- package/lib/commands/upload-publish-context.js +4 -1
- package/lib/commands/upload-sidecar-followups.js +55 -27
- package/lib/commands/upload.js +116 -157
- package/lib/commands/verify-governance-combined-external.js +1 -1
- package/lib/commands/verify-governance-db.js +2 -2
- package/lib/commands/verify-operations-command-action.js +2 -2
- package/lib/commands/verify-operations-step-plan.js +2 -2
- package/lib/commands/verify-operations-steps.js +2 -2
- package/lib/commands/verify-trust-command-action.js +1 -1
- package/lib/commands/wizard-core.js +1 -1
- package/lib/commands/wizard-headless.js +2 -1
- package/lib/core/admin-secrets.js +2 -6
- package/lib/core/secrets-env-content.js +10 -4
- package/lib/core/secrets-env-write.js +2 -13
- package/lib/datasource/agent-trust-run.js +3 -3
- package/lib/datasource/deploy.js +3 -1
- package/lib/datasource/test-e2e.js +6 -1
- package/lib/datasource/unified-validation-run-body.js +4 -1
- package/lib/datasource/unified-validation-run.js +1 -1
- package/lib/deployment/deploy-poll-ui.js +73 -12
- package/lib/deployment/deployer-poll-run.js +113 -0
- package/lib/deployment/deployer.js +17 -87
- package/lib/evidence/dataplane-context.js +21 -0
- package/lib/evidence/evidence-display.js +78 -0
- package/lib/evidence/evidence-service.js +392 -0
- package/lib/external-system/deploy.js +290 -112
- package/lib/external-system/download.js +7 -3
- package/lib/external-system/test-execution.js +1 -1
- package/lib/external-system/test-system-level.js +8 -10
- package/lib/external-system/test.js +12 -6
- package/lib/generator/deploy-script.js +73 -0
- package/lib/generator/external.js +2 -1
- package/lib/generator/index.js +17 -2
- package/lib/generator/wizard.js +3 -36
- package/lib/internal/fs-real-sync.js +22 -1
- package/lib/internal/node-fs.js +2 -0
- package/lib/lifecycle/lifecycle-governance-options.js +1 -1
- package/lib/lifecycle/verify-step-progress.js +1 -1
- package/lib/programmatic/access-log.js +26 -0
- package/lib/programmatic/auth-config.js +44 -0
- package/lib/programmatic/bearer-auth.js +176 -0
- package/lib/programmatic/builder-api-request.js +175 -0
- package/lib/programmatic/builder-api-route-dispatch.js +82 -0
- package/lib/programmatic/builder-api-runtime-config.js +42 -0
- package/lib/programmatic/builder-api-server.js +230 -0
- package/lib/programmatic/builder-help-authentication-catalog.js +282 -0
- package/lib/programmatic/builder-help-connected-system-ui.js +266 -0
- package/lib/programmatic/builder-help-enterprise-sync-fabrix.js +60 -0
- package/lib/programmatic/builder-help-envelope.js +36 -0
- package/lib/programmatic/builder-help-fixtures.js +200 -0
- package/lib/programmatic/builder-help-governance.js +172 -0
- package/lib/programmatic/builder-help-schema-catalog.js +92 -0
- package/lib/programmatic/builder-help.js +361 -0
- package/lib/programmatic/capability-registry.js +77 -0
- package/lib/programmatic/command-options.js +32 -0
- package/lib/programmatic/enterprise-mcp-client.js +98 -0
- package/lib/programmatic/http-problem-details.js +99 -0
- package/lib/programmatic/http-route-match.js +40 -0
- package/lib/programmatic/idempotency-cache.js +69 -0
- package/lib/programmatic/index.js +53 -0
- package/lib/programmatic/integration-path-scope.js +39 -0
- package/lib/programmatic/log-redaction.js +66 -0
- package/lib/programmatic/manifest-get-section.js +146 -0
- package/lib/programmatic/manifest-patch-section.js +252 -0
- package/lib/programmatic/manifest-repair.js +122 -0
- package/lib/programmatic/manifest-section-dependency-graph.js +160 -0
- package/lib/programmatic/manifest-section-io.js +225 -0
- package/lib/programmatic/manifest-section-quality.js +171 -0
- package/lib/programmatic/manifest-section-registry-data.js +269 -0
- package/lib/programmatic/manifest-section-registry.js +205 -0
- package/lib/programmatic/nest-http-bridge.js +34 -0
- package/lib/programmatic/openapi-component-schemas.js +68 -0
- package/lib/programmatic/openapi-description-enricher.js +117 -0
- package/lib/programmatic/openapi-descriptions.js +190 -0
- package/lib/programmatic/openapi-docs-serving.js +123 -0
- package/lib/programmatic/openapi-help-schemas.js +63 -0
- package/lib/programmatic/openapi-manifest-schemas.js +141 -0
- package/lib/programmatic/openapi-operation-bindings.js +274 -0
- package/lib/programmatic/openapi-request-schemas.js +155 -0
- package/lib/programmatic/openapi-result-schemas.js +476 -0
- package/lib/programmatic/openapi-schema-descriptions-certify.js +139 -0
- package/lib/programmatic/openapi-schema-descriptions-core.js +159 -0
- package/lib/programmatic/openapi-schema-descriptions-help.js +40 -0
- package/lib/programmatic/openapi-schema-descriptions-manifest.js +143 -0
- package/lib/programmatic/openapi-schema-descriptions-mcp.js +118 -0
- package/lib/programmatic/openapi-schema-descriptions-operations.js +281 -0
- package/lib/programmatic/openapi-schema-helpers.js +93 -0
- package/lib/programmatic/openapi-spec.js +203 -0
- package/lib/programmatic/orchestration-openapi-meta.js +159 -0
- package/lib/programmatic/platform-rbac-catalog.js +90 -0
- package/lib/programmatic/request-timeout.js +53 -0
- package/lib/programmatic/route-handler-map.js +143 -0
- package/lib/programmatic/route-handlers-context.js +29 -0
- package/lib/programmatic/route-handlers.js +33 -0
- package/lib/programmatic/run-certify.js +57 -0
- package/lib/programmatic/run-enterprise-mcp.js +32 -0
- package/lib/programmatic/run-lifecycle.js +29 -0
- package/lib/programmatic/run-repair.js +41 -0
- package/lib/programmatic/run-repository-emcp.js +54 -0
- package/lib/programmatic/run-template-workspace.js +61 -0
- package/lib/programmatic/run-test.js +49 -0
- package/lib/programmatic/run-upload.js +63 -0
- package/lib/programmatic/run-validate.js +53 -0
- package/lib/programmatic/run-wizard.js +40 -0
- package/lib/programmatic/system-key.js +48 -0
- package/lib/programmatic/wizard-config-normalize.js +118 -0
- package/lib/programmatic/workspace-cleanup.js +128 -0
- package/lib/programmatic/workspace-context.js +145 -0
- package/lib/programmatic/workspace-lock.js +75 -0
- package/lib/programmatic/workspace-meta.js +64 -0
- package/lib/programmatic/workspace-ops.js +149 -0
- package/lib/protection/run-commands-upload-sync.js +35 -0
- package/lib/protection/run-commands.js +2 -20
- package/lib/protection/upload-batch.js +11 -7
- package/lib/resolvers/resource-type-file.js +22 -0
- package/lib/schema/external-datasource.schema.json +161 -1
- package/lib/schema/external-system.schema.json +244 -118
- package/lib/schema/flag-map-validation-run.json +3 -0
- package/lib/schema/type/credential-field-registry.json +2 -2
- package/lib/schema/type/document-storage.json +9 -0
- package/lib/utils/agent-trust-run-display.js +1 -1
- package/lib/utils/app-path-resolve.js +168 -0
- package/lib/utils/authentication-env-template.js +222 -0
- package/lib/utils/cli-sync-options.js +7 -11
- package/lib/utils/cli-utils.js +4 -0
- package/lib/utils/cli-workspace-options.js +29 -0
- package/lib/utils/compose-generate-docker-compose.js +102 -0
- package/lib/utils/configuration-env-resolver.js +203 -27
- package/lib/utils/datasource-test-run-certificate-tty.js +28 -2
- package/lib/utils/datasource-test-run-certification-debug.js +130 -0
- package/lib/utils/datasource-test-run-debug-display.js +2 -0
- package/lib/utils/datasource-test-run-debug-slice.js +7 -0
- package/lib/utils/datasource-test-run-display.js +2 -1
- package/lib/utils/dev-init-ssh-merge.js +165 -23
- package/lib/utils/dev-pin-share-instructions.js +110 -0
- package/lib/utils/dev-ssh-config-helper.js +177 -33
- package/lib/utils/enterprise-knowledge-paths.js +142 -0
- package/lib/utils/env-copy.js +2 -1
- package/lib/utils/env-dotenv-format.js +103 -0
- package/lib/utils/external-env-template.js +4 -1
- package/lib/utils/external-system-display.js +5 -1
- package/lib/utils/external-system-readiness-compact-blocks.js +221 -0
- package/lib/utils/external-system-readiness-compact-display.js +324 -0
- package/lib/utils/external-system-readiness-core.js +16 -0
- package/lib/utils/external-system-readiness-deploy-display.js +29 -11
- package/lib/utils/external-system-readiness-display-internals.js +3 -1
- package/lib/utils/external-system-readiness-display.js +20 -30
- package/lib/utils/external-system-system-test-tty-certification.js +135 -0
- package/lib/utils/external-system-system-test-tty.js +5 -41
- package/lib/utils/help-builder.js +6 -1
- package/lib/utils/host-ops-job-labels.js +236 -0
- package/lib/utils/host-ops-job-result.js +61 -0
- package/lib/utils/host-ops-poll-ui.js +163 -0
- package/lib/utils/integration-path-resolve.js +112 -0
- package/lib/utils/paths-reload-source.js +148 -0
- package/lib/utils/paths-system-builder-keys.js +25 -0
- package/lib/utils/paths.js +151 -26
- package/lib/utils/runtime-configuration-values.js +64 -2
- package/lib/utils/secrets-helpers.js +5 -1
- package/lib/utils/ssh-known-hosts.js +130 -0
- package/lib/utils/test-target-cli-options.js +75 -0
- package/lib/utils/upload-sync-options.js +4 -0
- package/lib/utils/validation-run-request.js +11 -2
- package/lib/validation/external-manifest-validator.js +11 -1
- package/lib/validation/openapi-contract-surface-validator.js +426 -0
- package/lib/validation/openapi-contract-vendor-validation.js +238 -0
- package/lib/validation/validate-external-file.js +160 -0
- package/lib/validation/validate.js +6 -117
- package/package.json +46 -29
- package/packages/builder-api/README.md +120 -0
- package/packages/builder-api/package.json +30 -0
- package/packages/builder-api/src/app.module.ts +7 -0
- package/packages/builder-api/src/auth/auth.module.ts +5 -0
- package/packages/builder-api/src/external-system/external-system.module.ts +5 -0
- package/packages/builder-api/src/main.ts +16 -0
- package/packages/builder-api/tsconfig.json +15 -0
- package/scripts/check-builder-api-architecture-grep.js +79 -0
- package/scripts/docker_image_content_gate.js +47 -0
- package/scripts/docker_image_content_gate.sh +5 -0
- package/scripts/export-builder-api-evidence.js +262 -0
- package/scripts/lib/builder-api-docker-staging-copy.js +60 -0
- package/scripts/lib/builder-api-docker-staging-core.js +183 -0
- package/scripts/lib/docker-image-content-gate-core.js +166 -0
- package/scripts/lib/plan-actor.js +109 -0
- package/scripts/lib/plan-config.js +20 -0
- package/scripts/lib/plan-gates.js +154 -0
- package/scripts/lib/plan-meta.js +104 -0
- package/scripts/lib/plan-parse.js +162 -0
- package/scripts/lib/plan-prevalidate-gates.js +326 -0
- package/scripts/lib/plan-run-core.js +125 -0
- package/scripts/lib/plan-run-report.js +108 -0
- package/scripts/plan-approve.js +24 -0
- package/scripts/plan-archive.js +49 -0
- package/scripts/plan-run.js +13 -0
- package/scripts/plan-set-actor.js +21 -0
- package/scripts/plan-validate.js +80 -0
- package/scripts/pnpm/af.mjs +110 -0
- package/scripts/pnpm/check-quiet.mjs +32 -0
- package/scripts/pnpm/dev-install.mjs +29 -0
- package/scripts/pnpm/dev-reload.mjs +18 -0
- package/scripts/pnpm/help.mjs +55 -0
- package/scripts/pnpm/lib/dev-reload-core.mjs +189 -0
- package/scripts/pnpm/lib/dev-reload-log-capture.mjs +67 -0
- package/scripts/pnpm/lib/dev-reload-log-utils.mjs +32 -0
- package/scripts/pnpm/lib/resolve-aifabrix-bin.mjs +124 -0
- package/scripts/pnpm/lib/resolve-app-url.mjs +183 -0
- package/scripts/pnpm/lib/spinner.mjs +42 -0
- package/scripts/stage_builder_api_for_docker.js +65 -0
- package/scripts/sync-builder-api-template.js +44 -0
- package/templates/README.md +3 -0
- package/templates/applications/builder-api/Dockerfile +38 -0
- package/templates/applications/builder-api/application.yaml +75 -0
- package/templates/applications/builder-api/env.template +48 -0
- package/templates/applications/dataplane/application.yaml +1 -1
- package/templates/applications/dataplane/env.template +10 -6
- package/templates/applications/dataplane/rbac.yaml +21 -1
- package/templates/applications/miso-controller/application.yaml +1 -1
- package/templates/applications/miso-controller/env.template +1 -3
- package/templates/channels/README.md +18 -0
- package/templates/channels/ai-fabrix-icon.jpg +0 -0
- package/templates/channels/chatgpt/install.template.md.hbs +21 -24
- package/templates/channels/chatgpt/integration/README.md +11 -0
- package/templates/channels/chatgpt/integration/application.json +15 -0
- package/templates/channels/chatgpt/integration/chatgpt-system.json +29 -0
- package/templates/channels/chatgpt/integration/env.template +4 -0
- package/templates/channels/microsoft-copilot/install.template.md.hbs +20 -25
- package/templates/channels/microsoft-copilot/integration/README.md +11 -0
- package/templates/channels/microsoft-copilot/integration/application.json +15 -0
- package/templates/channels/microsoft-copilot/integration/env.template +6 -0
- package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +34 -0
- package/templates/channels/slack/install.template.md.hbs +48 -18
- package/templates/channels/slack/integration/README.md +38 -0
- package/templates/channels/slack/integration/application.json +18 -0
- package/templates/channels/slack/integration/env.template +29 -0
- package/templates/channels/slack/integration/slack-datasource-conversations.json +226 -0
- package/templates/channels/slack/integration/slack-datasource-messages.json +269 -0
- package/templates/channels/slack/integration/slack-system.json +86 -0
- package/templates/channels/slack/manifest.template.json.hbs +20 -10
- package/templates/channels/teams-bot/install.template.md.hbs +31 -17
- package/templates/channels/teams-bot/integration/README.md +18 -0
- package/templates/channels/teams-bot/integration/application.json +17 -0
- package/templates/channels/teams-bot/integration/env.template +5 -0
- package/templates/channels/teams-bot/integration/teams-bot-system.json +55 -0
- package/templates/channels/teams-bot/manifest.template.json.hbs +27 -0
- package/templates/channels/web-embed/install.template.md.hbs +16 -26
- package/templates/channels/web-embed/integration/README.md +11 -0
- package/templates/channels/web-embed/integration/application.json +15 -0
- package/templates/channels/web-embed/integration/env.template +4 -0
- package/templates/channels/web-embed/integration/web-embed-system.json +29 -0
- package/templates/openapi/redoc_page.html +86 -0
- package/templates/python/docker-compose.hbs +11 -0
- package/templates/python/requirements.txt +1 -1
- package/templates/typescript/docker-compose.hbs +11 -0
- package/lib/certification/cli-cert-sync-skip.js +0 -21
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Publish builder/builder-api/ SSOT → templates/applications/builder-api/
|
|
4
|
+
* (manifest files only — no README; use builder/builder-api/README.md and packages/builder-api/README.md)
|
|
5
|
+
*
|
|
6
|
+
* @fileoverview sync-json for builder-api platform app (plan 154.2)
|
|
7
|
+
* @author AI Fabrix Team
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
const fs = require('fs');
|
|
14
|
+
const path = require('path');
|
|
15
|
+
|
|
16
|
+
const REPO_ROOT = path.resolve(__dirname, '..');
|
|
17
|
+
const SSOT_DIR = path.join(REPO_ROOT, 'builder', 'builder-api');
|
|
18
|
+
const TEMPLATE_DIR = path.join(REPO_ROOT, 'templates', 'applications', 'builder-api');
|
|
19
|
+
|
|
20
|
+
const SYNC_FILES = ['application.yaml', 'Dockerfile', 'env.template'];
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Publish builder/builder-api/ SSOT → templates/applications/builder-api/
|
|
24
|
+
* @returns {void}
|
|
25
|
+
*/
|
|
26
|
+
function main() {
|
|
27
|
+
if (!fs.existsSync(SSOT_DIR)) {
|
|
28
|
+
console.error(`Missing SSOT directory: ${SSOT_DIR}`);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
fs.mkdirSync(TEMPLATE_DIR, { recursive: true });
|
|
32
|
+
for (const name of SYNC_FILES) {
|
|
33
|
+
const src = path.join(SSOT_DIR, name);
|
|
34
|
+
const dest = path.join(TEMPLATE_DIR, name);
|
|
35
|
+
if (!fs.existsSync(src)) {
|
|
36
|
+
console.error(`Missing SSOT file: ${src}`);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
fs.copyFileSync(src, dest);
|
|
40
|
+
console.log(`sync-json: ${path.relative(REPO_ROOT, src)} → ${path.relative(REPO_ROOT, dest)}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
main();
|
package/templates/README.md
CHANGED
|
@@ -13,6 +13,9 @@ Application templates are folder-based and located under `templates/applications
|
|
|
13
13
|
**Example:**
|
|
14
14
|
- `templates/applications/miso-controller/` - Miso Controller application template
|
|
15
15
|
- `templates/applications/keycloak/` - Keycloak application template
|
|
16
|
+
- `templates/applications/builder-api/` - Builder API platform webapp (published from `builder/builder-api/` via `npm run sync-json`)
|
|
17
|
+
|
|
18
|
+
**Platform SSOT (builder-api, plan 154.2):** Edit `builder/builder-api/` in the aifabrix-builder repo, then run `npm run sync-json` to publish `application.yaml`, `Dockerfile`, and `env.template` into `templates/applications/builder-api/`. Install with `aifabrix up-platform` or `aifabrix up-builder-api` — not hand-editing the template copy.
|
|
16
19
|
|
|
17
20
|
**Template Validation:**
|
|
18
21
|
- Template folder must exist in `templates/applications/<name>/`
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Builder API production image — explicit runtime COPY only (plan 154.3).
|
|
2
|
+
# SSOT: builder/builder-api/Dockerfile — publish with `npm run sync-json`
|
|
3
|
+
# Staging: node scripts/stage_builder_api_for_docker.js (also runs via `aifabrix build builder-api`)
|
|
4
|
+
# Build context: repo root (application.yaml build.context ../..). .dockerignore is second line of defense.
|
|
5
|
+
# Never ship: .cursor/, integration/, tests/, templates/applications|github|infra|*, bin/aifabrix.js, packages/.
|
|
6
|
+
# Allowed templates in image: templates/openapi/, templates/external-system/ (via staging manifest only).
|
|
7
|
+
|
|
8
|
+
FROM node:20-bookworm-slim
|
|
9
|
+
|
|
10
|
+
ENV NODE_ENV=production \
|
|
11
|
+
PORT=3005
|
|
12
|
+
|
|
13
|
+
WORKDIR /app
|
|
14
|
+
|
|
15
|
+
RUN apt-get update \
|
|
16
|
+
&& apt-get install -y --no-install-recommends dumb-init \
|
|
17
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
18
|
+
|
|
19
|
+
COPY package.json package-lock.json ./
|
|
20
|
+
RUN npm ci --omit=dev && npm cache clean --force
|
|
21
|
+
|
|
22
|
+
COPY docker-builder-api-staging/lib ./lib
|
|
23
|
+
COPY docker-builder-api-staging/bin/builder-api-spike.js ./bin/builder-api-spike.js
|
|
24
|
+
COPY docker-builder-api-staging/bin/builder-api-cleanup.js ./bin/builder-api-cleanup.js
|
|
25
|
+
COPY docker-builder-api-staging/templates ./templates
|
|
26
|
+
|
|
27
|
+
RUN addgroup --system appgroup \
|
|
28
|
+
&& adduser --system --ingroup appgroup --home /app appuser \
|
|
29
|
+
&& chown -R appuser:appgroup /app
|
|
30
|
+
USER appuser
|
|
31
|
+
|
|
32
|
+
EXPOSE 3005
|
|
33
|
+
|
|
34
|
+
HEALTHCHECK --interval=30s --timeout=10s --start-period=15s --retries=3 \
|
|
35
|
+
CMD node -e "require('http').get('http://127.0.0.1:'+(process.env.PORT||3005)+'/api/v1/builder/health',(r)=>process.exit(r.statusCode===200?0:1)).on('error',()=>process.exit(1))"
|
|
36
|
+
|
|
37
|
+
ENTRYPOINT ["dumb-init", "--"]
|
|
38
|
+
CMD ["node", "bin/builder-api-spike.js"]
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Application Metadata
|
|
2
|
+
app:
|
|
3
|
+
key: builder-api
|
|
4
|
+
displayName: 'AI Fabrix Builder API'
|
|
5
|
+
description: 'Stateless HTTP orchestration for external-system workspace lifecycle. Provider-neutral integration flows via Dataplane Enterprise MCP and governance APIs (154.0 / 154.1).'
|
|
6
|
+
type: webapp
|
|
7
|
+
language: typescript
|
|
8
|
+
version: 1.0.0
|
|
9
|
+
|
|
10
|
+
# Image Configuration
|
|
11
|
+
image:
|
|
12
|
+
name: aifabrix/builder-api
|
|
13
|
+
tag: latest
|
|
14
|
+
registry: aifabrixdevacr.azurecr.io
|
|
15
|
+
registryMode: acr
|
|
16
|
+
|
|
17
|
+
# Port Configuration (container port; host port = port + developer_id * 100)
|
|
18
|
+
port: 3005
|
|
19
|
+
|
|
20
|
+
frontDoorRouting:
|
|
21
|
+
enabled: false
|
|
22
|
+
|
|
23
|
+
requires:
|
|
24
|
+
database: false
|
|
25
|
+
redis: false
|
|
26
|
+
storage: true
|
|
27
|
+
|
|
28
|
+
healthCheck:
|
|
29
|
+
path: /api/v1/builder/health
|
|
30
|
+
interval: 30
|
|
31
|
+
bashProbe: true
|
|
32
|
+
probePath: /api/v1/builder/health
|
|
33
|
+
probeRequestType: GET
|
|
34
|
+
probeProtocol: Https
|
|
35
|
+
probeIntervalInSeconds: 120
|
|
36
|
+
|
|
37
|
+
authentication:
|
|
38
|
+
enableSSO: false
|
|
39
|
+
|
|
40
|
+
build:
|
|
41
|
+
context: ../..
|
|
42
|
+
dockerfile: builder/builder-api/Dockerfile
|
|
43
|
+
# Image policy (154.3): host staging → docker-builder-api-staging/; explicit COPY in Dockerfile;
|
|
44
|
+
# .dockerignore deny-by-default; verify with scripts/docker_image_content_gate.js builder-api.
|
|
45
|
+
envOutputPath: ../../.env
|
|
46
|
+
language: typescript
|
|
47
|
+
reloadStart: node bin/builder-api-spike.js
|
|
48
|
+
imageRun: exec node bin/builder-api-spike.js
|
|
49
|
+
|
|
50
|
+
repository:
|
|
51
|
+
enabled: true
|
|
52
|
+
repositoryUrl: https://github.com/esystemsdev/aifabrix-builder
|
|
53
|
+
|
|
54
|
+
configuration:
|
|
55
|
+
- name: LOG_LEVEL
|
|
56
|
+
portalInput:
|
|
57
|
+
field: select
|
|
58
|
+
label: 'Log Level'
|
|
59
|
+
options:
|
|
60
|
+
- debug
|
|
61
|
+
- info
|
|
62
|
+
- warn
|
|
63
|
+
- error
|
|
64
|
+
|
|
65
|
+
- name: WORKSPACE_DRAFT_TTL_DAYS
|
|
66
|
+
portalInput:
|
|
67
|
+
field: text
|
|
68
|
+
label: 'Draft workspace TTL (days)'
|
|
69
|
+
placeholder: '30'
|
|
70
|
+
|
|
71
|
+
- name: WORKSPACE_INACTIVE_MAX_DAYS
|
|
72
|
+
portalInput:
|
|
73
|
+
field: text
|
|
74
|
+
label: 'Inactive workspace purge threshold (days)'
|
|
75
|
+
placeholder: '90'
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Environment Variables Template — builder-api
|
|
2
|
+
# SSOT: builder/builder-api/env.template — publish with `npm run sync-json`
|
|
3
|
+
|
|
4
|
+
# =============================================================================
|
|
5
|
+
# APPLICATION
|
|
6
|
+
# =============================================================================
|
|
7
|
+
|
|
8
|
+
PORT=${PORT}
|
|
9
|
+
NODE_ENV=production
|
|
10
|
+
LOG_LEVEL=info
|
|
11
|
+
|
|
12
|
+
# Multi-user workspace root (persist via /mnt/data volume in Docker)
|
|
13
|
+
WORKSPACE_ROOT=/mnt/data/builder-workspaces
|
|
14
|
+
|
|
15
|
+
WORKSPACE_DRAFT_TTL_DAYS=30
|
|
16
|
+
WORKSPACE_INACTIVE_MAX_DAYS=90
|
|
17
|
+
|
|
18
|
+
MAX_BODY_BYTES=10485760
|
|
19
|
+
MAX_UPLOAD_TIMEOUT_MS=300000
|
|
20
|
+
|
|
21
|
+
# =============================================================================
|
|
22
|
+
# PLATFORM URLS
|
|
23
|
+
# =============================================================================
|
|
24
|
+
# url:// resolves after kv:// at resolve time (see docs/configuration/resolve-running-urls.md)
|
|
25
|
+
|
|
26
|
+
# Registered OAuth client (populated by aifabrix app register / bootstrap — same as dataplane)
|
|
27
|
+
MISO_CLIENTID=kv://builder-api-client-idKeyVault
|
|
28
|
+
MISO_CLIENTSECRET=kv://builder-api-client-secretKeyVault
|
|
29
|
+
|
|
30
|
+
# Internal: controller API for token validation (supports all miso-controller auth modes)
|
|
31
|
+
MISO_CONTROLLER_URL=url://miso-controller-internal
|
|
32
|
+
|
|
33
|
+
# Internal: server-to-dataplane API (MCP execute, upload, governance)
|
|
34
|
+
DATAPLANE_URL=url://dataplane-internal
|
|
35
|
+
|
|
36
|
+
DEFAULT_ENVIRONMENT=dev
|
|
37
|
+
|
|
38
|
+
# COM-generated Enterprise MCP owner system (normal MCP execute — no dataplane adapter)
|
|
39
|
+
ENTERPRISE_MCP_SYSTEM_KEY=enterprise-integration-lifecycle
|
|
40
|
+
|
|
41
|
+
# =============================================================================
|
|
42
|
+
# RUNTIME CONFIG (Docker dev-reload)
|
|
43
|
+
# =============================================================================
|
|
44
|
+
# Resolves kv:// for workspace upload/validate. On the host, symlink or copy under
|
|
45
|
+
# mount/aifabrix/ (bind-mounted at /mnt/data): config.yaml, secrets.local.yaml, certs/
|
|
46
|
+
# from ~/.aifabrix. Symlinks to host paths work because the kernel resolves them on the host.
|
|
47
|
+
|
|
48
|
+
AIFABRIX_CONFIG=/mnt/data/aifabrix/config.yaml
|
|
@@ -145,7 +145,7 @@ configuration:
|
|
|
145
145
|
- name: TRUST_RUNTIME_GATE_ENABLED
|
|
146
146
|
portalInput:
|
|
147
147
|
field: select
|
|
148
|
-
label: "Enforce trust gate on CIP execution (runtime scope)"
|
|
148
|
+
label: "Enforce trust gate on CIP execution and workforce generation inputs (runtime scope)"
|
|
149
149
|
options:
|
|
150
150
|
- "false"
|
|
151
151
|
- "true"
|
|
@@ -79,8 +79,9 @@ VECTOR_DATABASE_URL=kv://databases-dataplane-1-urlKeyVault
|
|
|
79
79
|
DB_1_PASSWORD=kv://databases-dataplane-1-passwordKeyVault
|
|
80
80
|
|
|
81
81
|
# Base path for document binary storage (used when datasource config has no processing.fileStoragePath).
|
|
82
|
-
# Dataplane creates subdirs per datasource key (e.g. DOCUMENT_STORAGE_BASE_PATH/test-e2e-sharepoint-
|
|
83
|
-
#
|
|
82
|
+
# Dataplane creates subdirs per datasource key (e.g. DOCUMENT_STORAGE_BASE_PATH/test-e2e-sharepoint-deals).
|
|
83
|
+
# Container (--reload): /mnt/data/documents with repo mount/ bind-mounted to /mnt/data.
|
|
84
|
+
# Host root .env: aifabrix resolve substitutes /mnt/data → <repo>/mount (e.g. mount/documents).
|
|
84
85
|
DOCUMENT_STORAGE_BASE_PATH=/mnt/data/documents
|
|
85
86
|
|
|
86
87
|
# Logs Database Configuration (for execution, audit, ABAC traces)
|
|
@@ -234,10 +235,10 @@ DATAPLANE_PUBLIC_KEY_ID=
|
|
|
234
235
|
# engine uses RS256. When unset and LOCAL_MODE=true, a process-local ephemeral RSA keypair is used
|
|
235
236
|
# (still RS256, with publicKey + publicKeyFingerprint on issued certs). Non-local requires PEM keys.
|
|
236
237
|
# PEM values are often multi-line; resolve via secret store / deploy pipeline (kv://) or inject as env.
|
|
237
|
-
CERTIFICATE_PRIVATE_KEY=
|
|
238
|
-
CERTIFICATE_PUBLIC_KEY=
|
|
238
|
+
CERTIFICATE_PRIVATE_KEY=kv://secrets-certificatePrivateKeyVault
|
|
239
|
+
CERTIFICATE_PUBLIC_KEY=kv://secrets-certificatePublicKeyVault
|
|
239
240
|
# Optional public key identifier for issued certificates; default if unset: dataplane-signing-key
|
|
240
|
-
CERTIFICATE_PUBLIC_KEY_ID=
|
|
241
|
+
CERTIFICATE_PUBLIC_KEY_ID=dev01-dataplane-signing
|
|
241
242
|
|
|
242
243
|
# =============================================================================
|
|
243
244
|
# VALIDATION ENGINE — YAML CONTRACTS
|
|
@@ -296,11 +297,14 @@ TRUST_CUSTOMER_POLICY_LEVEL=standard
|
|
|
296
297
|
#
|
|
297
298
|
# Opt-in gates (default false). When true, trust is evaluated at the call site;
|
|
298
299
|
# DENY/REVIEW can block the operation (e.g. datasource publish returns 403).
|
|
300
|
+
# Enterprise Knowledge COM compile and Digital Worker capability generation reuse
|
|
301
|
+
# these gates via app/services/workforce/enterprise_binding_eligibility.py when
|
|
302
|
+
# collecting generation bindings (published + trust-ready datasources only).
|
|
299
303
|
# Datasource publish — scope publish; runs before marking the datasource published
|
|
300
304
|
TRUST_PUBLISH_GATE_ENABLED=false
|
|
301
305
|
# External system publish — scope promote; evaluated per active datasource first
|
|
302
306
|
TRUST_PROMOTE_GATE_ENABLED=false
|
|
303
|
-
# CIP operation execution — scope runtime;
|
|
307
|
+
# CIP operation execution — scope runtime; also filters workforce/EK generation inputs
|
|
304
308
|
TRUST_RUNTIME_GATE_ENABLED=false
|
|
305
309
|
# Document-storage AI system prompt generation — scope aiExposure; before LLM call
|
|
306
310
|
TRUST_AI_EXPOSURE_GATE_ENABLED=false
|
|
@@ -27,7 +27,7 @@ roles:
|
|
|
27
27
|
|
|
28
28
|
- name: "AI Fabrix Developer"
|
|
29
29
|
value: "aifabrix-developer"
|
|
30
|
-
description: "Developer access to deploy applications via
|
|
30
|
+
description: "Developer access to deploy applications via CI pipelines"
|
|
31
31
|
groups: ["AI-Fabrix-Developers"]
|
|
32
32
|
|
|
33
33
|
- name: "AI Fabrix Observer"
|
|
@@ -391,6 +391,26 @@ permissions:
|
|
|
391
391
|
]
|
|
392
392
|
description: "Read manager-scoped workforce impact aggregates (no task detail)"
|
|
393
393
|
|
|
394
|
+
# Evidence Fabrix v2 operator + runtime retrieval (453.1 / 453.2)
|
|
395
|
+
- name: "evidence:read"
|
|
396
|
+
roles:
|
|
397
|
+
[
|
|
398
|
+
"aifabrix-platform-admin",
|
|
399
|
+
"aifabrix-security-admin",
|
|
400
|
+
"aifabrix-developer",
|
|
401
|
+
"aifabrix-ai-trust-operator",
|
|
402
|
+
]
|
|
403
|
+
description: "List, get, and retrieve Evidence Fabrix v2 rows for planning"
|
|
404
|
+
|
|
405
|
+
- name: "evidence:manage"
|
|
406
|
+
roles:
|
|
407
|
+
[
|
|
408
|
+
"aifabrix-platform-admin",
|
|
409
|
+
"aifabrix-developer",
|
|
410
|
+
"aifabrix-ai-trust-operator",
|
|
411
|
+
]
|
|
412
|
+
description: "Create, update, delete, and reorder Evidence Fabrix v2 rows"
|
|
413
|
+
|
|
394
414
|
# Workforce subscriptions (436.11 / 438.6)
|
|
395
415
|
- name: "subscription:read"
|
|
396
416
|
roles:
|
|
@@ -4,7 +4,7 @@ app:
|
|
|
4
4
|
displayName: 'Miso Controller'
|
|
5
5
|
description: 'Miso is the AI Fabrix in-tenant controller and portal layer for securely operating enterprise AI apps inside a customer’s Azure tenant. It provides Entra ID SSO, RBAC, audit logs, environment/app configuration via schemas, and safe secret handling via Key Vault references—ensuring governance, traceability, and predictable UX across portal, SDK, and CLI.'
|
|
6
6
|
type: webapp
|
|
7
|
-
version: '
|
|
7
|
+
version: '2.0.0'
|
|
8
8
|
|
|
9
9
|
# Image Configuration
|
|
10
10
|
# Set tag to match your build (e.g. aifabrix build miso-controller -t 1.0.0 then tag: 1.0.0)
|
|
@@ -157,8 +157,6 @@ WAIT_FOR_KEYCLOAK=true
|
|
|
157
157
|
# For production: use public domain (e.g., https://miso.example.com)
|
|
158
158
|
# url://public includes front-door path from application.yaml (e.g. /controller).
|
|
159
159
|
MISO_WEB_SERVER_URL=url://public
|
|
160
|
-
# Provider-grant OAuth redirect_uri base (Azure/start-dev also set this explicitly; code falls back to MISO_WEB_SERVER_URL)
|
|
161
|
-
CONTROLLER_BASE_URL=url://public
|
|
162
160
|
MISO_CONTROLLER_URL=url://internal
|
|
163
161
|
MISO_RELATIVE_PATH=url://vdir-public
|
|
164
162
|
ALLOWED_ORIGINS=http://localhost:*,url://host-public,url://host-private,url://dataplane-host-public,url://dataplane-host-private
|
|
@@ -244,7 +242,7 @@ DEPLOYMENT=database
|
|
|
244
242
|
ENCRYPTION_KEY=kv://miso-controller-secrets-encryptionKeyVault
|
|
245
243
|
|
|
246
244
|
# Comma-separated application keys allowed for POST .../applications/bootstrap (install-time only)
|
|
247
|
-
BOOTSTRAP_APPKEYS=dataplane
|
|
245
|
+
BOOTSTRAP_APPKEYS=dataplane,builder-api
|
|
248
246
|
|
|
249
247
|
# Key Vault Integration (for security parameter encryption)
|
|
250
248
|
# Set to true to enable Azure Key Vault for storing security parameters
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Channel integration templates
|
|
2
|
+
|
|
3
|
+
Published copies of communication external-system manifests for `aifabrix channel scaffold <target>`.
|
|
4
|
+
|
|
5
|
+
## SSOT
|
|
6
|
+
|
|
7
|
+
| Channel | Master location | Publish |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| **All channel targets** | `aifabrix-dataplane/integration/<target>/` | `make sync-json` in dataplane (copies manifests; **no** `*-deploy.json`) |
|
|
10
|
+
| Targets | `slack`, `teams-bot`, `microsoft-copilot`, `chatgpt`, `web-embed` | See `CHANNEL_INTEGRATION_TARGETS` in dataplane `make/config.mk` |
|
|
11
|
+
|
|
12
|
+
`channel scaffold` copies files from `integration/` subfolder here into the user's `integration/<target>/`, then generates **only** `<target>-deploy.json` via `aifabrix json`.
|
|
13
|
+
|
|
14
|
+
Do **not** hardcode manifests in `lib/channels/*.js`.
|
|
15
|
+
|
|
16
|
+
## Slack App manifest (install)
|
|
17
|
+
|
|
18
|
+
`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
|
|
@@ -1,33 +1,30 @@
|
|
|
1
|
-
# {{appName}} — assistant channel install
|
|
1
|
+
# {{appName}} — ChatGPT assistant channel install
|
|
2
2
|
|
|
3
3
|
{{appDescription}}
|
|
4
4
|
|
|
5
5
|
Environment: **{{environment}}** · Credential key: `{{credentialKey}}`
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Connect ChatGPT workspace (admin)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
1. Sign in to [OpenAI Platform](https://platform.openai.com/) or your **ChatGPT Enterprise** workspace admin console.
|
|
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.
|
|
10
15
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
{{
|
|
17
|
-
{{#if commandUrl}}
|
|
18
|
-
- **Slash commands:** {{commandUrl}}
|
|
19
|
-
{{/if}}
|
|
20
|
-
{{#if oauthCallbackUrl}}
|
|
21
|
-
- **OAuth redirect:** {{oauthCallbackUrl}}
|
|
22
|
-
{{/if}}
|
|
23
|
-
{{#if messagesUrl}}
|
|
24
|
-
- **Bot messages:** {{messagesUrl}}
|
|
16
|
+
## Platform endpoints
|
|
17
|
+
|
|
18
|
+
Configure these on the ChatGPT connector / custom GPT. Do not embed secrets in generated files — use AI Fabrix credential storage only.
|
|
19
|
+
|
|
20
|
+
{{#if openapiUrl}}
|
|
21
|
+
- **OpenAPI spec:** {{openapiUrl}}
|
|
25
22
|
{{/if}}
|
|
26
|
-
{{#if
|
|
27
|
-
- **
|
|
23
|
+
{{#if mcpUrl}}
|
|
24
|
+
- **MCP:** {{mcpUrl}}
|
|
28
25
|
{{/if}}
|
|
29
|
-
{{#if
|
|
30
|
-
- **
|
|
26
|
+
{{#if actionsBaseUrl}}
|
|
27
|
+
- **Actions base:** {{actionsBaseUrl}}
|
|
31
28
|
{{/if}}
|
|
32
29
|
|
|
33
30
|
## Assistant catalog
|
|
@@ -36,14 +33,14 @@ Runtime lists **assistants** available to each user from:
|
|
|
36
33
|
|
|
37
34
|
{{assistantCatalogUrl}}
|
|
38
35
|
|
|
39
|
-
## After
|
|
36
|
+
## After workspace approval
|
|
40
37
|
|
|
41
38
|
```bash
|
|
42
|
-
aifabrix
|
|
39
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}"
|
|
43
40
|
```
|
|
44
41
|
|
|
45
42
|
Optional validation:
|
|
46
43
|
|
|
47
44
|
```bash
|
|
48
|
-
aifabrix
|
|
45
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
|
|
49
46
|
```
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# ChatGPT assistant channel (lab fixture)
|
|
2
|
+
|
|
3
|
+
SSOT for `aifabrix channel scaffold chatgpt` templates (`make sync-json` → builder).
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
cd aifabrix-dataplane
|
|
7
|
+
aifabrix validate chatgpt
|
|
8
|
+
aifabrix upload chatgpt --probe
|
|
9
|
+
aifabrix deploy chatgpt
|
|
10
|
+
aifabrix app add-channel chatgpt --name "Your Assistant"
|
|
11
|
+
```
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"app": {
|
|
3
|
+
"key": "chatgpt",
|
|
4
|
+
"displayName": "ChatGPT assistant channel",
|
|
5
|
+
"description": "Assistant communication channel — deploy then app add-channel",
|
|
6
|
+
"type": "external"
|
|
7
|
+
},
|
|
8
|
+
"externalIntegration": {
|
|
9
|
+
"schemaBasePath": "./",
|
|
10
|
+
"systems": ["chatgpt-system.json"],
|
|
11
|
+
"dataSources": [],
|
|
12
|
+
"autopublish": true,
|
|
13
|
+
"version": "1.0.0"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "chatgpt",
|
|
3
|
+
"displayName": "ChatGPT assistant channel",
|
|
4
|
+
"description": "Communication external system for ChatGPT assistant channel install",
|
|
5
|
+
"type": "custom",
|
|
6
|
+
"systemKind": "communication",
|
|
7
|
+
"enabled": true,
|
|
8
|
+
"authentication": {
|
|
9
|
+
"authType": "credential",
|
|
10
|
+
"credential": {
|
|
11
|
+
"credentialKey": "chatgpt-channel",
|
|
12
|
+
"displayName": "ChatGPT assistant 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
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"configuration": [],
|
|
27
|
+
"dataSources": [],
|
|
28
|
+
"endpointsActive": false
|
|
29
|
+
}
|
|
@@ -1,33 +1,28 @@
|
|
|
1
|
-
# {{appName}} — assistant channel install
|
|
1
|
+
# {{appName}} — Microsoft Copilot assistant channel install
|
|
2
2
|
|
|
3
3
|
{{appDescription}}
|
|
4
4
|
|
|
5
5
|
Environment: **{{environment}}** · Credential key: `{{credentialKey}}`
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Publish the Copilot extension (M365 admin)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
1. Sign in to [Microsoft 365 admin](https://admin.cloud.microsoft.com/) or **Copilot Studio** as a tenant admin.
|
|
10
|
+
2. Create or open a Copilot extensibility project (declarative agent or API plugin).
|
|
11
|
+
3. Import or configure using the generated manifest JSON from `dist/channels/microsoft-copilot/channel-microsoft-copilot.json`.
|
|
12
|
+
4. Point the **OpenAPI** and **action** endpoints to the URLs in **Platform endpoints** below.
|
|
13
|
+
5. Register OAuth client credentials for the API provider connection when the platform prompts for them.
|
|
14
|
+
6. Save the **OAuth client ID** and **client secret** in AI Fabrix: [Authentication settings]({{credentialPortalUrl}})
|
|
15
|
+
7. Submit for M365 admin approval and publish to your organization when review completes.
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
{{
|
|
17
|
-
{{#if commandUrl}}
|
|
18
|
-
- **Slash commands:** {{commandUrl}}
|
|
19
|
-
{{/if}}
|
|
20
|
-
{{#if oauthCallbackUrl}}
|
|
21
|
-
- **OAuth redirect:** {{oauthCallbackUrl}}
|
|
22
|
-
{{/if}}
|
|
23
|
-
{{#if messagesUrl}}
|
|
24
|
-
- **Bot messages:** {{messagesUrl}}
|
|
25
|
-
{{/if}}
|
|
26
|
-
{{#if notificationsUrl}}
|
|
27
|
-
- **Notifications:** {{notificationsUrl}}
|
|
17
|
+
## Platform endpoints
|
|
18
|
+
|
|
19
|
+
Configure these on the Copilot connector / API plugin. Do not embed secrets in generated files — use AI Fabrix credential storage only.
|
|
20
|
+
|
|
21
|
+
{{#if openapiUrl}}
|
|
22
|
+
- **OpenAPI spec:** {{openapiUrl}}
|
|
28
23
|
{{/if}}
|
|
29
|
-
{{#if
|
|
30
|
-
- **
|
|
24
|
+
{{#if actionsBaseUrl}}
|
|
25
|
+
- **Actions base:** {{actionsBaseUrl}}
|
|
31
26
|
{{/if}}
|
|
32
27
|
|
|
33
28
|
## Assistant catalog
|
|
@@ -36,14 +31,14 @@ Runtime lists **assistants** available to each user from:
|
|
|
36
31
|
|
|
37
32
|
{{assistantCatalogUrl}}
|
|
38
33
|
|
|
39
|
-
## After admin approval
|
|
34
|
+
## After M365 admin approval
|
|
40
35
|
|
|
41
36
|
```bash
|
|
42
|
-
aifabrix
|
|
37
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}"
|
|
43
38
|
```
|
|
44
39
|
|
|
45
40
|
Optional validation:
|
|
46
41
|
|
|
47
42
|
```bash
|
|
48
|
-
aifabrix
|
|
43
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
|
|
49
44
|
```
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Microsoft Copilot assistant channel (lab fixture)
|
|
2
|
+
|
|
3
|
+
SSOT for `aifabrix channel scaffold microsoft-copilot` templates (`make sync-json` → builder).
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
cd aifabrix-dataplane
|
|
7
|
+
aifabrix validate microsoft-copilot
|
|
8
|
+
aifabrix upload microsoft-copilot --probe
|
|
9
|
+
aifabrix deploy microsoft-copilot
|
|
10
|
+
aifabrix app add-channel microsoft-copilot --name "Your Assistant"
|
|
11
|
+
```
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"app": {
|
|
3
|
+
"key": "microsoft-copilot",
|
|
4
|
+
"displayName": "Microsoft Copilot assistant channel",
|
|
5
|
+
"description": "Assistant communication channel — deploy then app add-channel",
|
|
6
|
+
"type": "external"
|
|
7
|
+
},
|
|
8
|
+
"externalIntegration": {
|
|
9
|
+
"schemaBasePath": "./",
|
|
10
|
+
"systems": ["microsoft-copilot-system.json"],
|
|
11
|
+
"dataSources": [],
|
|
12
|
+
"autopublish": true,
|
|
13
|
+
"version": "1.0.0"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Microsoft Copilot assistant channel — lab fixture secrets
|
|
2
|
+
# aifabrix secret set microsoft-copilot/clientId "<value>" --shared
|
|
3
|
+
# aifabrix secret set microsoft-copilot/clientSecret "<value>" --shared
|
|
4
|
+
|
|
5
|
+
KV_MICROSOFT_COPILOT_CLIENTID=kv://microsoft-copilot/clientId
|
|
6
|
+
KV_MICROSOFT_COPILOT_CLIENTSECRET=kv://microsoft-copilot/clientSecret
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "microsoft-copilot",
|
|
3
|
+
"displayName": "Microsoft Copilot assistant channel",
|
|
4
|
+
"description": "Communication external system for Microsoft Copilot assistant channel install",
|
|
5
|
+
"type": "custom",
|
|
6
|
+
"systemKind": "communication",
|
|
7
|
+
"enabled": true,
|
|
8
|
+
"authentication": {
|
|
9
|
+
"authType": "credential",
|
|
10
|
+
"credential": {
|
|
11
|
+
"credentialKey": "microsoft-copilot-channel",
|
|
12
|
+
"displayName": "Microsoft Copilot assistant channel",
|
|
13
|
+
"method": "oauth2",
|
|
14
|
+
"writeOnce": true,
|
|
15
|
+
"variables": {
|
|
16
|
+
"tokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token",
|
|
17
|
+
"grantType": "client_credentials",
|
|
18
|
+
"scope": "https://graph.microsoft.com/.default",
|
|
19
|
+
"baseUrl": "https://graph.microsoft.com/v1.0"
|
|
20
|
+
},
|
|
21
|
+
"security": {
|
|
22
|
+
"clientId": "kv://microsoft-copilot/clientId",
|
|
23
|
+
"clientSecret": "kv://microsoft-copilot/clientSecret"
|
|
24
|
+
},
|
|
25
|
+
"formFields": [
|
|
26
|
+
{ "name": "clientId", "required": true },
|
|
27
|
+
{ "name": "clientSecret", "required": true }
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"configuration": [],
|
|
32
|
+
"dataSources": [],
|
|
33
|
+
"endpointsActive": false
|
|
34
|
+
}
|