@aifabrix/builder 2.44.6 → 2.45.5
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 +7 -3
- package/.cursor/rules/docs-rules.mdc +3 -1
- 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/integration/hubspot-test/wizard-hubspot-e2e.yaml +1 -1
- package/jest.projects.js +100 -1
- package/lib/api/agent-metadata-validation.api.js +93 -0
- package/lib/api/audit-api-helpers.js +68 -0
- package/lib/api/audit.api.js +119 -0
- package/lib/api/auth-cache.api.js +44 -0
- package/lib/api/certificates.api.js +4 -4
- package/lib/api/credential.api.js +2 -2
- package/lib/api/dataplane-health.api.js +137 -0
- package/lib/api/dataplane-sync.api.js +27 -0
- package/lib/api/datasources-core.api.js +21 -18
- package/lib/api/datasources-extended.api.js +22 -22
- package/lib/api/dimensions.api.js +3 -0
- package/lib/api/external-systems.api.js +13 -13
- package/lib/api/governance-scenarios.api.js +39 -0
- package/lib/api/groups.api.js +79 -0
- package/lib/api/index.js +45 -2
- package/lib/api/pipeline.api.js +4 -4
- package/lib/api/protection.api.js +157 -0
- package/lib/api/records-bulk.api.js +30 -0
- package/lib/api/records-search-parse.js +49 -0
- package/lib/api/records-search.api.js +29 -0
- package/lib/api/types/agent-metadata-validation.types.js +67 -0
- package/lib/api/types/audit.types.js +72 -0
- package/lib/api/types/dataplane-health.types.js +27 -0
- package/lib/api/types/dimensions.types.js +2 -0
- package/lib/api/types/governance-scenarios.types.js +39 -0
- package/lib/api/types/protection.types.js +69 -0
- package/lib/api/types/records-bulk.types.js +35 -0
- package/lib/api/types/records-search.types.js +28 -0
- package/lib/api/user-groups.api.js +50 -0
- package/lib/api/users.api.js +95 -0
- package/lib/api/validation-run.api.js +3 -3
- package/lib/api/validation-runner.js +3 -3
- package/lib/api/wizard-platform.api.js +3 -3
- package/lib/api/wizard.api.js +21 -21
- package/lib/app/deploy.js +34 -19
- package/lib/app/helpers.js +3 -3
- package/lib/app/index.js +3 -3
- package/lib/app/register.js +7 -6
- package/lib/app/restart-display.js +52 -21
- package/lib/app/rotate-secret.js +7 -6
- package/lib/app/run-helpers.js +15 -8
- package/lib/app/run.js +57 -9
- package/lib/app/show-display.js +7 -0
- package/lib/app/show.js +87 -5
- package/lib/build/index.js +9 -5
- package/lib/cli/index.js +4 -2
- package/lib/cli/infra-guided.js +62 -28
- package/lib/cli/installation-log-command.js +73 -0
- package/lib/cli/setup-app.help.js +50 -2
- package/lib/cli/setup-app.js +44 -25
- package/lib/cli/setup-app.test-commands.js +80 -21
- package/lib/cli/setup-auth.js +124 -52
- package/lib/cli/setup-external-system.js +37 -3
- package/lib/cli/setup-infra-up-dataplane-action.js +111 -0
- package/lib/cli/setup-infra-up-platform-action.js +131 -0
- package/lib/cli/setup-infra.js +60 -119
- package/lib/cli/setup-platform.js +1 -1
- package/lib/cli/setup-utility-help-after.js +45 -0
- package/lib/cli/setup-utility-resolve.js +132 -0
- package/lib/cli/setup-utility.js +148 -116
- package/lib/commands/app-logs.js +81 -33
- package/lib/commands/auth-config.js +116 -18
- package/lib/commands/auth-status-dataplane-version.js +231 -0
- package/lib/commands/auth-status-display.js +94 -0
- package/lib/commands/auth-status.js +70 -6
- package/lib/commands/credential-push.js +10 -5
- package/lib/commands/datasource-load-export-cli.js +178 -0
- package/lib/commands/datasource-test-trust-cli.js +114 -0
- package/lib/commands/datasource-unified-test-cli.js +25 -17
- package/lib/commands/datasource-unified-test-cli.options.js +18 -3
- package/lib/commands/datasource-unified-test-e2e-cli-helpers.js +5 -5
- package/lib/commands/datasource-verify-audit-cli.js +96 -0
- package/lib/commands/datasource.js +68 -1
- package/lib/commands/dimension-value.js +43 -13
- package/lib/commands/dimension.js +38 -7
- package/lib/commands/identity-apply-sync.js +131 -0
- package/lib/commands/identity-group-cli.js +146 -0
- package/lib/commands/identity-membership-role-cache.js +175 -0
- package/lib/commands/identity-shared.js +94 -0
- package/lib/commands/identity-user-cli.js +158 -0
- package/lib/commands/identity.js +43 -0
- package/lib/commands/login.js +46 -16
- package/lib/commands/protection-cli-leaves.js +286 -0
- package/lib/commands/protection.js +50 -0
- package/lib/commands/repair.js +13 -3
- package/lib/commands/setup-modes.js +19 -6
- package/lib/commands/setup-prompts.js +41 -8
- package/lib/commands/setup.js +114 -9
- package/lib/commands/teardown.js +54 -5
- package/lib/commands/test-e2e-external.js +40 -9
- package/lib/commands/test-governance-cli-options.js +47 -0
- package/lib/commands/test-governance-command-action.js +55 -0
- package/lib/commands/test-governance-external.js +88 -0
- package/lib/commands/test-trust-cli-options.js +32 -0
- package/lib/commands/test-trust-command-action.js +118 -0
- package/lib/commands/test-trust-external.js +127 -0
- package/lib/commands/up-common.js +48 -14
- package/lib/commands/up-dataplane.js +21 -18
- package/lib/commands/up-miso.js +12 -8
- package/lib/commands/upload.js +38 -15
- package/lib/commands/wizard-core.js +3 -0
- package/lib/core/audit-logger.js +1 -34
- package/lib/core/config-admin-email.js +56 -0
- package/lib/core/config-device-dataplane.js +185 -0
- package/lib/core/config-normalize.js +60 -0
- package/lib/core/config-registered-controller-urls.js +54 -0
- package/lib/core/config.js +33 -50
- package/lib/core/secrets-ensure-infra.js +1 -1
- package/lib/core/secrets-env-content.js +86 -90
- package/lib/core/secrets-env-declarative-expand.js +170 -0
- package/lib/core/secrets-env-write.js +2 -0
- package/lib/core/secrets-load.js +106 -102
- package/lib/datasource/agent-trust-debug-log.js +45 -0
- package/lib/datasource/agent-trust-fetch.js +115 -0
- package/lib/datasource/agent-trust-map.js +101 -0
- package/lib/datasource/agent-trust-mock.js +44 -0
- package/lib/datasource/agent-trust-run.js +93 -0
- package/lib/datasource/agent-trust-timeout.js +25 -0
- package/lib/datasource/audit-evidence-display.js +80 -0
- package/lib/datasource/audit-evidence-extract-debug.js +103 -0
- package/lib/datasource/audit-evidence-extract.js +177 -0
- package/lib/datasource/audit-evidence-matrix-rows.js +158 -0
- package/lib/datasource/audit-evidence-operation-aliases.js +63 -0
- package/lib/datasource/audit-evidence-poll.js +109 -0
- package/lib/datasource/audit-evidence-run.js +177 -0
- package/lib/datasource/audit-evidence-verify-helpers.js +167 -0
- package/lib/datasource/audit-evidence-verify-matrix.js +177 -0
- package/lib/datasource/audit-evidence-verify.js +108 -0
- package/lib/datasource/bulk-loader-run-batches.js +88 -0
- package/lib/datasource/bulk-loader-service-retry.js +52 -0
- package/lib/datasource/bulk-loader-service.js +127 -0
- package/lib/datasource/capability/run-capability-dimension.js +2 -1
- package/lib/datasource/datasource-exporter-resolve.js +82 -0
- package/lib/datasource/datasource-exporter-service.js +144 -0
- package/lib/datasource/datasource-identifier.js +148 -0
- package/lib/datasource/datasource-load-export-context.js +92 -0
- package/lib/datasource/integration-context.js +6 -4
- package/lib/datasource/local-data-paths.js +145 -0
- package/lib/datasource/log-cleaner.js +241 -0
- package/lib/datasource/log-viewer.js +111 -6
- package/lib/datasource/record-file-parser.js +85 -0
- package/lib/datasource/record-mapper.js +129 -0
- package/lib/datasource/resolve-app.js +74 -55
- package/lib/datasource/test-e2e.js +26 -2
- package/lib/datasource/unified-validation-run-resolve.js +45 -12
- package/lib/datasource/unified-validation-run.js +43 -17
- package/lib/datasource/validate.js +37 -20
- package/lib/external-system/deploy.js +5 -1
- package/lib/external-system/test-system-level.js +25 -4
- package/lib/external-system/test.js +3 -1
- package/lib/governance/governance-pack-loader.js +70 -0
- package/lib/governance/governance-run-display.js +119 -0
- package/lib/identity/identity-apply-core.js +108 -0
- package/lib/identity/identity-apply-phases.js +244 -0
- package/lib/identity/identity-apply-service.js +77 -0
- package/lib/identity/identity-csv-parser.js +114 -0
- package/lib/internal/fs-real-sync.js +29 -1
- package/lib/internal/node-fs.js +2 -0
- package/lib/protection/auth-context.js +45 -0
- package/lib/protection/convert-batch.js +90 -0
- package/lib/protection/load.js +41 -0
- package/lib/protection/paths.js +158 -0
- package/lib/protection/preflight-datasource-ready.js +46 -0
- package/lib/protection/protection-create-probe-lines.js +142 -0
- package/lib/protection/protection-create-probes.js +95 -0
- package/lib/protection/protection-create-scaffold.js +281 -0
- package/lib/protection/protection-display-helpers.js +445 -0
- package/lib/protection/protection-display.js +215 -0
- package/lib/protection/protection-preset-registry.js +97 -0
- package/lib/protection/report-exit.js +62 -0
- package/lib/protection/resolve.js +202 -0
- package/lib/protection/run-commands-validate.js +130 -0
- package/lib/protection/run-commands.js +216 -0
- package/lib/protection/run-protection-create-helpers.js +134 -0
- package/lib/protection/run-protection-create-probes-flow.js +43 -0
- package/lib/protection/run-protection-create.js +191 -0
- package/lib/protection/scope.js +22 -0
- package/lib/protection/sync-after-upload.js +64 -0
- package/lib/protection/upload-batch.js +127 -0
- package/lib/protection/validate-batch.js +113 -0
- package/lib/protection/validate-local.js +65 -0
- package/lib/resolvers/dimension-file.js +29 -4
- package/lib/schema/application-schema.json +4 -0
- package/lib/schema/external-datasource.schema.json +47 -13
- package/lib/schema/flag-map-validation-run.json +2 -2
- package/lib/schema/infra.parameter.yaml +10 -0
- package/lib/schema/protection.schema.json +374 -0
- package/lib/schema/type/credential-field-registry.json +636 -0
- package/lib/schema/wizard-config.schema.json +1 -1
- package/lib/utils/agent-trust-run-display.js +231 -0
- package/lib/utils/agent-trust-run-exit.js +59 -0
- package/lib/utils/agent-trust-wait-ui.js +94 -0
- package/lib/utils/app-config-resolver.js +24 -1
- package/lib/utils/applications-config-defaults.js +206 -0
- package/lib/utils/auth-config-validator.js +2 -12
- package/lib/utils/bash-secret-env.js +1 -1
- package/lib/utils/cli-exit-codes.js +30 -0
- package/lib/utils/cli-sync-options.js +33 -0
- package/lib/utils/compose-generate-docker-compose.js +111 -6
- package/lib/utils/compose-generator.js +17 -8
- package/lib/utils/controller-url.js +50 -7
- package/lib/utils/credential-push-ui.js +90 -0
- package/lib/utils/dataplane-cli-version-gate.js +202 -0
- package/lib/utils/dataplane-cli-version-help.js +74 -0
- package/lib/utils/datasource-export-display.js +137 -0
- package/lib/utils/datasource-load-display.js +174 -0
- package/lib/utils/datasource-load-export-ui.js +120 -0
- package/lib/utils/datasource-test-run-capability-scope.js +3 -3
- package/lib/utils/datasource-test-run-display.js +3 -3
- package/lib/utils/datasource-test-run-tty-log.js +5 -1
- package/lib/utils/env-copy.js +99 -14
- package/lib/utils/env-template.js +5 -1
- package/lib/utils/health-check-url.js +18 -15
- package/lib/utils/health-check.js +7 -5
- package/lib/utils/help-builder.js +30 -24
- package/lib/utils/infra-optional-service-flags.js +69 -0
- package/lib/utils/installation-log-core.js +282 -0
- package/lib/utils/installation-log-record.js +237 -0
- package/lib/utils/installation-log.js +123 -0
- package/lib/utils/log-redaction.js +105 -0
- package/lib/utils/manifest-location.js +164 -0
- package/lib/utils/manifest-source-emit.js +184 -0
- package/lib/utils/paths.js +238 -89
- package/lib/utils/remote-secrets-loader.js +7 -1
- package/lib/utils/run-cli-flags.js +29 -0
- package/lib/utils/secrets-canonical.js +10 -3
- package/lib/utils/secrets-path.js +3 -4
- package/lib/utils/secrets-utils.js +20 -10
- package/lib/utils/semver-compare.js +127 -0
- package/lib/utils/system-builder-root.js +10 -2
- package/lib/utils/upload-pipeline-ui.js +91 -0
- package/lib/utils/url-declarative-public-base.js +80 -12
- package/lib/utils/url-declarative-resolve-build-urls.js +238 -0
- package/lib/utils/url-declarative-resolve-build.js +24 -393
- package/lib/utils/url-declarative-resolve-expand-token.js +189 -0
- package/lib/utils/url-declarative-resolve-load-doc.js +12 -3
- package/lib/utils/url-declarative-resolve-surface-state.js +102 -0
- package/lib/utils/url-declarative-resolve.js +47 -7
- package/lib/utils/url-declarative-runtime-base-path.js +21 -1
- package/lib/utils/urls-local-registry-scan.js +103 -0
- package/lib/utils/urls-local-registry.js +161 -90
- package/lib/utils/validation-poll-ui.js +14 -7
- package/lib/validation/wizard-config-validator.js +58 -19
- package/package.json +3 -1
- package/templates/applications/dataplane/application.yaml +4 -0
- package/templates/applications/dataplane/env.template +13 -1
- package/templates/applications/dataplane/rbac.yaml +4 -0
- package/templates/applications/miso-controller/application.yaml +2 -0
- package/templates/applications/miso-controller/env.template +27 -29
- package/templates/external-system/README.md.hbs +56 -8
- package/.npmrc.token +0 -1
|
@@ -12,7 +12,7 @@ When you touch **CLI surface** (`bin/aifabrix.js`, `lib/cli.js`, `lib/cli/**`, `
|
|
|
12
12
|
| Document | Role |
|
|
13
13
|
| -------- | ---- |
|
|
14
14
|
| [layout.md](./layout.md) | Visual and semantic spec: colors, sections, glyphs, blocking vs warning, non-TTY/CI, helper map to `cli-test-layout-chalk.js`. |
|
|
15
|
-
| [cli-output-command-matrix.md](./cli-output-command-matrix.md) | **One row per leaf command**: expected **output profile** (layout-blocks, tty-summary, stream-logs, json-opt, stdout-only, delegate). |
|
|
15
|
+
| [cli-output-command-matrix.md](./cli-output-command-matrix.md) | **One row per leaf command**: expected **output profile** (layout-blocks, tty-summary, stream-logs, json-opt, stdout-only, delegate) and **Manifest roots (141)** (when to emit gray manifest path line — see plan 141). |
|
|
16
16
|
|
|
17
17
|
If implementation and `layout.md` disagree, **fix implementation** or **update docs** in the same change so they stay one story.
|
|
18
18
|
|
|
@@ -27,9 +27,13 @@ Use the matrix row for your command to decide UX:
|
|
|
27
27
|
- **stdout-only** — Stable, script-friendly stdout; minimal chalk; often used for diffs or piping.
|
|
28
28
|
- **delegate** — Output comes from delegated library (wizard, etc.); still avoid forbidden glyphs and spurious decoration in anything you add.
|
|
29
29
|
|
|
30
|
-
**New leaf command:** add a row to [cli-output-command-matrix.md](./cli-output-command-matrix.md) with the correct profile combination.
|
|
30
|
+
**New leaf command:** add a row to [cli-output-command-matrix.md](./cli-output-command-matrix.md) with the correct profile combination and **Manifest roots (141)** code (`141`, `141+`, `int`, `cfg`, `—`).
|
|
31
31
|
|
|
32
|
-
##
|
|
32
|
+
## Manifest path visibility (plan 141)
|
|
33
|
+
|
|
34
|
+
When a command’s matrix cell is **141**, **141+**, or **int** and the implementation reads an `application.yaml` (or integration equivalent), print **one** gray metadata line for humans (e.g. `Manifest: cwd/builder — /abs/path/application.yaml`) using `metadata()` or a small helper from `cli-test-layout-chalk.js`. Do not spam per-substep. Follow [.cursor/plans/141-manifest-location.plan.md](../plans/141-manifest-location.plan.md).
|
|
35
|
+
|
|
36
|
+
**`aifabrix setup`:** destructive / conflict prompts that list folders to be replaced must use **resolved absolute paths** for every directory (plan § Guided setup — not only `builder/<app>/` under an otherwise absolute builder root).
|
|
33
37
|
|
|
34
38
|
From [layout.md](./layout.md) contributor appendix:
|
|
35
39
|
|
|
@@ -5,10 +5,12 @@ alwaysApply: true
|
|
|
5
5
|
|
|
6
6
|
## Audience
|
|
7
7
|
|
|
8
|
-
Documents under **docs/** (including **docs/commands/**) are **CLI
|
|
8
|
+
Documents under **docs/** (including **docs/commands/**) are **public CLI user documentation**. The audience is people who use the AI Fabrix Builder CLI or integrate it into workflows—they may **not** have access to private monorepos (dataplane, miso-controller, internal plans). They do not need to know how the CLI talks to the Controller or Dataplane over HTTP.
|
|
9
9
|
|
|
10
10
|
## Do Not Include in CLI User Docs
|
|
11
11
|
|
|
12
|
+
- **Links or paths into other product repos (FORBIDDEN)** – No markdown links, examples, or prerequisites that point at private/sibling repositories or their trees: `../../../aifabrix-dataplane/...`, `../../aifabrix-miso/...`, `packages/miso-controller/...`, `integration/<fixture>/README.md` in another repo, `.cursor/plans/` anywhere, `/workspace/...` monorepo layouts, or “see the dataplane/miso-controller repo”. **Only** cross-link within **`docs/`** and use on-disk paths the user owns (`integration/<systemKey>/...`, `builder/<appKey>/...`, `~/.aifabrix/...`).
|
|
13
|
+
- **Internal plan or ticket IDs** – No “Plan 407.1”, “plan section 2.3”, or similar; describe behavior in user terms.
|
|
12
14
|
- **REST API details** – No HTTP methods, URL paths, or endpoint names (e.g. `GET /api/v1/...`, `POST .../pipeline/upload`).
|
|
13
15
|
- **Request/response shapes** – No payload structures, status codes, or field names from backend APIs.
|
|
14
16
|
- **Backend implementation terms** – Avoid referring to “pipeline config endpoint”, “upload endpoint”, or similar; describe what the **command** does from the user’s perspective.
|
|
@@ -2,7 +2,7 @@ appName: wizard-e2e-env-vars
|
|
|
2
2
|
mode: create-system
|
|
3
3
|
source:
|
|
4
4
|
type: openapi-file
|
|
5
|
-
filePath:
|
|
5
|
+
filePath: ./integration/hubspot-test/companies.json
|
|
6
6
|
deployment:
|
|
7
7
|
controller: ${CONTROLLER_URL}
|
|
8
8
|
dataplane: ${DATAPLANE_URL}
|
package/jest.projects.js
CHANGED
|
@@ -141,6 +141,34 @@ const defaultProject = {
|
|
|
141
141
|
'\\\\tests\\\\lib\\\\utils\\\\url-declarative-vdir-inactive-env.test.js',
|
|
142
142
|
'lib/utils/url-declarative-vdir-inactive-env.test.js',
|
|
143
143
|
'url-declarative-vdir-inactive-env\\.test\\.js',
|
|
144
|
+
'/tests/lib/utils/url-declarative-user-cfg-per-app-proxy.test.js',
|
|
145
|
+
'\\\\tests\\\\lib\\\\utils\\\\url-declarative-user-cfg-per-app-proxy.test.js',
|
|
146
|
+
'lib/utils/url-declarative-user-cfg-per-app-proxy.test.js',
|
|
147
|
+
'url-declarative-user-cfg-per-app-proxy\\.test\\.js',
|
|
148
|
+
'/tests/lib/utils/url-declarative-expand-traefik-off-no-usercfg.test.js',
|
|
149
|
+
'\\\\tests\\\\lib\\\\utils\\\\url-declarative-expand-traefik-off-no-usercfg.test.js',
|
|
150
|
+
'lib/utils/url-declarative-expand-traefik-off-no-usercfg.test.js',
|
|
151
|
+
'url-declarative-expand-traefik-off-no-usercfg\\.test\\.js',
|
|
152
|
+
'/tests/lib/core/secrets-env-declarative-show-urls.test.js',
|
|
153
|
+
'\\\\tests\\\\lib\\\\core\\\\secrets-env-declarative-show-urls.test.js',
|
|
154
|
+
'lib/core/secrets-env-declarative-show-urls.test.js',
|
|
155
|
+
'secrets-env-declarative-show-urls\\.test\\.js',
|
|
156
|
+
'/tests/lib/utils/url-declarative-registry-internal-docker-origin.test.js',
|
|
157
|
+
'\\\\tests\\\\lib\\\\utils\\\\url-declarative-registry-internal-docker-origin.test.js',
|
|
158
|
+
'lib/utils/url-declarative-registry-internal-docker-origin.test.js',
|
|
159
|
+
'url-declarative-registry-internal-docker-origin\\.test\\.js',
|
|
160
|
+
'/tests/lib/commands/platform-urls-registry.validation.test.js',
|
|
161
|
+
'\\\\tests\\\\lib\\\\commands\\\\platform-urls-registry.validation.test.js',
|
|
162
|
+
'lib/commands/platform-urls-registry.validation.test.js',
|
|
163
|
+
'platform-urls-registry\\.validation\\.test\\.js',
|
|
164
|
+
'/tests/lib/utils/env-copy-resolve-output.test.js',
|
|
165
|
+
'\\\\tests\\\\lib\\\\utils\\\\env-copy-resolve-output.test.js',
|
|
166
|
+
'lib/utils/env-copy-resolve-output.test.js',
|
|
167
|
+
'env-copy-resolve-output\\.test\\.js',
|
|
168
|
+
'/tests/lib/utils/write-env-output-reload.test.js',
|
|
169
|
+
'\\\\tests\\\\lib\\\\utils\\\\write-env-output-reload.test.js',
|
|
170
|
+
'lib/utils/write-env-output-reload.test.js',
|
|
171
|
+
'write-env-output-reload\\.test\\.js',
|
|
144
172
|
'/tests/lib/utils/app-service-env-from-builder.test.js',
|
|
145
173
|
'\\\\tests\\\\lib\\\\utils\\\\app-service-env-from-builder.test.js',
|
|
146
174
|
'lib/utils/app-service-env-from-builder.test.js',
|
|
@@ -165,6 +193,18 @@ const defaultProject = {
|
|
|
165
193
|
'\\\\tests\\\\lib\\\\utils\\\\paths-system-builder-resolution.test.js',
|
|
166
194
|
'lib/utils/paths-system-builder-resolution.test.js',
|
|
167
195
|
'paths-system-builder-resolution\\.test\\.js',
|
|
196
|
+
'/tests/lib/utils/manifest-location.test.js',
|
|
197
|
+
'\\\\tests\\\\lib\\\\utils\\\\manifest-location.test.js',
|
|
198
|
+
'lib/utils/manifest-location.test.js',
|
|
199
|
+
'manifest-location\\.test\\.js',
|
|
200
|
+
'/tests/lib/utils/installation-log.test.js',
|
|
201
|
+
'\\\\tests\\\\lib\\\\utils\\\\installation-log.test.js',
|
|
202
|
+
'lib/utils/installation-log.test.js',
|
|
203
|
+
'installation-log\\.test\\.js',
|
|
204
|
+
'/tests/lib/utils/manifest-source-emit.test.js',
|
|
205
|
+
'\\\\tests\\\\lib\\\\utils\\\\manifest-source-emit.test.js',
|
|
206
|
+
'lib/utils/manifest-source-emit.test.js',
|
|
207
|
+
'manifest-source-emit\\.test\\.js',
|
|
168
208
|
'/tests/lib/utils/secrets-ancestor-paths.test.js',
|
|
169
209
|
'\\\\tests\\\\lib\\\\utils\\\\secrets-ancestor-paths.test.js',
|
|
170
210
|
'lib/utils/secrets-ancestor-paths.test.js',
|
|
@@ -238,7 +278,35 @@ const defaultProject = {
|
|
|
238
278
|
'/tests/lib/datasource/run-capability-remove.test.js',
|
|
239
279
|
'\\\\tests\\\\lib\\\\datasource\\\\run-capability-remove.test.js',
|
|
240
280
|
'lib/datasource/run-capability-remove.test.js',
|
|
241
|
-
'run-capability-remove\\.test\\.js'
|
|
281
|
+
'run-capability-remove\\.test\\.js',
|
|
282
|
+
'/tests/lib/datasource/log-cleaner.test.js',
|
|
283
|
+
'\\\\tests\\\\lib\\\\datasource\\\\log-cleaner.test.js',
|
|
284
|
+
'lib/datasource/log-cleaner.test.js',
|
|
285
|
+
'log-cleaner\\.test\\.js',
|
|
286
|
+
'/tests/lib/datasource/datasource-exporter-service.test.js',
|
|
287
|
+
'\\\\tests\\\\lib\\\\datasource\\\\datasource-exporter-service.test.js',
|
|
288
|
+
'lib/datasource/datasource-exporter-service.test.js',
|
|
289
|
+
'datasource-exporter-service\\.test\\.js',
|
|
290
|
+
'/tests/lib/protection/paths.test.js',
|
|
291
|
+
'\\\\tests\\\\lib\\\\protection\\\\paths.test.js',
|
|
292
|
+
'lib/protection/paths.test.js',
|
|
293
|
+
'protection/paths\\.test\\.js',
|
|
294
|
+
'/tests/lib/protection/protection-resolve.test.js',
|
|
295
|
+
'\\\\tests\\\\lib\\\\protection\\\\protection-resolve.test.js',
|
|
296
|
+
'lib/protection/protection-resolve.test.js',
|
|
297
|
+
'protection-resolve\\.test\\.js',
|
|
298
|
+
'/tests/lib/protection/run-protection-create-helpers.test.js',
|
|
299
|
+
'\\\\tests\\\\lib\\\\protection\\\\run-protection-create-helpers.test.js',
|
|
300
|
+
'lib/protection/run-protection-create-helpers.test.js',
|
|
301
|
+
'run-protection-create-helpers\\.test\\.js',
|
|
302
|
+
'/tests/lib/governance/governance-pack-loader.test.js',
|
|
303
|
+
'\\\\tests\\\\lib\\\\governance\\\\governance-pack-loader.test.js',
|
|
304
|
+
'lib/governance/governance-pack-loader.test.js',
|
|
305
|
+
'governance-pack-loader\\.test\\.js',
|
|
306
|
+
'/tests/lib/protection/validate-batch.test.js',
|
|
307
|
+
'\\\\tests\\\\lib\\\\protection\\\\validate-batch.test.js',
|
|
308
|
+
'lib/protection/validate-batch.test.js',
|
|
309
|
+
'validate-batch\\.test\\.js'
|
|
242
310
|
];
|
|
243
311
|
if (process.env.INCLUDE_LOCAL_TESTS !== 'true') {
|
|
244
312
|
patterns.push('/tests/local/');
|
|
@@ -263,6 +331,8 @@ const isolatedProjects = [
|
|
|
263
331
|
makeIsolatedProject('paths-system-builder-resolution', [
|
|
264
332
|
'**/tests/lib/utils/paths-system-builder-resolution.test.js'
|
|
265
333
|
]),
|
|
334
|
+
makeIsolatedProject('manifest-location', ['**/tests/lib/utils/manifest-location.test.js']),
|
|
335
|
+
makeIsolatedProject('installation-log', ['**/tests/lib/utils/installation-log.test.js']),
|
|
266
336
|
makeIsolatedProject('secrets-ancestor-paths', ['**/tests/lib/utils/secrets-ancestor-paths.test.js']),
|
|
267
337
|
makeIsolatedProject('datasource-validation-watch', [
|
|
268
338
|
'**/tests/lib/utils/datasource-validation-watch.test.js'
|
|
@@ -272,6 +342,7 @@ const isolatedProjects = [
|
|
|
272
342
|
'**/tests/lib/datasource/log-viewer-structural.test.js',
|
|
273
343
|
'**/tests/lib/datasource/log-viewer-run.test.js'
|
|
274
344
|
]),
|
|
345
|
+
makeIsolatedProject('manifest-source-emit', ['**/tests/lib/utils/manifest-source-emit.test.js']),
|
|
275
346
|
makeIsolatedProject('register-aifabrix-shell-env', [
|
|
276
347
|
'**/tests/lib/utils/register-aifabrix-shell-env.test.js'
|
|
277
348
|
]),
|
|
@@ -314,6 +385,19 @@ const isolatedProjects = [
|
|
|
314
385
|
makeIsolatedProject('url-declarative-vdir-inactive-env', [
|
|
315
386
|
'**/tests/lib/utils/url-declarative-vdir-inactive-env.test.js'
|
|
316
387
|
]),
|
|
388
|
+
makeIsolatedProject('url-declarative-user-cfg-per-app-proxy', [
|
|
389
|
+
'**/tests/lib/utils/url-declarative-user-cfg-per-app-proxy.test.js'
|
|
390
|
+
]),
|
|
391
|
+
makeIsolatedProject('declarative-url-paths-spy-suites', [
|
|
392
|
+
'**/tests/lib/utils/url-declarative-expand-traefik-off-no-usercfg.test.js',
|
|
393
|
+
'**/tests/lib/core/secrets-env-declarative-show-urls.test.js',
|
|
394
|
+
'**/tests/lib/utils/url-declarative-registry-internal-docker-origin.test.js'
|
|
395
|
+
]),
|
|
396
|
+
makeIsolatedProject('platform-urls-registry-validation', [
|
|
397
|
+
'**/tests/lib/commands/platform-urls-registry.validation.test.js'
|
|
398
|
+
]),
|
|
399
|
+
makeIsolatedProject('env-copy-resolve-output', ['**/tests/lib/utils/env-copy-resolve-output.test.js']),
|
|
400
|
+
makeIsolatedProject('write-env-output-reload', ['**/tests/lib/utils/write-env-output-reload.test.js']),
|
|
317
401
|
makeIsolatedProject('app-service-env-from-builder', [
|
|
318
402
|
'**/tests/lib/utils/app-service-env-from-builder.test.js'
|
|
319
403
|
]),
|
|
@@ -348,6 +432,21 @@ const isolatedProjects = [
|
|
|
348
432
|
'**/tests/lib/datasource/run-capability-diff.test.js',
|
|
349
433
|
'**/tests/lib/datasource/run-capability-edit.test.js',
|
|
350
434
|
'**/tests/lib/datasource/run-capability-remove.test.js'
|
|
435
|
+
]),
|
|
436
|
+
makeIsolatedProject('log-cleaner', ['**/tests/lib/datasource/log-cleaner.test.js']),
|
|
437
|
+
makeIsolatedProject('datasource-exporter-service', [
|
|
438
|
+
'**/tests/lib/datasource/datasource-exporter-service.test.js'
|
|
439
|
+
]),
|
|
440
|
+
makeIsolatedProject('protection-paths', ['**/tests/lib/protection/paths.test.js']),
|
|
441
|
+
makeIsolatedProject('protection-resolve', ['**/tests/lib/protection/protection-resolve.test.js']),
|
|
442
|
+
makeIsolatedProject('protection-create-helpers', [
|
|
443
|
+
'**/tests/lib/protection/run-protection-create-helpers.test.js'
|
|
444
|
+
]),
|
|
445
|
+
makeIsolatedProject('governance-pack-loader', [
|
|
446
|
+
'**/tests/lib/governance/governance-pack-loader.test.js'
|
|
447
|
+
]),
|
|
448
|
+
makeIsolatedProject('protection-validate-batch', [
|
|
449
|
+
'**/tests/lib/protection/validate-batch.test.js'
|
|
351
450
|
])
|
|
352
451
|
];
|
|
353
452
|
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Agent metadata validation API (dataplane 404.5)
|
|
3
|
+
* @author AI Fabrix Team
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const { createDataplaneApiClient } = require('./index');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Run agent metadata validation for a datasource.
|
|
11
|
+
* POST /api/v1/external/{sourceIdOrKey}/agent-metadata-validation
|
|
12
|
+
* @requiresPermission {Dataplane} external-data-source:update
|
|
13
|
+
* @async
|
|
14
|
+
* @function runAgentMetadataValidation
|
|
15
|
+
* @param {string} dataplaneUrl - Dataplane base URL
|
|
16
|
+
* @param {string} sourceIdOrKey - Datasource key or ID
|
|
17
|
+
* @param {Object} authConfig - Authentication configuration
|
|
18
|
+
* @param {import('./types/agent-metadata-validation.types').AgentMetadataValidationRunRequest} [body]
|
|
19
|
+
* @returns {Promise<import('./types/agent-metadata-validation.types').AgentMetadataValidationRunResponse>}
|
|
20
|
+
*/
|
|
21
|
+
async function runAgentMetadataValidation(
|
|
22
|
+
dataplaneUrl,
|
|
23
|
+
sourceIdOrKey,
|
|
24
|
+
authConfig,
|
|
25
|
+
body = {},
|
|
26
|
+
opts = {}
|
|
27
|
+
) {
|
|
28
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
29
|
+
const requestOpts = { body };
|
|
30
|
+
if (opts.timeoutMs !== undefined && opts.timeoutMs !== null) {
|
|
31
|
+
requestOpts.timeoutMs = opts.timeoutMs;
|
|
32
|
+
}
|
|
33
|
+
return await client.post(
|
|
34
|
+
`/api/v1/external/${encodeURIComponent(sourceIdOrKey)}/agent-metadata-validation`,
|
|
35
|
+
requestOpts
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Get latest agent metadata validation result.
|
|
41
|
+
* GET /api/v1/external/{sourceIdOrKey}/agent-validation
|
|
42
|
+
* @requiresPermission {Dataplane} external-data-source:read
|
|
43
|
+
* @async
|
|
44
|
+
* @function getLatestAgentMetadataValidation
|
|
45
|
+
* @param {string} dataplaneUrl - Dataplane base URL
|
|
46
|
+
* @param {string} sourceIdOrKey - Datasource key or ID
|
|
47
|
+
* @param {Object} authConfig - Authentication configuration
|
|
48
|
+
* @returns {Promise<import('./types/agent-metadata-validation.types').AgentMetadataValidationResult>}
|
|
49
|
+
*/
|
|
50
|
+
async function getLatestAgentMetadataValidation(
|
|
51
|
+
dataplaneUrl,
|
|
52
|
+
sourceIdOrKey,
|
|
53
|
+
authConfig,
|
|
54
|
+
opts = {}
|
|
55
|
+
) {
|
|
56
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
57
|
+
const requestOpts = {};
|
|
58
|
+
if (opts.timeoutMs !== undefined && opts.timeoutMs !== null) {
|
|
59
|
+
requestOpts.timeoutMs = opts.timeoutMs;
|
|
60
|
+
}
|
|
61
|
+
return await client.get(
|
|
62
|
+
`/api/v1/external/${encodeURIComponent(sourceIdOrKey)}/agent-validation`,
|
|
63
|
+
requestOpts
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* List agent metadata validation history.
|
|
69
|
+
* GET /api/v1/external/{sourceIdOrKey}/agent-validation/history
|
|
70
|
+
* @requiresPermission {Dataplane} external-data-source:read
|
|
71
|
+
* @async
|
|
72
|
+
* @function listAgentMetadataValidationHistory
|
|
73
|
+
* @param {string} dataplaneUrl - Dataplane base URL
|
|
74
|
+
* @param {string} sourceIdOrKey - Datasource key or ID
|
|
75
|
+
* @param {Object} authConfig - Authentication configuration
|
|
76
|
+
* @returns {Promise<import('./types/agent-metadata-validation.types').AgentMetadataValidationHistoryItem[]>}
|
|
77
|
+
*/
|
|
78
|
+
async function listAgentMetadataValidationHistory(
|
|
79
|
+
dataplaneUrl,
|
|
80
|
+
sourceIdOrKey,
|
|
81
|
+
authConfig
|
|
82
|
+
) {
|
|
83
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
84
|
+
return await client.get(
|
|
85
|
+
`/api/v1/external/${encodeURIComponent(sourceIdOrKey)}/agent-validation/history`
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
module.exports = {
|
|
90
|
+
runAgentMetadataValidation,
|
|
91
|
+
getLatestAgentMetadataValidation,
|
|
92
|
+
listAgentMetadataValidationHistory
|
|
93
|
+
};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Shared helpers for dataplane audit API responses
|
|
3
|
+
* @author AI Fabrix Team
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
const { unwrapApiData } = require('../utils/external-system-readiness-core');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @param {*} res
|
|
13
|
+
* @throws {Error}
|
|
14
|
+
*/
|
|
15
|
+
function assertAuditApiSuccess(res) {
|
|
16
|
+
if (!res || typeof res !== 'object') {
|
|
17
|
+
throw new Error('Audit API returned an empty response');
|
|
18
|
+
}
|
|
19
|
+
if (res.success === false) {
|
|
20
|
+
const msg =
|
|
21
|
+
(res.error && (res.error.formattedError || res.error.error || res.error.message)) ||
|
|
22
|
+
res.formattedError ||
|
|
23
|
+
'Audit API request failed';
|
|
24
|
+
const err = new Error(msg);
|
|
25
|
+
if (res.status) err.status = res.status;
|
|
26
|
+
throw err;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @param {*} res
|
|
32
|
+
* @returns {{ data: Array, meta: Object|null, raw: Object|null }}
|
|
33
|
+
*/
|
|
34
|
+
function unwrapPaginatedAuditList(res) {
|
|
35
|
+
assertAuditApiSuccess(res);
|
|
36
|
+
const body = unwrapApiData(res);
|
|
37
|
+
if (!body || typeof body !== 'object') {
|
|
38
|
+
return { data: [], meta: null, raw: null };
|
|
39
|
+
}
|
|
40
|
+
const data = Array.isArray(body.data)
|
|
41
|
+
? body.data
|
|
42
|
+
: Array.isArray(body.items)
|
|
43
|
+
? body.items
|
|
44
|
+
: [];
|
|
45
|
+
const meta = body.meta && typeof body.meta === 'object' ? body.meta : null;
|
|
46
|
+
return { data, meta, raw: body };
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Unwrap execution sub-resource envelope `{ root: T }`.
|
|
51
|
+
* @param {*} res
|
|
52
|
+
* @returns {*|null}
|
|
53
|
+
*/
|
|
54
|
+
function unwrapExecutionSubresource(res) {
|
|
55
|
+
assertAuditApiSuccess(res);
|
|
56
|
+
const body = unwrapApiData(res);
|
|
57
|
+
if (body === null || body === undefined) return null;
|
|
58
|
+
if (typeof body === 'object' && Object.prototype.hasOwnProperty.call(body, 'root')) {
|
|
59
|
+
return body.root;
|
|
60
|
+
}
|
|
61
|
+
return body;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
module.exports = {
|
|
65
|
+
assertAuditApiSuccess,
|
|
66
|
+
unwrapPaginatedAuditList,
|
|
67
|
+
unwrapExecutionSubresource
|
|
68
|
+
};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Dataplane audit read API (Plan 407.1 / 407.3 evidence matrix)
|
|
3
|
+
* @author AI Fabrix Team
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
const { createDataplaneApiClient } = require('./index');
|
|
10
|
+
const { unwrapPaginatedAuditList, unwrapExecutionSubresource } = require('./audit-api-helpers');
|
|
11
|
+
|
|
12
|
+
const AUDIT_BASE = '/api/v1/audit';
|
|
13
|
+
const DEFAULT_PAGE_SIZE = 100;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @param {string} dataplaneUrl
|
|
17
|
+
* @param {Object} authConfig
|
|
18
|
+
* @param {Object} [query]
|
|
19
|
+
* @returns {Promise<{ data: import('./types/audit.types').AuditExecutionListItem[], meta: import('./types/audit.types').AuditListMeta|null }>}
|
|
20
|
+
* @requiresPermission {Dataplane} audit:read
|
|
21
|
+
*/
|
|
22
|
+
async function queryExecutions(dataplaneUrl, authConfig, query = {}) {
|
|
23
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
24
|
+
const res = await client.get(`${AUDIT_BASE}/executions`, {
|
|
25
|
+
params: {
|
|
26
|
+
page: 1,
|
|
27
|
+
pageSize: DEFAULT_PAGE_SIZE,
|
|
28
|
+
...query
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
return unwrapPaginatedAuditList(res);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @requiresPermission {Dataplane} audit:read
|
|
36
|
+
*/
|
|
37
|
+
async function queryRbacDecisions(dataplaneUrl, authConfig, query = {}) {
|
|
38
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
39
|
+
const res = await client.get(`${AUDIT_BASE}/rbac-decisions`, {
|
|
40
|
+
params: {
|
|
41
|
+
page: 1,
|
|
42
|
+
pageSize: DEFAULT_PAGE_SIZE,
|
|
43
|
+
sort: '-timestamp',
|
|
44
|
+
...query
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return unwrapPaginatedAuditList(res);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @requiresPermission {Dataplane} audit:read
|
|
52
|
+
*/
|
|
53
|
+
async function queryAbacTraces(dataplaneUrl, authConfig, query = {}) {
|
|
54
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
55
|
+
const res = await client.get(`${AUDIT_BASE}/abac-traces`, {
|
|
56
|
+
params: {
|
|
57
|
+
page: 1,
|
|
58
|
+
pageSize: DEFAULT_PAGE_SIZE,
|
|
59
|
+
...query
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
return unwrapPaginatedAuditList(res);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @requiresPermission {Dataplane} audit:read
|
|
67
|
+
*/
|
|
68
|
+
async function getExecutionRbac(dataplaneUrl, authConfig, executionId) {
|
|
69
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
70
|
+
const res = await client.get(`${AUDIT_BASE}/executions/${executionId}/rbac`);
|
|
71
|
+
return unwrapExecutionSubresource(res);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @requiresPermission {Dataplane} audit:read
|
|
76
|
+
*/
|
|
77
|
+
async function getExecutionAbac(dataplaneUrl, authConfig, executionId) {
|
|
78
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
79
|
+
const res = await client.get(`${AUDIT_BASE}/executions/${executionId}/abac`);
|
|
80
|
+
return unwrapExecutionSubresource(res);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @requiresPermission {Dataplane} audit:read
|
|
85
|
+
*/
|
|
86
|
+
async function getExecutionTrace(dataplaneUrl, authConfig, executionId) {
|
|
87
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
88
|
+
const res = await client.get(`${AUDIT_BASE}/executions/${executionId}/trace`);
|
|
89
|
+
return unwrapExecutionSubresource(res);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @requiresPermission {Dataplane} audit:read
|
|
94
|
+
*/
|
|
95
|
+
async function getExecutionSteps(dataplaneUrl, authConfig, executionId) {
|
|
96
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
97
|
+
const res = await client.get(`${AUDIT_BASE}/executions/${executionId}/steps`);
|
|
98
|
+
return unwrapExecutionSubresource(res);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* @requiresPermission {Dataplane} audit:read
|
|
103
|
+
*/
|
|
104
|
+
async function getExecutionErrors(dataplaneUrl, authConfig, executionId) {
|
|
105
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
106
|
+
const res = await client.get(`${AUDIT_BASE}/executions/${executionId}/errors`);
|
|
107
|
+
return unwrapExecutionSubresource(res);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
module.exports = {
|
|
111
|
+
queryExecutions,
|
|
112
|
+
queryRbacDecisions,
|
|
113
|
+
queryAbacTraces,
|
|
114
|
+
getExecutionRbac,
|
|
115
|
+
getExecutionAbac,
|
|
116
|
+
getExecutionTrace,
|
|
117
|
+
getExecutionSteps,
|
|
118
|
+
getExecutionErrors
|
|
119
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Controller auth/RBAC cache API
|
|
3
|
+
* @author AI Fabrix Team
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
const { ApiClient } = require('./index');
|
|
10
|
+
|
|
11
|
+
const CLEAR_PATH = '/api/v1/auth/cache/clear';
|
|
12
|
+
const INVALIDATE_PATH = '/api/v1/auth/cache/invalidate';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Clear all controller cache entries
|
|
16
|
+
* @requiresPermission {Controller} cache:admin
|
|
17
|
+
* @async
|
|
18
|
+
* @param {string} controllerUrl
|
|
19
|
+
* @param {Object} authConfig
|
|
20
|
+
* @returns {Promise<Object>}
|
|
21
|
+
*/
|
|
22
|
+
async function clearAuthCache(controllerUrl, authConfig) {
|
|
23
|
+
const client = new ApiClient(controllerUrl, authConfig);
|
|
24
|
+
return await client.post(CLEAR_PATH);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Invalidate cache entries matching a pattern
|
|
29
|
+
* @requiresPermission {Controller} cache:admin
|
|
30
|
+
* @async
|
|
31
|
+
* @param {string} controllerUrl
|
|
32
|
+
* @param {Object} authConfig
|
|
33
|
+
* @param {string} pattern
|
|
34
|
+
* @returns {Promise<Object>}
|
|
35
|
+
*/
|
|
36
|
+
async function invalidateAuthCache(controllerUrl, authConfig, pattern) {
|
|
37
|
+
const client = new ApiClient(controllerUrl, authConfig);
|
|
38
|
+
return await client.post(INVALIDATE_PATH, { body: { pattern } });
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
module.exports = {
|
|
42
|
+
clearAuthCache,
|
|
43
|
+
invalidateAuthCache
|
|
44
|
+
};
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @version 2.0.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
const {
|
|
7
|
+
const { createDataplaneApiClient } = require('./index');
|
|
8
8
|
const { normalizeDataplaneAuth } = require('./validation-run.api');
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -36,7 +36,7 @@ function dataplaneAuthForBearerGet(authConfig) {
|
|
|
36
36
|
* @returns {Promise<Object>} API envelope `{ success, data?, status, ... }`
|
|
37
37
|
*/
|
|
38
38
|
async function getActiveIntegrationCertificate(dataplaneUrl, authConfig, systemKey, datasourceKey) {
|
|
39
|
-
const client =
|
|
39
|
+
const client = createDataplaneApiClient(dataplaneUrl, dataplaneAuthForBearerGet(authConfig));
|
|
40
40
|
const path = `/api/v1/systems/${encodeURIComponent(systemKey)}/datasources/${encodeURIComponent(
|
|
41
41
|
datasourceKey
|
|
42
42
|
)}/certificates/active`;
|
|
@@ -54,7 +54,7 @@ async function getActiveIntegrationCertificate(dataplaneUrl, authConfig, systemK
|
|
|
54
54
|
* @returns {Promise<Object>}
|
|
55
55
|
*/
|
|
56
56
|
async function listIntegrationCertificates(dataplaneUrl, authConfig, params = {}) {
|
|
57
|
-
const client =
|
|
57
|
+
const client = createDataplaneApiClient(dataplaneUrl, dataplaneAuthForBearerGet(authConfig));
|
|
58
58
|
return await client.get('/api/v1/certificates', { params });
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -69,7 +69,7 @@ async function listIntegrationCertificates(dataplaneUrl, authConfig, params = {}
|
|
|
69
69
|
* @returns {Promise<Object>}
|
|
70
70
|
*/
|
|
71
71
|
async function verifyIntegrationCertificate(dataplaneUrl, authConfig, body) {
|
|
72
|
-
const client =
|
|
72
|
+
const client = createDataplaneApiClient(dataplaneUrl, dataplaneAuthForBearerGet(authConfig));
|
|
73
73
|
return await client.post('/api/v1/certificates/verify', { body: body || {} });
|
|
74
74
|
}
|
|
75
75
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @version 2.0.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
const {
|
|
7
|
+
const { createDataplaneApiClient } = require('./index');
|
|
8
8
|
|
|
9
9
|
const CREDENTIAL_SECRET_ENDPOINT = '/api/v1/credential/secret';
|
|
10
10
|
|
|
@@ -29,7 +29,7 @@ async function storeCredentialSecrets(dataplaneUrl, authConfig, items) {
|
|
|
29
29
|
if (!items || !Array.isArray(items) || items.length === 0) {
|
|
30
30
|
return { stored: 0 };
|
|
31
31
|
}
|
|
32
|
-
const client =
|
|
32
|
+
const client = createDataplaneApiClient(dataplaneUrl, authConfig);
|
|
33
33
|
return await client.post(CREDENTIAL_SECRET_ENDPOINT, {
|
|
34
34
|
body: items
|
|
35
35
|
});
|