@aifabrix/builder 2.49.2 → 2.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/plans/157.1-security-quality-violations-by-type.csv +374 -0
- package/.cursor/rules/assistant-driven-integration-build.mdc +40 -0
- package/.cursor/rules/deploy-rules/docker-image-ip-policy.mdc +49 -0
- package/.cursor/rules/plan-rules/application-lifecycle.mdc +30 -0
- package/.cursor/rules/plan-rules/plan-frontmatter.mdc +35 -0
- package/.cursor/rules/plan-rules/plan-lifecycle.mdc +31 -0
- package/.cursor/rules/plan-rules/plan-validation-gate.mdc +34 -0
- package/.cursor/skills/README.md +1 -0
- package/.dockerignore +52 -0
- package/.eslintignore +22 -0
- package/README.md +2 -0
- package/bin/builder-api-cleanup.js +26 -0
- package/bin/builder-api-nest.js +10 -0
- package/bin/builder-api-spike.js +19 -0
- package/enterprise-knowledge/README.md +50 -0
- package/enterprise-knowledge/enterprise-integration-lifecycle/README.md +22 -0
- package/enterprise-knowledge/enterprise-integration-lifecycle/application.json +15 -0
- package/enterprise-knowledge/enterprise-integration-lifecycle/deploy.js +69 -0
- package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-deploy.json +52 -0
- package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-system.json +29 -0
- package/enterprise-knowledge/enterprise-integration-lifecycle/env.template +2 -0
- package/integration/README.md +81 -0
- package/integration/github/README.md +53 -0
- package/integration/github/application.json +21 -0
- package/integration/github/deploy.js +72 -0
- package/integration/github/env.template +11 -0
- package/integration/github/github-datasource-issue-comments.json +239 -0
- package/integration/github/github-datasource-issues.json +399 -0
- package/integration/github/github-datasource-repository.json +354 -0
- package/integration/github/github-deploy.json +1202 -0
- package/integration/github/github-system.json +82 -0
- package/integration/hubspot-test/README.md +1 -1
- package/integration/hubspot-test/create-hubspot.js +1 -16
- package/jest.isolated-projects.js +31 -1
- package/jest.projects.js +87 -1
- package/lib/api/dev-server-https.js +1 -1
- package/lib/api/enterprise-knowledge.api.js +63 -0
- package/lib/api/evidence-kinds.api.js +128 -0
- package/lib/api/evidence.api.js +172 -0
- package/lib/api/external-systems.api.js +8 -2
- package/lib/api/pipeline.api.js +5 -1
- package/lib/api/resource-types.api.js +5 -4
- package/lib/api/roles.api.js +121 -0
- package/lib/api/types/enterprise-knowledge.types.js +46 -0
- package/lib/api/types/evidence-kinds.types.js +42 -0
- package/lib/api/types/evidence.types.js +67 -0
- package/lib/api/types/resource-types.types.js +2 -0
- package/lib/api/types/roles.types.js +36 -0
- package/lib/app/certification-verify-rows.js +1 -1
- package/lib/app/controller-application-filter.js +36 -0
- package/lib/app/deploy.js +1 -1
- package/lib/app/list-external-systems.js +130 -0
- package/lib/app/list.js +20 -8
- package/lib/app/run.js +3 -1
- package/lib/app/show-display.js +8 -3
- package/lib/app/show-online.js +178 -0
- package/lib/app/show.js +39 -90
- package/lib/build/builder-api-docker-staging.js +47 -0
- package/lib/build/miso-controller-npm-sdk-guard.js +2 -2
- package/lib/build/standard-docker-build.js +2 -0
- package/lib/certification/merge-certification-from-artifact.js +1 -1
- package/lib/certification/post-unified-cert-sync.js +4 -31
- package/lib/certification/sync-after-external-command.js +0 -1
- package/lib/certification/sync-system-certification.js +0 -3
- package/lib/channels/add-channel.js +40 -34
- package/lib/channels/approval-guides/chatgpt.js +33 -0
- package/lib/channels/approval-guides/credential-portal.js +38 -0
- package/lib/channels/approval-guides/index.js +110 -0
- package/lib/channels/approval-guides/microsoft-copilot.js +34 -0
- package/lib/channels/approval-guides/slack.js +34 -0
- package/lib/channels/approval-guides/teams-bot.js +35 -0
- package/lib/channels/approval-guides/web-embed.js +32 -0
- package/lib/channels/channel-approval-guide.js +11 -0
- package/lib/channels/channel-artifact-generator.js +18 -5
- package/lib/channels/channel-audit.js +3 -0
- package/lib/channels/channel-auth-context.js +1 -1
- package/lib/channels/channel-description.js +59 -0
- package/lib/channels/channel-integration-generator.js +13 -230
- package/lib/channels/channel-integration-template.js +94 -0
- package/lib/channels/channel-runtime-resolver.js +43 -3
- package/lib/channels/channel-status-display.js +66 -26
- package/lib/channels/channel-targets.js +3 -3
- package/lib/cli/index.js +31 -3
- package/lib/cli/infra-guided.js +5 -1
- package/lib/cli/setup-app-external-create.js +111 -0
- package/lib/cli/setup-app.help.js +1 -1
- package/lib/cli/setup-app.js +60 -130
- package/lib/cli/setup-app.test-commands.js +26 -52
- package/lib/cli/setup-certification-commands.js +4 -4
- package/lib/cli/setup-certification.help.js +9 -9
- package/lib/cli/setup-dev.js +30 -9
- package/lib/cli/setup-external-system-help.js +4 -6
- package/lib/cli/setup-external-system.js +58 -52
- package/lib/cli/setup-infra-up-builder-api-action.js +64 -0
- package/lib/cli/setup-infra-up-platform-action.js +3 -1
- package/lib/cli/setup-infra.js +15 -0
- package/lib/cli/setup-list.js +43 -0
- package/lib/cli/setup-utility-help-after.js +12 -0
- package/lib/cli/setup-utility-repair.js +26 -7
- package/lib/cli/setup-utility-validate.js +41 -2
- package/lib/cli/setup-utility.js +5 -3
- package/lib/commands/app.js +15 -43
- package/lib/commands/channel-add-setup.js +110 -0
- package/lib/commands/channel.js +42 -8
- package/lib/commands/datasource-sync-display.js +96 -0
- package/lib/commands/datasource-sync-policy.js +210 -0
- package/lib/commands/datasource-test-trust-cli.js +6 -6
- package/lib/commands/datasource-unified-test-cli.js +2 -1
- package/lib/commands/datasource-unified-test-cli.options.js +33 -23
- package/lib/commands/deploy-gate-failure-details.js +184 -0
- package/lib/commands/deploy-gate-orchestrator.js +368 -0
- package/lib/commands/dev-cli-handlers.js +7 -62
- package/lib/commands/dev-host-ops-params.js +91 -0
- package/lib/commands/dev-host-ops-poll.js +111 -0
- package/lib/commands/dev-host-ops.js +107 -94
- package/lib/commands/dev-init.js +6 -106
- package/lib/commands/dev-refresh.js +197 -0
- package/lib/commands/enterprise-knowledge.js +284 -0
- package/lib/commands/evidence-cli-leaves.js +250 -0
- package/lib/commands/evidence-kind.js +428 -0
- package/lib/commands/evidence.js +51 -0
- package/lib/commands/governance-cli-shared.js +2 -2
- package/lib/commands/governance-command-action.js +5 -3
- package/lib/commands/governance-fixture-subjects.js +85 -0
- package/lib/commands/governance.js +1 -1
- package/lib/commands/lifecycle-command-action.js +2 -2
- package/lib/commands/lifecycle-external.js +3 -3
- package/lib/commands/manifest-cli-auth.js +29 -0
- package/lib/commands/manifest-cli-commands.js +170 -0
- package/lib/commands/manifest-cli-integration-path.js +63 -0
- package/lib/commands/manifest.js +21 -0
- package/lib/commands/protection-cli-leaves.js +3 -3
- package/lib/commands/repair-auth-apply.js +15 -1
- package/lib/commands/repair-authentications-454.js +169 -0
- package/lib/commands/repair-capability-openapi-warnings.js +126 -0
- package/lib/commands/repair-datasource-apply.js +135 -0
- package/lib/commands/repair-datasource-auto-rbac.js +62 -1
- package/lib/commands/repair-datasource-http-service-contract.js +239 -0
- package/lib/commands/repair-datasource-operation-security.js +180 -0
- package/lib/commands/repair-datasource-run.js +7 -2
- package/lib/commands/repair-datasource-sync-operations.js +177 -0
- package/lib/commands/repair-datasource-webhooks-sync-bridge.js +133 -0
- package/lib/commands/repair-datasource.js +12 -68
- package/lib/commands/repair-env-template.js +11 -1
- package/lib/commands/repair-external-run.js +121 -31
- package/lib/commands/repair-internal.js +1 -1
- package/lib/commands/repair-openapi-export.js +156 -0
- package/lib/commands/repair-openapi-sync.js +33 -8
- package/lib/commands/repair-orchestration-datasource-split.js +259 -0
- package/lib/commands/repair-persist.js +22 -1
- package/lib/commands/repair-rbac-platform-preset.js +204 -0
- package/lib/commands/repair-rbac-reader-roles.js +191 -0
- package/lib/commands/repair-rbac.js +163 -86
- package/lib/commands/repair-steps.js +83 -18
- package/lib/commands/repair-system-permissions.js +1 -0
- package/lib/commands/repair.js +1 -1
- package/lib/commands/resource-type.js +166 -44
- package/lib/commands/role.js +452 -0
- package/lib/commands/run-post-publish-data-sync.js +68 -0
- package/lib/commands/setup-modes.js +1 -1
- package/lib/commands/setup.js +1 -1
- package/lib/commands/test-e2e-external.js +21 -8
- package/lib/commands/test-governance-cli-options.js +2 -2
- package/lib/commands/test-trust-cli-options.js +2 -2
- package/lib/commands/up-builder-api-bootstrap.js +71 -0
- package/lib/commands/up-builder-api-provision.js +241 -0
- package/lib/commands/up-builder-api.js +88 -0
- package/lib/commands/up-common.js +25 -1
- package/lib/commands/upload-credential-push-log.js +117 -0
- package/lib/commands/upload-data-sync-finalize.js +60 -0
- package/lib/commands/upload-probe.js +66 -0
- package/lib/commands/upload-publish-context.js +4 -1
- package/lib/commands/upload-sidecar-followups.js +55 -27
- package/lib/commands/upload.js +116 -157
- package/lib/commands/validate-json.js +230 -0
- package/lib/commands/verify-governance-combined-external.js +1 -1
- package/lib/commands/verify-governance-db.js +2 -2
- package/lib/commands/verify-operations-command-action.js +2 -2
- package/lib/commands/verify-operations-step-plan.js +79 -41
- package/lib/commands/verify-operations-steps.js +2 -2
- package/lib/commands/verify-trust-command-action.js +1 -1
- package/lib/commands/wizard-core.js +1 -1
- package/lib/commands/wizard-headless.js +2 -1
- package/lib/core/admin-secrets.js +2 -6
- package/lib/core/audit-logger.js +1 -1
- package/lib/core/secrets-env-content.js +10 -4
- package/lib/core/secrets-env-write.js +2 -13
- package/lib/core/secrets-load.js +1 -3
- package/lib/datasource/agent-trust-run.js +3 -3
- package/lib/datasource/capability/relate-operations.js +1 -1
- package/lib/datasource/deploy.js +3 -1
- package/lib/datasource/test-e2e.js +6 -1
- package/lib/datasource/unified-validation-run-body.js +4 -1
- package/lib/datasource/unified-validation-run.js +1 -1
- package/lib/deployment/deploy-poll-ui.js +73 -12
- package/lib/deployment/deployer-poll-run.js +113 -0
- package/lib/deployment/deployer.js +17 -87
- package/lib/evidence/dataplane-context.js +21 -0
- package/lib/evidence/evidence-display.js +78 -0
- package/lib/evidence/evidence-service.js +392 -0
- package/lib/external-system/deploy.js +290 -112
- package/lib/external-system/download.js +7 -3
- package/lib/external-system/test-execution.js +1 -1
- package/lib/external-system/test-system-level.js +8 -10
- package/lib/external-system/test.js +12 -6
- package/lib/generator/deploy-script.js +73 -0
- package/lib/generator/external.js +2 -1
- package/lib/generator/helpers.js +13 -5
- package/lib/generator/index.js +17 -2
- package/lib/generator/split-variables.js +9 -3
- package/lib/generator/wizard.js +3 -36
- package/lib/infrastructure/helpers-docker-check.js +6 -0
- package/lib/infrastructure/helpers.js +1 -1
- package/lib/internal/fs-real-sync.js +22 -1
- package/lib/internal/node-fs.js +2 -0
- package/lib/lifecycle/lifecycle-governance-options.js +1 -1
- package/lib/lifecycle/verify-step-progress.js +1 -1
- package/lib/programmatic/access-log.js +26 -0
- package/lib/programmatic/auth-config.js +45 -0
- package/lib/programmatic/bearer-auth.js +176 -0
- package/lib/programmatic/builder-api-request.js +175 -0
- package/lib/programmatic/builder-api-route-dispatch.js +82 -0
- package/lib/programmatic/builder-api-runtime-config.js +42 -0
- package/lib/programmatic/builder-api-server.js +230 -0
- package/lib/programmatic/builder-help-authentication-catalog.js +282 -0
- package/lib/programmatic/builder-help-connected-system-ui.js +266 -0
- package/lib/programmatic/builder-help-enterprise-sync-fabrix.js +60 -0
- package/lib/programmatic/builder-help-envelope.js +36 -0
- package/lib/programmatic/builder-help-fixtures.js +200 -0
- package/lib/programmatic/builder-help-governance.js +172 -0
- package/lib/programmatic/builder-help-schema-catalog.js +92 -0
- package/lib/programmatic/builder-help.js +361 -0
- package/lib/programmatic/capability-registry.js +77 -0
- package/lib/programmatic/command-options.js +32 -0
- package/lib/programmatic/enterprise-mcp-client.js +114 -0
- package/lib/programmatic/http-problem-details.js +99 -0
- package/lib/programmatic/http-route-match.js +40 -0
- package/lib/programmatic/idempotency-cache.js +69 -0
- package/lib/programmatic/index.js +53 -0
- package/lib/programmatic/integration-path-scope.js +39 -0
- package/lib/programmatic/log-redaction.js +66 -0
- package/lib/programmatic/manifest-get-section.js +146 -0
- package/lib/programmatic/manifest-patch-section.js +252 -0
- package/lib/programmatic/manifest-repair.js +122 -0
- package/lib/programmatic/manifest-section-dependency-graph.js +160 -0
- package/lib/programmatic/manifest-section-io.js +225 -0
- package/lib/programmatic/manifest-section-quality.js +171 -0
- package/lib/programmatic/manifest-section-registry-data.js +269 -0
- package/lib/programmatic/manifest-section-registry.js +222 -0
- package/lib/programmatic/nest-http-bridge.js +34 -0
- package/lib/programmatic/openapi-component-schemas.js +68 -0
- package/lib/programmatic/openapi-description-enricher.js +117 -0
- package/lib/programmatic/openapi-descriptions.js +190 -0
- package/lib/programmatic/openapi-docs-serving.js +123 -0
- package/lib/programmatic/openapi-help-schemas.js +63 -0
- package/lib/programmatic/openapi-manifest-schemas.js +141 -0
- package/lib/programmatic/openapi-operation-bindings.js +274 -0
- package/lib/programmatic/openapi-request-schemas.js +155 -0
- package/lib/programmatic/openapi-result-schemas.js +493 -0
- package/lib/programmatic/openapi-schema-descriptions-certify.js +139 -0
- package/lib/programmatic/openapi-schema-descriptions-core.js +162 -0
- package/lib/programmatic/openapi-schema-descriptions-help.js +40 -0
- package/lib/programmatic/openapi-schema-descriptions-manifest.js +143 -0
- package/lib/programmatic/openapi-schema-descriptions-mcp.js +118 -0
- package/lib/programmatic/openapi-schema-descriptions-operations.js +281 -0
- package/lib/programmatic/openapi-schema-helpers.js +108 -0
- package/lib/programmatic/openapi-spec.js +203 -0
- package/lib/programmatic/orchestration-openapi-meta.js +159 -0
- package/lib/programmatic/platform-rbac-catalog.js +90 -0
- package/lib/programmatic/request-timeout.js +53 -0
- package/lib/programmatic/route-handler-map.js +143 -0
- package/lib/programmatic/route-handlers-context.js +29 -0
- package/lib/programmatic/route-handlers.js +33 -0
- package/lib/programmatic/run-certify.js +57 -0
- package/lib/programmatic/run-enterprise-mcp.js +32 -0
- package/lib/programmatic/run-lifecycle.js +29 -0
- package/lib/programmatic/run-repair.js +41 -0
- package/lib/programmatic/run-repository-emcp.js +62 -0
- package/lib/programmatic/run-template-workspace.js +74 -0
- package/lib/programmatic/run-test.js +49 -0
- package/lib/programmatic/run-upload.js +63 -0
- package/lib/programmatic/run-validate.js +53 -0
- package/lib/programmatic/run-wizard.js +40 -0
- package/lib/programmatic/system-key.js +48 -0
- package/lib/programmatic/wizard-config-normalize.js +118 -0
- package/lib/programmatic/workspace-cleanup.js +128 -0
- package/lib/programmatic/workspace-context.js +145 -0
- package/lib/programmatic/workspace-lock.js +75 -0
- package/lib/programmatic/workspace-meta.js +64 -0
- package/lib/programmatic/workspace-ops.js +149 -0
- package/lib/protection/run-commands-upload-sync.js +35 -0
- package/lib/protection/run-commands.js +2 -20
- package/lib/protection/upload-batch.js +11 -7
- package/lib/resolvers/evidence-kind-file.js +230 -0
- package/lib/resolvers/resource-type-file.js +58 -1
- package/lib/resolvers/role-file.js +227 -0
- package/lib/schema/application-schema.json +22 -2
- package/lib/schema/external-datasource.schema.json +245 -2
- package/lib/schema/external-system.schema.json +259 -119
- package/lib/schema/flag-map-validation-run.json +3 -0
- package/lib/schema/infra.parameter.yaml +25 -1
- package/lib/schema/type/credential-field-registry.json +21 -5
- package/lib/schema/type/document-storage.json +9 -0
- package/lib/utils/agent-trust-run-display.js +1 -1
- package/lib/utils/api.js +8 -2
- package/lib/utils/app-path-resolve.js +168 -0
- package/lib/utils/app-register-config.js +4 -3
- package/lib/utils/authentication-env-template.js +222 -0
- package/lib/utils/cli-sync-options.js +62 -10
- package/lib/utils/cli-utils.js +15 -3
- package/lib/utils/cli-workspace-options.js +29 -0
- package/lib/utils/compose-generate-docker-compose.js +102 -0
- package/lib/utils/configuration-env-resolver.js +203 -27
- package/lib/utils/datasource-test-run-certificate-tty.js +28 -2
- package/lib/utils/datasource-test-run-certification-debug.js +130 -0
- package/lib/utils/datasource-test-run-debug-display.js +2 -0
- package/lib/utils/datasource-test-run-debug-slice.js +7 -0
- package/lib/utils/datasource-test-run-display.js +2 -1
- package/lib/utils/dev-ca-install.js +5 -6
- package/lib/utils/dev-config.js +2 -2
- package/lib/utils/dev-init-ssh-merge.js +165 -23
- package/lib/utils/dev-list-sort.js +145 -0
- package/lib/utils/dev-pin-share-instructions.js +110 -0
- package/lib/utils/dev-platform-tls.js +0 -63
- package/lib/utils/dev-ssh-config-helper.js +177 -33
- package/lib/utils/docker-build.js +46 -27
- package/lib/utils/docker-daemon-tls-ca.js +1 -1
- package/lib/utils/docker-exec.js +91 -6
- package/lib/utils/enterprise-knowledge-paths.js +142 -0
- package/lib/utils/env-copy.js +3 -4
- package/lib/utils/env-dotenv-format.js +103 -0
- package/lib/utils/error-formatters/error-parser.js +0 -3
- package/lib/utils/external-env-template.js +5 -2
- package/lib/utils/external-system-display.js +5 -1
- package/lib/utils/external-system-readiness-compact-blocks.js +248 -0
- package/lib/utils/external-system-readiness-compact-display.js +324 -0
- package/lib/utils/external-system-readiness-core.js +16 -0
- package/lib/utils/external-system-readiness-deploy-display.js +29 -11
- package/lib/utils/external-system-readiness-display-internals.js +3 -1
- package/lib/utils/external-system-readiness-display.js +20 -30
- package/lib/utils/external-system-system-test-tty-certification.js +135 -0
- package/lib/utils/external-system-system-test-tty.js +5 -41
- package/lib/utils/health-check-request.js +2 -3
- package/lib/utils/help-builder.js +9 -1
- package/lib/utils/host-ops-job-labels.js +236 -0
- package/lib/utils/host-ops-job-result.js +61 -0
- package/lib/utils/host-ops-poll-ui.js +163 -0
- package/lib/utils/image-name.js +22 -4
- package/lib/utils/integration-path-resolve.js +112 -0
- package/lib/utils/logger.js +37 -4
- package/lib/utils/manifest-source-emit.js +1 -1
- package/lib/utils/paths-reload-source.js +148 -0
- package/lib/utils/paths-system-builder-keys.js +25 -0
- package/lib/utils/paths.js +183 -30
- package/lib/utils/pipeline-upload-auth-retry.js +4 -0
- package/lib/utils/postgres-platform-bootstrap.js +24 -17
- package/lib/utils/postgres-wipe.js +5 -2
- package/lib/utils/remote-dev-auth.js +39 -4
- package/lib/utils/resolve-docker-image-ref.js +36 -6
- package/lib/utils/runtime-configuration-values.js +64 -2
- package/lib/utils/secrets-helpers.js +5 -1
- package/lib/utils/ssh-known-hosts.js +130 -0
- package/lib/utils/test-target-cli-options.js +75 -0
- package/lib/utils/token-manager.js +16 -0
- package/lib/utils/upload-sync-options.js +20 -2
- package/lib/utils/validation-run-request.js +11 -2
- package/lib/validation/external-manifest-validator.js +11 -1
- package/lib/validation/openapi-contract-surface-validator.js +430 -0
- package/lib/validation/openapi-contract-vendor-validation.js +238 -0
- package/lib/validation/validate-external-file.js +160 -0
- package/lib/validation/validate.js +6 -117
- package/lib/validation/validator.js +6 -5
- package/package.json +76 -37
- package/packages/builder-api/README.md +120 -0
- package/packages/builder-api/package.json +30 -0
- package/packages/builder-api/src/app.module.ts +7 -0
- package/packages/builder-api/src/auth/auth.module.ts +5 -0
- package/packages/builder-api/src/external-system/external-system.module.ts +5 -0
- package/packages/builder-api/src/main.ts +16 -0
- package/packages/builder-api/tsconfig.json +15 -0
- package/scripts/check-builder-api-architecture-grep.js +79 -0
- package/scripts/docker_image_content_gate.js +47 -0
- package/scripts/docker_image_content_gate.sh +5 -0
- package/scripts/export-builder-api-evidence.js +262 -0
- package/scripts/lib/builder-api-docker-staging-copy.js +60 -0
- package/scripts/lib/builder-api-docker-staging-core.js +183 -0
- package/scripts/lib/docker-image-content-gate-core.js +166 -0
- package/scripts/lib/plan-actor.js +109 -0
- package/scripts/lib/plan-config.js +20 -0
- package/scripts/lib/plan-gates.js +154 -0
- package/scripts/lib/plan-meta.js +104 -0
- package/scripts/lib/plan-parse.js +162 -0
- package/scripts/lib/plan-prevalidate-gates.js +337 -0
- package/scripts/lib/plan-run-core.js +125 -0
- package/scripts/lib/plan-run-report.js +119 -0
- package/scripts/plan-approve.js +24 -0
- package/scripts/plan-archive.js +49 -0
- package/scripts/plan-run.js +13 -0
- package/scripts/plan-set-actor.js +21 -0
- package/scripts/plan-validate.js +80 -0
- package/scripts/pnpm/af.mjs +110 -0
- package/scripts/pnpm/check-quiet.mjs +32 -0
- package/scripts/pnpm/dev-install.mjs +29 -0
- package/scripts/pnpm/dev-reload.mjs +18 -0
- package/scripts/pnpm/help.mjs +55 -0
- package/scripts/pnpm/lib/dev-reload-core.mjs +189 -0
- package/scripts/pnpm/lib/dev-reload-log-capture.mjs +67 -0
- package/scripts/pnpm/lib/dev-reload-log-utils.mjs +32 -0
- package/scripts/pnpm/lib/resolve-aifabrix-bin.mjs +124 -0
- package/scripts/pnpm/lib/resolve-app-url.mjs +183 -0
- package/scripts/pnpm/lib/spinner.mjs +42 -0
- package/scripts/stage_builder_api_for_docker.js +65 -0
- package/scripts/sync-builder-api-template.js +44 -0
- package/templates/README.md +3 -0
- package/templates/applications/builder-api/Dockerfile +38 -0
- package/templates/applications/builder-api/application.yaml +75 -0
- package/templates/applications/builder-api/env.template +48 -0
- package/templates/applications/dataplane/application.yaml +27 -5
- package/templates/applications/dataplane/env.template +38 -15
- package/templates/applications/dataplane/rbac.yaml +85 -3
- package/templates/applications/miso-controller/application.yaml +10 -1
- package/templates/applications/miso-controller/env.template +11 -10
- package/templates/applications/miso-controller/rbac.yaml +72 -0
- package/templates/channels/README.md +18 -0
- package/templates/channels/ai-fabrix-icon.jpg +0 -0
- package/templates/channels/chatgpt/install.template.md.hbs +21 -24
- package/templates/channels/chatgpt/integration/README.md +11 -0
- package/templates/channels/chatgpt/integration/application.json +15 -0
- package/templates/channels/chatgpt/integration/chatgpt-system.json +29 -0
- package/templates/channels/chatgpt/integration/env.template +4 -0
- package/templates/channels/microsoft-copilot/install.template.md.hbs +20 -25
- package/templates/channels/microsoft-copilot/integration/README.md +11 -0
- package/templates/channels/microsoft-copilot/integration/application.json +15 -0
- package/templates/channels/microsoft-copilot/integration/env.template +6 -0
- package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +34 -0
- package/templates/channels/slack/install.template.md.hbs +48 -18
- package/templates/channels/slack/integration/README.md +38 -0
- package/templates/channels/slack/integration/application.json +18 -0
- package/templates/channels/slack/integration/env.template +29 -0
- package/templates/channels/slack/integration/slack-datasource-conversations.json +226 -0
- package/templates/channels/slack/integration/slack-datasource-messages.json +269 -0
- package/templates/channels/slack/integration/slack-system.json +144 -0
- package/templates/channels/slack/manifest.template.json.hbs +20 -10
- package/templates/channels/teams-bot/install.template.md.hbs +31 -17
- package/templates/channels/teams-bot/integration/README.md +18 -0
- package/templates/channels/teams-bot/integration/application.json +17 -0
- package/templates/channels/teams-bot/integration/env.template +5 -0
- package/templates/channels/teams-bot/integration/teams-bot-system.json +55 -0
- package/templates/channels/teams-bot/manifest.template.json.hbs +27 -0
- package/templates/channels/web-embed/install.template.md.hbs +16 -26
- package/templates/channels/web-embed/integration/README.md +11 -0
- package/templates/channels/web-embed/integration/application.json +15 -0
- package/templates/channels/web-embed/integration/env.template +4 -0
- package/templates/channels/web-embed/integration/web-embed-system.json +29 -0
- package/templates/openapi/redoc_page.html +86 -0
- package/templates/python/docker-compose.hbs +11 -0
- package/templates/python/requirements.txt +2 -2
- package/templates/typescript/docker-compose.hbs +11 -0
- package/lib/certification/cli-cert-sync-skip.js +0 -21
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
* Resource type catalog commands (Controller).
|
|
3
3
|
*
|
|
4
4
|
* Commands:
|
|
5
|
-
* - aifabrix resource-type create
|
|
6
|
-
* - aifabrix resource-type import
|
|
7
|
-
* - aifabrix resource-type get
|
|
8
|
-
* - aifabrix resource-type list
|
|
5
|
+
* - aifabrix resource-type create|import|export|get|list
|
|
9
6
|
*
|
|
10
7
|
* @fileoverview Resource type CLI commands
|
|
11
8
|
* @author AI Fabrix Team
|
|
@@ -21,7 +18,9 @@ const { normalizeControllerUrl, resolveEnvironment } = require('../core/config')
|
|
|
21
18
|
const { getOrRefreshDeviceToken } = require('../utils/token-manager');
|
|
22
19
|
const {
|
|
23
20
|
readResourceTypeCreateFile,
|
|
24
|
-
readResourceTypeCatalogFile
|
|
21
|
+
readResourceTypeCatalogFile,
|
|
22
|
+
mapResourceTypeApiToFileRow,
|
|
23
|
+
writeResourceTypeCatalogFile
|
|
25
24
|
} = require('../resolvers/resource-type-file');
|
|
26
25
|
const {
|
|
27
26
|
formatBlockingError,
|
|
@@ -41,45 +40,43 @@ const RESOURCE_TYPE_KEY_PATTERN = /^[a-z][a-z0-9-]*$/;
|
|
|
41
40
|
const RESOURCE_TYPE_HELP_AFTER = `
|
|
42
41
|
|
|
43
42
|
Examples:
|
|
44
|
-
$ aifabrix resource-type create --key customer --display-name "Customer"
|
|
43
|
+
$ aifabrix resource-type create --key customer --display-name "Customer" --domain sales
|
|
45
44
|
$ aifabrix resource-type get customer
|
|
46
45
|
$ aifabrix resource-type list --search customer
|
|
46
|
+
$ aifabrix resource-type export --file ./resource-types-export.json
|
|
47
47
|
|
|
48
48
|
Per-command help: aifabrix resource-type <command> --help
|
|
49
49
|
`;
|
|
50
50
|
|
|
51
51
|
const RESOURCE_TYPE_IMPORT_HELP_AFTER = `
|
|
52
|
-
|
|
53
52
|
Examples:
|
|
54
53
|
$ aifabrix resource-type import --file ./baseline-resourcetypes.json
|
|
55
54
|
$ aifabrix resource-type import --file /path/to/catalog.json
|
|
55
|
+
`;
|
|
56
56
|
|
|
57
|
+
const RESOURCE_TYPE_EXPORT_HELP_AFTER = `
|
|
58
|
+
Examples:
|
|
59
|
+
$ aifabrix resource-type export --file ./resource-types-export.json
|
|
57
60
|
`;
|
|
58
61
|
|
|
59
62
|
const RESOURCE_TYPE_CREATE_HELP_AFTER = `
|
|
60
|
-
|
|
61
63
|
Examples:
|
|
62
|
-
$ aifabrix resource-type create --key customer --display-name "Customer"
|
|
63
|
-
$ aifabrix resource-type create --key deal --display-name "Deal" --category business --default-risk-level medium
|
|
64
|
+
$ aifabrix resource-type create --key customer --display-name "Customer" --domain sales
|
|
65
|
+
$ aifabrix resource-type create --key deal --display-name "Deal" --category business --default-risk-level medium --domain sales
|
|
64
66
|
$ aifabrix resource-type create --file ./customer.json
|
|
65
|
-
|
|
66
67
|
`;
|
|
67
68
|
|
|
68
69
|
const RESOURCE_TYPE_GET_HELP_AFTER = `
|
|
69
|
-
|
|
70
70
|
Examples:
|
|
71
71
|
$ aifabrix resource-type get customer
|
|
72
72
|
$ aifabrix resource-type get clx1234567890abcdef
|
|
73
|
-
|
|
74
73
|
`;
|
|
75
74
|
|
|
76
75
|
const RESOURCE_TYPE_LIST_HELP_AFTER = `
|
|
77
|
-
|
|
78
76
|
Examples:
|
|
79
77
|
$ aifabrix resource-type list
|
|
80
78
|
$ aifabrix resource-type list --page 1 --page-size 50
|
|
81
79
|
$ aifabrix resource-type list --search customer
|
|
82
|
-
|
|
83
80
|
`;
|
|
84
81
|
|
|
85
82
|
/**
|
|
@@ -145,10 +142,14 @@ function buildCreatePayload(options) {
|
|
|
145
142
|
if (options.category) payload.category = options.category;
|
|
146
143
|
if (options.defaultRiskLevel) payload.defaultRiskLevel = options.defaultRiskLevel;
|
|
147
144
|
if (options.status) payload.status = options.status;
|
|
145
|
+
if (options.domain) payload.domain = options.domain;
|
|
148
146
|
payload.key = requireResourceTypeKey(payload.key);
|
|
149
147
|
if (!payload.displayName) {
|
|
150
148
|
throw new Error('displayName is required (--display-name <name> or in --file).');
|
|
151
149
|
}
|
|
150
|
+
if (!payload.domain) {
|
|
151
|
+
throw new Error('domain is required (--domain <domain> or in --file).');
|
|
152
|
+
}
|
|
152
153
|
return payload;
|
|
153
154
|
}
|
|
154
155
|
|
|
@@ -161,8 +162,62 @@ function unwrapControllerData(response) {
|
|
|
161
162
|
}
|
|
162
163
|
|
|
163
164
|
/**
|
|
164
|
-
* @param {
|
|
165
|
+
* @param {Object|null|undefined} response
|
|
166
|
+
* @param {string} label
|
|
167
|
+
* @returns {void}
|
|
168
|
+
*/
|
|
169
|
+
function assertControllerListSuccess(response, label) {
|
|
170
|
+
if (response && response.success !== false) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
const message =
|
|
174
|
+
response?.formattedError || response?.error || `Failed to list ${label}`;
|
|
175
|
+
throw new Error(message);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* @param {Object} response
|
|
180
|
+
* @returns {Object[]}
|
|
181
|
+
*/
|
|
182
|
+
function extractControllerListItems(response) {
|
|
183
|
+
if (response?.data && Array.isArray(response.data.data)) {
|
|
184
|
+
return response.data.data;
|
|
185
|
+
}
|
|
186
|
+
const unwrapped = unwrapControllerData(response);
|
|
187
|
+
if (Array.isArray(unwrapped)) {
|
|
188
|
+
return unwrapped;
|
|
189
|
+
}
|
|
190
|
+
if (unwrapped && Array.isArray(unwrapped.data)) {
|
|
191
|
+
return unwrapped.data;
|
|
192
|
+
}
|
|
193
|
+
throw new Error('Unexpected list response from controller');
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* @param {string} controllerUrl
|
|
198
|
+
* @param {Object} authConfig
|
|
199
|
+
* @returns {Promise<Object[]>}
|
|
165
200
|
*/
|
|
201
|
+
async function fetchAllResourceTypes(controllerUrl, authConfig) {
|
|
202
|
+
const all = [];
|
|
203
|
+
let page = 1;
|
|
204
|
+
const pageSize = 100;
|
|
205
|
+
for (;;) {
|
|
206
|
+
const res = await listResourceTypes(controllerUrl, authConfig, { page, pageSize });
|
|
207
|
+
assertControllerListSuccess(res, 'resource types');
|
|
208
|
+
const items = extractControllerListItems(res);
|
|
209
|
+
if (items.length === 0) {
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
all.push(...items);
|
|
213
|
+
if (items.length < pageSize) {
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
page += 1;
|
|
217
|
+
}
|
|
218
|
+
return all;
|
|
219
|
+
}
|
|
220
|
+
|
|
166
221
|
/**
|
|
167
222
|
* @param {Object[]} rows
|
|
168
223
|
* @param {string} controllerUrl
|
|
@@ -209,6 +264,35 @@ function setupResourceTypeImportCommand(rt) {
|
|
|
209
264
|
});
|
|
210
265
|
}
|
|
211
266
|
|
|
267
|
+
function setupResourceTypeExportCommand(rt) {
|
|
268
|
+
rt
|
|
269
|
+
.command('export')
|
|
270
|
+
.description('Export resource types to baseline-shaped JSON')
|
|
271
|
+
.addHelpText('after', RESOURCE_TYPE_EXPORT_HELP_AFTER)
|
|
272
|
+
.requiredOption('--file <path>', 'Output path for baseline catalog JSON')
|
|
273
|
+
.action(async(options) => {
|
|
274
|
+
try {
|
|
275
|
+
const { controllerUrl, authConfig } = await resolveControllerAndAuth(options);
|
|
276
|
+
const records = await fetchAllResourceTypes(controllerUrl, authConfig);
|
|
277
|
+
const rows = records.map(mapResourceTypeApiToFileRow);
|
|
278
|
+
writeResourceTypeCatalogFile(options.file, rows);
|
|
279
|
+
if (rows.length === 0) {
|
|
280
|
+
logger.log(
|
|
281
|
+
infoLine(
|
|
282
|
+
'No resource types on the controller. Create or import types, then re-run export.'
|
|
283
|
+
)
|
|
284
|
+
);
|
|
285
|
+
}
|
|
286
|
+
logger.log(
|
|
287
|
+
formatSuccessLine(`Resource types exported: ${rows.length} written to ${options.file}`)
|
|
288
|
+
);
|
|
289
|
+
} catch (e) {
|
|
290
|
+
logger.error(formatBlockingError(e.message));
|
|
291
|
+
process.exit(1);
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
|
|
212
296
|
function setupResourceTypeCreateCommand(rt) {
|
|
213
297
|
rt
|
|
214
298
|
.command('create')
|
|
@@ -224,6 +308,10 @@ function setupResourceTypeCreateCommand(rt) {
|
|
|
224
308
|
)
|
|
225
309
|
.option('--default-risk-level <level>', 'low | medium | high | critical')
|
|
226
310
|
.option('--status <status>', 'draft | active | deprecated | retired')
|
|
311
|
+
.option(
|
|
312
|
+
'--domain <domain>',
|
|
313
|
+
'sales | finance | people | collaboration | content | operations | governance | platform'
|
|
314
|
+
)
|
|
227
315
|
.action(async(options) => {
|
|
228
316
|
try {
|
|
229
317
|
const { controllerUrl, authConfig } = await resolveControllerAndAuth(options);
|
|
@@ -232,13 +320,20 @@ function setupResourceTypeCreateCommand(rt) {
|
|
|
232
320
|
const row = unwrapControllerData(out.response);
|
|
233
321
|
const category = row.category || payload.category || 'business';
|
|
234
322
|
const risk = row.defaultRiskLevel || payload.defaultRiskLevel || 'medium';
|
|
323
|
+
const domain = row.domain || payload.domain || '—';
|
|
235
324
|
if (out.created) {
|
|
236
325
|
logger.log(
|
|
237
|
-
formatSuccessLine(
|
|
326
|
+
formatSuccessLine(
|
|
327
|
+
`Resource type created: ${row.key} (category: ${category}, risk: ${risk}, domain: ${domain})`
|
|
328
|
+
)
|
|
238
329
|
);
|
|
239
330
|
return;
|
|
240
331
|
}
|
|
241
|
-
logger.log(
|
|
332
|
+
logger.log(
|
|
333
|
+
formatSuccessLine(
|
|
334
|
+
`Resource type exists: ${row.key} (category: ${category}, risk: ${risk}, domain: ${domain})`
|
|
335
|
+
)
|
|
336
|
+
);
|
|
242
337
|
logger.log(infoLine('No changes were needed.'));
|
|
243
338
|
} catch (e) {
|
|
244
339
|
logger.error(formatBlockingError(e.message));
|
|
@@ -265,6 +360,7 @@ function setupResourceTypeGetCommand(rt) {
|
|
|
265
360
|
logger.log(headerKeyValue('Display:', row.displayName || '—'));
|
|
266
361
|
logger.log(headerKeyValue('Category:', row.category || '—'));
|
|
267
362
|
logger.log(headerKeyValue('Default risk:', row.defaultRiskLevel || '—'));
|
|
363
|
+
logger.log(headerKeyValue('Domain:', row.domain || '—'));
|
|
268
364
|
logger.log(headerKeyValue('Status:', row.status || '—'));
|
|
269
365
|
if (row.description) {
|
|
270
366
|
logger.log(headerKeyValue('Description:', row.description));
|
|
@@ -282,6 +378,49 @@ function setupResourceTypeGetCommand(rt) {
|
|
|
282
378
|
* @param {string} environment
|
|
283
379
|
* @param {string} controllerUrl
|
|
284
380
|
*/
|
|
381
|
+
const RESOURCE_TYPE_LIST_COLUMNS = {
|
|
382
|
+
key: 22,
|
|
383
|
+
display: 24,
|
|
384
|
+
category: 14,
|
|
385
|
+
domain: 14,
|
|
386
|
+
risk: 8,
|
|
387
|
+
status: 10
|
|
388
|
+
};
|
|
389
|
+
|
|
390
|
+
function resourceTypeListSeparatorLength(columns) {
|
|
391
|
+
return (
|
|
392
|
+
columns.key +
|
|
393
|
+
columns.display +
|
|
394
|
+
columns.category +
|
|
395
|
+
columns.domain +
|
|
396
|
+
columns.risk +
|
|
397
|
+
columns.status
|
|
398
|
+
);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
function logResourceTypeListHeader(columns) {
|
|
402
|
+
const keyCol = 'Key'.padEnd(columns.key);
|
|
403
|
+
const displayCol = 'Display'.padEnd(columns.display);
|
|
404
|
+
const categoryCol = 'Category'.padEnd(columns.category);
|
|
405
|
+
const domainCol = 'Domain'.padEnd(columns.domain);
|
|
406
|
+
const riskCol = 'Risk'.padEnd(columns.risk);
|
|
407
|
+
const statusCol = 'Status'.padEnd(columns.status);
|
|
408
|
+
logger.log(chalk.gray(`${keyCol}${displayCol}${categoryCol}${domainCol}${riskCol}${statusCol}`));
|
|
409
|
+
logger.log(chalk.gray('-'.repeat(resourceTypeListSeparatorLength(columns))));
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
function logResourceTypeListRows(items, columns) {
|
|
413
|
+
items.forEach((d) => {
|
|
414
|
+
const key = (d?.key ?? '—').toString().padEnd(columns.key);
|
|
415
|
+
const displayName = (d?.displayName ?? '—').toString().padEnd(columns.display);
|
|
416
|
+
const category = (d?.category ?? '—').toString().padEnd(columns.category);
|
|
417
|
+
const domain = (d?.domain ?? '—').toString().padEnd(columns.domain);
|
|
418
|
+
const risk = (d?.defaultRiskLevel ?? '—').toString().padEnd(columns.risk);
|
|
419
|
+
const status = (d?.status ?? '—').toString().padEnd(columns.status);
|
|
420
|
+
logger.log(`${key}${displayName}${category}${domain}${risk}${status}`);
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
|
|
285
424
|
function displayResourceTypeList(items, environment, controllerUrl) {
|
|
286
425
|
logger.log(
|
|
287
426
|
chalk.bold(`\n🏷️ Resource types in ${environment} environment (${controllerUrl}):\n`)
|
|
@@ -291,29 +430,9 @@ function displayResourceTypeList(items, environment, controllerUrl) {
|
|
|
291
430
|
return;
|
|
292
431
|
}
|
|
293
432
|
|
|
294
|
-
const
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
const RISK_WIDTH = 10;
|
|
298
|
-
const STATUS_WIDTH = 12;
|
|
299
|
-
const SEP_LEN = KEY_WIDTH + DISPLAY_WIDTH + CATEGORY_WIDTH + RISK_WIDTH + STATUS_WIDTH;
|
|
300
|
-
|
|
301
|
-
const keyCol = 'Key'.padEnd(KEY_WIDTH);
|
|
302
|
-
const displayCol = 'Display'.padEnd(DISPLAY_WIDTH);
|
|
303
|
-
const categoryCol = 'Category'.padEnd(CATEGORY_WIDTH);
|
|
304
|
-
const riskCol = 'Risk'.padEnd(RISK_WIDTH);
|
|
305
|
-
const statusCol = 'Status'.padEnd(STATUS_WIDTH);
|
|
306
|
-
logger.log(chalk.gray(`${keyCol}${displayCol}${categoryCol}${riskCol}${statusCol}`));
|
|
307
|
-
logger.log(chalk.gray('-'.repeat(SEP_LEN)));
|
|
308
|
-
|
|
309
|
-
items.forEach((d) => {
|
|
310
|
-
const key = (d?.key ?? '—').toString().padEnd(KEY_WIDTH);
|
|
311
|
-
const displayName = (d?.displayName ?? '—').toString().padEnd(DISPLAY_WIDTH);
|
|
312
|
-
const category = (d?.category ?? '—').toString().padEnd(CATEGORY_WIDTH);
|
|
313
|
-
const risk = (d?.defaultRiskLevel ?? '—').toString().padEnd(RISK_WIDTH);
|
|
314
|
-
const status = (d?.status ?? '—').toString().padEnd(STATUS_WIDTH);
|
|
315
|
-
logger.log(`${key}${displayName}${category}${risk}${status}`);
|
|
316
|
-
});
|
|
433
|
+
const columns = RESOURCE_TYPE_LIST_COLUMNS;
|
|
434
|
+
logResourceTypeListHeader(columns);
|
|
435
|
+
logResourceTypeListRows(items, columns);
|
|
317
436
|
logger.log('');
|
|
318
437
|
}
|
|
319
438
|
|
|
@@ -338,8 +457,8 @@ function setupResourceTypeListCommand(rt) {
|
|
|
338
457
|
category: options.category,
|
|
339
458
|
status: options.status
|
|
340
459
|
});
|
|
341
|
-
|
|
342
|
-
const items =
|
|
460
|
+
assertControllerListSuccess(res, 'resource types');
|
|
461
|
+
const items = extractControllerListItems(res);
|
|
343
462
|
displayResourceTypeList(items, environment, headerControllerUrl);
|
|
344
463
|
} catch (e) {
|
|
345
464
|
logger.error(formatBlockingError(e.message));
|
|
@@ -358,6 +477,7 @@ function setupResourceTypeCommands(program) {
|
|
|
358
477
|
.addHelpText('after', RESOURCE_TYPE_HELP_AFTER);
|
|
359
478
|
setupResourceTypeCreateCommand(rt);
|
|
360
479
|
setupResourceTypeImportCommand(rt);
|
|
480
|
+
setupResourceTypeExportCommand(rt);
|
|
361
481
|
setupResourceTypeGetCommand(rt);
|
|
362
482
|
setupResourceTypeListCommand(rt);
|
|
363
483
|
}
|
|
@@ -367,5 +487,7 @@ module.exports = {
|
|
|
367
487
|
requireResourceTypeKey,
|
|
368
488
|
buildCreatePayload,
|
|
369
489
|
unwrapControllerData,
|
|
370
|
-
importResourceTypeRows
|
|
490
|
+
importResourceTypeRows,
|
|
491
|
+
fetchAllResourceTypes,
|
|
492
|
+
mapResourceTypeApiToFileRow
|
|
371
493
|
};
|