@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,81 @@
|
|
|
1
|
+
# Platform integrations (aifabrix-builder SSOT)
|
|
2
|
+
|
|
3
|
+
Production and platform integration manifests live here — **not** in aifabrix-dataplane `integration/` (lab/CI mirrors only).
|
|
4
|
+
|
|
5
|
+
**Use the Builder CLI for everything below** — do not hand-scaffold folders or copy from dataplane. SSOT files in git are maintained by the team; developers bootstrap and change integrations with `aifabrix` commands.
|
|
6
|
+
|
|
7
|
+
## Three-layer model (154.0 / 154.1)
|
|
8
|
+
|
|
9
|
+
| Layer | Artifact | Path | Bootstrap (Builder CLI) |
|
|
10
|
+
| --- | --- | --- | --- |
|
|
11
|
+
| **1 — Builder API** | Platform webapp (workspace HTTP orchestration) | `../builder/builder-api/` | `aifabrix up-builder-api` or `aifabrix create builder-api --template builder-api --type webapp` |
|
|
12
|
+
| **1 — GitHub provider** | Production GitHub external system (`apiProvider: github`) | `github/` | `aifabrix create github --type external` then repair/json — **not** OpenAPI wizard (custom CIP + delegated OAuth) |
|
|
13
|
+
| **2 — Enterprise MCP** | COM anchor (repository.\*, template.\*) | `../enterprise-knowledge/enterprise-integration-lifecycle/` | `aifabrix create enterprise-integration-lifecycle --type external` then edit system subscriptions — wizard does not generate COM tasks yet |
|
|
14
|
+
|
|
15
|
+
**Role assistants (Layer 3):** Platform-generated from certified business roles — not hand-authored integration folders here. See [How role assistants are created](https://docs.aifabrix.ai/docs/role-assistants-how-role-assistants-are-created). Admins **Activate for AI**; users do not submit role keys or capability lists.
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
builder-api → WORKSPACE_ROOT/{userId}/integration/{systemKey}/
|
|
19
|
+
→ Enterprise MCP execute on enterprise-integration-lifecycle
|
|
20
|
+
github → production repository provider (aifabrix upload → dataplane)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Builder CLI workflow (normative)
|
|
24
|
+
|
|
25
|
+
### Prerequisites
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
aifabrix auth status
|
|
29
|
+
aifabrix up-infra # Postgres, Redis
|
|
30
|
+
aifabrix up-platform # or up-miso + up-dataplane + up-builder-api
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Builder API (webapp — `builder/`, not `integration/`)
|
|
34
|
+
|
|
35
|
+
Materialized from `templates/applications/builder-api/` into `builder/builder-api/`:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
aifabrix up-builder-api # copy template if missing, resolve, run
|
|
39
|
+
aifabrix resolve builder-api # expand url:// and kv:// in env.template → .env
|
|
40
|
+
aifabrix run builder-api --reload # or: pnpm run dev-reload (from aifabrix-builder repo root)
|
|
41
|
+
aifabrix validate builder-api
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Repo maintainers edit SSOT under `builder/builder-api/` and run `npm run sync-json` to refresh templates — same pattern as miso-controller/dataplane.
|
|
45
|
+
|
|
46
|
+
### External integrations (`integration/<systemKey>/`)
|
|
47
|
+
|
|
48
|
+
| Command | When |
|
|
49
|
+
| --- | --- |
|
|
50
|
+
| `aifabrix create <app> --type external` | New integration folder scaffold |
|
|
51
|
+
| `aifabrix wizard` / `aifabrix wizard --config …` | OpenAPI/MCP/known-platform integrations (HubSpot, etc.) |
|
|
52
|
+
| `aifabrix repair <systemKey>` | Fix manifest drift, auth, env.template, `deploy.js`, deploy JSON |
|
|
53
|
+
| `aifabrix json <systemKey>` | Regenerate `<systemKey>-deploy.json` |
|
|
54
|
+
| `aifabrix validate <systemKey>` | Schema + deployment manifest gate |
|
|
55
|
+
| `aifabrix upload <systemKey> --probe` | Publish config to dataplane (pipeline) |
|
|
56
|
+
| `aifabrix download <systemKey>` | Pull an already-published system from dataplane into `integration/` |
|
|
57
|
+
|
|
58
|
+
**Platform SSOT in this repo** was checked in after initial `create` + manual COM/custom auth edits (see each folder’s `INTEGRATION_CHANGELOG.md`).
|
|
59
|
+
|
|
60
|
+
### Publish order (dev)
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
aifabrix upload enterprise-integration-lifecycle --probe
|
|
64
|
+
aifabrix upload github --probe
|
|
65
|
+
aifabrix run builder-api --reload
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Enterprise MCP anchor must be on dataplane **before** repository provider integrations such as **`github`**.
|
|
69
|
+
|
|
70
|
+
## Why not wizard for these two?
|
|
71
|
+
|
|
72
|
+
| Integration | Reason |
|
|
73
|
+
| --- | --- |
|
|
74
|
+
| `github` | `type: custom`, `authType: apiProvider` (Miso GitHub App + delegated OAuth). Wizard targets OpenAPI/MCP shapes; manifests are maintained with `create` → edit → `repair` → `json`. |
|
|
75
|
+
| `enterprise-integration-lifecycle` | COM subscription + `generateEnterpriseDatasources` task. Not generated by wizard today; use `create --type external` + system.json subscription block. |
|
|
76
|
+
|
|
77
|
+
For standard CRM/API integrations, use `integration/wizard-configs/*.yaml` and `aifabrix wizard --config …` (see `integration/hubspot-test/` examples).
|
|
78
|
+
|
|
79
|
+
**Note:** Dataplane may still mirror legacy `integration/test-e2e-github/` for CI until aligned; **production SSOT is `integration/github/`** in this repo.
|
|
80
|
+
|
|
81
|
+
Lab-only fixtures (`hubspot-test/`, `roundtrip-test-local*`) remain for Builder CLI regression tests.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# GitHub (production repository provider)
|
|
2
|
+
|
|
3
|
+
**Production SSOT** for the GitHub repository provider (Layer 1 — 154.1). Path: **`aifabrix-builder/integration/github/`**.
|
|
4
|
+
|
|
5
|
+
Delegated OAuth via Miso **`apiProvider: github`**, issues/comments datasources, and **`github-repository`** (`resourceType: repository`) for Enterprise MCP lifecycle.
|
|
6
|
+
|
|
7
|
+
**Setup:** `aifabrix upload github --probe` after Miso GitHub provider is linked.
|
|
8
|
+
|
|
9
|
+
## Scope
|
|
10
|
+
|
|
11
|
+
| Datasource | Operations |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| `github-issues` | list, get, create, update, delete (maps to **close**; GitHub has no hard delete) |
|
|
14
|
+
| `github-issue-comments` | list (by `issueNumber`), create |
|
|
15
|
+
| `github-repository` | repository lifecycle CIP (`status`, `sync`, branches, reviews, pipeline dispatch) |
|
|
16
|
+
|
|
17
|
+
## Authentication
|
|
18
|
+
|
|
19
|
+
- External system key: **`github`**
|
|
20
|
+
- Auth: **`authType: apiProvider`** → Miso provider **`github`**
|
|
21
|
+
- Use a **GitHub App** with **expiring user access tokens** (refresh tokens required for Miso link/mint).
|
|
22
|
+
- Link the provider for your user in Miso before running CIP execute tests.
|
|
23
|
+
|
|
24
|
+
## Configuration
|
|
25
|
+
|
|
26
|
+
| Variable | Purpose |
|
|
27
|
+
| --- | --- |
|
|
28
|
+
| `BASE_URL` | `https://api.github.com` (default in manifest) |
|
|
29
|
+
| `GITHUB_OWNER` | Repository owner |
|
|
30
|
+
| `GITHUB_REPO` | Repository name |
|
|
31
|
+
|
|
32
|
+
See [`env.template`](env.template) for deploy placeholders.
|
|
33
|
+
|
|
34
|
+
## Quick start
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
aifabrix validate github
|
|
38
|
+
aifabrix json github
|
|
39
|
+
aifabrix upload github --probe
|
|
40
|
+
|
|
41
|
+
# Or run the generated deploy script from the integration folder:
|
|
42
|
+
node integration/github/deploy.js
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Manifest files
|
|
46
|
+
|
|
47
|
+
| File | Role |
|
|
48
|
+
| --- | --- |
|
|
49
|
+
| [`github-system.json`](github-system.json) | External system |
|
|
50
|
+
| [`github-datasource-issues.json`](github-datasource-issues.json) | Issues datasource |
|
|
51
|
+
| [`github-datasource-issue-comments.json`](github-datasource-issue-comments.json) | Comments datasource |
|
|
52
|
+
| [`github-datasource-repository.json`](github-datasource-repository.json) | Repository datasource (`resourceType: repository`) |
|
|
53
|
+
| [`github-deploy.json`](github-deploy.json) | Pipeline upload payload (regenerate with `aifabrix json github`) |
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"app": {
|
|
3
|
+
"key": "github",
|
|
4
|
+
"displayName": "GitHub",
|
|
5
|
+
"description": "Production GitHub repository provider: delegated OAuth via Miso apiProvider, issues, comments, and repository lifecycle CIP.",
|
|
6
|
+
"type": "external"
|
|
7
|
+
},
|
|
8
|
+
"externalIntegration": {
|
|
9
|
+
"schemaBasePath": "./",
|
|
10
|
+
"systems": [
|
|
11
|
+
"github-system.json"
|
|
12
|
+
],
|
|
13
|
+
"dataSources": [
|
|
14
|
+
"github-datasource-issues.json",
|
|
15
|
+
"github-datasource-issue-comments.json",
|
|
16
|
+
"github-datasource-repository.json"
|
|
17
|
+
],
|
|
18
|
+
"autopublish": true,
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/* eslint-disable no-console */
|
|
3
|
+
/**
|
|
4
|
+
* Deploy github external system and datasources using aifabrix CLI.
|
|
5
|
+
* Run: node deploy.js
|
|
6
|
+
* Flow: check auth → login if needed → deploy → run integration tests.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const { execSync } = require('child_process');
|
|
10
|
+
const path = require('path');
|
|
11
|
+
|
|
12
|
+
const scriptDir = __dirname;
|
|
13
|
+
// Project root (repo containing integration/ and builder/) so deploy/test-integration resolve app paths correctly
|
|
14
|
+
const projectRoot = path.join(scriptDir, '..', '..');
|
|
15
|
+
const appKey = 'github';
|
|
16
|
+
const env = process.env.ENVIRONMENT || 'dev';
|
|
17
|
+
// Controller URL: from config (aifabrix auth config) or set CONTROLLER env before running
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Run a shell command with optional options.
|
|
21
|
+
* @param {string} cmd - Command to run
|
|
22
|
+
* @param {Object} [options={}] - Options (cwd, stdio, ignoreExit)
|
|
23
|
+
* @returns {boolean} True if command succeeded
|
|
24
|
+
*/
|
|
25
|
+
function run(cmd, options = {}) {
|
|
26
|
+
const opts = { cwd: scriptDir, stdio: 'inherit', ...options };
|
|
27
|
+
try {
|
|
28
|
+
execSync(cmd, opts);
|
|
29
|
+
return true;
|
|
30
|
+
} catch (err) {
|
|
31
|
+
if (options.ignoreExit) return false;
|
|
32
|
+
process.exit(err.status ?? 1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Check if aifabrix auth is logged in.
|
|
38
|
+
* @returns {boolean} True if logged in
|
|
39
|
+
*/
|
|
40
|
+
function isLoggedIn() {
|
|
41
|
+
try {
|
|
42
|
+
execSync('aifabrix auth status', { cwd: scriptDir, stdio: 'pipe' });
|
|
43
|
+
return true;
|
|
44
|
+
} catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
console.log('🔍 Checking authentication...');
|
|
50
|
+
if (!isLoggedIn()) {
|
|
51
|
+
console.log('⚠ Not logged in. Run login (e.g. aifabrix login --controller <url> --method device --environment ' + env + ').');
|
|
52
|
+
run('aifabrix login --environment ' + env);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
console.log('🔍 Validating configuration...');
|
|
56
|
+
run('aifabrix validate "' + path.join(scriptDir, 'github-system.json') + '"');
|
|
57
|
+
run('aifabrix validate "' + path.join(scriptDir, 'github-datasource-issues.json') + '"');
|
|
58
|
+
run('aifabrix validate "' + path.join(scriptDir, 'github-datasource-issue-comments.json') + '"');
|
|
59
|
+
run('aifabrix validate "' + path.join(scriptDir, 'github-datasource-repository.json') + '"');
|
|
60
|
+
console.log('✔ Validation passed');
|
|
61
|
+
|
|
62
|
+
console.log('🚀 Deploying ' + appKey + '...');
|
|
63
|
+
run('aifabrix deploy ' + appKey, { cwd: projectRoot });
|
|
64
|
+
console.log('✔ Deployment complete');
|
|
65
|
+
|
|
66
|
+
if (process.env.RUN_TESTS !== 'false') {
|
|
67
|
+
console.log('🧪 Running integration tests...');
|
|
68
|
+
run('aifabrix test-integration ' + appKey, { cwd: projectRoot });
|
|
69
|
+
console.log('✔ Tests passed');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
console.log('✔ Done.');
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# GitHub test E2E – copy values into deploy / system configuration.
|
|
2
|
+
# Authentication is delegated via Miso API Provider `github` (GitHub App + expiring user tokens).
|
|
3
|
+
# Do not store OAuth client secrets here; configure the provider in Miso Controller.
|
|
4
|
+
|
|
5
|
+
# Repository owner (organization or user login)
|
|
6
|
+
GITHUB_OWNER=your-github-owner
|
|
7
|
+
|
|
8
|
+
# Repository name (without owner prefix)
|
|
9
|
+
GITHUB_REPO=your-repo-name
|
|
10
|
+
|
|
11
|
+
BASE_URL=https://api.github.com
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "github-issue-comments",
|
|
3
|
+
"displayName": "GitHub Issue Comments",
|
|
4
|
+
"description": "Comments on repository issues via GitHub REST API: list and create.",
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"systemKey": "github",
|
|
7
|
+
"resourceType": "message",
|
|
8
|
+
"entityType": "recordStorage",
|
|
9
|
+
"version": "1.0.0",
|
|
10
|
+
"businessOrder": 2,
|
|
11
|
+
"metadataSchema": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"properties": {
|
|
14
|
+
"externalId": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"index": true,
|
|
17
|
+
"description": "Stable external record identifier (comment id as string)"
|
|
18
|
+
},
|
|
19
|
+
"id": {
|
|
20
|
+
"type": "integer",
|
|
21
|
+
"index": true,
|
|
22
|
+
"description": "GitHub comment id"
|
|
23
|
+
},
|
|
24
|
+
"issueNumber": {
|
|
25
|
+
"type": "integer",
|
|
26
|
+
"index": true,
|
|
27
|
+
"description": "Parent issue number"
|
|
28
|
+
},
|
|
29
|
+
"body": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"description": "Comment body (markdown)"
|
|
32
|
+
},
|
|
33
|
+
"htmlUrl": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"format": "uri",
|
|
36
|
+
"description": "Web URL for the comment"
|
|
37
|
+
},
|
|
38
|
+
"createdAt": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"format": "date-time",
|
|
41
|
+
"description": "Comment creation timestamp"
|
|
42
|
+
},
|
|
43
|
+
"updatedAt": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"format": "date-time",
|
|
46
|
+
"description": "Comment last update timestamp"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"required": [
|
|
50
|
+
"id"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"fieldMappings": {
|
|
54
|
+
"attributes": {
|
|
55
|
+
"externalId": {
|
|
56
|
+
"expression": "{{raw.id}}"
|
|
57
|
+
},
|
|
58
|
+
"id": {
|
|
59
|
+
"expression": "{{raw.id}}"
|
|
60
|
+
},
|
|
61
|
+
"body": {
|
|
62
|
+
"expression": "{{raw.body}}"
|
|
63
|
+
},
|
|
64
|
+
"htmlUrl": {
|
|
65
|
+
"expression": "{{raw.html_url}}"
|
|
66
|
+
},
|
|
67
|
+
"createdAt": {
|
|
68
|
+
"expression": "{{raw.created_at}}"
|
|
69
|
+
},
|
|
70
|
+
"updatedAt": {
|
|
71
|
+
"expression": "{{raw.updated_at}}"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"primaryKey": [
|
|
76
|
+
"id"
|
|
77
|
+
],
|
|
78
|
+
"labelKey": [
|
|
79
|
+
"id"
|
|
80
|
+
],
|
|
81
|
+
"exposed": {
|
|
82
|
+
"readonly": [
|
|
83
|
+
"id",
|
|
84
|
+
"htmlUrl",
|
|
85
|
+
"createdAt",
|
|
86
|
+
"updatedAt"
|
|
87
|
+
],
|
|
88
|
+
"schema": {
|
|
89
|
+
"externalId": "metadata.externalId",
|
|
90
|
+
"id": "metadata.id",
|
|
91
|
+
"body": "metadata.body",
|
|
92
|
+
"htmlUrl": "metadata.htmlUrl",
|
|
93
|
+
"createdAt": "metadata.createdAt",
|
|
94
|
+
"updatedAt": "metadata.updatedAt"
|
|
95
|
+
},
|
|
96
|
+
"profiles": {
|
|
97
|
+
"default": [
|
|
98
|
+
"id",
|
|
99
|
+
"body",
|
|
100
|
+
"htmlUrl",
|
|
101
|
+
"createdAt",
|
|
102
|
+
"updatedAt"
|
|
103
|
+
],
|
|
104
|
+
"create": [
|
|
105
|
+
"body"
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"openapi": {
|
|
110
|
+
"enabled": true,
|
|
111
|
+
"autoRbac": false,
|
|
112
|
+
"operations": {
|
|
113
|
+
"list": {
|
|
114
|
+
"operationId": "list-repos-owner-repo-issues-issue-number-comments",
|
|
115
|
+
"method": "GET",
|
|
116
|
+
"path": "/repos/{GITHUB_OWNER}/{GITHUB_REPO}/issues/{issueNumber}/comments",
|
|
117
|
+
"permissions": ["external-system:read"]
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"documentKey": "github-issue-comments"
|
|
121
|
+
},
|
|
122
|
+
"quality": {
|
|
123
|
+
"rejectIf": [
|
|
124
|
+
{
|
|
125
|
+
"field": "id",
|
|
126
|
+
"operator": "empty",
|
|
127
|
+
"message": "Comment id cannot be empty"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"field": "body",
|
|
131
|
+
"operator": "empty",
|
|
132
|
+
"message": "Comment body cannot be empty"
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
"testPayload": {
|
|
137
|
+
"payloadTemplate": {
|
|
138
|
+
"id": 900001,
|
|
139
|
+
"body": "E2E test comment from AI Fabrix.",
|
|
140
|
+
"html_url": "https://github.com/octocat/Hello-World/issues/42#issuecomment-900001",
|
|
141
|
+
"created_at": "2025-01-15T11:00:00Z",
|
|
142
|
+
"updated_at": "2025-01-15T11:00:00Z"
|
|
143
|
+
},
|
|
144
|
+
"expectedResult": {
|
|
145
|
+
"id": 900001,
|
|
146
|
+
"issueNumber": 42,
|
|
147
|
+
"body": "E2E test comment from AI Fabrix.",
|
|
148
|
+
"htmlUrl": "https://github.com/octocat/Hello-World/issues/42#issuecomment-900001"
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"execution": {
|
|
152
|
+
"engine": "cip",
|
|
153
|
+
"cip": {
|
|
154
|
+
"version": "1.0",
|
|
155
|
+
"inputType": "void",
|
|
156
|
+
"outputType": "records",
|
|
157
|
+
"operations": {
|
|
158
|
+
"list": {
|
|
159
|
+
"enabled": true,
|
|
160
|
+
"description": "List comments on an issue (requires parameters.issueNumber)",
|
|
161
|
+
"steps": [
|
|
162
|
+
{
|
|
163
|
+
"fetch": {
|
|
164
|
+
"source": "openapi",
|
|
165
|
+
"openapiRef": "list",
|
|
166
|
+
"query": {
|
|
167
|
+
"per_page": "100"
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"map": {
|
|
173
|
+
"useFieldMappings": true,
|
|
174
|
+
"inputPath": "$",
|
|
175
|
+
"inline": {
|
|
176
|
+
"issueNumber": "{{parameters.issueNumber}}"
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"output": {
|
|
182
|
+
"mode": "records"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
]
|
|
186
|
+
},
|
|
187
|
+
"create": {
|
|
188
|
+
"enabled": true,
|
|
189
|
+
"description": "Create a comment on an issue",
|
|
190
|
+
"steps": [
|
|
191
|
+
{
|
|
192
|
+
"fetch": {
|
|
193
|
+
"source": "http",
|
|
194
|
+
"method": "POST",
|
|
195
|
+
"path": "/repos/{{GITHUB_OWNER}}/{{GITHUB_REPO}}/issues/{{parameters.issueNumber}}/comments",
|
|
196
|
+
"headers": {
|
|
197
|
+
"Accept": "application/vnd.github+json",
|
|
198
|
+
"X-GitHub-Api-Version": "2022-11-28",
|
|
199
|
+
"Content-Type": "application/json"
|
|
200
|
+
},
|
|
201
|
+
"bodyTemplate": {
|
|
202
|
+
"body": "{{parameters.body}}"
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"map": {
|
|
208
|
+
"useFieldMappings": true,
|
|
209
|
+
"inputPath": "$",
|
|
210
|
+
"inline": {
|
|
211
|
+
"issueNumber": "{{parameters.issueNumber}}"
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"output": {
|
|
217
|
+
"mode": "records"
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
]
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
"capabilities": [
|
|
226
|
+
{
|
|
227
|
+
"key": "list",
|
|
228
|
+
"description": "List comments on an issue",
|
|
229
|
+
"riskLevel": "low",
|
|
230
|
+
"approvalRequired": false
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"key": "create",
|
|
234
|
+
"description": "Create a comment on an issue",
|
|
235
|
+
"riskLevel": "medium",
|
|
236
|
+
"approvalRequired": false
|
|
237
|
+
}
|
|
238
|
+
]
|
|
239
|
+
}
|