@aifabrix/builder 2.45.5 → 2.47.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/rules/cli-layout.mdc +2 -0
- package/.cursor/rules/cli-product-neutral.mdc +43 -0
- package/.cursor/rules/project-rules.mdc +1 -0
- package/.npmrc.token +1 -0
- package/.temp/jest-protection-convert/run-IFN2nv/.protection/hubspot-companies.json +1 -0
- package/.temp/jest-protection-convert/run-IvmKLO/.protection/hubspot-companies.yaml +17 -0
- package/.temp/jest-protection-convert/run-SdvblF/.protection/hubspot-companies.json +1 -0
- package/.temp/jest-protection-convert/run-b51TsW/.protection/hubspot-companies.json +1 -0
- package/.temp/jest-protection-convert/run-fiLmb1/.protection/hubspot-companies.json +1 -0
- package/.temp/jest-protection-convert/run-qYGHMU/.protection/hubspot-companies.yaml +17 -0
- package/.temp/jest-protection-fixtures/hubspot-Mq5re8/hubspot-companies.yaml +17 -0
- package/.temp/jest-protection-fixtures/hubspot-f3u4YL/hubspot-companies.yaml +17 -0
- package/.temp/jest-protection-fixtures/hubspot-iQtd1O/hubspot-companies.yaml +17 -0
- package/.temp/jest-protection-fixtures/hubspot-mdmz5M/hubspot-companies.yaml +17 -0
- package/.temp/jest-protection-fixtures/hubspot-qbKYxQ/hubspot-companies.yaml +17 -0
- package/.temp/jest-protection-fixtures/hubspot-yzlJy6/hubspot-companies.yaml +17 -0
- package/.temp/validation/summary.txt +5 -0
- package/README.md +43 -17
- package/integration/hubspot-test/test-artifacts/wizard-hubspot-credential-real.yaml +1 -1
- package/integration/hubspot-test/test-artifacts/wizard-hubspot-env-vars.yaml +1 -1
- package/jest.config.default.js +2 -1
- package/jest.config.isolated.js +2 -1
- package/jest.global-live-fabrix-hooks.js +36 -0
- package/jest.isolated-projects.js +146 -0
- package/jest.projects.js +65 -136
- package/lib/api/api-response-errors.js +124 -0
- package/lib/api/dataplane-health.api.js +19 -7
- package/lib/api/governance-scenario-pack.api.js +159 -0
- package/lib/api/index.js +43 -3
- package/lib/api/lifecycle.api.js +98 -0
- package/lib/api/pipeline.api.js +3 -1
- package/lib/api/records-bulk.api.js +14 -1
- package/lib/api/resource-types.api.js +107 -0
- package/lib/api/runtime-configuration.api.js +72 -0
- package/lib/api/types/resource-types.types.js +45 -0
- package/lib/api/user-groups.api.js +9 -9
- package/lib/api/users.api.js +8 -8
- package/lib/api/validation-runner.js +3 -1
- package/lib/api/wizard.api.js +10 -2
- package/lib/app/deploy-config.js +4 -1
- package/lib/app/down.js +78 -27
- package/lib/app/index.js +2 -2
- package/lib/app/push.js +4 -5
- package/lib/app/register.js +7 -4
- package/lib/app/run-env-compose.js +84 -30
- package/lib/app/run-resolve-image.js +2 -1
- package/lib/app/run-stop-containers.js +113 -0
- package/lib/app/run.js +1 -31
- package/lib/app/show-display.js +35 -0
- package/lib/app/show.js +32 -1
- package/lib/build/index.js +22 -5
- package/lib/build/miso-controller-npm-sdk-guard.js +25 -0
- package/lib/certification/sync-system-certification.js +13 -6
- package/lib/channels/add-channel.js +348 -0
- package/lib/channels/channel-artifact-generator.js +141 -0
- package/lib/channels/channel-audit.js +101 -0
- package/lib/channels/channel-auth-context.js +37 -0
- package/lib/channels/channel-credential.js +200 -0
- package/lib/channels/channel-display-name.js +64 -0
- package/lib/channels/channel-external-system.js +106 -0
- package/lib/channels/channel-integration-generator.js +274 -0
- package/lib/channels/channel-probe.js +89 -0
- package/lib/channels/channel-runtime-resolver.js +152 -0
- package/lib/channels/channel-status-display.js +141 -0
- package/lib/channels/channel-targets.js +115 -0
- package/lib/cli/index.js +20 -4
- package/lib/cli/infra-guided-auth.js +109 -0
- package/lib/cli/infra-guided.js +84 -81
- package/lib/cli/setup-app.help.js +0 -31
- package/lib/cli/setup-app.js +82 -5
- package/lib/cli/setup-app.test-commands.js +5 -57
- package/lib/cli/setup-auth.js +25 -0
- package/lib/cli/setup-certification-commands.js +147 -0
- package/lib/cli/setup-certification.help.js +141 -0
- package/lib/cli/setup-environment.js +19 -2
- package/lib/cli/setup-external-system-help.js +62 -0
- package/lib/cli/setup-external-system.js +25 -3
- package/lib/cli/setup-infra-up-dataplane-action.js +2 -2
- package/lib/cli/setup-infra-up-platform-action.js +2 -1
- package/lib/cli/setup-infra.js +9 -1
- package/lib/cli/setup-platform.js +6 -1
- package/lib/cli/setup-secrets.js +33 -1
- package/lib/cli/setup-utility-help-after.js +25 -2
- package/lib/cli/setup-utility-repair.js +198 -0
- package/lib/cli/setup-utility-resolve.js +44 -5
- package/lib/cli/setup-utility-validate.js +197 -0
- package/lib/cli/setup-utility.js +4 -239
- package/lib/commands/app-logs.js +54 -26
- package/lib/commands/app.js +41 -0
- package/lib/commands/auth-status-client-tokens.js +214 -0
- package/lib/commands/auth-status-dataplane-version.js +142 -68
- package/lib/commands/auth-status.js +43 -54
- package/lib/commands/channel.js +58 -0
- package/lib/commands/datasource-test-trust-cli.js +27 -23
- package/lib/commands/datasource-unified-test-cli.js +6 -3
- package/lib/commands/datasource-unified-test-cli.options.js +5 -1
- package/lib/commands/datasource.js +8 -8
- package/lib/commands/dev-show-display.js +8 -1
- package/lib/commands/governance-cli-shared.js +94 -0
- package/lib/commands/governance-command-action.js +132 -0
- package/lib/commands/governance-download-external.js +34 -0
- package/lib/commands/governance-generate-external.js +71 -0
- package/lib/commands/governance-upload-external.js +36 -0
- package/lib/commands/governance-verify-external.js +64 -0
- package/lib/commands/governance.js +144 -0
- package/lib/commands/identity-apply-sync.js +49 -8
- package/lib/commands/identity-group-cli.js +66 -26
- package/lib/commands/identity-membership-role-cache.js +58 -37
- package/lib/commands/identity-shared.js +22 -1
- package/lib/commands/identity-user-cli.js +80 -34
- package/lib/commands/lifecycle-command-action.js +123 -0
- package/lib/commands/lifecycle-external.js +268 -0
- package/lib/commands/login.js +11 -2
- package/lib/commands/repair-auth-apply.js +153 -0
- package/lib/commands/repair-auth-config.js +8 -13
- package/lib/commands/repair-changed-files.js +41 -0
- package/lib/commands/repair-datasource-com-v2.js +15 -0
- package/lib/commands/repair-datasource-keys.js +4 -1
- package/lib/commands/repair-datasource-run.js +59 -0
- package/lib/commands/repair-datasource-service-contract.js +206 -0
- package/lib/commands/repair-datasource-test-payload.js +259 -0
- package/lib/commands/repair-datasource.js +49 -64
- package/lib/commands/repair-env-template.js +76 -25
- package/lib/commands/repair-external-run.js +216 -0
- package/lib/commands/repair-openapi-sync.js +49 -4
- package/lib/commands/repair-persist.js +4 -0
- package/lib/commands/repair-rbac.js +52 -1
- package/lib/commands/repair-steps.js +160 -0
- package/lib/commands/repair-system-alignment.js +7 -4
- package/lib/commands/repair.js +29 -296
- package/lib/commands/resource-type.js +371 -0
- package/lib/commands/secrets-get.js +184 -0
- package/lib/commands/secrets-remove-all.js +3 -1
- package/lib/commands/setup-image-refresh.js +146 -0
- package/lib/commands/setup-modes.js +158 -162
- package/lib/commands/setup-platform-auth.js +76 -0
- package/lib/commands/setup-prompts-admin.js +244 -0
- package/lib/commands/setup-prompts-platform-mode.js +70 -0
- package/lib/commands/setup-prompts-validators.js +36 -0
- package/lib/commands/setup-prompts.js +24 -76
- package/lib/commands/setup-run-context.js +45 -0
- package/lib/commands/setup-spinners.js +39 -0
- package/lib/commands/setup.js +27 -5
- package/lib/commands/teardown.js +39 -0
- package/lib/commands/test-e2e-external.js +24 -8
- package/lib/commands/test-governance-external.js +3 -24
- package/lib/commands/test-trust-external.js +48 -100
- package/lib/commands/up-common.js +57 -13
- package/lib/commands/up-dataplane.js +56 -15
- package/lib/commands/upload-publish-context.js +75 -0
- package/lib/commands/upload-sidecar-followups.js +89 -0
- package/lib/commands/upload.js +113 -110
- package/lib/commands/verify-governance-combined-external.js +61 -0
- package/lib/commands/verify-governance-command-action.js +64 -0
- package/lib/commands/verify-governance-db.js +102 -0
- package/lib/commands/verify-governance-external.js +77 -0
- package/lib/commands/verify-governance-result-builders.js +71 -0
- package/lib/commands/verify-operations-command-action.js +68 -0
- package/lib/commands/verify-operations-external.js +268 -0
- package/lib/commands/verify-operations-persist.js +75 -0
- package/lib/commands/verify-operations-step-plan.js +68 -0
- package/lib/commands/verify-operations-steps.js +111 -0
- package/lib/commands/verify-trust-command-action.js +73 -0
- package/lib/commands/verify-trust-external.js +59 -0
- package/lib/commands/wizard-config-normalizer.js +43 -23
- package/lib/commands/wizard-core.js +2 -0
- package/lib/core/admin-password-generator.js +38 -0
- package/lib/core/admin-secrets-bundle.js +111 -0
- package/lib/core/admin-secrets-env-overlay.js +62 -0
- package/lib/core/admin-secrets.js +32 -4
- package/lib/core/config-attach-extensions.js +3 -0
- package/lib/core/config-platform-controller.js +44 -0
- package/lib/core/config-setup-installation-profile.js +42 -0
- package/lib/core/config-setup-platform-mode.js +46 -0
- package/lib/core/config.js +46 -36
- package/lib/core/secrets-admin-env.js +6 -2
- package/lib/core/secrets-ensure.js +4 -0
- package/lib/core/secrets-env-content.js +54 -48
- package/lib/core/secrets-env-write.js +10 -1
- package/lib/core/secrets-infra-placeholder-sync.js +2 -0
- package/lib/core/setup-installation-profile.js +43 -0
- package/lib/core/setup-platform-mode.js +90 -0
- package/lib/datasource/agent-trust-debug-log.js +1 -1
- package/lib/datasource/agent-trust-run.js +5 -3
- package/lib/datasource/audit-evidence-extract-debug.js +30 -18
- package/lib/datasource/audit-evidence-extract.js +7 -4
- package/lib/datasource/audit-evidence-verify-matrix.js +54 -26
- package/lib/datasource/bulk-loader-run-batches.js +15 -3
- package/lib/datasource/capability/capability-diff-slice.js +2 -2
- package/lib/datasource/capability/capability-manifest.js +254 -0
- package/lib/datasource/capability/capability-resolve.js +3 -4
- package/lib/datasource/capability/copy-operations.js +5 -3
- package/lib/datasource/capability/remove-operations.js +2 -1
- package/lib/datasource/capability/run-capability-copy.js +32 -4
- package/lib/datasource/capability/run-capability-diff.js +3 -3
- package/lib/datasource/capability/run-capability-dimension.js +2 -4
- package/lib/datasource/capability/run-capability-edit.js +4 -7
- package/lib/datasource/capability/run-capability-relate.js +2 -4
- package/lib/datasource/capability/run-capability-remove.js +2 -4
- package/lib/datasource/capability/validate-capability-slice.js +2 -1
- package/lib/datasource/datasource-identifier.js +2 -1
- package/lib/datasource/datasource-load-export-context.js +3 -0
- package/lib/datasource/datasource-validate-display.js +1 -1
- package/lib/datasource/field-reference-validator.js +24 -3
- package/lib/datasource/log-cleaner.js +2 -2
- package/lib/datasource/log-viewer.js +8 -8
- package/lib/datasource/orphan-profiles-validator.js +98 -0
- package/lib/datasource/test-e2e.js +4 -1
- package/lib/datasource/unified-validation-run-body.js +3 -1
- package/lib/datasource/unified-validation-run.js +5 -2
- package/lib/datasource/validate.js +41 -23
- package/lib/deployment/environment-poll-status.js +138 -0
- package/lib/deployment/environment.js +42 -34
- package/lib/external-system/download-helpers.js +87 -0
- package/lib/external-system/download.js +78 -138
- package/lib/external-system/generator.js +1 -55
- package/lib/external-system/integration-auth-context.js +45 -0
- package/lib/external-system/test-auth.js +12 -5
- package/lib/external-system/test.js +16 -21
- package/lib/generator/builders.js +11 -1
- package/lib/generator/external-controller-manifest.js +18 -0
- package/lib/generator/split.js +3 -1
- package/lib/generator/wizard.js +1 -28
- package/lib/governance/governance-cli-errors.js +96 -0
- package/lib/governance/governance-download-display.js +38 -0
- package/lib/governance/governance-run-display.js +215 -25
- package/lib/identity/fk-reference.js +65 -0
- package/lib/identity/identity-apply-core.js +13 -58
- package/lib/identity/identity-apply-phases.js +5 -1
- package/lib/identity/identity-display.js +243 -0
- package/lib/identity/identity-response-helpers.js +52 -0
- package/lib/identity/identity-sync-errors.js +62 -0
- package/lib/identity/resolve-user-id.js +129 -0
- package/lib/identity/username-default.js +31 -0
- package/lib/infrastructure/admin-secrets-apply.js +84 -0
- package/lib/infrastructure/admin-secrets-ensure.js +130 -0
- package/lib/infrastructure/admin-secrets-resolve.js +95 -0
- package/lib/infrastructure/admin-secrets-sync.js +91 -0
- package/lib/infrastructure/helpers.js +23 -129
- package/lib/infrastructure/index.js +5 -6
- package/lib/infrastructure/orphan-infra-docker-teardown.js +11 -5
- package/lib/lifecycle/certification-progress.js +231 -0
- package/lib/lifecycle/dataplane-ui-url.js +145 -0
- package/lib/lifecycle/exit-codes.js +24 -0
- package/lib/lifecycle/json-envelope.js +25 -0
- package/lib/lifecycle/lifecycle-governance-options.js +51 -0
- package/lib/lifecycle/logger-quiet.js +29 -0
- package/lib/lifecycle/open-api-published.js +59 -0
- package/lib/lifecycle/operations-readiness-metrics.js +101 -0
- package/lib/lifecycle/product-model.js +196 -0
- package/lib/lifecycle/report-display-trust.js +70 -0
- package/lib/lifecycle/report-display.js +472 -0
- package/lib/lifecycle/scenario-upload.js +191 -0
- package/lib/lifecycle/verify-step-progress.js +87 -0
- package/lib/parameters/infra-kv-discovery.js +27 -2
- package/lib/protection/auth-context.js +10 -4
- package/lib/resolvers/datasource-resolver.js +2 -3
- package/lib/resolvers/resource-type-file.js +159 -0
- package/lib/schema/application-schema.json +17 -1
- package/lib/schema/datasource-test-run.schema.json +89 -6
- package/lib/schema/deployment-rules.yaml +2 -1
- package/lib/schema/external-datasource.schema.json +2947 -2619
- package/lib/schema/external-system.schema.json +1418 -761
- package/lib/schema/infra.parameter.yaml +45 -0
- package/lib/schema/type/credential-field-registry.json +103 -97
- package/lib/schema/type/document-storage.json +9 -5
- package/lib/utils/aifabrix-test-runtime-guard.js +125 -0
- package/lib/utils/api.js +55 -31
- package/lib/utils/app-relative-path-env.js +112 -0
- package/lib/utils/app-run-containers.js +25 -2
- package/lib/utils/authentication-shape.js +224 -0
- package/lib/utils/build-copy.js +36 -5
- package/lib/utils/build-resolve-image.js +66 -12
- package/lib/utils/celery-companion-apps.js +53 -0
- package/lib/utils/cli-secrets-error-format.js +83 -21
- package/lib/utils/cli-utils.js +20 -4
- package/lib/utils/compose-celery-worker.js +23 -0
- package/lib/utils/compose-generate-docker-compose.js +13 -1
- package/lib/utils/compose-traefik-ingress-base.js +16 -1
- package/lib/utils/config-secrets-path.js +46 -0
- package/lib/utils/configuration-env-resolver.js +36 -0
- package/lib/utils/controller-url.js +88 -1
- package/lib/utils/credential-secrets-env-kv.js +216 -0
- package/lib/utils/credential-secrets-env.js +175 -257
- package/lib/utils/dataplane-resolver.js +18 -2
- package/lib/utils/declarative-url-ports.js +27 -4
- package/lib/utils/deployment-auth-mode.js +41 -0
- package/lib/utils/developer-volume-id.js +33 -0
- package/lib/utils/docker-build.js +1 -4
- package/lib/utils/env-copy.js +14 -9
- package/lib/utils/env-kv-orphan-lines.js +43 -0
- package/lib/utils/error-formatters/network-errors.js +13 -4
- package/lib/utils/external-env-template.js +11 -3
- package/lib/utils/external-system-readiness-core.js +10 -0
- package/lib/utils/external-system-readiness-display.js +80 -23
- package/lib/utils/external-system-validators.js +8 -2
- package/lib/utils/health-check.js +4 -1
- package/lib/utils/help-builder.js +13 -8
- package/lib/utils/keycloak-realm-ready.js +101 -0
- package/lib/utils/load-cip-capacity-display-config.js +61 -15
- package/lib/utils/manifest-source-emit.js +2 -0
- package/lib/utils/paths.js +25 -0
- package/lib/utils/pipeline-upload-auth-retry.js +82 -0
- package/lib/utils/platform-controller-url.js +157 -0
- package/lib/utils/platform-kv-ref.js +57 -0
- package/lib/utils/postgres-platform-bootstrap.js +199 -0
- package/lib/utils/postgres-wipe.js +9 -2
- package/lib/utils/resolve-env-mode.js +47 -0
- package/lib/utils/runtime-configuration-download.js +189 -0
- package/lib/utils/runtime-configuration-values.js +119 -0
- package/lib/utils/schema-loader.js +19 -4
- package/lib/utils/secrets-generator.js +31 -25
- package/lib/utils/secrets-missing-error.js +164 -0
- package/lib/utils/service-url-label.js +81 -0
- package/lib/utils/setup-quiet-output.js +25 -0
- package/lib/utils/template-helpers.js +15 -0
- package/lib/utils/token-manager-client-credentials.js +201 -0
- package/lib/utils/token-manager-messages.js +8 -0
- package/lib/utils/token-manager-refresh.js +12 -2
- package/lib/utils/token-manager.js +86 -105
- package/lib/utils/upload-pipeline-ui.js +12 -5
- package/lib/utils/upload-sync-options.js +42 -0
- package/lib/utils/url-declarative-public-base.js +21 -3
- package/lib/utils/url-declarative-vdir-inactive-env.js +14 -4
- package/lib/utils/validation-poll-ui.js +8 -0
- package/lib/utils/validation-run-stage.js +45 -0
- package/lib/utils/worker-sidecars.js +142 -0
- package/lib/validation/external-manifest-validator.js +2 -0
- package/lib/validation/runtime-configuration-rules.js +98 -0
- package/lib/validation/validate-display-dimensions.js +154 -0
- package/lib/validation/validate-display-sections.js +276 -0
- package/lib/validation/validate-display-steps.js +67 -0
- package/lib/validation/validate-display.js +24 -402
- package/package.json +1 -1
- package/templates/applications/dataplane/application.yaml +7 -1
- package/templates/applications/dataplane/env.template +50 -14
- package/templates/applications/dataplane/rbac.yaml +108 -1
- package/templates/applications/miso-controller/application.yaml +2 -2
- package/templates/applications/miso-controller/env.template +53 -122
- package/templates/applications/miso-controller/rbac.yaml +28 -13
- package/templates/channels/chatgpt/install.template.md.hbs +49 -0
- package/templates/channels/chatgpt/manifest.template.json.hbs +9 -0
- package/templates/channels/microsoft-copilot/install.template.md.hbs +49 -0
- package/templates/channels/microsoft-copilot/manifest.template.json.hbs +8 -0
- package/templates/channels/slack/install.template.md.hbs +49 -0
- package/templates/channels/slack/manifest.template.json.hbs +66 -0
- package/templates/channels/teams-bot/install.template.md.hbs +49 -0
- package/templates/channels/teams-bot/manifest.template.json.hbs +13 -0
- package/templates/channels/web-embed/install.template.md.hbs +49 -0
- package/templates/channels/web-embed/manifest.template.json.hbs +8 -0
- package/templates/external-system/README.md.hbs +74 -17
- package/templates/python/docker-compose.hbs +75 -18
- package/templates/typescript/docker-compose.hbs +70 -17
- package/lib/commands/test-governance-command-action.js +0 -55
- package/lib/commands/test-trust-command-action.js +0 -118
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Dataplane Enterprise AI Certification lifecycle API client (419.0).
|
|
3
|
+
* @author AI Fabrix Team
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
const { createDataplaneApiClient } = require('./index');
|
|
10
|
+
const { unwrapApiData } = require('../utils/external-system-readiness-core');
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* GET /api/v1/external/systems/{systemKey}/lifecycle
|
|
14
|
+
* @requiresPermission {Dataplane} external-system:read
|
|
15
|
+
* @async
|
|
16
|
+
* @param {string} dataplaneUrl
|
|
17
|
+
* @param {Object} authConfig
|
|
18
|
+
* @param {string} systemKey
|
|
19
|
+
* @param {{ details?: boolean, summary?: boolean }} [opts]
|
|
20
|
+
* @returns {Promise<Object>}
|
|
21
|
+
*/
|
|
22
|
+
async function getSystemLifecycleReport(dataplaneUrl, authConfig, systemKey, opts = {}) {
|
|
23
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
24
|
+
const params = {};
|
|
25
|
+
if (opts.details === true) params.details = true;
|
|
26
|
+
if (opts.summary === true) params.summary = true;
|
|
27
|
+
const res = await client.get(`/api/v1/external/systems/${encodeURIComponent(systemKey)}/lifecycle`, {
|
|
28
|
+
params
|
|
29
|
+
});
|
|
30
|
+
if (res && res.success === false) {
|
|
31
|
+
const msg =
|
|
32
|
+
(res.error && (res.error.formattedError || res.error.error || res.error.message)) ||
|
|
33
|
+
res.formattedError ||
|
|
34
|
+
'Lifecycle report request failed';
|
|
35
|
+
throw new Error(msg);
|
|
36
|
+
}
|
|
37
|
+
const unwrapped = unwrapApiData(res);
|
|
38
|
+
if (!unwrapped || !unwrapped.systemKey) {
|
|
39
|
+
throw new Error('Lifecycle report returned an unexpected response shape');
|
|
40
|
+
}
|
|
41
|
+
return unwrapped;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* POST /api/v1/external/systems/{systemKey}/lifecycle/run
|
|
46
|
+
* @requiresPermission {Dataplane} external-system:update
|
|
47
|
+
* @async
|
|
48
|
+
* @param {string} dataplaneUrl
|
|
49
|
+
* @param {Object} authConfig
|
|
50
|
+
* @param {string} systemKey
|
|
51
|
+
* @param {Object} [body]
|
|
52
|
+
* @returns {Promise<Object>}
|
|
53
|
+
*/
|
|
54
|
+
async function runSystemLifecycle(dataplaneUrl, authConfig, systemKey, body = {}) {
|
|
55
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
56
|
+
const res = await client.post(
|
|
57
|
+
`/api/v1/external/systems/${encodeURIComponent(systemKey)}/lifecycle/run`,
|
|
58
|
+
{ body }
|
|
59
|
+
);
|
|
60
|
+
if (res && res.success === false) {
|
|
61
|
+
const msg =
|
|
62
|
+
(res.error && (res.error.formattedError || res.error.error || res.error.message)) ||
|
|
63
|
+
res.formattedError ||
|
|
64
|
+
'Lifecycle run request failed';
|
|
65
|
+
throw new Error(msg);
|
|
66
|
+
}
|
|
67
|
+
const unwrapped = unwrapApiData(res);
|
|
68
|
+
if (!unwrapped || !unwrapped.report) {
|
|
69
|
+
throw new Error('Lifecycle run returned an unexpected response shape');
|
|
70
|
+
}
|
|
71
|
+
return unwrapped;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
async function runSystemVerifyTrust(dataplaneUrl, authConfig, systemKey, body = {}) {
|
|
75
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
76
|
+
const res = await client.post(
|
|
77
|
+
`/api/v1/external/systems/${encodeURIComponent(systemKey)}/verify-trust`,
|
|
78
|
+
{ body }
|
|
79
|
+
);
|
|
80
|
+
if (res && res.success === false) {
|
|
81
|
+
const msg =
|
|
82
|
+
(res.error && (res.error.formattedError || res.error.error || res.error.message)) ||
|
|
83
|
+
res.formattedError ||
|
|
84
|
+
'verify-trust request failed';
|
|
85
|
+
throw new Error(msg);
|
|
86
|
+
}
|
|
87
|
+
const unwrapped = unwrapApiData(res);
|
|
88
|
+
if (!unwrapped || !unwrapped.systemKey) {
|
|
89
|
+
throw new Error('verify-trust returned an unexpected response shape');
|
|
90
|
+
}
|
|
91
|
+
return unwrapped;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
module.exports = {
|
|
95
|
+
getSystemLifecycleReport,
|
|
96
|
+
runSystemLifecycle,
|
|
97
|
+
runSystemVerifyTrust
|
|
98
|
+
};
|
package/lib/api/pipeline.api.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
const { ApiClient, createDataplaneApiClient } = require('./index');
|
|
8
8
|
const { postValidationRunAndOptionalPoll } = require('./validation-runner');
|
|
9
|
+
const { withStageOnValidationRunBody } = require('../utils/validation-run-stage');
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* @param {Object} opts
|
|
@@ -30,7 +31,7 @@ function buildValidationRunPayloadTestBody({ validationScope, systemKey, datasou
|
|
|
30
31
|
if (validationScope === 'externalDataSource') {
|
|
31
32
|
body.datasourceKey = datasourceKey;
|
|
32
33
|
}
|
|
33
|
-
return body;
|
|
34
|
+
return withStageOnValidationRunBody(body, body.runType);
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
/**
|
|
@@ -242,6 +243,7 @@ async function testDatasourceViaPipeline({ dataplaneUrl, systemKey, datasourceKe
|
|
|
242
243
|
* @param {Object} authConfig - Authentication configuration (must include token for Bearer; client id/secret rejected)
|
|
243
244
|
* @param {Object} payload - { version, application, dataSources }; optional status (default "draft")
|
|
244
245
|
* @param {string} [payload.status="draft"] - "draft" or "published"; Builder uses "draft"
|
|
246
|
+
* @param {boolean} [payload.force=false] - When true, bypass guards on active datasource publish
|
|
245
247
|
* @returns {Promise<Object>} API envelope `{ success, data }` where `data` is PublicationResult (uploadId, system, datasources, generateMcpContract, …)
|
|
246
248
|
* @throws {Error} If upload fails
|
|
247
249
|
*/
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
const { createDataplaneApiClient } = require('./index');
|
|
8
|
+
const { unwrapApiData } = require('../utils/external-system-readiness-core');
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Bulk sync external records for a datasource.
|
|
@@ -19,10 +20,22 @@ const { createDataplaneApiClient } = require('./index');
|
|
|
19
20
|
*/
|
|
20
21
|
async function bulkSyncRecords(dataplaneUrl, sourceIdOrKey, authConfig, body) {
|
|
21
22
|
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
22
|
-
|
|
23
|
+
const res = await client.post(
|
|
23
24
|
`/api/v1/data-storage/${encodeURIComponent(sourceIdOrKey)}/records/bulk`,
|
|
24
25
|
{ body }
|
|
25
26
|
);
|
|
27
|
+
if (res && res.success === false) {
|
|
28
|
+
const msg =
|
|
29
|
+
res.formattedError ||
|
|
30
|
+
res.error ||
|
|
31
|
+
`Bulk sync failed (HTTP ${res.status || 0})`;
|
|
32
|
+
throw new Error(msg);
|
|
33
|
+
}
|
|
34
|
+
const payload = unwrapApiData(res);
|
|
35
|
+
if (!payload || typeof payload !== 'object') {
|
|
36
|
+
throw new Error('Bulk sync returned an unexpected response shape');
|
|
37
|
+
}
|
|
38
|
+
return payload;
|
|
26
39
|
}
|
|
27
40
|
|
|
28
41
|
module.exports = {
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Resource types API (Controller /api/v1/resource-types)
|
|
3
|
+
* @author AI Fabrix Team
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
const { ApiClient } = require('./index');
|
|
10
|
+
|
|
11
|
+
const BASE = '/api/v1/resource-types';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* List resource types (paginated)
|
|
15
|
+
* @requiresPermission {Controller} resourceTypes:read
|
|
16
|
+
* @async
|
|
17
|
+
* @function listResourceTypes
|
|
18
|
+
* @param {string} controllerUrl
|
|
19
|
+
* @param {Object} authConfig
|
|
20
|
+
* @param {Object} [options]
|
|
21
|
+
* @param {number} [options.page]
|
|
22
|
+
* @param {number} [options.pageSize]
|
|
23
|
+
* @param {string} [options.sort]
|
|
24
|
+
* @param {string} [options.filter]
|
|
25
|
+
* @param {string} [options.search]
|
|
26
|
+
* @param {string} [options.category]
|
|
27
|
+
* @param {string} [options.status]
|
|
28
|
+
* @returns {Promise<Object>}
|
|
29
|
+
*/
|
|
30
|
+
async function listResourceTypes(controllerUrl, authConfig, options = {}) {
|
|
31
|
+
const client = new ApiClient(controllerUrl, authConfig);
|
|
32
|
+
return await client.get(BASE, { params: options });
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Get a resource type by id or key
|
|
37
|
+
* @requiresPermission {Controller} resourceTypes:read
|
|
38
|
+
* @async
|
|
39
|
+
* @function getResourceType
|
|
40
|
+
* @param {string} controllerUrl
|
|
41
|
+
* @param {Object} authConfig
|
|
42
|
+
* @param {string} resourceTypeIdOrKey
|
|
43
|
+
* @returns {Promise<Object>}
|
|
44
|
+
*/
|
|
45
|
+
async function getResourceType(controllerUrl, authConfig, resourceTypeIdOrKey) {
|
|
46
|
+
const client = new ApiClient(controllerUrl, authConfig);
|
|
47
|
+
return await client.get(`${BASE}/${encodeURIComponent(resourceTypeIdOrKey)}`);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Create a resource type
|
|
52
|
+
* @requiresPermission {Controller} resourceTypes:create
|
|
53
|
+
* @async
|
|
54
|
+
* @function createResourceType
|
|
55
|
+
* @param {string} controllerUrl
|
|
56
|
+
* @param {Object} authConfig
|
|
57
|
+
* @param {import('./types/resource-types.types').CreateResourceTypeRequest} body
|
|
58
|
+
* @returns {Promise<Object>}
|
|
59
|
+
*/
|
|
60
|
+
async function createResourceType(controllerUrl, authConfig, body) {
|
|
61
|
+
const client = new ApiClient(controllerUrl, authConfig);
|
|
62
|
+
const payload = {
|
|
63
|
+
key: body.key,
|
|
64
|
+
displayName: body.displayName
|
|
65
|
+
};
|
|
66
|
+
if (body.description !== undefined && body.description !== null && body.description !== '') {
|
|
67
|
+
payload.description = body.description;
|
|
68
|
+
}
|
|
69
|
+
if (body.category) payload.category = body.category;
|
|
70
|
+
if (body.defaultRiskLevel) payload.defaultRiskLevel = body.defaultRiskLevel;
|
|
71
|
+
if (body.status) payload.status = body.status;
|
|
72
|
+
return await client.post(BASE, { body: payload });
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Create-if-missing (idempotent): if a resource type already exists for the key, return success.
|
|
77
|
+
* @requiresPermission {Controller} resourceTypes:read + resourceTypes:create
|
|
78
|
+
* @async
|
|
79
|
+
* @function createResourceTypeIdempotent
|
|
80
|
+
* @param {string} controllerUrl
|
|
81
|
+
* @param {Object} authConfig
|
|
82
|
+
* @param {import('./types/resource-types.types').CreateResourceTypeRequest} body
|
|
83
|
+
* @returns {Promise<{ created: boolean, response: Object }>}
|
|
84
|
+
*/
|
|
85
|
+
async function createResourceTypeIdempotent(controllerUrl, authConfig, body) {
|
|
86
|
+
const key = String(body?.key || '').trim();
|
|
87
|
+
if (!key) {
|
|
88
|
+
throw new Error('Resource type key is required');
|
|
89
|
+
}
|
|
90
|
+
const getRes = await getResourceType(controllerUrl, authConfig, key);
|
|
91
|
+
if (getRes && getRes.success === true) {
|
|
92
|
+
return { created: false, response: getRes };
|
|
93
|
+
}
|
|
94
|
+
const createRes = await createResourceType(controllerUrl, authConfig, body);
|
|
95
|
+
if (createRes && createRes.success === true) {
|
|
96
|
+
return { created: true, response: createRes };
|
|
97
|
+
}
|
|
98
|
+
const msg = createRes?.error || createRes?.formattedError || 'Failed to create resource type';
|
|
99
|
+
throw new Error(msg);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
module.exports = {
|
|
103
|
+
listResourceTypes,
|
|
104
|
+
getResourceType,
|
|
105
|
+
createResourceType,
|
|
106
|
+
createResourceTypeIdempotent
|
|
107
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Runtime configuration variable API (dataplane configuration_values)
|
|
3
|
+
* @author AI Fabrix Team
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const { createDataplaneApiClient } = require('./index');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* GET /api/v1/external/systems/{systemIdOrKey}/configuration
|
|
11
|
+
* @requiresPermission {Dataplane} external-system:read
|
|
12
|
+
*/
|
|
13
|
+
async function getExternalSystemConfiguration(dataplaneUrl, systemIdOrKey, authConfig) {
|
|
14
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
15
|
+
return await client.get(`/api/v1/external/systems/${systemIdOrKey}/configuration`);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* PUT /api/v1/external/systems/{systemIdOrKey}/configuration
|
|
20
|
+
* @requiresPermission {Dataplane} external-system:update
|
|
21
|
+
* @param {{ name: string, value?: string|null, kvKey?: string|null }} body
|
|
22
|
+
*/
|
|
23
|
+
async function putExternalSystemConfiguration(dataplaneUrl, systemIdOrKey, authConfig, body) {
|
|
24
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
25
|
+
return await client.put(`/api/v1/external/systems/${systemIdOrKey}/configuration`, { body });
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* GET /api/v1/external/{sourceIdOrKey}/configuration
|
|
30
|
+
* @requiresPermission {Dataplane} external-data-source:read
|
|
31
|
+
*/
|
|
32
|
+
async function getExternalDataSourceConfiguration(dataplaneUrl, sourceIdOrKey, authConfig) {
|
|
33
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
34
|
+
return await client.get(`/api/v1/external/${sourceIdOrKey}/configuration`);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* GET /api/v1/external/systems/{systemIdOrKey}/configuration/resolved
|
|
39
|
+
* @requiresPermission {Dataplane} external-system:configuration:resolve
|
|
40
|
+
*/
|
|
41
|
+
async function getExternalSystemConfigurationResolved(dataplaneUrl, systemIdOrKey, authConfig) {
|
|
42
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
43
|
+
return await client.get(`/api/v1/external/systems/${systemIdOrKey}/configuration/resolved`);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* GET /api/v1/external/{sourceIdOrKey}/configuration/resolved
|
|
48
|
+
* @requiresPermission {Dataplane} external-data-source:configuration:resolve
|
|
49
|
+
*/
|
|
50
|
+
async function getExternalDataSourceConfigurationResolved(dataplaneUrl, sourceIdOrKey, authConfig) {
|
|
51
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
52
|
+
return await client.get(`/api/v1/external/${sourceIdOrKey}/configuration/resolved`);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* PUT /api/v1/external/{sourceIdOrKey}/configuration
|
|
57
|
+
* @requiresPermission {Dataplane} external-data-source:update
|
|
58
|
+
* @param {{ name: string, value?: string|null, kvKey?: string|null }} body
|
|
59
|
+
*/
|
|
60
|
+
async function putExternalDataSourceConfiguration(dataplaneUrl, sourceIdOrKey, authConfig, body) {
|
|
61
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
62
|
+
return await client.put(`/api/v1/external/${sourceIdOrKey}/configuration`, { body });
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
module.exports = {
|
|
66
|
+
getExternalSystemConfiguration,
|
|
67
|
+
getExternalSystemConfigurationResolved,
|
|
68
|
+
putExternalSystemConfiguration,
|
|
69
|
+
getExternalDataSourceConfiguration,
|
|
70
|
+
getExternalDataSourceConfigurationResolved,
|
|
71
|
+
putExternalDataSourceConfiguration
|
|
72
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Resource type catalog API type definitions
|
|
3
|
+
* @author AI Fabrix Team
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Resource type category
|
|
9
|
+
* @typedef {'business'|'collaboration'|'governance'|'content'|'communication'|'people'} ResourceTypeCategory
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Resource type risk level
|
|
14
|
+
* @typedef {'low'|'medium'|'high'|'critical'} ResourceTypeRiskLevel
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Resource type lifecycle status
|
|
19
|
+
* @typedef {'draft'|'active'|'deprecated'|'retired'} ResourceTypeStatus
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Create resource type request body
|
|
24
|
+
* @typedef {Object} CreateResourceTypeRequest
|
|
25
|
+
* @property {string} key - Catalog key (lowercase, hyphens)
|
|
26
|
+
* @property {string} displayName - Human-readable name
|
|
27
|
+
* @property {string} [description] - Optional description
|
|
28
|
+
* @property {ResourceTypeCategory} [category] - Catalog category
|
|
29
|
+
* @property {ResourceTypeRiskLevel} [defaultRiskLevel] - Default risk level
|
|
30
|
+
* @property {ResourceTypeStatus} [status] - Lifecycle status
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Resource type record
|
|
35
|
+
* @typedef {Object} ResourceTypeRecord
|
|
36
|
+
* @property {string} id - Controller id
|
|
37
|
+
* @property {string} key - Catalog key
|
|
38
|
+
* @property {string} displayName - Display name
|
|
39
|
+
* @property {string} [description] - Description
|
|
40
|
+
* @property {ResourceTypeCategory} category - Category
|
|
41
|
+
* @property {ResourceTypeRiskLevel} defaultRiskLevel - Default risk
|
|
42
|
+
* @property {ResourceTypeStatus} status - Status
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
module.exports = {};
|
|
@@ -9,20 +9,20 @@
|
|
|
9
9
|
const { ApiClient } = require('./index');
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* Add user to group
|
|
12
|
+
* Add user to group (flexible path segments per plan 194)
|
|
13
13
|
* @requiresPermission {Controller} users:update
|
|
14
14
|
* @async
|
|
15
15
|
* @param {string} controllerUrl
|
|
16
16
|
* @param {Object} authConfig
|
|
17
|
-
* @param {string}
|
|
18
|
-
* @param {string}
|
|
17
|
+
* @param {string} userIdOrEmail - UUID, email, or username
|
|
18
|
+
* @param {string} groupIdOrName - UUID or group name
|
|
19
19
|
* @param {Object} [body]
|
|
20
20
|
* @returns {Promise<Object>}
|
|
21
21
|
*/
|
|
22
|
-
async function addUserToGroup(controllerUrl, authConfig,
|
|
22
|
+
async function addUserToGroup(controllerUrl, authConfig, userIdOrEmail, groupIdOrName, body = {}) {
|
|
23
23
|
const client = new ApiClient(controllerUrl, authConfig);
|
|
24
24
|
return await client.post(
|
|
25
|
-
`/api/v1/users/${encodeURIComponent(
|
|
25
|
+
`/api/v1/users/${encodeURIComponent(userIdOrEmail)}/groups/${encodeURIComponent(groupIdOrName)}`,
|
|
26
26
|
{ body }
|
|
27
27
|
);
|
|
28
28
|
}
|
|
@@ -33,14 +33,14 @@ async function addUserToGroup(controllerUrl, authConfig, userId, groupId, body =
|
|
|
33
33
|
* @async
|
|
34
34
|
* @param {string} controllerUrl
|
|
35
35
|
* @param {Object} authConfig
|
|
36
|
-
* @param {string}
|
|
37
|
-
* @param {string}
|
|
36
|
+
* @param {string} userIdOrEmail - UUID, email, or username
|
|
37
|
+
* @param {string} groupIdOrName - UUID or group name
|
|
38
38
|
* @returns {Promise<Object>}
|
|
39
39
|
*/
|
|
40
|
-
async function removeUserFromGroup(controllerUrl, authConfig,
|
|
40
|
+
async function removeUserFromGroup(controllerUrl, authConfig, userIdOrEmail, groupIdOrName) {
|
|
41
41
|
const client = new ApiClient(controllerUrl, authConfig);
|
|
42
42
|
return await client.delete(
|
|
43
|
-
`/api/v1/users/${encodeURIComponent(
|
|
43
|
+
`/api/v1/users/${encodeURIComponent(userIdOrEmail)}/groups/${encodeURIComponent(groupIdOrName)}`
|
|
44
44
|
);
|
|
45
45
|
}
|
|
46
46
|
|
package/lib/api/users.api.js
CHANGED
|
@@ -25,22 +25,22 @@ async function listUsers(controllerUrl, authConfig, options = {}) {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
|
-
* Get user by id
|
|
28
|
+
* Get user by id, email, or username (controller path: userIdOrEmail)
|
|
29
29
|
* @requiresPermission {Controller} users:read
|
|
30
30
|
* @async
|
|
31
31
|
* @param {string} controllerUrl
|
|
32
32
|
* @param {Object} authConfig
|
|
33
|
-
* @param {string}
|
|
33
|
+
* @param {string} userIdOrEmail - UUID, email, or username
|
|
34
34
|
* @param {Object} [options]
|
|
35
35
|
* @returns {Promise<Object>}
|
|
36
36
|
*/
|
|
37
|
-
async function getUser(controllerUrl, authConfig,
|
|
37
|
+
async function getUser(controllerUrl, authConfig, userIdOrEmail, options = {}) {
|
|
38
38
|
const client = new ApiClient(controllerUrl, authConfig);
|
|
39
39
|
const params = {};
|
|
40
40
|
if (options.includeGroups) {
|
|
41
41
|
params.includeGroups = 'true';
|
|
42
42
|
}
|
|
43
|
-
return await client.get(`${BASE}/${encodeURIComponent(
|
|
43
|
+
return await client.get(`${BASE}/${encodeURIComponent(userIdOrEmail)}`, { params });
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
/**
|
|
@@ -73,17 +73,17 @@ async function updateUser(controllerUrl, authConfig, userId, body) {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
/**
|
|
76
|
-
* List groups for a user
|
|
76
|
+
* List groups for a user (controller path: userIdOrEmail)
|
|
77
77
|
* @requiresPermission {Controller} users:read
|
|
78
78
|
* @async
|
|
79
79
|
* @param {string} controllerUrl
|
|
80
80
|
* @param {Object} authConfig
|
|
81
|
-
* @param {string}
|
|
81
|
+
* @param {string} userIdOrEmail - UUID, email, or username
|
|
82
82
|
* @returns {Promise<Object>}
|
|
83
83
|
*/
|
|
84
|
-
async function listUserGroups(controllerUrl, authConfig,
|
|
84
|
+
async function listUserGroups(controllerUrl, authConfig, userIdOrEmail) {
|
|
85
85
|
const client = new ApiClient(controllerUrl, authConfig);
|
|
86
|
-
return await client.get(`${BASE}/${encodeURIComponent(
|
|
86
|
+
return await client.get(`${BASE}/${encodeURIComponent(userIdOrEmail)}/groups`);
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
module.exports = {
|
|
@@ -22,6 +22,7 @@ const { createValidationPollHandlers } = require('../utils/validation-poll-ui');
|
|
|
22
22
|
* @param {boolean} opts.useAsync
|
|
23
23
|
* @param {boolean} opts.noAsync
|
|
24
24
|
* @param {boolean} [opts.verbosePoll] - Throttled poll lines when no TTY poll UI (see validation-run-poll)
|
|
25
|
+
* @param {boolean} [opts.quietPollUi] - Suppress poll spinner/lines (orchestrated verify-* owns progress)
|
|
25
26
|
* @param {Function} [opts.onPollProgress] - Extra hook: `(envelope, attemptIndex, meta)` during poll
|
|
26
27
|
* @returns {Promise<{ envelope: Object|null, apiError: Object|null, pollTimedOut: boolean, incompleteNoAsync: boolean }>}
|
|
27
28
|
*/
|
|
@@ -60,7 +61,8 @@ async function postValidationRunAndOptionalPoll(opts) {
|
|
|
60
61
|
const deadlineMs = Date.now() + remaining;
|
|
61
62
|
|
|
62
63
|
const pollUi = createValidationPollHandlers(deadlineMs, {
|
|
63
|
-
subject: opts.pollSubject
|
|
64
|
+
subject: opts.pollSubject,
|
|
65
|
+
quiet: opts.quietPollUi === true
|
|
64
66
|
});
|
|
65
67
|
const mergeOnPollProgress =
|
|
66
68
|
typeof opts.onPollProgress === 'function'
|
package/lib/api/wizard.api.js
CHANGED
|
@@ -205,6 +205,12 @@ async function getPlatformConfig(dataplaneUrl, authConfig, platformKey, config)
|
|
|
205
205
|
});
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
+
/**
|
|
209
|
+
* Wizard AI generation can exceed the default 30s HTTP timeout (OpenAPI + LLM).
|
|
210
|
+
* @constant {number}
|
|
211
|
+
*/
|
|
212
|
+
const WIZARD_GENERATE_CONFIG_TIMEOUT_MS = 120000;
|
|
213
|
+
|
|
208
214
|
/**
|
|
209
215
|
* Generate configuration via AI (OpenAPI-based)
|
|
210
216
|
* POST /api/v1/wizard/generate-config
|
|
@@ -235,7 +241,8 @@ async function getPlatformConfig(dataplaneUrl, authConfig, platformKey, config)
|
|
|
235
241
|
async function generateConfig(dataplaneUrl, authConfig, config) {
|
|
236
242
|
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
237
243
|
return await client.post('/api/v1/wizard/generate-config', {
|
|
238
|
-
body: config
|
|
244
|
+
body: config,
|
|
245
|
+
timeoutMs: WIZARD_GENERATE_CONFIG_TIMEOUT_MS
|
|
239
246
|
});
|
|
240
247
|
}
|
|
241
248
|
|
|
@@ -254,7 +261,8 @@ async function generateConfig(dataplaneUrl, authConfig, config) {
|
|
|
254
261
|
async function generateConfigStream(dataplaneUrl, authConfig, config) {
|
|
255
262
|
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
256
263
|
return await client.post('/api/v1/wizard/generate-config-stream', {
|
|
257
|
-
body: config
|
|
264
|
+
body: config,
|
|
265
|
+
timeoutMs: WIZARD_GENERATE_CONFIG_TIMEOUT_MS
|
|
258
266
|
});
|
|
259
267
|
}
|
|
260
268
|
|
package/lib/app/deploy-config.js
CHANGED
|
@@ -60,7 +60,10 @@ async function extractDeploymentConfig(options, _variables) {
|
|
|
60
60
|
const { resolveEnvironment } = require('../core/config');
|
|
61
61
|
|
|
62
62
|
const controllerUrl = await resolveControllerUrl();
|
|
63
|
-
const envKey =
|
|
63
|
+
const envKey =
|
|
64
|
+
options && options.envKey
|
|
65
|
+
? String(options.envKey).trim().toLowerCase()
|
|
66
|
+
: await resolveEnvironment();
|
|
64
67
|
|
|
65
68
|
const pollIntervalExplicit =
|
|
66
69
|
options.pollInterval !== undefined && options.pollInterval !== null
|