@aifabrix/builder 2.49.2 → 2.51.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/plans/157.1-security-quality-violations-by-type.csv +374 -0
- package/.cursor/rules/assistant-driven-integration-build.mdc +40 -0
- 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/integration/hubspot-test/create-hubspot.js +1 -16
- 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-kinds.api.js +128 -0
- package/lib/api/evidence.api.js +172 -0
- package/lib/api/external-systems.api.js +8 -2
- package/lib/api/pipeline.api.js +5 -1
- package/lib/api/resource-types.api.js +5 -4
- package/lib/api/roles.api.js +121 -0
- package/lib/api/types/enterprise-knowledge.types.js +46 -0
- package/lib/api/types/evidence-kinds.types.js +42 -0
- package/lib/api/types/evidence.types.js +67 -0
- package/lib/api/types/resource-types.types.js +2 -0
- package/lib/api/types/roles.types.js +36 -0
- package/lib/app/certification-verify-rows.js +1 -1
- 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 +39 -90
- 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/merge-certification-from-artifact.js +1 -1
- 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 +18 -5
- 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 +31 -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 +60 -130
- 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 +30 -9
- 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-help-after.js +12 -0
- package/lib/cli/setup-utility-repair.js +26 -7
- package/lib/cli/setup-utility-validate.js +41 -2
- 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 +184 -0
- package/lib/commands/deploy-gate-orchestrator.js +368 -0
- package/lib/commands/dev-cli-handlers.js +7 -62
- 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 +6 -106
- package/lib/commands/dev-refresh.js +197 -0
- package/lib/commands/enterprise-knowledge.js +284 -0
- package/lib/commands/evidence-cli-leaves.js +250 -0
- package/lib/commands/evidence-kind.js +428 -0
- package/lib/commands/evidence.js +51 -0
- package/lib/commands/governance-cli-shared.js +2 -2
- package/lib/commands/governance-command-action.js +5 -3
- 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 +33 -8
- 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 +166 -44
- package/lib/commands/role.js +452 -0
- package/lib/commands/run-post-publish-data-sync.js +68 -0
- package/lib/commands/setup-modes.js +1 -1
- package/lib/commands/setup.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/validate-json.js +230 -0
- 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 +79 -41
- 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/audit-logger.js +1 -1
- package/lib/core/secrets-env-content.js +10 -4
- package/lib/core/secrets-env-write.js +2 -13
- package/lib/core/secrets-load.js +1 -3
- package/lib/datasource/agent-trust-run.js +3 -3
- package/lib/datasource/capability/relate-operations.js +1 -1
- 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/helpers.js +13 -5
- package/lib/generator/index.js +17 -2
- package/lib/generator/split-variables.js +9 -3
- package/lib/generator/wizard.js +3 -36
- package/lib/infrastructure/helpers-docker-check.js +6 -0
- package/lib/infrastructure/helpers.js +1 -1
- 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 +45 -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 +114 -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 +222 -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 +493 -0
- package/lib/programmatic/openapi-schema-descriptions-certify.js +139 -0
- package/lib/programmatic/openapi-schema-descriptions-core.js +162 -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 +108 -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 +62 -0
- package/lib/programmatic/run-template-workspace.js +74 -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/evidence-kind-file.js +230 -0
- package/lib/resolvers/resource-type-file.js +58 -1
- package/lib/resolvers/role-file.js +227 -0
- package/lib/schema/application-schema.json +22 -2
- package/lib/schema/external-datasource.schema.json +245 -2
- package/lib/schema/external-system.schema.json +259 -119
- package/lib/schema/flag-map-validation-run.json +3 -0
- package/lib/schema/infra.parameter.yaml +25 -1
- package/lib/schema/type/credential-field-registry.json +21 -5
- package/lib/schema/type/document-storage.json +9 -0
- package/lib/utils/agent-trust-run-display.js +1 -1
- package/lib/utils/api.js +8 -2
- package/lib/utils/app-path-resolve.js +168 -0
- package/lib/utils/app-register-config.js +4 -3
- package/lib/utils/authentication-env-template.js +222 -0
- package/lib/utils/cli-sync-options.js +62 -10
- package/lib/utils/cli-utils.js +15 -3
- 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-ca-install.js +5 -6
- package/lib/utils/dev-config.js +2 -2
- package/lib/utils/dev-init-ssh-merge.js +165 -23
- package/lib/utils/dev-list-sort.js +145 -0
- package/lib/utils/dev-pin-share-instructions.js +110 -0
- package/lib/utils/dev-platform-tls.js +0 -63
- package/lib/utils/dev-ssh-config-helper.js +177 -33
- 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/enterprise-knowledge-paths.js +142 -0
- package/lib/utils/env-copy.js +3 -4
- package/lib/utils/env-dotenv-format.js +103 -0
- package/lib/utils/error-formatters/error-parser.js +0 -3
- package/lib/utils/external-env-template.js +5 -2
- package/lib/utils/external-system-display.js +5 -1
- package/lib/utils/external-system-readiness-compact-blocks.js +248 -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/health-check-request.js +2 -3
- package/lib/utils/help-builder.js +9 -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/image-name.js +22 -4
- package/lib/utils/integration-path-resolve.js +112 -0
- package/lib/utils/logger.js +37 -4
- package/lib/utils/manifest-source-emit.js +1 -1
- package/lib/utils/paths-reload-source.js +148 -0
- package/lib/utils/paths-system-builder-keys.js +25 -0
- package/lib/utils/paths.js +183 -30
- package/lib/utils/pipeline-upload-auth-retry.js +4 -0
- 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/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/token-manager.js +16 -0
- package/lib/utils/upload-sync-options.js +20 -2
- 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 +430 -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/lib/validation/validator.js +6 -5
- package/package.json +76 -37
- 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 +337 -0
- package/scripts/lib/plan-run-core.js +125 -0
- package/scripts/lib/plan-run-report.js +119 -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 +27 -5
- package/templates/applications/dataplane/env.template +38 -15
- package/templates/applications/dataplane/rbac.yaml +85 -3
- package/templates/applications/miso-controller/application.yaml +10 -1
- package/templates/applications/miso-controller/env.template +11 -10
- package/templates/applications/miso-controller/rbac.yaml +72 -0
- 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 +144 -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 +2 -2
- package/templates/typescript/docker-compose.hbs +11 -0
- package/lib/certification/cli-cert-sync-skip.js +0 -21
|
@@ -5,8 +5,7 @@ app:
|
|
|
5
5
|
description: "AI Fabrix Dataplane is a secure, in-tenant integration and automation layer that supplies governed, normalized, and explainable enterprise data to AI agents. Using CIP as a declarative standard, it enforces RBAC and ABAC, executes integrations, and exposes trusted data via MCP and OpenAPI."
|
|
6
6
|
type: webapp
|
|
7
7
|
language: python # Explicitly specify Python language
|
|
8
|
-
version: 2.0.
|
|
9
|
-
|
|
8
|
+
version: 2.0.10
|
|
10
9
|
# Image Configuration
|
|
11
10
|
# Set tag to match your build (e.g. aifabrix build dataplane -t 1.0.0 then tag: 1.0.0)
|
|
12
11
|
# Registry is required so the controller can pull the image (avoids "docker: not found" on the controller host).
|
|
@@ -69,7 +68,7 @@ build:
|
|
|
69
68
|
# Pulled-image local compose (no bind-mount): drives `command` in generated docker-compose. Override for non-standard images (e.g. stub ACR tags).
|
|
70
69
|
imageRun: exec python -m uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-3001}
|
|
71
70
|
# Image policy (442.0): explicit Dockerfile COPY; worker/beat via python -m app.core.*
|
|
72
|
-
# integration/ in image:
|
|
71
|
+
# integration/ in image: only onboarding-catalog.json keys (+ deploy/application per key).
|
|
73
72
|
worker: true
|
|
74
73
|
imageRunWorker: exec python -m app.core.celery_worker_main
|
|
75
74
|
imageRunBeat: exec python -m app.core.celery_beat_main
|
|
@@ -83,7 +82,9 @@ build:
|
|
|
83
82
|
# NOT included (auto-configured):
|
|
84
83
|
# - Database URLs, Redis → auto-generated during Azure install
|
|
85
84
|
# - MISO_*, KEYCLOAK_* → auto-generated during Azure install
|
|
86
|
-
# - AI params
|
|
85
|
+
# - AI params / provider secrets → LLM external systems + secret store
|
|
86
|
+
# (never product OPENAI_* / AZURE_OPENAI_*). ≥2 providers →
|
|
87
|
+
# ENTERPRISE_LLM_DEFAULT_SELECTOR (portal LLM category).
|
|
87
88
|
# - ENVIRONMENT → set by deployment target
|
|
88
89
|
|
|
89
90
|
configuration:
|
|
@@ -91,6 +92,7 @@ configuration:
|
|
|
91
92
|
# Operations & Debugging
|
|
92
93
|
# -------------------------------------------------------------------------
|
|
93
94
|
- name: LOG_LEVEL
|
|
95
|
+
category: Operations & Debugging
|
|
94
96
|
portalInput:
|
|
95
97
|
field: select
|
|
96
98
|
label: "Log Level"
|
|
@@ -101,6 +103,7 @@ configuration:
|
|
|
101
103
|
- ERROR
|
|
102
104
|
|
|
103
105
|
- name: ABAC_AUDIT_DETAIL_LEVEL
|
|
106
|
+
category: Operations & Debugging
|
|
104
107
|
portalInput:
|
|
105
108
|
field: select
|
|
106
109
|
label: "ABAC Audit Detail Level"
|
|
@@ -109,6 +112,7 @@ configuration:
|
|
|
109
112
|
- detailed
|
|
110
113
|
|
|
111
114
|
- name: RBAC_AUDIT_DETAIL_LEVEL
|
|
115
|
+
category: Operations & Debugging
|
|
112
116
|
portalInput:
|
|
113
117
|
field: select
|
|
114
118
|
label: "RBAC Audit Detail Level"
|
|
@@ -118,6 +122,7 @@ configuration:
|
|
|
118
122
|
- explain
|
|
119
123
|
|
|
120
124
|
- name: TRUST_CUSTOMER_POLICY_LEVEL
|
|
125
|
+
category: Trust
|
|
121
126
|
portalInput:
|
|
122
127
|
field: select
|
|
123
128
|
label: "Trust policy level (no-policy defaults)"
|
|
@@ -127,6 +132,7 @@ configuration:
|
|
|
127
132
|
- relaxed
|
|
128
133
|
|
|
129
134
|
- name: TRUST_PUBLISH_GATE_ENABLED
|
|
135
|
+
category: Trust
|
|
130
136
|
portalInput:
|
|
131
137
|
field: select
|
|
132
138
|
label: "Enforce trust gate on datasource publish"
|
|
@@ -135,6 +141,7 @@ configuration:
|
|
|
135
141
|
- "true"
|
|
136
142
|
|
|
137
143
|
- name: TRUST_PROMOTE_GATE_ENABLED
|
|
144
|
+
category: Trust
|
|
138
145
|
portalInput:
|
|
139
146
|
field: select
|
|
140
147
|
label: "Enforce trust gate on external system publish (promote scope)"
|
|
@@ -143,14 +150,16 @@ configuration:
|
|
|
143
150
|
- "true"
|
|
144
151
|
|
|
145
152
|
- name: TRUST_RUNTIME_GATE_ENABLED
|
|
153
|
+
category: Trust
|
|
146
154
|
portalInput:
|
|
147
155
|
field: select
|
|
148
|
-
label: "Enforce trust gate on CIP execution (runtime scope)"
|
|
156
|
+
label: "Enforce trust gate on CIP execution and workforce generation inputs (runtime scope)"
|
|
149
157
|
options:
|
|
150
158
|
- "false"
|
|
151
159
|
- "true"
|
|
152
160
|
|
|
153
161
|
- name: TRUST_AI_EXPOSURE_GATE_ENABLED
|
|
162
|
+
category: Trust
|
|
154
163
|
portalInput:
|
|
155
164
|
field: select
|
|
156
165
|
label: "Enforce trust gate on AI document-storage prompt generation"
|
|
@@ -164,24 +173,28 @@ configuration:
|
|
|
164
173
|
# Tune based on customer data volumes and external API characteristics
|
|
165
174
|
|
|
166
175
|
- name: CIP_EXECUTION_MAX_RECORDS
|
|
176
|
+
category: CIP Execution
|
|
167
177
|
portalInput:
|
|
168
178
|
field: text
|
|
169
179
|
label: "Max Records per CIP Execution"
|
|
170
180
|
placeholder: "100000"
|
|
171
181
|
|
|
172
182
|
- name: CIP_EXECUTION_MAX_RESPONSE_SIZE_MB
|
|
183
|
+
category: CIP Execution
|
|
173
184
|
portalInput:
|
|
174
185
|
field: text
|
|
175
186
|
label: "Max Response Size (MB)"
|
|
176
187
|
placeholder: "100.0"
|
|
177
188
|
|
|
178
189
|
- name: CIP_EXECUTION_OPERATION_TIMEOUT
|
|
190
|
+
category: CIP Execution
|
|
179
191
|
portalInput:
|
|
180
192
|
field: text
|
|
181
193
|
label: "Operation Timeout (seconds)"
|
|
182
194
|
placeholder: "300.0"
|
|
183
195
|
|
|
184
196
|
- name: CIP_EXECUTION_HTTP_TIMEOUT
|
|
197
|
+
category: CIP Execution
|
|
185
198
|
portalInput:
|
|
186
199
|
field: text
|
|
187
200
|
label: "HTTP Request Timeout (seconds)"
|
|
@@ -193,13 +206,22 @@ configuration:
|
|
|
193
206
|
# Tune to match external API rate limits
|
|
194
207
|
|
|
195
208
|
- name: CIP_EXECUTION_RATE_LIMIT_REQUESTS_PER_SECOND
|
|
209
|
+
category: CIP Rate Limiting
|
|
196
210
|
portalInput:
|
|
197
211
|
field: text
|
|
198
212
|
label: "Rate Limit (requests/second)"
|
|
199
213
|
placeholder: "10.0"
|
|
200
214
|
|
|
201
215
|
- name: CIP_EXECUTION_RATE_LIMIT_BURST_SIZE
|
|
216
|
+
category: CIP Rate Limiting
|
|
202
217
|
portalInput:
|
|
203
218
|
field: text
|
|
204
219
|
label: "Rate Limit Burst Size"
|
|
205
220
|
placeholder: "20"
|
|
221
|
+
|
|
222
|
+
- name: ENTERPRISE_LLM_DEFAULT_SELECTOR
|
|
223
|
+
category: LLM
|
|
224
|
+
portalInput:
|
|
225
|
+
field: text
|
|
226
|
+
label: "Default LLM provider (system key when two or more providers)"
|
|
227
|
+
placeholder: "openai"
|
|
@@ -14,8 +14,9 @@ ENVIRONMENT=dev
|
|
|
14
14
|
DEBUG=false
|
|
15
15
|
# Logging level: DEBUG, INFO, WARNING, ERROR, CRITICAL
|
|
16
16
|
LOG_LEVEL=INFO
|
|
17
|
-
#
|
|
18
|
-
|
|
17
|
+
# Platform / enterprise language for Evidence platformText + Knowledge enterpriseLanguage.
|
|
18
|
+
# V1: English only. Do not change after install — no retranslation migration in V1.
|
|
19
|
+
AIFABRIX_PLATFORM_LANGUAGE=en
|
|
19
20
|
# Path for log file output.
|
|
20
21
|
# Docker default (no volume): use LOG_FILE_PATH=/app/logs/app.log (directory created in image).
|
|
21
22
|
# Production with persistent logs: use /mnt/data/logs/app.log and mount a volume at /mnt/data.
|
|
@@ -43,7 +44,7 @@ API_KEY_BYPASS_ROLES=full-access
|
|
|
43
44
|
|
|
44
45
|
# API Configuration
|
|
45
46
|
API_V1_STR=/api/v1
|
|
46
|
-
VERSION=2.0.
|
|
47
|
+
VERSION=2.0.10
|
|
47
48
|
# Minimum supported aifabrix-builder CLI semver (advertised on /health and /api/v1/health; empty = no gate)
|
|
48
49
|
# MIN_BUILDER_CLI_VERSION=2.45.0
|
|
49
50
|
MIN_BUILDER_CLI_VERSION=2.45.5
|
|
@@ -79,8 +80,9 @@ VECTOR_DATABASE_URL=kv://databases-dataplane-1-urlKeyVault
|
|
|
79
80
|
DB_1_PASSWORD=kv://databases-dataplane-1-passwordKeyVault
|
|
80
81
|
|
|
81
82
|
# 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
|
-
#
|
|
83
|
+
# Dataplane creates subdirs per datasource key (e.g. DOCUMENT_STORAGE_BASE_PATH/test-e2e-sharepoint-deals).
|
|
84
|
+
# Container (--reload): /mnt/data/documents with repo mount/ bind-mounted to /mnt/data.
|
|
85
|
+
# Host root .env: aifabrix resolve substitutes /mnt/data → <repo>/mount (e.g. mount/documents).
|
|
84
86
|
DOCUMENT_STORAGE_BASE_PATH=/mnt/data/documents
|
|
85
87
|
|
|
86
88
|
# Logs Database Configuration (for execution, audit, ABAC traces)
|
|
@@ -134,8 +136,6 @@ MISO_CLIENTSECRET=kv://dataplane-client-secretKeyVault
|
|
|
134
136
|
# Keycloak Configuration (for OAuth2 endpoints)
|
|
135
137
|
# Public: browser / issuer (includes /auth when Keycloak uses KC_HTTP_RELATIVE_PATH=/auth).
|
|
136
138
|
KEYCLOAK_SERVER_URL=url://keycloak-public
|
|
137
|
-
# Internal: server-to-Keycloak HTTP (docker: service:port + /auth from keycloak application.yaml)
|
|
138
|
-
KEYCLOAK_INTERNAL_SERVER_URL=url://keycloak-internal
|
|
139
139
|
KEYCLOAK_REALM=aifabrix
|
|
140
140
|
|
|
141
141
|
# =============================================================================
|
|
@@ -154,9 +154,14 @@ MISO_LOGOUT_URL=/logout
|
|
|
154
154
|
MISO_PIPELINE_ENV_KEY=
|
|
155
155
|
|
|
156
156
|
# LLM: chat/embed route through governed enterprise-llm only. Provider credentials
|
|
157
|
-
# live on LLM provider external systems (
|
|
158
|
-
#
|
|
159
|
-
|
|
157
|
+
# live on LLM provider external systems + dataplane secret store (not product .env).
|
|
158
|
+
# When ≥2 LLM providers are published under enterprise-llm, set selectorKey
|
|
159
|
+
# (system key), e.g. openai | azure-openai | ollama. Ignored when only one.
|
|
160
|
+
# Prefer portal Configuration category LLM after deploy; this env is the resolve target.
|
|
161
|
+
# Default LLM provider systemKey when ≥2 LLM providers are published under
|
|
162
|
+
# enterprise-llm (fail-closed if empty). Portal category LLM can override.
|
|
163
|
+
# Lab default: openai (catalog also ships azure-openai).
|
|
164
|
+
ENTERPRISE_LLM_DEFAULT_SELECTOR=openai
|
|
160
165
|
|
|
161
166
|
# =============================================================================
|
|
162
167
|
# AUDIT CONFIGURATION
|
|
@@ -193,6 +198,22 @@ AUDIT_ASYNC_SHADOW_ENQUEUE=false
|
|
|
193
198
|
# Set true for local dev policy CRUD; pair with VITE_POLICY_MANAGEMENT_ENABLED=true in app-ui.
|
|
194
199
|
POLICY_MANAGEMENT_API_ENABLED=false
|
|
195
200
|
|
|
201
|
+
# Role Assistant debug defaults (Assistants admin overrides per assistant):
|
|
202
|
+
# debugEnabled → agent_workforce.debugTraceEnabled
|
|
203
|
+
# fullDebugEnabled → agent_workforce.debugFullEnabled (system-prompt capture)
|
|
204
|
+
# debugRetentionDays → agent_workforce.debugTraceRetentionDays
|
|
205
|
+
WORKFORCE_RUNTIME_DEBUG_TRACE_ENABLED=false
|
|
206
|
+
# Shared retention for WorkerRuntimeDebugTrace + LlmPromptDebugCapture (daily Celery purge).
|
|
207
|
+
# WORKFORCE_RUNTIME_DEBUG_TRACE_RETENTION_DAYS=30
|
|
208
|
+
# WORKFORCE_RUNTIME_DEBUG_TRACE_MAX_ROWS_PER_TASK=500
|
|
209
|
+
|
|
210
|
+
# Platform default for Role Assistant fullDebugEnabled when assistant has no override.
|
|
211
|
+
# When unset: enabled in LOCAL_MODE or when WORKFORCE_RUNTIME_DEBUG_TRACE_ENABLED=true.
|
|
212
|
+
# Prefer Assistants admin → Full debug per Role Assistant.
|
|
213
|
+
# LLM_PROMPT_DEBUG_CAPTURE_ENABLED=
|
|
214
|
+
# LLM_PROMPT_DEBUG_SYSTEM_PROMPT_MAX_CHARS=32000
|
|
215
|
+
# LLM_PROMPT_DEBUG_USER_CONTENT_MAX_CHARS=4000
|
|
216
|
+
|
|
196
217
|
# VIEW_MODULES — optional comma-separated UI module allowlist (unset = all modules).
|
|
197
218
|
# Keys: dashboard, work, content-review, assistants, connected-systems, templates,
|
|
198
219
|
# audit-logs, ai-trust, administration (deep link only; never sidebar in V1).
|
|
@@ -219,7 +240,6 @@ FIRST_PARTY_HTTP_INTERNAL_SPEC_EXTERNAL_SYSTEM_ID=
|
|
|
219
240
|
|
|
220
241
|
# OpenTelemetry Configuration
|
|
221
242
|
OPENTELEMETRY_ENABLED=false
|
|
222
|
-
OPENTELEMETRY_ENDPOINT=
|
|
223
243
|
|
|
224
244
|
# =============================================================================
|
|
225
245
|
# INTEGRATION CERTIFICATE SIGNING (RS256 PEM)
|
|
@@ -234,10 +254,10 @@ DATAPLANE_PUBLIC_KEY_ID=
|
|
|
234
254
|
# engine uses RS256. When unset and LOCAL_MODE=true, a process-local ephemeral RSA keypair is used
|
|
235
255
|
# (still RS256, with publicKey + publicKeyFingerprint on issued certs). Non-local requires PEM keys.
|
|
236
256
|
# 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=
|
|
257
|
+
CERTIFICATE_PRIVATE_KEY=kv://secrets-certificatePrivateKeyVault
|
|
258
|
+
CERTIFICATE_PUBLIC_KEY=kv://secrets-certificatePublicKeyVault
|
|
239
259
|
# Optional public key identifier for issued certificates; default if unset: dataplane-signing-key
|
|
240
|
-
CERTIFICATE_PUBLIC_KEY_ID=
|
|
260
|
+
CERTIFICATE_PUBLIC_KEY_ID=dev01-dataplane-signing
|
|
241
261
|
|
|
242
262
|
# =============================================================================
|
|
243
263
|
# VALIDATION ENGINE — YAML CONTRACTS
|
|
@@ -296,11 +316,14 @@ TRUST_CUSTOMER_POLICY_LEVEL=standard
|
|
|
296
316
|
#
|
|
297
317
|
# Opt-in gates (default false). When true, trust is evaluated at the call site;
|
|
298
318
|
# DENY/REVIEW can block the operation (e.g. datasource publish returns 403).
|
|
319
|
+
# Enterprise Knowledge COM compile and Digital Worker capability generation reuse
|
|
320
|
+
# these gates via app/services/workforce/enterprise_binding_eligibility.py when
|
|
321
|
+
# collecting generation bindings (published + trust-ready datasources only).
|
|
299
322
|
# Datasource publish — scope publish; runs before marking the datasource published
|
|
300
323
|
TRUST_PUBLISH_GATE_ENABLED=false
|
|
301
324
|
# External system publish — scope promote; evaluated per active datasource first
|
|
302
325
|
TRUST_PROMOTE_GATE_ENABLED=false
|
|
303
|
-
# CIP operation execution — scope runtime;
|
|
326
|
+
# CIP operation execution — scope runtime; also filters workforce/EK generation inputs
|
|
304
327
|
TRUST_RUNTIME_GATE_ENABLED=false
|
|
305
328
|
# Document-storage AI system prompt generation — scope aiExposure; before LLM call
|
|
306
329
|
TRUST_AI_EXPOSURE_GATE_ENABLED=false
|
|
@@ -27,9 +27,14 @@ 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
|
+
- name: "AI Fabrix Business Transformation"
|
|
34
|
+
value: "aifabrix-business-transformation"
|
|
35
|
+
description: "Built-in assistant: business intention → governed Connected Systems via Runtime and builder-api"
|
|
36
|
+
groups: ["AI-Fabrix-Business-Transformation"]
|
|
37
|
+
|
|
33
38
|
- name: "AI Fabrix Observer"
|
|
34
39
|
value: "aifabrix-observer"
|
|
35
40
|
description: "Read-only access to monitoring, logs, and compliance reports"
|
|
@@ -312,6 +317,10 @@ permissions:
|
|
|
312
317
|
]
|
|
313
318
|
description: "Discover business context (semantics, exposure, enabled governance, tools, validation state) for external systems"
|
|
314
319
|
|
|
320
|
+
- name: "external-system:data-manager"
|
|
321
|
+
roles: ["aifabrix-platform-admin"]
|
|
322
|
+
description: "Reset (purge) all stored records, document rows, vectors, relations, and sync job history for a datasource (keeps datasource config)"
|
|
323
|
+
|
|
315
324
|
- name: "governance:evaluate"
|
|
316
325
|
roles: ["aifabrix-platform-admin", "aifabrix-security-admin", "aifabrix-developer"]
|
|
317
326
|
description: "Run governance scenario acceptance (subject impersonation for ABAC proof)"
|
|
@@ -362,7 +371,9 @@ permissions:
|
|
|
362
371
|
"aifabrix-developer",
|
|
363
372
|
"aifabrix-ai-trust-operator",
|
|
364
373
|
]
|
|
365
|
-
description:
|
|
374
|
+
description: >-
|
|
375
|
+
Update assistantName or preferredChannel on a user activation, and
|
|
376
|
+
work.continue on Process Executions
|
|
366
377
|
|
|
367
378
|
- name: "worker:archive"
|
|
368
379
|
roles:
|
|
@@ -380,7 +391,9 @@ permissions:
|
|
|
380
391
|
"aifabrix-security-admin",
|
|
381
392
|
"aifabrix-ai-trust-operator",
|
|
382
393
|
]
|
|
383
|
-
description:
|
|
394
|
+
description: >-
|
|
395
|
+
Approve or reject pending worker tasks, and record human.respond
|
|
396
|
+
(ask or approval) on Process Executions
|
|
384
397
|
|
|
385
398
|
- name: "worker:manager-read"
|
|
386
399
|
roles:
|
|
@@ -391,7 +404,67 @@ permissions:
|
|
|
391
404
|
]
|
|
392
405
|
description: "Read manager-scoped workforce impact aggregates (no task detail)"
|
|
393
406
|
|
|
407
|
+
# Evidence Fabrix v2 operator + runtime retrieval (453.1 / 453.2)
|
|
408
|
+
- name: "evidence:read"
|
|
409
|
+
roles:
|
|
410
|
+
[
|
|
411
|
+
"aifabrix-platform-admin",
|
|
412
|
+
"aifabrix-security-admin",
|
|
413
|
+
"aifabrix-developer",
|
|
414
|
+
"aifabrix-ai-trust-operator",
|
|
415
|
+
]
|
|
416
|
+
description: "List, get, and retrieve Evidence Fabrix v2 rows for planning"
|
|
417
|
+
|
|
418
|
+
- name: "evidence:manage"
|
|
419
|
+
roles:
|
|
420
|
+
[
|
|
421
|
+
"aifabrix-platform-admin",
|
|
422
|
+
"aifabrix-developer",
|
|
423
|
+
"aifabrix-ai-trust-operator",
|
|
424
|
+
]
|
|
425
|
+
description: "Create, update, delete, and reorder Evidence Fabrix v2 rows"
|
|
426
|
+
|
|
427
|
+
# Knowledge Asset platform (465.1) — no public knowledge:create
|
|
428
|
+
- name: "knowledge:read"
|
|
429
|
+
roles:
|
|
430
|
+
[
|
|
431
|
+
"aifabrix-platform-admin",
|
|
432
|
+
"aifabrix-security-admin",
|
|
433
|
+
"aifabrix-developer",
|
|
434
|
+
"aifabrix-ai-trust-operator",
|
|
435
|
+
"aifabrix-observer",
|
|
436
|
+
]
|
|
437
|
+
description: "List and get Knowledge Assets and EnterpriseLineage edges"
|
|
438
|
+
|
|
439
|
+
- name: "knowledge:update"
|
|
440
|
+
roles:
|
|
441
|
+
[
|
|
442
|
+
"aifabrix-platform-admin",
|
|
443
|
+
"aifabrix-developer",
|
|
444
|
+
"aifabrix-ai-trust-operator",
|
|
445
|
+
]
|
|
446
|
+
description: "Update draft Knowledge Assets or supersede active versions"
|
|
447
|
+
|
|
448
|
+
- name: "knowledge:archive"
|
|
449
|
+
roles:
|
|
450
|
+
[
|
|
451
|
+
"aifabrix-platform-admin",
|
|
452
|
+
"aifabrix-developer",
|
|
453
|
+
"aifabrix-ai-trust-operator",
|
|
454
|
+
]
|
|
455
|
+
description: "Archive Knowledge Assets and cascade disposable projections"
|
|
456
|
+
|
|
457
|
+
- name: "knowledge:delete"
|
|
458
|
+
roles:
|
|
459
|
+
[
|
|
460
|
+
"aifabrix-platform-admin",
|
|
461
|
+
"aifabrix-developer",
|
|
462
|
+
"aifabrix-ai-trust-operator",
|
|
463
|
+
]
|
|
464
|
+
description: "Soft-delete Knowledge Assets and cascade disposable projections"
|
|
465
|
+
|
|
394
466
|
# Workforce subscriptions (436.11 / 438.6)
|
|
467
|
+
# Role Assistant surfaces use worker:* (already defined above) — not agentWorkforce:*.
|
|
395
468
|
- name: "subscription:read"
|
|
396
469
|
roles:
|
|
397
470
|
[
|
|
@@ -403,6 +476,15 @@ permissions:
|
|
|
403
476
|
]
|
|
404
477
|
description: "List workforce subscriptions and execution audit rows"
|
|
405
478
|
|
|
479
|
+
- name: "subscription:write"
|
|
480
|
+
roles:
|
|
481
|
+
[
|
|
482
|
+
"aifabrix-platform-admin",
|
|
483
|
+
"aifabrix-developer",
|
|
484
|
+
"aifabrix-deployment-admin",
|
|
485
|
+
]
|
|
486
|
+
description: "Create and update workforce subscriptions"
|
|
487
|
+
|
|
406
488
|
- name: "subscription:run"
|
|
407
489
|
roles:
|
|
408
490
|
[
|
|
@@ -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.8'
|
|
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)
|
|
@@ -81,6 +81,7 @@ configuration:
|
|
|
81
81
|
# Operations & Debugging
|
|
82
82
|
# -------------------------------------------------------------------------
|
|
83
83
|
- name: LOG_LEVEL
|
|
84
|
+
category: General
|
|
84
85
|
portalInput:
|
|
85
86
|
field: select
|
|
86
87
|
label: 'Log Level'
|
|
@@ -91,6 +92,7 @@ configuration:
|
|
|
91
92
|
- error
|
|
92
93
|
|
|
93
94
|
- name: ENABLE_API_DOCS
|
|
95
|
+
category: General
|
|
94
96
|
portalInput:
|
|
95
97
|
field: select
|
|
96
98
|
label: 'Enable API Documentation (Swagger/ReDoc)'
|
|
@@ -99,6 +101,7 @@ configuration:
|
|
|
99
101
|
- 'false'
|
|
100
102
|
|
|
101
103
|
- name: FAST_STARTUP
|
|
104
|
+
category: General
|
|
102
105
|
portalInput:
|
|
103
106
|
field: select
|
|
104
107
|
label: 'Fast Startup (skip non-critical init)'
|
|
@@ -107,6 +110,7 @@ configuration:
|
|
|
107
110
|
- 'false'
|
|
108
111
|
|
|
109
112
|
- name: LOG_TO_FILE
|
|
113
|
+
category: General
|
|
110
114
|
portalInput:
|
|
111
115
|
field: select
|
|
112
116
|
label: 'Log to File'
|
|
@@ -118,6 +122,7 @@ configuration:
|
|
|
118
122
|
# Keycloak Events (feature flag)
|
|
119
123
|
# -------------------------------------------------------------------------
|
|
120
124
|
- name: KEYCLOAK_EVENTS_ENABLED
|
|
125
|
+
category: General
|
|
121
126
|
portalInput:
|
|
122
127
|
field: select
|
|
123
128
|
label: 'Keycloak Events (sync users/groups)'
|
|
@@ -129,12 +134,14 @@ configuration:
|
|
|
129
134
|
# Rate Limiting (tune for environment)
|
|
130
135
|
# -------------------------------------------------------------------------
|
|
131
136
|
- name: RATE_LIMIT_WINDOW_MS
|
|
137
|
+
category: General
|
|
132
138
|
portalInput:
|
|
133
139
|
field: text
|
|
134
140
|
label: 'Rate Limit Window (milliseconds)'
|
|
135
141
|
placeholder: '900000'
|
|
136
142
|
|
|
137
143
|
- name: RATE_LIMIT_MAX
|
|
144
|
+
category: General
|
|
138
145
|
portalInput:
|
|
139
146
|
field: text
|
|
140
147
|
label: 'Rate Limit Max Requests per Window'
|
|
@@ -144,12 +151,14 @@ configuration:
|
|
|
144
151
|
# Redis Cache TTL (seconds) – RBAC/roles caching
|
|
145
152
|
# -------------------------------------------------------------------------
|
|
146
153
|
- name: REDIS_ROLES_TTL
|
|
154
|
+
category: Redis
|
|
147
155
|
portalInput:
|
|
148
156
|
field: text
|
|
149
157
|
label: 'Redis Roles Cache TTL (seconds)'
|
|
150
158
|
placeholder: '900'
|
|
151
159
|
|
|
152
160
|
- name: REDIS_PERMISSIONS_TTL
|
|
161
|
+
category: Redis
|
|
153
162
|
portalInput:
|
|
154
163
|
field: text
|
|
155
164
|
label: 'Redis Permissions Cache TTL (seconds)'
|
|
@@ -63,6 +63,8 @@ NODE_ENV=dev
|
|
|
63
63
|
PORT=${PORT}
|
|
64
64
|
AUTO_CREATE_TABLES=true
|
|
65
65
|
FAST_STARTUP=false
|
|
66
|
+
# Pending Prisma migrations still run on startup unless set to false (even when FAST_STARTUP=true).
|
|
67
|
+
# AUTO_RUN_MIGRATIONS=false
|
|
66
68
|
ENABLE_API_DOCS=true
|
|
67
69
|
|
|
68
70
|
# Rate Limiting Configuration (for local development)
|
|
@@ -157,8 +159,6 @@ WAIT_FOR_KEYCLOAK=true
|
|
|
157
159
|
# For production: use public domain (e.g., https://miso.example.com)
|
|
158
160
|
# url://public includes front-door path from application.yaml (e.g. /controller).
|
|
159
161
|
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
162
|
MISO_CONTROLLER_URL=url://internal
|
|
163
163
|
MISO_RELATIVE_PATH=url://vdir-public
|
|
164
164
|
ALLOWED_ORIGINS=http://localhost:*,url://host-public,url://host-private,url://dataplane-host-public,url://dataplane-host-private
|
|
@@ -191,7 +191,7 @@ CONTROLLER_EVALUATION=
|
|
|
191
191
|
#
|
|
192
192
|
# Delegated Graph (second redirect URI on the same vendor app): see section below.
|
|
193
193
|
ENTRA_CALLBACK_STATE_SECRET=kv://entra-callback-state-secret
|
|
194
|
-
ENTRA_ID_CENTRAL_CALLBACK_URI=
|
|
194
|
+
ENTRA_ID_CENTRAL_CALLBACK_URI=https://aifabrix-pro-mori-web-we.azurewebsites.net/entra-id-concent/callback
|
|
195
195
|
ENTRA_ID_CLIENT_ID=kv://entra-client-idKeyVault
|
|
196
196
|
ENTRA_ID_CLIENT_SECRET=kv://entra-client-secretKeyVault
|
|
197
197
|
|
|
@@ -244,7 +244,7 @@ DEPLOYMENT=database
|
|
|
244
244
|
ENCRYPTION_KEY=kv://miso-controller-secrets-encryptionKeyVault
|
|
245
245
|
|
|
246
246
|
# Comma-separated application keys allowed for POST .../applications/bootstrap (install-time only)
|
|
247
|
-
BOOTSTRAP_APPKEYS=dataplane
|
|
247
|
+
BOOTSTRAP_APPKEYS=dataplane,builder-api
|
|
248
248
|
|
|
249
249
|
# Key Vault Integration (for security parameter encryption)
|
|
250
250
|
# Set to true to enable Azure Key Vault for storing security parameters
|
|
@@ -267,16 +267,16 @@ API_KEY=kv://miso-controller-secrets-apiKeyVault
|
|
|
267
267
|
#
|
|
268
268
|
# Development: set to DEVELOPMENT to disable license validation (no Mori/JWT required):
|
|
269
269
|
# LICENSE_JWT=DEVELOPMENT
|
|
270
|
-
# - Use only for local development
|
|
271
|
-
|
|
270
|
+
# - Use only for local development (DEPLOYMENT=local|database|azure-mock).
|
|
271
|
+
# - Ignored when DEPLOYMENT=azure (Azure marketplace / App Service installs).
|
|
272
|
+
LICENSE_JWT=kv://miso-controller-jwt-licenseKeyVault
|
|
272
273
|
|
|
273
274
|
# =============================================================================
|
|
274
275
|
# ENTRA ID ONBOARDING (delegated Graph via Mori)
|
|
275
276
|
# =============================================================================
|
|
276
277
|
# Must match a Web redirect URI on the vendor multi-tenant app and Mori’s route
|
|
277
|
-
# …/entra-graph-delegated/callback.
|
|
278
|
-
|
|
279
|
-
ENTRA_GRAPH_DELEGATED_REDIRECT_URI=
|
|
278
|
+
# …/entra-graph-delegated/callback. Shared pro Mori (CICD):
|
|
279
|
+
ENTRA_GRAPH_DELEGATED_REDIRECT_URI=https://aifabrix-pro-mori-web-we.azurewebsites.net/entra-graph-delegated/callback
|
|
280
280
|
|
|
281
281
|
# Optional delegated Graph scopes for GET …/graph-auth-url (space- or comma-separated).
|
|
282
282
|
# ENTRA_GRAPH_DELEGATED_SCOPES=https://graph.microsoft.com/Application.ReadWrite.All,https://graph.microsoft.com/Group.ReadWrite.All,https://graph.microsoft.com/Synchronization.ReadWrite.All,openid,profile,offline_access
|
|
@@ -289,7 +289,8 @@ ENTRA_GRAPH_DELEGATED_REDIRECT_URI=
|
|
|
289
289
|
# =============================================================================
|
|
290
290
|
|
|
291
291
|
MORI_BASE_URL=url://mori-controller-public
|
|
292
|
-
MORI_AUTH_METHOD=
|
|
292
|
+
MORI_AUTH_METHOD=kv://mori-controller-auth-methodKeyVault
|
|
293
|
+
MORI_CALLBACK_API_KEY=kv://mori-callback-api-keyKeyVault
|
|
293
294
|
MORI_API_KEY=kv://mori-controller-api-keyKeyVault
|
|
294
295
|
MORI_USERNAME=kv://mori-controller-basic-usernameKeyVault
|
|
295
296
|
MORI_PASSWORD=kv://mori-controller-basic-passwordKeyVault
|
|
@@ -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:
|
|
@@ -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
|