@aifabrix/builder 2.49.1 → 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/process/README.md +9 -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/jest.isolated-projects.js +31 -1
- package/jest.projects.js +87 -1
- package/lib/api/dev-server-https.js +1 -1
- package/lib/api/dev.api.js +1 -0
- 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/host-ops.api.js +69 -0
- 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-path-commands.js +24 -0
- package/lib/cli/setup-dev.js +115 -16
- 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 +64 -61
- 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 +252 -0
- 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 +242 -4
- 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,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "slack",
|
|
3
|
+
"displayName": "Slack communication channel",
|
|
4
|
+
"description": "Slack communication channel — Role Assistants (workforce) and document approval workflows",
|
|
5
|
+
"type": "custom",
|
|
6
|
+
"systemKind": "communication",
|
|
7
|
+
"enabled": true,
|
|
8
|
+
"authentication": {
|
|
9
|
+
"authType": "credential",
|
|
10
|
+
"credential": {
|
|
11
|
+
"credentialKey": "slack-app",
|
|
12
|
+
"displayName": "Slack App",
|
|
13
|
+
"method": "hmac",
|
|
14
|
+
"writeOnce": true,
|
|
15
|
+
"variables": {
|
|
16
|
+
"algorithm": "sha256",
|
|
17
|
+
"signatureHeader": "X-Slack-Signature",
|
|
18
|
+
"timestampHeader": "X-Slack-Request-Timestamp",
|
|
19
|
+
"signaturePrefix": "v0=",
|
|
20
|
+
"timestampMaxAge": "300"
|
|
21
|
+
},
|
|
22
|
+
"security": {
|
|
23
|
+
"signingSecret": "kv://slack/signingSecret",
|
|
24
|
+
"botToken": "kv://slack/botToken",
|
|
25
|
+
"clientSecret": "kv://slack/clientSecret"
|
|
26
|
+
},
|
|
27
|
+
"formFields": [
|
|
28
|
+
{ "name": "signingSecret", "required": true },
|
|
29
|
+
{
|
|
30
|
+
"name": "botToken",
|
|
31
|
+
"required": true,
|
|
32
|
+
"label": "Bot User OAuth Token (xoxb-)",
|
|
33
|
+
"placeholder": "xoxb-…"
|
|
34
|
+
},
|
|
35
|
+
{ "name": "clientSecret", "required": false }
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"configuration": [],
|
|
40
|
+
"dataSources": ["slack-messages", "slack-conversations"],
|
|
41
|
+
"endpoints": [
|
|
42
|
+
{
|
|
43
|
+
"type": "commands",
|
|
44
|
+
"path": "/commands",
|
|
45
|
+
"router": "slack_commands_router",
|
|
46
|
+
"description": "Slack slash commands endpoint",
|
|
47
|
+
"active": true
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"type": "events",
|
|
51
|
+
"path": "/events",
|
|
52
|
+
"router": "slack_events_router",
|
|
53
|
+
"description": "Slack Events API endpoint",
|
|
54
|
+
"active": true
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"type": "interactive",
|
|
58
|
+
"path": "/interactive",
|
|
59
|
+
"router": "slack_interactive_router",
|
|
60
|
+
"description": "Slack interactive components endpoint",
|
|
61
|
+
"active": true
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"type": "notifications",
|
|
65
|
+
"path": "/notifications",
|
|
66
|
+
"router": "slack_notifications_router",
|
|
67
|
+
"description": "Proactive notification endpoint",
|
|
68
|
+
"active": true
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"type": "config",
|
|
72
|
+
"path": "/bot-config",
|
|
73
|
+
"router": "slack_config_router",
|
|
74
|
+
"description": "Slack bot configuration endpoint",
|
|
75
|
+
"active": true
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"type": "documents",
|
|
79
|
+
"path": "/documents",
|
|
80
|
+
"router": "slack_documents_router",
|
|
81
|
+
"description": "Slack document review endpoint",
|
|
82
|
+
"active": true
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
"endpointsActive": true
|
|
86
|
+
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"features": {
|
|
8
8
|
"app_home": {
|
|
9
9
|
"home_tab_enabled": true,
|
|
10
|
-
"messages_tab_enabled":
|
|
10
|
+
"messages_tab_enabled": true,
|
|
11
11
|
"messages_tab_read_only_enabled": false
|
|
12
12
|
},
|
|
13
13
|
"bot_user": {
|
|
@@ -16,24 +16,34 @@
|
|
|
16
16
|
},
|
|
17
17
|
"slash_commands": [
|
|
18
18
|
{
|
|
19
|
-
"command": "/
|
|
19
|
+
"command": "/{{commandPrefix}}-help",
|
|
20
20
|
"url": "{{commandUrl}}",
|
|
21
|
-
"description": "
|
|
22
|
-
"usage_hint": "[assistant or message]",
|
|
21
|
+
"description": "Guide to Role Assistants, work, and document review links",
|
|
23
22
|
"should_escape": false
|
|
24
23
|
},
|
|
25
24
|
{
|
|
26
|
-
"command": "/assistants",
|
|
25
|
+
"command": "/{{commandPrefix}}-assistants",
|
|
27
26
|
"url": "{{commandUrl}}",
|
|
28
|
-
"description": "
|
|
27
|
+
"description": "See your Role Assistants and chat in DM",
|
|
28
|
+
"should_escape": false
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"command": "/{{commandPrefix}}-tasks",
|
|
32
|
+
"url": "{{commandUrl}}",
|
|
33
|
+
"description": "Tasks waiting for you — View opens the Work hub",
|
|
34
|
+
"should_escape": false
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"command": "/{{commandPrefix}}-documents",
|
|
38
|
+
"url": "{{commandUrl}}",
|
|
39
|
+
"description": "Documents waiting for review — Open in portal for full review",
|
|
40
|
+
"usage_hint": "[status] [count]",
|
|
29
41
|
"should_escape": false
|
|
30
42
|
}
|
|
31
43
|
]
|
|
32
44
|
},
|
|
33
45
|
"oauth_config": {
|
|
34
|
-
"redirect_urls":
|
|
35
|
-
"{{oauthCallbackUrl}}"
|
|
36
|
-
],
|
|
46
|
+
"redirect_urls": {{{slackRedirectUrlsJson}}},
|
|
37
47
|
"scopes": {
|
|
38
48
|
"bot": [
|
|
39
49
|
"app_mentions:read",
|
|
@@ -60,7 +70,7 @@
|
|
|
60
70
|
},
|
|
61
71
|
"org_deploy_enabled": true,
|
|
62
72
|
"socket_mode_enabled": false,
|
|
63
|
-
"token_rotation_enabled":
|
|
73
|
+
"token_rotation_enabled": {{slackTokenRotationEnabled}},
|
|
64
74
|
"is_mcp_enabled": false
|
|
65
75
|
}
|
|
66
76
|
}
|
|
@@ -1,25 +1,26 @@
|
|
|
1
|
-
# {{appName}} —
|
|
1
|
+
# {{appName}} — Microsoft Teams communication channel install
|
|
2
2
|
|
|
3
3
|
{{appDescription}}
|
|
4
4
|
|
|
5
5
|
Environment: **{{environment}}** · Credential key: `{{credentialKey}}`
|
|
6
6
|
|
|
7
|
+
One Teams bot delivers **Role Assistant** chat **and** **document approval** (plan 455.2).
|
|
8
|
+
|
|
9
|
+
## Register the Teams bot (tenant admin)
|
|
10
|
+
|
|
11
|
+
1. Open the [Teams Developer Portal](https://dev.teams.microsoft.com/) as a Teams tenant admin.
|
|
12
|
+
2. Create a new app or **Import an existing app** using the Bot Framework manifest JSON from `dist/channels/teams-bot/channel-teams-bot.json` (same folder as this file).
|
|
13
|
+
3. Set the **Bot messaging endpoint** to the **Bot messages** URL below (your dataplane `/messages` route).
|
|
14
|
+
4. In [Azure Portal](https://portal.azure.com/), register or open the **Azure Bot** resource and copy the **Microsoft App ID**.
|
|
15
|
+
5. In Microsoft Entra, create a **client secret** (or upload a certificate) for the bot app registration.
|
|
16
|
+
6. Enable the **Microsoft Teams** channel on the Azure Bot resource.
|
|
17
|
+
7. Save the **Microsoft App ID** and **client secret** in AI Fabrix: [Authentication settings]({{credentialPortalUrl}})
|
|
18
|
+
8. Publish the app to your organization (or sideload for lab) and complete tenant admin approval if prompted.
|
|
19
|
+
|
|
7
20
|
## Platform callback URLs
|
|
8
21
|
|
|
9
|
-
Configure these
|
|
22
|
+
Configure these on the Azure Bot / Teams app registration. Do not embed secrets in generated files — use AI Fabrix credential storage only.
|
|
10
23
|
|
|
11
|
-
{{#if eventsUrl}}
|
|
12
|
-
- **Events:** {{eventsUrl}}
|
|
13
|
-
{{/if}}
|
|
14
|
-
{{#if interactionUrl}}
|
|
15
|
-
- **Interactivity:** {{interactionUrl}}
|
|
16
|
-
{{/if}}
|
|
17
|
-
{{#if commandUrl}}
|
|
18
|
-
- **Slash commands:** {{commandUrl}}
|
|
19
|
-
{{/if}}
|
|
20
|
-
{{#if oauthCallbackUrl}}
|
|
21
|
-
- **OAuth redirect:** {{oauthCallbackUrl}}
|
|
22
|
-
{{/if}}
|
|
23
24
|
{{#if messagesUrl}}
|
|
24
25
|
- **Bot messages:** {{messagesUrl}}
|
|
25
26
|
{{/if}}
|
|
@@ -30,20 +31,33 @@ Configure these in your Slack app, Teams bot registration, or platform admin con
|
|
|
30
31
|
- **Bot config:** {{botConfigUrl}}
|
|
31
32
|
{{/if}}
|
|
32
33
|
|
|
34
|
+
## Document approval bot commands
|
|
35
|
+
|
|
36
|
+
Users message the bot with:
|
|
37
|
+
|
|
38
|
+
| Command | Purpose |
|
|
39
|
+
| --- | --- |
|
|
40
|
+
| `documents [status] [count]` | List documents (default: pending, 10 max) |
|
|
41
|
+
| `document <documentId>` | Open review Adaptive Card |
|
|
42
|
+
| `approve <documentId> [notes]` | Quick-approve |
|
|
43
|
+
| `help` | Command help |
|
|
44
|
+
|
|
45
|
+
Review cards use **Approve**, **Reject**, and **Edit metadata** actions on the **Bot messages** endpoint. Proactive review notifications use the **Notifications** URL.
|
|
46
|
+
|
|
33
47
|
## Assistant catalog
|
|
34
48
|
|
|
35
49
|
Runtime lists **assistants** available to each user from:
|
|
36
50
|
|
|
37
51
|
{{assistantCatalogUrl}}
|
|
38
52
|
|
|
39
|
-
## After admin approval
|
|
53
|
+
## After Teams admin approval
|
|
40
54
|
|
|
41
55
|
```bash
|
|
42
|
-
aifabrix
|
|
56
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}"
|
|
43
57
|
```
|
|
44
58
|
|
|
45
59
|
Optional validation:
|
|
46
60
|
|
|
47
61
|
```bash
|
|
48
|
-
aifabrix
|
|
62
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
|
|
49
63
|
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# teams-bot communication channel (lab fixture)
|
|
2
|
+
|
|
3
|
+
SSOT for Teams Bot Framework communication channel — **Role Assistants** and **document approval** on one bot (plan 455.2). Published to builder via `make sync-json`.
|
|
4
|
+
|
|
5
|
+
## Surfaces
|
|
6
|
+
|
|
7
|
+
- **Workforce:** DMs, activation cards, task offers (Bot Framework `/messages`)
|
|
8
|
+
- **Document approval:** `documents`, `document`, `approve`, `help` bot commands; review Adaptive Cards; proactive `/notifications`
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
cd aifabrix-dataplane
|
|
12
|
+
aifabrix validate teams-bot
|
|
13
|
+
aifabrix upload teams-bot --probe
|
|
14
|
+
aifabrix deploy teams-bot
|
|
15
|
+
aifabrix channel add teams-bot --name "Your Assistant"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Authentication: oidc — prefilled discovery settings; operators add Microsoft App ID + client secret on Connected Systems → Authentication.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"app": {
|
|
3
|
+
"key": "teams-bot",
|
|
4
|
+
"displayName": "teams-bot assistant channel",
|
|
5
|
+
"description": "Assistant communication channel — upload then channel add",
|
|
6
|
+
"type": "external"
|
|
7
|
+
},
|
|
8
|
+
"externalIntegration": {
|
|
9
|
+
"schemaBasePath": "./",
|
|
10
|
+
"systems": [
|
|
11
|
+
"teams-bot-system.json"
|
|
12
|
+
],
|
|
13
|
+
"dataSources": [],
|
|
14
|
+
"autopublish": true,
|
|
15
|
+
"version": "1.0.0"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "teams-bot",
|
|
3
|
+
"displayName": "Microsoft Teams communication channel",
|
|
4
|
+
"description": "Teams communication channel — Role Assistants (workforce) and document approval workflows",
|
|
5
|
+
"type": "custom",
|
|
6
|
+
"systemKind": "communication",
|
|
7
|
+
"enabled": true,
|
|
8
|
+
"authentication": {
|
|
9
|
+
"authType": "credential",
|
|
10
|
+
"credential": {
|
|
11
|
+
"credentialKey": "teams-bot",
|
|
12
|
+
"displayName": "Microsoft Teams assistant bot",
|
|
13
|
+
"method": "oidc",
|
|
14
|
+
"writeOnce": true,
|
|
15
|
+
"variables": {
|
|
16
|
+
"openIdConfigUrl": "https://login.botframework.com/v1/.well-known/openid_configuration",
|
|
17
|
+
"expectedIssuer": "https://api.botframework.com",
|
|
18
|
+
"algorithms": "RS256",
|
|
19
|
+
"validateSignature": "true"
|
|
20
|
+
},
|
|
21
|
+
"security": {
|
|
22
|
+
"clientId": "kv://teams-bot/botAppId"
|
|
23
|
+
},
|
|
24
|
+
"formFields": [
|
|
25
|
+
{ "name": "clientId", "required": true }
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"configuration": [],
|
|
30
|
+
"dataSources": [],
|
|
31
|
+
"endpoints": [
|
|
32
|
+
{
|
|
33
|
+
"type": "messages",
|
|
34
|
+
"path": "/messages",
|
|
35
|
+
"router": "teams_bot_router",
|
|
36
|
+
"description": "Bot Framework messaging endpoint",
|
|
37
|
+
"active": true
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"type": "notifications",
|
|
41
|
+
"path": "/notifications",
|
|
42
|
+
"router": "teams_notifications_router",
|
|
43
|
+
"description": "Proactive notification endpoint",
|
|
44
|
+
"active": true
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "config",
|
|
48
|
+
"path": "/bot-config",
|
|
49
|
+
"router": "teams_config_router",
|
|
50
|
+
"description": "Bot configuration endpoint",
|
|
51
|
+
"active": true
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"endpointsActive": true
|
|
55
|
+
}
|
|
@@ -9,5 +9,32 @@
|
|
|
9
9
|
"notificationsUrl": "{{notificationsUrl}}",
|
|
10
10
|
"botConfigUrl": "{{botConfigUrl}}",
|
|
11
11
|
"assistantCatalogUrl": "{{assistantCatalogUrl}}"
|
|
12
|
+
},
|
|
13
|
+
"botCommands": [
|
|
14
|
+
{
|
|
15
|
+
"title": "documents",
|
|
16
|
+
"description": "List pending documents (usage: documents [status] [count])"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"title": "document",
|
|
20
|
+
"description": "View document details (usage: document <documentId>)"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"title": "approve",
|
|
24
|
+
"description": "Approve a document (usage: approve <documentId> [notes])"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"title": "help",
|
|
28
|
+
"description": "Show available commands"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"surfaces": {
|
|
32
|
+
"workforce": {
|
|
33
|
+
"description": "Role Assistant DMs, activation cards, task offers (Bot Framework messages + Adaptive Cards)"
|
|
34
|
+
},
|
|
35
|
+
"documentApproval": {
|
|
36
|
+
"description": "Document review cards, approve/reject actions, proactive notifications",
|
|
37
|
+
"notificationsUrl": "{{notificationsUrl}}"
|
|
38
|
+
}
|
|
12
39
|
}
|
|
13
40
|
}
|
|
@@ -1,33 +1,23 @@
|
|
|
1
|
-
# {{appName}} — assistant channel install
|
|
1
|
+
# {{appName}} — Web embed assistant channel install
|
|
2
2
|
|
|
3
3
|
{{appDescription}}
|
|
4
4
|
|
|
5
5
|
Environment: **{{environment}}** · Credential key: `{{credentialKey}}`
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
> **Experimental** — confirm product requirement before production use. No Slack/Teams-style platform admin approval.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Embed on your site
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
{{
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
{{
|
|
20
|
-
{{
|
|
21
|
-
- **OAuth redirect:** {{oauthCallbackUrl}}
|
|
22
|
-
{{/if}}
|
|
23
|
-
{{#if messagesUrl}}
|
|
24
|
-
- **Bot messages:** {{messagesUrl}}
|
|
25
|
-
{{/if}}
|
|
26
|
-
{{#if notificationsUrl}}
|
|
27
|
-
- **Notifications:** {{notificationsUrl}}
|
|
28
|
-
{{/if}}
|
|
29
|
-
{{#if botConfigUrl}}
|
|
30
|
-
- **Bot config:** {{botConfigUrl}}
|
|
11
|
+
1. Review the generated embed configuration JSON from `dist/channels/web-embed/channel-web-embed.json` (same folder as this file).
|
|
12
|
+
2. Confirm **allowed origins** and the **embed config URL** below match your customer web application.
|
|
13
|
+
3. Save the **embed API key** in AI Fabrix: [Authentication settings]({{credentialPortalUrl}})
|
|
14
|
+
4. Add the embed snippet or widget loader to your web application (use values from the config artifact).
|
|
15
|
+
5. Validate in a browser that the widget loads and lists assistants for signed-in users.
|
|
16
|
+
|
|
17
|
+
## Platform endpoints
|
|
18
|
+
|
|
19
|
+
{{#if configUrl}}
|
|
20
|
+
- **Embed config:** {{configUrl}}
|
|
31
21
|
{{/if}}
|
|
32
22
|
|
|
33
23
|
## Assistant catalog
|
|
@@ -36,14 +26,14 @@ Runtime lists **assistants** available to each user from:
|
|
|
36
26
|
|
|
37
27
|
{{assistantCatalogUrl}}
|
|
38
28
|
|
|
39
|
-
## After
|
|
29
|
+
## After embed is live
|
|
40
30
|
|
|
41
31
|
```bash
|
|
42
|
-
aifabrix
|
|
32
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}"
|
|
43
33
|
```
|
|
44
34
|
|
|
45
35
|
Optional validation:
|
|
46
36
|
|
|
47
37
|
```bash
|
|
48
|
-
aifabrix
|
|
38
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
|
|
49
39
|
```
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Web embed assistant channel (lab fixture, experimental)
|
|
2
|
+
|
|
3
|
+
SSOT for `aifabrix channel scaffold web-embed --allow-experimental` templates (`make sync-json` → builder).
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
cd aifabrix-dataplane
|
|
7
|
+
aifabrix validate web-embed
|
|
8
|
+
aifabrix upload web-embed --probe
|
|
9
|
+
aifabrix deploy web-embed
|
|
10
|
+
aifabrix app add-channel web-embed --name "Your Assistant" --allow-experimental
|
|
11
|
+
```
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"app": {
|
|
3
|
+
"key": "web-embed",
|
|
4
|
+
"displayName": "Web embed assistant channel",
|
|
5
|
+
"description": "Assistant communication channel — deploy then app add-channel",
|
|
6
|
+
"type": "external"
|
|
7
|
+
},
|
|
8
|
+
"externalIntegration": {
|
|
9
|
+
"schemaBasePath": "./",
|
|
10
|
+
"systems": ["web-embed-system.json"],
|
|
11
|
+
"dataSources": [],
|
|
12
|
+
"autopublish": true,
|
|
13
|
+
"version": "1.0.0"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "web-embed",
|
|
3
|
+
"displayName": "Web embed assistant channel",
|
|
4
|
+
"description": "Communication external system for embeddable web assistant channel install",
|
|
5
|
+
"type": "custom",
|
|
6
|
+
"systemKind": "communication",
|
|
7
|
+
"enabled": true,
|
|
8
|
+
"authentication": {
|
|
9
|
+
"authType": "credential",
|
|
10
|
+
"credential": {
|
|
11
|
+
"credentialKey": "web-embed-channel",
|
|
12
|
+
"displayName": "Web embed assistant channel",
|
|
13
|
+
"method": "apikey",
|
|
14
|
+
"writeOnce": true,
|
|
15
|
+
"variables": {
|
|
16
|
+
"baseUrl": "https://embed.aifabrix.dev"
|
|
17
|
+
},
|
|
18
|
+
"security": {
|
|
19
|
+
"apiKey": "kv://web-embed/apiKey"
|
|
20
|
+
},
|
|
21
|
+
"formFields": [
|
|
22
|
+
{ "name": "apiKey", "required": true }
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"configuration": [],
|
|
27
|
+
"dataSources": [],
|
|
28
|
+
"endpointsActive": false
|
|
29
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<title>@@TITLE@@</title>
|
|
5
|
+
<meta charset="utf-8"/>
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
7
|
+
<link href="https://fonts.googleapis.com/css?family=Montserrat:300,400,700|Roboto:300,400,700" rel="stylesheet">
|
|
8
|
+
<style>
|
|
9
|
+
body { margin: 0; padding: 0; }
|
|
10
|
+
.download-buttons {
|
|
11
|
+
position: fixed;
|
|
12
|
+
top: 10px;
|
|
13
|
+
right: 10px;
|
|
14
|
+
z-index: 1000;
|
|
15
|
+
display: flex;
|
|
16
|
+
gap: 10px;
|
|
17
|
+
flex-wrap: wrap;
|
|
18
|
+
transition: opacity 0.2s ease, visibility 0.2s ease;
|
|
19
|
+
}
|
|
20
|
+
.download-buttons.download-buttons--pending {
|
|
21
|
+
visibility: hidden;
|
|
22
|
+
opacity: 0;
|
|
23
|
+
pointer-events: none;
|
|
24
|
+
}
|
|
25
|
+
.download-btn {
|
|
26
|
+
background-color: rgb(24, 111, 175);
|
|
27
|
+
color: white;
|
|
28
|
+
border: none;
|
|
29
|
+
padding: 3px 10px;
|
|
30
|
+
text-align: center;
|
|
31
|
+
text-decoration: none;
|
|
32
|
+
display: inline-block;
|
|
33
|
+
font-size: 12px;
|
|
34
|
+
font-weight: 500;
|
|
35
|
+
border-radius: 4px;
|
|
36
|
+
cursor: pointer;
|
|
37
|
+
transition: background-color 0.3s;
|
|
38
|
+
font-family: 'Roboto', sans-serif;
|
|
39
|
+
}
|
|
40
|
+
.download-btn:hover { background-color: #0b7dda; }
|
|
41
|
+
</style>
|
|
42
|
+
</head>
|
|
43
|
+
<body>
|
|
44
|
+
<noscript>
|
|
45
|
+
ReDoc requires Javascript to function. Please enable it to browse the documentation.
|
|
46
|
+
</noscript>
|
|
47
|
+
<div class="download-buttons download-buttons--pending">
|
|
48
|
+
<a href="@@JSON_DOWNLOAD_URL@@" download="@@JSON_DOWNLOAD_NAME@@" class="download-btn">Download OpenAPI (JSON)</a>
|
|
49
|
+
</div>
|
|
50
|
+
<div id="redoc-root" data-spec-url="@@SPEC_URL@@"></div>
|
|
51
|
+
<script src="@@REDOC_JS_URL@@"></script>
|
|
52
|
+
<script>
|
|
53
|
+
(function () {
|
|
54
|
+
var root = document.getElementById('redoc-root');
|
|
55
|
+
var bar = document.querySelector('.download-buttons');
|
|
56
|
+
var specUrl = root && root.getAttribute('data-spec-url');
|
|
57
|
+
|
|
58
|
+
function revealDownloads() {
|
|
59
|
+
if (bar) {
|
|
60
|
+
bar.classList.remove('download-buttons--pending');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (!root || !specUrl) {
|
|
65
|
+
revealDownloads();
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (typeof Redoc === 'undefined' || typeof Redoc.init !== 'function') {
|
|
70
|
+
revealDownloads();
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
try {
|
|
75
|
+
Redoc.init(specUrl, {}, root, function () {
|
|
76
|
+
revealDownloads();
|
|
77
|
+
});
|
|
78
|
+
} catch (_e) {
|
|
79
|
+
revealDownloads();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
window.setTimeout(revealDownloads, 60000);
|
|
83
|
+
})();
|
|
84
|
+
</script>
|
|
85
|
+
</body>
|
|
86
|
+
</html>
|
|
@@ -64,13 +64,24 @@ services:
|
|
|
64
64
|
volumes:
|
|
65
65
|
- {{devMountPath}}:/app
|
|
66
66
|
{{#if requiresStorage}}
|
|
67
|
+
{{#if localDataMountPath}}
|
|
68
|
+
- {{localDataMountPath}}:/mnt/data
|
|
69
|
+
{{else}}
|
|
67
70
|
- {{#if (eq devId 0)}}aifabrix_{{app.key}}_data{{else}}aifabrix_dev{{devId}}_{{app.key}}_data{{/if}}:/mnt/data
|
|
68
71
|
{{/if}}
|
|
72
|
+
{{/if}}
|
|
69
73
|
user: "${AIFABRIX_UID:-1000}:${AIFABRIX_GID:-1000}"
|
|
70
74
|
{{else}}
|
|
71
75
|
{{#if requiresStorage}}
|
|
72
76
|
volumes:
|
|
77
|
+
{{#if localDataMountPath}}
|
|
78
|
+
- {{localDataMountPath}}:/mnt/data
|
|
79
|
+
{{else}}
|
|
73
80
|
- {{#if (eq devId 0)}}aifabrix_{{app.key}}_data{{else}}aifabrix_dev{{devId}}_{{app.key}}_data{{/if}}:/mnt/data
|
|
81
|
+
{{/if}}
|
|
82
|
+
{{#if localDataMountPath}}
|
|
83
|
+
user: "${AIFABRIX_UID:-1000}:${AIFABRIX_GID:-1000}"
|
|
84
|
+
{{/if}}
|
|
74
85
|
{{/if}}
|
|
75
86
|
{{/if}}
|
|
76
87
|
healthcheck:
|
|
@@ -64,13 +64,24 @@ services:
|
|
|
64
64
|
volumes:
|
|
65
65
|
- {{devMountPath}}:/app
|
|
66
66
|
{{#if requiresStorage}}
|
|
67
|
+
{{#if localDataMountPath}}
|
|
68
|
+
- {{localDataMountPath}}:/mnt/data
|
|
69
|
+
{{else}}
|
|
67
70
|
- {{#if (eq devId 0)}}aifabrix_{{app.key}}_data{{else}}aifabrix_dev{{devId}}_{{app.key}}_data{{/if}}:/mnt/data
|
|
68
71
|
{{/if}}
|
|
72
|
+
{{/if}}
|
|
69
73
|
user: "${AIFABRIX_UID:-1000}:${AIFABRIX_GID:-1000}"
|
|
70
74
|
{{else}}
|
|
71
75
|
{{#if requiresStorage}}
|
|
72
76
|
volumes:
|
|
77
|
+
{{#if localDataMountPath}}
|
|
78
|
+
- {{localDataMountPath}}:/mnt/data
|
|
79
|
+
{{else}}
|
|
73
80
|
- {{#if (eq devId 0)}}aifabrix_{{app.key}}_data{{else}}aifabrix_dev{{devId}}_{{app.key}}_data{{/if}}:/mnt/data
|
|
81
|
+
{{/if}}
|
|
82
|
+
{{#if localDataMountPath}}
|
|
83
|
+
user: "${AIFABRIX_UID:-1000}:${AIFABRIX_GID:-1000}"
|
|
84
|
+
{{/if}}
|
|
74
85
|
{{/if}}
|
|
75
86
|
{{/if}}
|
|
76
87
|
healthcheck:
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Detect skip-cert-sync from Commander + legacy option shapes.
|
|
3
|
-
* Commander registers `--no-cert-sync` as `certSync` defaulting to true; `--no-cert-sync` sets `certSync: false`.
|
|
4
|
-
* @author AI Fabrix Team
|
|
5
|
-
* @version 2.0.0
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
'use strict';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @param {Object|null|undefined} options
|
|
12
|
-
* @returns {boolean}
|
|
13
|
-
*/
|
|
14
|
-
function cliOptsSkipCertSync(options) {
|
|
15
|
-
if (!options || typeof options !== 'object') return false;
|
|
16
|
-
if (options.noCertSync === true) return true;
|
|
17
|
-
if (options.certSync === false) return true;
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
module.exports = { cliOptsSkipCertSync };
|