@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
|
@@ -1,12 +1,27 @@
|
|
|
1
|
-
# {{appName}} —
|
|
1
|
+
# {{appName}} — Slack communication channel install
|
|
2
2
|
|
|
3
3
|
{{appDescription}}
|
|
4
4
|
|
|
5
|
-
Environment: **{{environment}}** · Credential key: `{{credentialKey}}`
|
|
5
|
+
Environment: **{{environment}}** · Credential key: `{{credentialKey}}` · Command prefix: `{{commandPrefix}}`
|
|
6
|
+
|
|
7
|
+
One Slack app delivers **Role Assistant** chat, **Work hub** shortcuts, and **document approval**.
|
|
8
|
+
|
|
9
|
+
**Chat with your assistant:** DM this app (no slash command for Q&A).
|
|
10
|
+
|
|
11
|
+
## Create the Slack app (workspace admin)
|
|
12
|
+
|
|
13
|
+
1. Open [Slack API — Your Apps](https://api.slack.com/apps) and sign in as a workspace admin.
|
|
14
|
+
2. Click **Create New App** → **From an app manifest**.
|
|
15
|
+
3. Select your workspace, then paste or upload the generated manifest JSON from `dist/channels/slack/channel-slack.json` (same folder as this file).
|
|
16
|
+
4. Review callback URLs and OAuth scopes — they must match the values in **Platform callback URLs** below.
|
|
17
|
+
5. Confirm **App Home → Messages tab** is **ON** in the manifest (required for bot DMs and proactive notifications; slash commands work without it).
|
|
18
|
+
6. Click **Create**, then open **Install App** → **Install to Workspace** and approve.
|
|
19
|
+
7. Copy **Bot User OAuth Token** and **Signing Secret** from the Slack app settings.
|
|
20
|
+
8. Save **Bot User OAuth Token** and **Signing Secret** in AI Fabrix: [Authentication settings]({{credentialPortalUrl}})
|
|
6
21
|
|
|
7
22
|
## Platform callback URLs
|
|
8
23
|
|
|
9
|
-
Configure these in your Slack app
|
|
24
|
+
Configure these in your Slack app if you edit settings manually. Do not embed secrets in generated files — use AI Fabrix credential storage only.
|
|
10
25
|
|
|
11
26
|
{{#if eventsUrl}}
|
|
12
27
|
- **Events:** {{eventsUrl}}
|
|
@@ -17,18 +32,27 @@ Configure these in your Slack app, Teams bot registration, or platform admin con
|
|
|
17
32
|
{{#if commandUrl}}
|
|
18
33
|
- **Slash commands:** {{commandUrl}}
|
|
19
34
|
{{/if}}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
{{
|
|
26
|
-
{{
|
|
27
|
-
|
|
28
|
-
{{
|
|
29
|
-
|
|
30
|
-
- **
|
|
31
|
-
|
|
35
|
+
|
|
36
|
+
Register these **V1** slash commands in the manifest (all use the same request URL):
|
|
37
|
+
|
|
38
|
+
| Command | Purpose |
|
|
39
|
+
| --- | --- |
|
|
40
|
+
| `/{{commandPrefix}}-help` | Command help and portal links |
|
|
41
|
+
| `/{{commandPrefix}}-assistants` | See your Role Assistants and chat in DM |
|
|
42
|
+
| `/{{commandPrefix}}-tasks` | Tasks waiting for you — View opens the Work hub |
|
|
43
|
+
| `/{{commandPrefix}}-documents [status] [count]` | Documents waiting for review — Open in portal |
|
|
44
|
+
|
|
45
|
+
Single-task and single-document detail, plus approve-in-Slack, are **not** registered in the manifest — use list **View** buttons or the portal for full review.
|
|
46
|
+
|
|
47
|
+
Document review **block actions** use the **Interactivity** URL above.
|
|
48
|
+
|
|
49
|
+
## Validate after manifest import
|
|
50
|
+
|
|
51
|
+
1. `/{{commandPrefix}}-help` — returns Block Kit help (proves command is registered and dataplane responds).
|
|
52
|
+
2. `/{{commandPrefix}}-assistants` — Role Assistant status cards or activation offer.
|
|
53
|
+
3. `/{{commandPrefix}}-tasks` — waiting-for-me work items (when Work hub is enabled).
|
|
54
|
+
4. `/{{commandPrefix}}-documents` — document list with **Review in portal** links.
|
|
55
|
+
5. DM the bot — assistant chat.
|
|
32
56
|
|
|
33
57
|
## Assistant catalog
|
|
34
58
|
|
|
@@ -36,14 +60,20 @@ Runtime lists **assistants** available to each user from:
|
|
|
36
60
|
|
|
37
61
|
{{assistantCatalogUrl}}
|
|
38
62
|
|
|
39
|
-
## After
|
|
63
|
+
## After Slack install
|
|
40
64
|
|
|
41
65
|
```bash
|
|
42
|
-
aifabrix
|
|
66
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}"
|
|
43
67
|
```
|
|
44
68
|
|
|
45
69
|
Optional validation:
|
|
46
70
|
|
|
47
71
|
```bash
|
|
48
|
-
aifabrix
|
|
72
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
To use a different slash prefix (default `af`):
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
aifabrix channel add {{channelTarget}} --name "{{baseName}}" --command-prefix <key>
|
|
49
79
|
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Slack communication channel
|
|
2
|
+
|
|
3
|
+
Communication external system for **Role Assistants** (workforce transport) **and document approval** — one Slack app, dual surface (plan 455.2).
|
|
4
|
+
|
|
5
|
+
## What this integration is
|
|
6
|
+
|
|
7
|
+
- Slack app manifest install (`channel-slack.json` via `aifabrix channel add slack`)
|
|
8
|
+
- **Workforce:** slash commands (`/assistants`, `/tasks`, `/task`), Events API (DM chat), interactive components
|
|
9
|
+
- **Document approval:** slash commands (`/documents`, `/document`, `/approve`, `/help`), review card block actions, proactive notifications
|
|
10
|
+
- **Command SSOT:** `templates/slack/command_catalog.yaml` + Block Kit JSON under `templates/slack/`; optional install prefix (default `af`) registers `/af-*` aliases
|
|
11
|
+
- Outbound CIP: `slack-messages`, `slack-conversations` (workforce replies, DMs, and approval notifications)
|
|
12
|
+
|
|
13
|
+
## What this integration is not
|
|
14
|
+
|
|
15
|
+
- **Not** channel listing / user directory sync (`slack-channels`, `slack-users` are out of scope for this scaffold).
|
|
16
|
+
|
|
17
|
+
## Endpoints
|
|
18
|
+
|
|
19
|
+
Registered at `/api/v1/external/systems/slack/`:
|
|
20
|
+
|
|
21
|
+
| Path | Purpose |
|
|
22
|
+
| --- | --- |
|
|
23
|
+
| `/commands` | Slash commands (workforce + document approval) |
|
|
24
|
+
| `/events` | Events API |
|
|
25
|
+
| `/interactive` | Block actions (approve, reject, metadata) |
|
|
26
|
+
| `/notifications` | Proactive messages |
|
|
27
|
+
| `/documents` | Document review Block Kit payload |
|
|
28
|
+
| `/bot-config` | Bot configuration |
|
|
29
|
+
|
|
30
|
+
## Workflow
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
aifabrix channel scaffold slack # or use this folder as SSOT
|
|
34
|
+
aifabrix upload slack --force
|
|
35
|
+
aifabrix channel add slack --name "Your Assistant"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Publish template changes: `make sync-json` in dataplane → `aifabrix-builder/templates/channels/slack/integration/`.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"app": {
|
|
3
|
+
"key": "slack",
|
|
4
|
+
"displayName": "slack assistant channel",
|
|
5
|
+
"description": "Assistant communication channel — upload then channel add",
|
|
6
|
+
"type": "external"
|
|
7
|
+
},
|
|
8
|
+
"externalIntegration": {
|
|
9
|
+
"schemaBasePath": "./",
|
|
10
|
+
"systems": ["slack-system.json"],
|
|
11
|
+
"dataSources": [
|
|
12
|
+
"slack-datasource-messages.json",
|
|
13
|
+
"slack-datasource-conversations.json"
|
|
14
|
+
],
|
|
15
|
+
"autopublish": true,
|
|
16
|
+
"version": "1.0.0"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Slack assistant channel (communication) — lab fixture secrets
|
|
2
|
+
# Copy to integration/slack/.env (or use aifabrix secret set --shared) before deploy/upload.
|
|
3
|
+
#
|
|
4
|
+
# Manifest: integration/slack/slack-system.json
|
|
5
|
+
# Credential key: slack-app (method hmac)
|
|
6
|
+
#
|
|
7
|
+
# Resolution order at deploy: dataplane secret store (POST /api/v1/credential/secret)
|
|
8
|
+
# then KV_* env fallback in the dataplane container.
|
|
9
|
+
#
|
|
10
|
+
# In .env set plain values (not kv:// literals), e.g.:
|
|
11
|
+
# KV_SLACK_SIGNINGSECRET=<Signing Secret from Slack app Basic Information>
|
|
12
|
+
# KV_SLACK_BOTTOKEN=xoxb-<Bot User OAuth Token from OAuth & Permissions>
|
|
13
|
+
# (NOT xapp- app-level tokens — bot tokens always start with xoxb-)
|
|
14
|
+
# Optional OAuth client secret (not required for webhook + bot outbound smoke):
|
|
15
|
+
# KV_SLACK_CLIENTSECRET=<Client Secret>
|
|
16
|
+
#
|
|
17
|
+
# Shared secrets (Builder CLI, keys without kv:// prefix):
|
|
18
|
+
# aifabrix secret set slack/signingSecret "<value>" --shared
|
|
19
|
+
# aifabrix secret set slack/botToken "xoxb-..." --shared
|
|
20
|
+
# aifabrix secret set slack/clientSecret "<value>" --shared
|
|
21
|
+
|
|
22
|
+
# Required — webhook signature verification (438.3 inbound)
|
|
23
|
+
KV_SLACK_SIGNINGSECRET=kv://slack/signingSecret
|
|
24
|
+
|
|
25
|
+
# Required — outbound Slack Web API (post message, etc.)
|
|
26
|
+
KV_SLACK_BOTTOKEN=kv://slack/botToken
|
|
27
|
+
|
|
28
|
+
# Optional — OAuth app client secret
|
|
29
|
+
KV_SLACK_CLIENTSECRET=kv://slack/clientSecret
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "slack-conversations",
|
|
3
|
+
"displayName": "Slack Conversations",
|
|
4
|
+
"description": "Slack conversations datasource for managing DM and channel conversations",
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"systemKey": "slack",
|
|
7
|
+
"resourceType": "conversation",
|
|
8
|
+
"entityType": "messageService",
|
|
9
|
+
"version": "1.0.0",
|
|
10
|
+
"metadataSchema": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"properties": {
|
|
13
|
+
"id": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"description": "Conversation ID"
|
|
16
|
+
},
|
|
17
|
+
"name": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"description": "Conversation name"
|
|
20
|
+
},
|
|
21
|
+
"isPrivate": {
|
|
22
|
+
"type": "boolean",
|
|
23
|
+
"description": "Whether conversation is private"
|
|
24
|
+
},
|
|
25
|
+
"isIm": {
|
|
26
|
+
"type": "boolean",
|
|
27
|
+
"description": "Whether conversation is a direct message"
|
|
28
|
+
},
|
|
29
|
+
"user": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"description": "User ID (for DM conversations)"
|
|
32
|
+
},
|
|
33
|
+
"key": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"index": true
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"fieldMappings": {
|
|
40
|
+
"attributes": {
|
|
41
|
+
"externalId": {
|
|
42
|
+
"expression": "{{raw.id}}"
|
|
43
|
+
},
|
|
44
|
+
"key": {
|
|
45
|
+
"expression": "{{raw.id}}"
|
|
46
|
+
},
|
|
47
|
+
"id": {
|
|
48
|
+
"expression": "{{raw.id}}"
|
|
49
|
+
},
|
|
50
|
+
"name": {
|
|
51
|
+
"expression": "{{raw.name}}"
|
|
52
|
+
},
|
|
53
|
+
"isPrivate": {
|
|
54
|
+
"expression": "{{raw.isPrivate}}"
|
|
55
|
+
},
|
|
56
|
+
"isIm": {
|
|
57
|
+
"expression": "{{raw.isIm}}"
|
|
58
|
+
},
|
|
59
|
+
"user": {
|
|
60
|
+
"expression": "{{raw.user}}"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"primaryKey": [
|
|
65
|
+
"key"
|
|
66
|
+
],
|
|
67
|
+
"labelKey": [
|
|
68
|
+
"key"
|
|
69
|
+
],
|
|
70
|
+
"exposed": {
|
|
71
|
+
"schema": {
|
|
72
|
+
"externalId": "metadata.externalId",
|
|
73
|
+
"key": "metadata.key",
|
|
74
|
+
"id": "metadata.id",
|
|
75
|
+
"name": "metadata.name",
|
|
76
|
+
"isPrivate": "metadata.isPrivate",
|
|
77
|
+
"isIm": "metadata.isIm",
|
|
78
|
+
"user": "metadata.user"
|
|
79
|
+
},
|
|
80
|
+
"profiles": {
|
|
81
|
+
"default": [
|
|
82
|
+
"externalId",
|
|
83
|
+
"key",
|
|
84
|
+
"id",
|
|
85
|
+
"name",
|
|
86
|
+
"isPrivate",
|
|
87
|
+
"isIm",
|
|
88
|
+
"user"
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"quality": {
|
|
93
|
+
"rejectIf": []
|
|
94
|
+
},
|
|
95
|
+
"execution": {
|
|
96
|
+
"engine": "cip",
|
|
97
|
+
"cip": {
|
|
98
|
+
"version": "1.0",
|
|
99
|
+
"inputType": "void",
|
|
100
|
+
"outputType": "records",
|
|
101
|
+
"operations": {
|
|
102
|
+
"create": {
|
|
103
|
+
"description": "Open a direct message conversation",
|
|
104
|
+
"enabled": true,
|
|
105
|
+
"steps": [
|
|
106
|
+
{
|
|
107
|
+
"fetch": {
|
|
108
|
+
"source": "http",
|
|
109
|
+
"method": "POST",
|
|
110
|
+
"path": "/api/conversations.open",
|
|
111
|
+
"headers": {
|
|
112
|
+
"Authorization": "Bearer {{credential.botToken}}",
|
|
113
|
+
"Content-Type": "application/json"
|
|
114
|
+
},
|
|
115
|
+
"bodyTemplate": {
|
|
116
|
+
"users": "{{parameters.users}}"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"map": {
|
|
122
|
+
"useFieldMappings": true,
|
|
123
|
+
"inputPath": "$.channel"
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"output": {
|
|
128
|
+
"mode": "records"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
"list": {
|
|
134
|
+
"description": "List conversations",
|
|
135
|
+
"enabled": true,
|
|
136
|
+
"steps": [
|
|
137
|
+
{
|
|
138
|
+
"fetch": {
|
|
139
|
+
"source": "openapi",
|
|
140
|
+
"openapiRef": "list",
|
|
141
|
+
"query": {
|
|
142
|
+
"types": "{{parameters.types | default('public_channel,private_channel,im,mpim')}}",
|
|
143
|
+
"limit": "{{parameters.limit | default(100)}}"
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"map": {
|
|
149
|
+
"useFieldMappings": true,
|
|
150
|
+
"inputPath": "$.channels[*]"
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"output": {
|
|
155
|
+
"mode": "records"
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
},
|
|
160
|
+
"get": {
|
|
161
|
+
"description": "Get conversation info",
|
|
162
|
+
"enabled": true,
|
|
163
|
+
"steps": [
|
|
164
|
+
{
|
|
165
|
+
"fetch": {
|
|
166
|
+
"source": "openapi",
|
|
167
|
+
"openapiRef": "get",
|
|
168
|
+
"query": {
|
|
169
|
+
"channel": "{{parameters.channel}}"
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"map": {
|
|
175
|
+
"useFieldMappings": true,
|
|
176
|
+
"inputPath": "$.channel"
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"output": {
|
|
181
|
+
"mode": "records"
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
"capabilities": [
|
|
190
|
+
{
|
|
191
|
+
"key": "list",
|
|
192
|
+
"description": "List conversations",
|
|
193
|
+
"riskLevel": "low",
|
|
194
|
+
"approvalRequired": false
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"key": "get",
|
|
198
|
+
"description": "Get conversation info",
|
|
199
|
+
"riskLevel": "low",
|
|
200
|
+
"approvalRequired": false
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"key": "create",
|
|
204
|
+
"description": "Open a direct message conversation",
|
|
205
|
+
"riskLevel": "medium",
|
|
206
|
+
"approvalRequired": false
|
|
207
|
+
}
|
|
208
|
+
],
|
|
209
|
+
"openapi": {
|
|
210
|
+
"operations": {
|
|
211
|
+
"list": {
|
|
212
|
+
"operationId": "get-api-conversations-list",
|
|
213
|
+
"method": "GET",
|
|
214
|
+
"path": "/api/conversations.list"
|
|
215
|
+
},
|
|
216
|
+
"get": {
|
|
217
|
+
"operationId": "get-api-conversations-info",
|
|
218
|
+
"method": "GET",
|
|
219
|
+
"path": "/api/conversations.info"
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
"enabled": true,
|
|
223
|
+
"documentKey": "slack-conversations",
|
|
224
|
+
"autoRbac": true
|
|
225
|
+
}
|
|
226
|
+
}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "slack-messages",
|
|
3
|
+
"displayName": "Slack Messages",
|
|
4
|
+
"description": "Slack messages datasource for sending and managing messages via Slack Web API",
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"systemKey": "slack",
|
|
7
|
+
"resourceType": "message",
|
|
8
|
+
"entityType": "messageService",
|
|
9
|
+
"version": "1.0.0",
|
|
10
|
+
"metadataSchema": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"properties": {
|
|
13
|
+
"channel": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"description": "Channel ID where message is sent"
|
|
16
|
+
},
|
|
17
|
+
"text": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"description": "Message text"
|
|
20
|
+
},
|
|
21
|
+
"blocks": {
|
|
22
|
+
"type": "array",
|
|
23
|
+
"description": "Message blocks (Slack Block Kit)",
|
|
24
|
+
"items": {
|
|
25
|
+
"type": "string"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"ts": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"description": "Message timestamp (used as message ID)"
|
|
31
|
+
},
|
|
32
|
+
"user": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"description": "User ID who sent the message"
|
|
35
|
+
},
|
|
36
|
+
"key": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"index": true
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"required": [
|
|
42
|
+
"channel"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"fieldMappings": {
|
|
46
|
+
"attributes": {
|
|
47
|
+
"externalId": {
|
|
48
|
+
"expression": "{{raw.ts}}"
|
|
49
|
+
},
|
|
50
|
+
"key": {
|
|
51
|
+
"expression": "{{raw.ts}}"
|
|
52
|
+
},
|
|
53
|
+
"channel": {
|
|
54
|
+
"expression": "{{raw.channel}}"
|
|
55
|
+
},
|
|
56
|
+
"text": {
|
|
57
|
+
"expression": "{{raw.text}}"
|
|
58
|
+
},
|
|
59
|
+
"blocks": {
|
|
60
|
+
"expression": "{{raw.blocks}}"
|
|
61
|
+
},
|
|
62
|
+
"ts": {
|
|
63
|
+
"expression": "{{raw.ts}}"
|
|
64
|
+
},
|
|
65
|
+
"user": {
|
|
66
|
+
"expression": "{{raw.user}}"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"primaryKey": [
|
|
71
|
+
"key"
|
|
72
|
+
],
|
|
73
|
+
"labelKey": [
|
|
74
|
+
"key"
|
|
75
|
+
],
|
|
76
|
+
"exposed": {
|
|
77
|
+
"schema": {
|
|
78
|
+
"externalId": "metadata.externalId",
|
|
79
|
+
"key": "metadata.key",
|
|
80
|
+
"channel": "metadata.channel",
|
|
81
|
+
"text": "metadata.text",
|
|
82
|
+
"blocks": "metadata.blocks",
|
|
83
|
+
"ts": "metadata.ts",
|
|
84
|
+
"user": "metadata.user"
|
|
85
|
+
},
|
|
86
|
+
"profiles": {
|
|
87
|
+
"default": [
|
|
88
|
+
"externalId",
|
|
89
|
+
"key",
|
|
90
|
+
"channel",
|
|
91
|
+
"text",
|
|
92
|
+
"blocks",
|
|
93
|
+
"ts",
|
|
94
|
+
"user"
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"quality": {
|
|
99
|
+
"rejectIf": []
|
|
100
|
+
},
|
|
101
|
+
"execution": {
|
|
102
|
+
"engine": "cip",
|
|
103
|
+
"cip": {
|
|
104
|
+
"version": "1.0",
|
|
105
|
+
"inputType": "void",
|
|
106
|
+
"outputType": "records",
|
|
107
|
+
"operations": {
|
|
108
|
+
"create": {
|
|
109
|
+
"description": "Send a message to Slack channel",
|
|
110
|
+
"enabled": true,
|
|
111
|
+
"steps": [
|
|
112
|
+
{
|
|
113
|
+
"fetch": {
|
|
114
|
+
"source": "http",
|
|
115
|
+
"method": "POST",
|
|
116
|
+
"path": "/api/chat.postMessage",
|
|
117
|
+
"headers": {
|
|
118
|
+
"Authorization": "Bearer {{credential.botToken}}",
|
|
119
|
+
"Content-Type": "application/json"
|
|
120
|
+
},
|
|
121
|
+
"bodyTemplate": {
|
|
122
|
+
"channel": "{{parameters.channel}}",
|
|
123
|
+
"text": "{{parameters.text}}",
|
|
124
|
+
"blocks": "{{parameters.blocks}}"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"map": {
|
|
130
|
+
"useFieldMappings": true,
|
|
131
|
+
"inputPath": "$"
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"output": {
|
|
136
|
+
"mode": "records"
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
"update": {
|
|
142
|
+
"description": "Update an existing Slack message",
|
|
143
|
+
"enabled": true,
|
|
144
|
+
"steps": [
|
|
145
|
+
{
|
|
146
|
+
"fetch": {
|
|
147
|
+
"source": "http",
|
|
148
|
+
"method": "POST",
|
|
149
|
+
"path": "/api/chat.update",
|
|
150
|
+
"headers": {
|
|
151
|
+
"Authorization": "Bearer {{credential.botToken}}",
|
|
152
|
+
"Content-Type": "application/json"
|
|
153
|
+
},
|
|
154
|
+
"bodyTemplate": {
|
|
155
|
+
"channel": "{{parameters.channel}}",
|
|
156
|
+
"ts": "{{parameters.ts}}",
|
|
157
|
+
"text": "{{parameters.text}}",
|
|
158
|
+
"blocks": "{{parameters.blocks}}"
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"map": {
|
|
164
|
+
"useFieldMappings": true,
|
|
165
|
+
"inputPath": "$"
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"output": {
|
|
170
|
+
"mode": "records"
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
"delete": {
|
|
176
|
+
"description": "Delete a Slack message",
|
|
177
|
+
"enabled": true,
|
|
178
|
+
"steps": [
|
|
179
|
+
{
|
|
180
|
+
"fetch": {
|
|
181
|
+
"source": "http",
|
|
182
|
+
"method": "POST",
|
|
183
|
+
"path": "/api/chat.delete",
|
|
184
|
+
"headers": {
|
|
185
|
+
"Authorization": "Bearer {{credential.botToken}}",
|
|
186
|
+
"Content-Type": "application/json"
|
|
187
|
+
},
|
|
188
|
+
"bodyTemplate": {
|
|
189
|
+
"channel": "{{parameters.channel}}",
|
|
190
|
+
"ts": "{{parameters.ts}}"
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"output": {
|
|
196
|
+
"mode": "records"
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
]
|
|
200
|
+
},
|
|
201
|
+
"list": {
|
|
202
|
+
"description": "Get message history from Slack channel",
|
|
203
|
+
"enabled": true,
|
|
204
|
+
"steps": [
|
|
205
|
+
{
|
|
206
|
+
"fetch": {
|
|
207
|
+
"source": "openapi",
|
|
208
|
+
"openapiRef": "list",
|
|
209
|
+
"query": {
|
|
210
|
+
"channel": "{{parameters.channel}}",
|
|
211
|
+
"limit": "{{parameters.limit | default(100)}}"
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"map": {
|
|
217
|
+
"useFieldMappings": true,
|
|
218
|
+
"inputPath": "$.messages[*]"
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"output": {
|
|
223
|
+
"mode": "records"
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
]
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
"capabilities": [
|
|
232
|
+
{
|
|
233
|
+
"key": "list",
|
|
234
|
+
"description": "Get message history from Slack channel",
|
|
235
|
+
"riskLevel": "low",
|
|
236
|
+
"approvalRequired": false
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"key": "create",
|
|
240
|
+
"description": "Send a message to Slack channel",
|
|
241
|
+
"riskLevel": "medium",
|
|
242
|
+
"approvalRequired": false
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"key": "update",
|
|
246
|
+
"description": "Update an existing Slack message",
|
|
247
|
+
"riskLevel": "medium",
|
|
248
|
+
"approvalRequired": false
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"key": "delete",
|
|
252
|
+
"description": "Delete a Slack message",
|
|
253
|
+
"riskLevel": "high",
|
|
254
|
+
"approvalRequired": false
|
|
255
|
+
}
|
|
256
|
+
],
|
|
257
|
+
"openapi": {
|
|
258
|
+
"operations": {
|
|
259
|
+
"list": {
|
|
260
|
+
"operationId": "get-api-conversations-history",
|
|
261
|
+
"method": "GET",
|
|
262
|
+
"path": "/api/conversations.history"
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
"enabled": true,
|
|
266
|
+
"documentKey": "slack-messages",
|
|
267
|
+
"autoRbac": true
|
|
268
|
+
}
|
|
269
|
+
}
|