@aifabrix/builder 2.45.5 → 2.46.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/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 +130 -0
- package/jest.projects.js +41 -136
- package/lib/api/api-response-errors.js +124 -0
- package/lib/api/governance-scenario-pack.api.js +159 -0
- package/lib/api/index.js +43 -3
- package/lib/api/lifecycle.api.js +77 -0
- package/lib/api/pipeline.api.js +3 -1
- package/lib/api/records-bulk.api.js +14 -1
- package/lib/api/validation-runner.js +3 -1
- package/lib/app/deploy-config.js +4 -1
- package/lib/app/down.js +20 -1
- 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/build/index.js +5 -0
- package/lib/certification/sync-system-certification.js +13 -6
- package/lib/cli/index.js +4 -0
- 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 +28 -2
- 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.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 +22 -2
- package/lib/cli/setup-utility-repair.js +198 -0
- package/lib/cli/setup-utility-resolve.js +40 -4
- package/lib/cli/setup-utility-validate.js +197 -0
- package/lib/cli/setup-utility.js +4 -239
- package/lib/commands/auth-status-client-tokens.js +214 -0
- package/lib/commands/auth-status-dataplane-version.js +58 -20
- package/lib/commands/auth-status.js +41 -47
- 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 +7 -7
- 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/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 +127 -0
- package/lib/commands/repair-changed-files.js +41 -0
- package/lib/commands/repair-datasource-keys.js +4 -1
- package/lib/commands/repair-datasource-run.js +59 -0
- package/lib/commands/repair-datasource-test-payload.js +259 -0
- package/lib/commands/repair-datasource.js +1 -51
- package/lib/commands/repair-env-template.js +64 -13
- package/lib/commands/repair-external-run.js +216 -0
- package/lib/commands/repair-openapi-sync.js +23 -0
- package/lib/commands/repair-persist.js +4 -0
- package/lib/commands/repair-rbac.js +52 -1
- package/lib/commands/repair-steps.js +145 -0
- package/lib/commands/repair.js +29 -296
- 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 +67 -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 +20 -21
- package/lib/commands/up-common.js +25 -13
- package/lib/commands/up-dataplane.js +50 -13
- package/lib/commands/upload-publish-context.js +75 -0
- package/lib/commands/upload-sidecar-followups.js +89 -0
- package/lib/commands/upload.js +90 -108
- 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 +70 -0
- package/lib/commands/verify-trust-external.js +67 -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 +55 -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/datasource-load-export-context.js +3 -0
- package/lib/datasource/log-cleaner.js +2 -2
- package/lib/datasource/log-viewer.js +8 -8
- 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/deployment/environment-poll-status.js +138 -0
- package/lib/deployment/environment.js +42 -34
- package/lib/external-system/download.js +21 -20
- package/lib/external-system/generator.js +5 -1
- 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 +6 -6
- package/lib/generator/external-controller-manifest.js +15 -0
- 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/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.js +471 -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/schema/application-schema.json +1 -1
- package/lib/schema/datasource-test-run.schema.json +89 -6
- package/lib/schema/external-datasource.schema.json +2636 -2622
- package/lib/schema/external-system.schema.json +1089 -761
- package/lib/schema/infra.parameter.yaml +45 -0
- package/lib/schema/type/credential-field-registry.json +103 -97
- 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/cli-secrets-error-format.js +83 -21
- package/lib/utils/cli-utils.js +16 -4
- package/lib/utils/compose-generate-docker-compose.js +4 -0
- package/lib/utils/compose-traefik-ingress-base.js +16 -1
- package/lib/utils/config-secrets-path.js +46 -0
- package/lib/utils/controller-url.js +88 -1
- package/lib/utils/credential-secrets-env.js +137 -9
- package/lib/utils/dataplane-resolver.js +129 -2
- package/lib/utils/declarative-url-ports.js +3 -3
- package/lib/utils/deployment-auth-mode.js +41 -0
- package/lib/utils/developer-volume-id.js +33 -0
- 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 +1 -0
- package/lib/utils/external-system-readiness-core.js +10 -0
- package/lib/utils/external-system-readiness-display.js +80 -23
- package/lib/utils/health-check.js +4 -1
- package/lib/utils/help-builder.js +11 -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/pipeline-upload-auth-retry.js +82 -0
- package/lib/utils/platform-controller-url.js +156 -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/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/package.json +1 -1
- package/templates/applications/dataplane/application.yaml +2 -1
- package/templates/applications/dataplane/env.template +24 -1
- package/templates/applications/miso-controller/env.template +16 -0
- package/templates/external-system/README.md.hbs +74 -17
- package/templates/python/docker-compose.hbs +19 -18
- package/templates/typescript/docker-compose.hbs +18 -17
- package/lib/commands/test-governance-command-action.js +0 -55
- package/lib/commands/test-trust-command-action.js +0 -118
|
@@ -7,6 +7,8 @@ alwaysApply: false
|
|
|
7
7
|
|
|
8
8
|
When you touch **CLI surface** (`bin/aifabrix.js`, `lib/cli.js`, `lib/cli/**`, `lib/commands/**`) or **shared CLI formatters**, you must keep behavior aligned with the canonical docs in this folder.
|
|
9
9
|
|
|
10
|
+
**Product-neutral copy:** User-facing help, errors, and warnings must not reference internal plan IDs or hardcode lab-only integration names in generic code. See [cli-product-neutral.mdc](./cli-product-neutral.mdc).
|
|
11
|
+
|
|
10
12
|
## Sources of truth (read before shipping)
|
|
11
13
|
|
|
12
14
|
| Document | Role |
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Apply when changing aifabrix CLI code, help text, errors, or user-facing docs under docs/commands. Keeps product output free of internal plans, training labs, and hardcoded integration names.
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# CLI product-neutral output (Builder)
|
|
7
|
+
|
|
8
|
+
The **aifabrix** CLI is a **product**. User-visible strings must not encode internal engineering artifacts.
|
|
9
|
+
|
|
10
|
+
## Forbidden in product paths
|
|
11
|
+
|
|
12
|
+
Applies to **`lib/cli/**`**, **`lib/commands/**`**, CLI help (Commander `.description()` / `.option()` / `addHelpText`), **`lib/utils/*-error*.js`**, terminal messages from **`lib/utils/cli-*`**, and **`docs/commands/**`** (see [docs-rules.mdc](./docs-rules.mdc)).
|
|
13
|
+
|
|
14
|
+
| Do not use | Use instead |
|
|
15
|
+
| ---------- | ----------- |
|
|
16
|
+
| Internal plan IDs (`Plan 331`, `plan 148`, `BK-1`) | User terms: *active datasource schema guards*, *schema replacement*, *overlap* |
|
|
17
|
+
| Training / lab-only system keys baked into `if` branches (`sharepoint-e2e`, `hubspot-demo` in runtime logic) | **Dynamic** behavior from `systemKey`, `appName`, manifest, env.template, or secrets map |
|
|
18
|
+
| Hardcoded vendor or connector names in generic helpers | Generic rules (path suffix, namespace, configuration keys from disk) |
|
|
19
|
+
| Cursor plan file paths in errors or help | Link only in `.cursor/plans/` and contributor docs |
|
|
20
|
+
|
|
21
|
+
**Examples in docs/commands** may name real apps (`hubspot-e2e`) when illustrating a command; **library code** must not special-case those names unless the user passed them as arguments.
|
|
22
|
+
|
|
23
|
+
## Required patterns
|
|
24
|
+
|
|
25
|
+
- **Missing `kv://` secrets:** Compare requested paths to the loaded secrets map generically (e.g. same path segment under a different namespace). Never hardcode `sharepoint` / `sharepoint-e2e` (or any other lab pair) in `lib/`.
|
|
26
|
+
- **`--force` messaging:** Describe dataplane behavior (*bypass active-datasource schema replacement guards*), not internal plan numbers. Do **not** append extra CLI hints by matching English substrings on API errors — the dataplane pipeline already returns remediation in the 400 body when schema replacement is blocked.
|
|
27
|
+
- **No `upload-pipeline-error-hints`-style modules:** Prefer forwarding `formatApiError` output; optional hints belong in the API contract, not duplicated heuristics in the CLI.
|
|
28
|
+
- **Auth / pipeline errors:** Describe what the user can do (`aifabrix login`, `AIFABRIX_DEPLOYMENT_AUTH=client-credentials`), not ticket or plan IDs.
|
|
29
|
+
- **JSDoc `@fileoverview`:** No plan numbers; optional brief behavior description only.
|
|
30
|
+
|
|
31
|
+
## Verification
|
|
32
|
+
|
|
33
|
+
Before merging CLI UX changes:
|
|
34
|
+
|
|
35
|
+
1. `rg -i 'plan [0-9]|BK-[0-9]|sharepoint-e2e' lib/cli lib/commands lib/utils --glob '*.js'` → no matches in generic helpers (fixture strings in tests are OK).
|
|
36
|
+
2. New error hints must work for **any** integration folder name the user owns.
|
|
37
|
+
3. [cli-layout.mdc](./cli-layout.mdc) and [docs-rules.mdc](./docs-rules.mdc) still apply for glyphs and user-doc scope.
|
|
38
|
+
|
|
39
|
+
## Related
|
|
40
|
+
|
|
41
|
+
- [cli-layout.mdc](./cli-layout.mdc) — terminal layout and output profiles
|
|
42
|
+
- [docs-rules.mdc](./docs-rules.mdc) — public CLI documentation audience
|
|
43
|
+
- [project-rules.mdc](./project-rules.mdc) — ISO / security baseline
|
|
@@ -894,6 +894,7 @@ Define request/response types using JSDoc `@typedef`:
|
|
|
894
894
|
|
|
895
895
|
### Must Not Do (❌)
|
|
896
896
|
- ❌ Never hardcode secrets, passwords, or tokens
|
|
897
|
+
- ❌ Never hardcode lab/training integration names, vendor names, or internal plan IDs in generic CLI/helpers (`lib/commands/**`, `lib/cli/**`, shared `lib/utils/*-error*.js`); use dynamic keys from user input, manifests, and secrets — see [cli-product-neutral.mdc](cli-product-neutral.mdc)
|
|
897
898
|
- ❌ Never expose sensitive data in error messages
|
|
898
899
|
- ❌ Never use synchronous file operations in async functions (unless necessary)
|
|
899
900
|
- ❌ Never ignore errors or use empty catch blocks
|
package/README.md
CHANGED
|
@@ -23,12 +23,12 @@ Open developer runtime for AI Fabrix ecosystem. Install the AI Fabrix platform a
|
|
|
23
23
|
## Prerequisites
|
|
24
24
|
|
|
25
25
|
- **Node.js 18+** – Recommended for running the CLI.
|
|
26
|
-
- **
|
|
27
|
-
- **Secrets before platform:** Add
|
|
26
|
+
- **Docker Desktop** – Full access to Docker (containers for infra and platform).
|
|
27
|
+
- **Secrets before platform:** Add an AI tool key (OpenAI or Azure OpenAI) in setup or with `aifabrix secret set` **before** the platform needs them. See [Infrastructure](docs/infrastructure.md).
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
-
## Install
|
|
31
|
+
## Install the CLI
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
34
|
npm install -g @aifabrix/builder
|
|
@@ -38,33 +38,59 @@ npm install -g @aifabrix/builder
|
|
|
38
38
|
|
|
39
39
|
---
|
|
40
40
|
|
|
41
|
-
## Goal 1:
|
|
41
|
+
## Goal 1: Install the platform (one command)
|
|
42
42
|
|
|
43
|
-
Get
|
|
44
|
-
|
|
45
|
-
**One-shot install:**
|
|
43
|
+
Get Postgres, Redis, Keycloak, Miso Controller, and Dataplane running on your machine.
|
|
46
44
|
|
|
47
45
|
```bash
|
|
48
46
|
aifabrix setup
|
|
49
47
|
```
|
|
50
48
|
|
|
51
|
-
|
|
49
|
+
That is the whole story for most developers. The command detects whether infra is already running:
|
|
50
|
+
|
|
51
|
+
| Situation | What happens |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| **Fresh machine** | Short wizard → pull images → `up-infra` → `up-platform` |
|
|
54
|
+
| **Already installed** | Mode menu (3 choices): **re-install** (destroys volumes), **wipe data** (DBs only), or **update images** (keeps data) — each path pulls fresh Docker images before restart |
|
|
55
|
+
|
|
56
|
+
**Grab a coffee** — setup pulls infrastructure and platform images (a few minutes on first run or after image updates). When setup finishes, the CLI stores **`platform-controller`** in `config.yaml` (absolute Miso URL for your machine). Sign in with username **`admin`** and your admin password. If you were already logged in to that controller URL, setup keeps your session; otherwise it prompts for device login like a fresh install.
|
|
57
|
+
|
|
58
|
+
**Controller URL:** Local Docker without Traefik uses `http://localhost:` + port `3000 + developerId×100`. With Traefik and `remote-server`, use the public URL shown in the **Platform Ready** footer (path `/miso/*`). See [Infrastructure guide](docs/infrastructure.md#install-the-platform-one-command).
|
|
59
|
+
|
|
60
|
+
→ Step-by-step detail, ports, and **dev / pro** installation profiles: **[Infrastructure guide](docs/infrastructure.md#install-the-platform-one-command)**
|
|
61
|
+
|
|
62
|
+
### Dev vs pro installation (setup profile)
|
|
63
|
+
|
|
64
|
+
These names match how we talk about **environments** elsewhere (**dev**, **tst**, **pro**). Here they mean **how you install locally**, not which cloud environment you deploy to later.
|
|
65
|
+
|
|
66
|
+
| Profile | Best for | Admin email | Admin passwords |
|
|
67
|
+
| --- | --- | --- | --- |
|
|
68
|
+
| **dev** (default) | Local development, training, labs | You enter once | **One password** for Postgres, pgAdmin, Keycloak, and platform login |
|
|
69
|
+
| **pro** | Production-style or hardened installs | Same | **Autogenerate** strong passwords (shown once) **or** enter manually |
|
|
52
70
|
|
|
53
|
-
|
|
71
|
+
**Default:** **dev** (one email, one password). **Pro** is available in the setup wizard or non-interactively:
|
|
54
72
|
|
|
55
|
-
|
|
73
|
+
```bash
|
|
74
|
+
aifabrix setup --installation pro --pro-password-mode autogen
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Use `--pro-password-mode manual` to enter passwords yourself (one password for all roles, or separate infra / Keycloak / platform passwords via `up-infra` flags).
|
|
78
|
+
|
|
79
|
+
Admin credentials are stored in **`~/.aifabrix/admin-secrets.env`** (encrypted when you configure a secrets encryption key). App and integration secrets stay in **`~/.aifabrix/secrets.local.yaml`**.
|
|
80
|
+
|
|
81
|
+
### Optional: set AI keys outside the wizard
|
|
82
|
+
|
|
83
|
+
- **OpenAI:**
|
|
56
84
|
```bash
|
|
57
85
|
aifabrix secret set secrets-openaiApiKeyVault <your-openai-secret-key>
|
|
58
86
|
```
|
|
59
|
-
- **Azure OpenAI:**
|
|
87
|
+
- **Azure OpenAI:**
|
|
60
88
|
```bash
|
|
61
89
|
aifabrix secret set azure-openaiapi-urlKeyVault <your-azure-openai-endpoint-url>
|
|
62
90
|
aifabrix secret set secrets-azureOpenaiApiKeyVault <your-azure-openai-secret-key>
|
|
63
91
|
```
|
|
64
92
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
→ [Infrastructure guide](docs/infrastructure.md)
|
|
93
|
+
Remove the platform completely: `aifabrix teardown`. Command details: [Infrastructure commands](docs/commands/infrastructure.md#aifabrix-setup).
|
|
68
94
|
|
|
69
95
|
---
|
|
70
96
|
|
|
@@ -72,7 +98,7 @@ Secrets are stored in `~/.aifabrix/secrets.local.yaml` or the file from `aifabri
|
|
|
72
98
|
|
|
73
99
|
Create and deploy an external system (e.g. HubSpot): wizard or manual setup, then validate and deploy.
|
|
74
100
|
|
|
75
|
-
**Example: HubSpot
|
|
101
|
+
**Example: HubSpot:**
|
|
76
102
|
|
|
77
103
|
- Create: `aifabrix create hubspot-test` (external is the default; or `aifabrix wizard` for guided setup). For a web app use `aifabrix create my-app --type webapp`.
|
|
78
104
|
- Configure auth and datasources under `integration/hubspot-test/`.
|
|
@@ -96,7 +122,7 @@ Create, configure, and run your own AI Fabrix application locally or deploy it (
|
|
|
96
122
|
All guides and references are listed in **[docs/README.md](docs/README.md)** (table of contents).
|
|
97
123
|
|
|
98
124
|
- [CLI Commands Reference](docs/commands/README.md) – All commands
|
|
99
|
-
- [Infrastructure](docs/infrastructure.md) –
|
|
125
|
+
- [Infrastructure](docs/infrastructure.md) – Install the platform, services, dev/pro setup
|
|
100
126
|
- [Configuration reference](docs/configuration/README.md) – Config files (deployment key, application.yaml, env.template, secrets)
|
|
101
127
|
|
|
102
128
|
---
|
|
@@ -111,6 +137,6 @@ All guides and references are listed in **[docs/README.md](docs/README.md)** (ta
|
|
|
111
137
|
|
|
112
138
|
## License
|
|
113
139
|
|
|
114
|
-
© eSystems Nordic Ltd
|
|
140
|
+
© eSystems Nordic Ltd 2026 - All Rights Reserved
|
|
115
141
|
|
|
116
142
|
`@aifabrix/builder` is part of the AI Fabrix platform.
|
|
@@ -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: /workspace/aifabrix-builder/integration/hubspot-test/companies.json
|
|
6
6
|
deployment:
|
|
7
7
|
controller: ${CONTROLLER_URL}
|
|
8
8
|
dataplane: ${DATAPLANE_URL}
|
package/jest.config.default.js
CHANGED
package/jest.config.isolated.js
CHANGED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global Jest hooks and CI guard project for live ~/.aifabrix protection.
|
|
3
|
+
* @fileoverview
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/** Once per Jest process — protects live ~/.aifabrix (incl. /workspace/.aifabrix). */
|
|
7
|
+
const globalLiveFabrixHooks = {
|
|
8
|
+
globalSetup: '<rootDir>/tests/global-live-fabrix-backup.js',
|
|
9
|
+
globalTeardown: '<rootDir>/tests/global-live-fabrix-backup.js'
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @param {object} opts - CI flag and Babel transform config from jest.projects.js
|
|
14
|
+
* @param {boolean} opts.isCI - Whether CI or CI simulation is active
|
|
15
|
+
* @param {object} opts.sharedTransform - Shared babel-jest transform map
|
|
16
|
+
* @returns {object} Jest project configuration
|
|
17
|
+
*/
|
|
18
|
+
function createSetupCiLiveFabrixGuardProject({ isCI, sharedTransform }) {
|
|
19
|
+
return {
|
|
20
|
+
displayName: 'setup-ci-live-fabrix-guard',
|
|
21
|
+
testEnvironment: 'node',
|
|
22
|
+
transform: sharedTransform,
|
|
23
|
+
testMatch: ['**/tests/setup-ci-live-fabrix-guard.test.js'],
|
|
24
|
+
testPathIgnorePatterns: ['/node_modules/', '\\\\node_modules\\\\'],
|
|
25
|
+
setupFiles: ['<rootDir>/tests/capture-real-fs.js', '<rootDir>/tests/setup-ci-env.js'],
|
|
26
|
+
setupFilesAfterEnv: ['<rootDir>/tests/setup.js'],
|
|
27
|
+
testTimeout: isCI ? 15000 : 8000,
|
|
28
|
+
maxWorkers: 1,
|
|
29
|
+
...globalLiveFabrixHooks
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
module.exports = {
|
|
34
|
+
globalLiveFabrixHooks,
|
|
35
|
+
createSetupCiLiveFabrixGuardProject
|
|
36
|
+
};
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jest isolated project list (separate process per suite when run via jest.config.isolated.js).
|
|
3
|
+
* @fileoverview
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
'use strict';
|
|
7
|
+
|
|
8
|
+
const { createSetupCiLiveFabrixGuardProject } = require('./jest.global-live-fabrix-hooks');
|
|
9
|
+
|
|
10
|
+
/** @type {[string, string[]][]} displayName and testMatch globs */
|
|
11
|
+
const ISOLATED_SUITE_ENTRIES = [
|
|
12
|
+
['cli-utils', ['**/tests/lib/utils/cli-utils.test.js']],
|
|
13
|
+
['external-system-display', ['**/tests/lib/utils/external-system-display.test.js']],
|
|
14
|
+
['dev-hosts-helper', ['**/tests/lib/utils/dev-hosts-helper.test.js']],
|
|
15
|
+
['parameters-validate', ['**/tests/lib/commands/parameters-validate.test.js']],
|
|
16
|
+
['test-e2e-external', ['**/tests/lib/commands/test-e2e-external.test.js']],
|
|
17
|
+
['repair-openapi-sync', ['**/tests/lib/commands/repair-openapi-sync.test.js']],
|
|
18
|
+
['paths-app-listing', ['**/tests/lib/utils/paths-app-listing.test.js']],
|
|
19
|
+
['paths-system-builder-resolution', ['**/tests/lib/utils/paths-system-builder-resolution.test.js']],
|
|
20
|
+
['manifest-location', ['**/tests/lib/utils/manifest-location.test.js']],
|
|
21
|
+
['installation-log', ['**/tests/lib/utils/installation-log.test.js']],
|
|
22
|
+
['secrets-ancestor-paths', ['**/tests/lib/utils/secrets-ancestor-paths.test.js']],
|
|
23
|
+
['datasource-validation-watch', ['**/tests/lib/utils/datasource-validation-watch.test.js']],
|
|
24
|
+
[
|
|
25
|
+
'log-viewer',
|
|
26
|
+
[
|
|
27
|
+
'**/tests/lib/datasource/log-viewer.test.js',
|
|
28
|
+
'**/tests/lib/datasource/log-viewer-structural.test.js',
|
|
29
|
+
'**/tests/lib/datasource/log-viewer-run.test.js'
|
|
30
|
+
]
|
|
31
|
+
],
|
|
32
|
+
['audit-evidence-extract', ['**/tests/lib/datasource/audit-evidence-extract.test.js']],
|
|
33
|
+
['manifest-source-emit', ['**/tests/lib/utils/manifest-source-emit.test.js']],
|
|
34
|
+
['register-aifabrix-shell-env', ['**/tests/lib/utils/register-aifabrix-shell-env.test.js']],
|
|
35
|
+
['datasource-test-run-schema-sync', ['**/tests/lib/utils/datasource-test-run-schema-sync.test.js']],
|
|
36
|
+
['infra-platform-contract', ['**/tests/lib/parameters/infra-platform-contract.test.js']],
|
|
37
|
+
[
|
|
38
|
+
'application-frontdoor-paths-contract',
|
|
39
|
+
['**/tests/lib/templates/application-frontdoor-paths.contract.test.js']
|
|
40
|
+
],
|
|
41
|
+
['database-secret-values', ['**/tests/lib/parameters/database-secret-values.test.js']],
|
|
42
|
+
['infra-parameter-validate', ['**/tests/lib/parameters/infra-parameter-validate.test.js']],
|
|
43
|
+
['infra-parameter-catalog', ['**/tests/lib/parameters/infra-parameter-catalog.test.js']],
|
|
44
|
+
['urls-local-registry', ['**/tests/lib/utils/urls-local-registry.test.js']],
|
|
45
|
+
['aifabrix-runtime-config-dir', ['**/tests/lib/utils/aifabrix-runtime-config-dir.test.js']],
|
|
46
|
+
['platform-env-template-kv-catalog', ['**/tests/lib/parameters/platform-env-template-kv-catalog.test.js']],
|
|
47
|
+
['resolve-infra-state-paths', ['**/tests/lib/infrastructure/resolve-infra-state-paths.test.js']],
|
|
48
|
+
['dev-ssh-config-helper', ['**/tests/lib/utils/dev-ssh-config-helper.test.js']],
|
|
49
|
+
['ssh-key-helper', ['**/tests/lib/utils/ssh-key-helper.test.js']],
|
|
50
|
+
['secrets-ensure-catalog-fallback', ['**/tests/lib/core/secrets-ensure-catalog-fallback.test.js']],
|
|
51
|
+
['secrets-ensure', ['**/tests/lib/core/secrets-ensure.test.js']],
|
|
52
|
+
['url-declarative-vdir-inactive-env', ['**/tests/lib/utils/url-declarative-vdir-inactive-env.test.js']],
|
|
53
|
+
[
|
|
54
|
+
'url-declarative-user-cfg-per-app-proxy',
|
|
55
|
+
['**/tests/lib/utils/url-declarative-user-cfg-per-app-proxy.test.js']
|
|
56
|
+
],
|
|
57
|
+
[
|
|
58
|
+
'declarative-url-paths-spy-suites',
|
|
59
|
+
[
|
|
60
|
+
'**/tests/lib/utils/url-declarative-expand-traefik-off-no-usercfg.test.js',
|
|
61
|
+
'**/tests/lib/core/secrets-env-declarative-show-urls.test.js',
|
|
62
|
+
'**/tests/lib/utils/url-declarative-registry-internal-docker-origin.test.js'
|
|
63
|
+
]
|
|
64
|
+
],
|
|
65
|
+
['platform-urls-registry-validation', ['**/tests/lib/commands/platform-urls-registry.validation.test.js']],
|
|
66
|
+
['env-copy-resolve-output', ['**/tests/lib/utils/env-copy-resolve-output.test.js']],
|
|
67
|
+
['write-env-output-reload', ['**/tests/lib/utils/write-env-output-reload.test.js']],
|
|
68
|
+
['app-service-env-from-builder', ['**/tests/lib/utils/app-service-env-from-builder.test.js']],
|
|
69
|
+
['infra-kv-discovery', ['**/tests/lib/parameters/infra-kv-discovery.test.js']],
|
|
70
|
+
['infra-env-defaults', ['**/tests/lib/utils/infra-env-defaults.test.js']],
|
|
71
|
+
['compose-traefik-template', ['**/tests/lib/infrastructure/compose-traefik-template.test.js']],
|
|
72
|
+
['generator-external-rbac', ['**/tests/lib/generator/generator-external-rbac.test.js']],
|
|
73
|
+
['helpers-ensure-admin-secrets', ['**/tests/lib/infrastructure/helpers-ensure-admin-secrets.test.js']],
|
|
74
|
+
['secrets-generator', ['**/tests/lib/utils/secrets-generator.test.js']],
|
|
75
|
+
['ensure-dev-certs-for-remote-docker', ['**/tests/lib/utils/ensure-dev-certs-for-remote-docker.test.js']],
|
|
76
|
+
['generator-error-paths', ['**/tests/lib/generator/generator-error-paths.test.js']],
|
|
77
|
+
['generator-validation', ['**/tests/lib/generator/generator-validation.test.js']],
|
|
78
|
+
['secrets-databaselog', ['**/tests/lib/core/secrets-databaselog.test.js']],
|
|
79
|
+
['schema-241-alignment', ['**/tests/lib/validation/schema-241-alignment.test.js']],
|
|
80
|
+
['schema-resolver-order', ['**/tests/lib/utils/schema-resolver-order.test.js']],
|
|
81
|
+
['app-module', ['**/tests/lib/app/app.test.js']],
|
|
82
|
+
['admin-secrets', ['**/tests/lib/core/admin-secrets.test.js']],
|
|
83
|
+
['validate-datasource-parsed', ['**/tests/lib/datasource/validate-datasource-parsed.test.js']],
|
|
84
|
+
[
|
|
85
|
+
'capability-run-real-fs',
|
|
86
|
+
[
|
|
87
|
+
'**/tests/lib/datasource/run-capability-copy.test.js',
|
|
88
|
+
'**/tests/lib/datasource/run-capability-diff.test.js',
|
|
89
|
+
'**/tests/lib/datasource/run-capability-edit.test.js',
|
|
90
|
+
'**/tests/lib/datasource/run-capability-remove.test.js'
|
|
91
|
+
]
|
|
92
|
+
],
|
|
93
|
+
['log-cleaner', ['**/tests/lib/datasource/log-cleaner.test.js']],
|
|
94
|
+
['datasource-exporter-service', ['**/tests/lib/datasource/datasource-exporter-service.test.js']],
|
|
95
|
+
['protection-paths', ['**/tests/lib/protection/paths.test.js']],
|
|
96
|
+
['protection-resolve', ['**/tests/lib/protection/protection-resolve.test.js']],
|
|
97
|
+
['protection-create-helpers', ['**/tests/lib/protection/run-protection-create-helpers.test.js']],
|
|
98
|
+
[
|
|
99
|
+
'governance-pack-loader',
|
|
100
|
+
[
|
|
101
|
+
'**/tests/lib/governance/governance-pack-loader.test.js',
|
|
102
|
+
'**/tests/lib/lifecycle/scenario-upload.test.js'
|
|
103
|
+
]
|
|
104
|
+
],
|
|
105
|
+
[
|
|
106
|
+
'governance-generate-external',
|
|
107
|
+
['**/tests/lib/commands/governance-generate-external.test.js']
|
|
108
|
+
],
|
|
109
|
+
['protection-validate-batch', ['**/tests/lib/protection/validate-batch.test.js']],
|
|
110
|
+
['aifabrix-runtime-sandbox', ['**/tests/helpers/aifabrix-runtime-sandbox.test.js']],
|
|
111
|
+
['aifabrix-runtime-backup', ['**/tests/helpers/aifabrix-runtime-backup.test.js']],
|
|
112
|
+
['paths-jest-sandbox-integration', ['**/tests/lib/utils/paths-jest-sandbox-integration.test.js']],
|
|
113
|
+
['secrets-remove-all-guard', ['**/tests/lib/commands/secrets-remove-all-guard.test.js']]
|
|
114
|
+
];
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @param {Function} makeIsolatedProject - Factory from jest.projects.js
|
|
118
|
+
* @param {boolean} isCI - True when CI or CI_SIMULATION is set
|
|
119
|
+
* @param {object} sharedTransform - Babel-jest transform shared with default project
|
|
120
|
+
* @returns {object[]} Jest multi-project entries
|
|
121
|
+
*/
|
|
122
|
+
function buildIsolatedProjects(makeIsolatedProject, isCI, sharedTransform) {
|
|
123
|
+
const projects = ISOLATED_SUITE_ENTRIES.map(([name, testMatch]) =>
|
|
124
|
+
makeIsolatedProject(name, testMatch)
|
|
125
|
+
);
|
|
126
|
+
projects.push(createSetupCiLiveFabrixGuardProject({ isCI, sharedTransform }));
|
|
127
|
+
return projects;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
module.exports = { buildIsolatedProjects, ISOLATED_SUITE_ENTRIES };
|
package/jest.projects.js
CHANGED
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
* @fileoverview
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
const { globalLiveFabrixHooks } = require('./jest.global-live-fabrix-hooks');
|
|
8
|
+
const { buildIsolatedProjects } = require('./jest.isolated-projects');
|
|
9
|
+
|
|
7
10
|
// Detect CI environment (GitHub Actions, CI simulation, etc.)
|
|
8
11
|
const isCI = process.env.CI === 'true' || process.env.CI_SIMULATION === 'true';
|
|
9
12
|
|
|
@@ -31,7 +34,7 @@ function makeIsolatedProject(displayName, testMatch) {
|
|
|
31
34
|
testPathIgnorePatterns: ['/node_modules/', '\\\\node_modules\\\\'],
|
|
32
35
|
setupFiles: ['<rootDir>/tests/capture-real-fs.js'],
|
|
33
36
|
setupFilesAfterEnv: ['<rootDir>/tests/setup.js'],
|
|
34
|
-
testTimeout: isCI ?
|
|
37
|
+
testTimeout: isCI ? 15000 : 8000,
|
|
35
38
|
maxWorkers: 1
|
|
36
39
|
};
|
|
37
40
|
}
|
|
@@ -79,10 +82,18 @@ const defaultProject = {
|
|
|
79
82
|
'lib/datasource/log-viewer-structural.test.js',
|
|
80
83
|
'lib/datasource/log-viewer-run.test.js',
|
|
81
84
|
'log-viewer-run\\.test\\.js',
|
|
85
|
+
'/tests/lib/datasource/audit-evidence-extract.test.js',
|
|
86
|
+
'\\\\tests\\\\lib\\\\datasource\\\\audit-evidence-extract.test.js',
|
|
87
|
+
'lib/datasource/audit-evidence-extract.test.js',
|
|
88
|
+
'audit-evidence-extract\\.test\\.js',
|
|
82
89
|
'/tests/lib/commands/parameters-validate.test.js',
|
|
83
90
|
'\\\\tests\\\\lib\\\\commands\\\\parameters-validate.test.js',
|
|
84
91
|
'lib/commands/parameters-validate.test.js',
|
|
85
92
|
'parameters-validate\\.test\\.js',
|
|
93
|
+
'/tests/lib/commands/test-e2e-external.test.js',
|
|
94
|
+
'\\\\tests\\\\lib\\\\commands\\\\test-e2e-external.test.js',
|
|
95
|
+
'lib/commands/test-e2e-external.test.js',
|
|
96
|
+
'test-e2e-external\\.test\\.js',
|
|
86
97
|
'/tests/lib/commands/repair-openapi-sync.test.js',
|
|
87
98
|
'\\\\tests\\\\lib\\\\commands\\\\repair-openapi-sync.test.js',
|
|
88
99
|
'lib/commands/repair-openapi-sync.test.js',
|
|
@@ -221,10 +232,6 @@ const defaultProject = {
|
|
|
221
232
|
'\\\\tests\\\\lib\\\\utils\\\\secrets-generator.test.js',
|
|
222
233
|
'lib/utils/secrets-generator.test.js',
|
|
223
234
|
'secrets-generator\\.test\\.js',
|
|
224
|
-
'/tests/lib/app/app-uncovered-lines.test.js',
|
|
225
|
-
'\\\\tests\\\\lib\\\\app\\\\app-uncovered-lines.test.js',
|
|
226
|
-
'lib/app/app-uncovered-lines.test.js',
|
|
227
|
-
'app-uncovered-lines\\.test\\.js',
|
|
228
235
|
'/tests/lib/utils/ensure-dev-certs-for-remote-docker.test.js',
|
|
229
236
|
'\\\\tests\\\\lib\\\\utils\\\\ensure-dev-certs-for-remote-docker.test.js',
|
|
230
237
|
'lib/utils/ensure-dev-certs-for-remote-docker.test.js',
|
|
@@ -303,10 +310,34 @@ const defaultProject = {
|
|
|
303
310
|
'\\\\tests\\\\lib\\\\governance\\\\governance-pack-loader.test.js',
|
|
304
311
|
'lib/governance/governance-pack-loader.test.js',
|
|
305
312
|
'governance-pack-loader\\.test\\.js',
|
|
313
|
+
'/tests/lib/lifecycle/scenario-upload.test.js',
|
|
314
|
+
'\\\\tests\\\\lib\\\\lifecycle\\\\scenario-upload.test.js',
|
|
315
|
+
'lib/lifecycle/scenario-upload.test.js',
|
|
316
|
+
'scenario-upload\\.test\\.js',
|
|
317
|
+
'/tests/lib/commands/governance-generate-external.test.js',
|
|
318
|
+
'\\\\tests\\\\lib\\\\commands\\\\governance-generate-external.test.js',
|
|
319
|
+
'lib/commands/governance-generate-external.test.js',
|
|
320
|
+
'governance-generate-external\\.test\\.js',
|
|
306
321
|
'/tests/lib/protection/validate-batch.test.js',
|
|
307
322
|
'\\\\tests\\\\lib\\\\protection\\\\validate-batch.test.js',
|
|
308
323
|
'lib/protection/validate-batch.test.js',
|
|
309
|
-
'validate-batch\\.test\\.js'
|
|
324
|
+
'validate-batch\\.test\\.js',
|
|
325
|
+
'/tests/helpers/aifabrix-runtime-sandbox.test.js',
|
|
326
|
+
'\\\\tests\\\\helpers\\\\aifabrix-runtime-sandbox.test.js',
|
|
327
|
+
'helpers/aifabrix-runtime-sandbox\\.test\\.js',
|
|
328
|
+
'/tests/helpers/aifabrix-runtime-backup.test.js',
|
|
329
|
+
'\\\\tests\\\\helpers\\\\aifabrix-runtime-backup.test.js',
|
|
330
|
+
'helpers/aifabrix-runtime-backup\\.test\\.js',
|
|
331
|
+
'/tests/lib/utils/paths-jest-sandbox-integration.test.js',
|
|
332
|
+
'\\\\tests\\\\lib\\\\utils\\\\paths-jest-sandbox-integration.test.js',
|
|
333
|
+
'paths-jest-sandbox-integration\\.test\\.js',
|
|
334
|
+
'/tests/lib/commands/secrets-remove-all-guard.test.js',
|
|
335
|
+
'\\\\tests\\\\lib\\\\commands\\\\secrets-remove-all-guard.test.js',
|
|
336
|
+
'lib/commands/secrets-remove-all-guard.test.js',
|
|
337
|
+
'secrets-remove-all-guard\\.test\\.js',
|
|
338
|
+
'/tests/setup-ci-live-fabrix-guard.test.js',
|
|
339
|
+
'\\\\tests\\\\setup-ci-live-fabrix-guard.test.js',
|
|
340
|
+
'setup-ci-live-fabrix-guard\\.test\\.js'
|
|
310
341
|
];
|
|
311
342
|
if (process.env.INCLUDE_LOCAL_TESTS !== 'true') {
|
|
312
343
|
patterns.push('/tests/local/');
|
|
@@ -316,139 +347,12 @@ const defaultProject = {
|
|
|
316
347
|
})(),
|
|
317
348
|
setupFiles: ['<rootDir>/tests/capture-real-fs.js'],
|
|
318
349
|
setupFilesAfterEnv: ['<rootDir>/tests/setup.js'],
|
|
319
|
-
testTimeout: isCI ?
|
|
350
|
+
testTimeout: isCI ? 15000 : 8000,
|
|
320
351
|
detectOpenHandles: true,
|
|
321
352
|
maxWorkers: 1
|
|
322
353
|
};
|
|
323
354
|
|
|
324
|
-
const isolatedProjects =
|
|
325
|
-
makeIsolatedProject('cli-utils', ['**/tests/lib/utils/cli-utils.test.js']),
|
|
326
|
-
makeIsolatedProject('external-system-display', ['**/tests/lib/utils/external-system-display.test.js']),
|
|
327
|
-
makeIsolatedProject('dev-hosts-helper', ['**/tests/lib/utils/dev-hosts-helper.test.js']),
|
|
328
|
-
makeIsolatedProject('parameters-validate', ['**/tests/lib/commands/parameters-validate.test.js']),
|
|
329
|
-
makeIsolatedProject('repair-openapi-sync', ['**/tests/lib/commands/repair-openapi-sync.test.js']),
|
|
330
|
-
makeIsolatedProject('paths-app-listing', ['**/tests/lib/utils/paths-app-listing.test.js']),
|
|
331
|
-
makeIsolatedProject('paths-system-builder-resolution', [
|
|
332
|
-
'**/tests/lib/utils/paths-system-builder-resolution.test.js'
|
|
333
|
-
]),
|
|
334
|
-
makeIsolatedProject('manifest-location', ['**/tests/lib/utils/manifest-location.test.js']),
|
|
335
|
-
makeIsolatedProject('installation-log', ['**/tests/lib/utils/installation-log.test.js']),
|
|
336
|
-
makeIsolatedProject('secrets-ancestor-paths', ['**/tests/lib/utils/secrets-ancestor-paths.test.js']),
|
|
337
|
-
makeIsolatedProject('datasource-validation-watch', [
|
|
338
|
-
'**/tests/lib/utils/datasource-validation-watch.test.js'
|
|
339
|
-
]),
|
|
340
|
-
makeIsolatedProject('log-viewer', [
|
|
341
|
-
'**/tests/lib/datasource/log-viewer.test.js',
|
|
342
|
-
'**/tests/lib/datasource/log-viewer-structural.test.js',
|
|
343
|
-
'**/tests/lib/datasource/log-viewer-run.test.js'
|
|
344
|
-
]),
|
|
345
|
-
makeIsolatedProject('manifest-source-emit', ['**/tests/lib/utils/manifest-source-emit.test.js']),
|
|
346
|
-
makeIsolatedProject('register-aifabrix-shell-env', [
|
|
347
|
-
'**/tests/lib/utils/register-aifabrix-shell-env.test.js'
|
|
348
|
-
]),
|
|
349
|
-
makeIsolatedProject('datasource-test-run-schema-sync', [
|
|
350
|
-
'**/tests/lib/utils/datasource-test-run-schema-sync.test.js'
|
|
351
|
-
]),
|
|
352
|
-
makeIsolatedProject('infra-platform-contract', [
|
|
353
|
-
'**/tests/lib/parameters/infra-platform-contract.test.js'
|
|
354
|
-
]),
|
|
355
|
-
makeIsolatedProject('application-frontdoor-paths-contract', [
|
|
356
|
-
'**/tests/lib/templates/application-frontdoor-paths.contract.test.js'
|
|
357
|
-
]),
|
|
358
|
-
makeIsolatedProject('database-secret-values', [
|
|
359
|
-
'**/tests/lib/parameters/database-secret-values.test.js'
|
|
360
|
-
]),
|
|
361
|
-
makeIsolatedProject('infra-parameter-validate', [
|
|
362
|
-
'**/tests/lib/parameters/infra-parameter-validate.test.js'
|
|
363
|
-
]),
|
|
364
|
-
makeIsolatedProject('infra-parameter-catalog', [
|
|
365
|
-
'**/tests/lib/parameters/infra-parameter-catalog.test.js'
|
|
366
|
-
]),
|
|
367
|
-
makeIsolatedProject('urls-local-registry', ['**/tests/lib/utils/urls-local-registry.test.js']),
|
|
368
|
-
makeIsolatedProject('aifabrix-runtime-config-dir', [
|
|
369
|
-
'**/tests/lib/utils/aifabrix-runtime-config-dir.test.js'
|
|
370
|
-
]),
|
|
371
|
-
makeIsolatedProject('platform-env-template-kv-catalog', [
|
|
372
|
-
'**/tests/lib/parameters/platform-env-template-kv-catalog.test.js'
|
|
373
|
-
]),
|
|
374
|
-
makeIsolatedProject('resolve-infra-state-paths', [
|
|
375
|
-
'**/tests/lib/infrastructure/resolve-infra-state-paths.test.js'
|
|
376
|
-
]),
|
|
377
|
-
makeIsolatedProject('dev-ssh-config-helper', [
|
|
378
|
-
'**/tests/lib/utils/dev-ssh-config-helper.test.js'
|
|
379
|
-
]),
|
|
380
|
-
makeIsolatedProject('ssh-key-helper', ['**/tests/lib/utils/ssh-key-helper.test.js']),
|
|
381
|
-
makeIsolatedProject('secrets-ensure-catalog-fallback', [
|
|
382
|
-
'**/tests/lib/core/secrets-ensure-catalog-fallback.test.js'
|
|
383
|
-
]),
|
|
384
|
-
makeIsolatedProject('secrets-ensure', ['**/tests/lib/core/secrets-ensure.test.js']),
|
|
385
|
-
makeIsolatedProject('url-declarative-vdir-inactive-env', [
|
|
386
|
-
'**/tests/lib/utils/url-declarative-vdir-inactive-env.test.js'
|
|
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']),
|
|
401
|
-
makeIsolatedProject('app-service-env-from-builder', [
|
|
402
|
-
'**/tests/lib/utils/app-service-env-from-builder.test.js'
|
|
403
|
-
]),
|
|
404
|
-
makeIsolatedProject('infra-kv-discovery', ['**/tests/lib/parameters/infra-kv-discovery.test.js']),
|
|
405
|
-
makeIsolatedProject('infra-env-defaults', ['**/tests/lib/utils/infra-env-defaults.test.js']),
|
|
406
|
-
makeIsolatedProject('compose-traefik-template', [
|
|
407
|
-
'**/tests/lib/infrastructure/compose-traefik-template.test.js'
|
|
408
|
-
]),
|
|
409
|
-
makeIsolatedProject('generator-external-rbac', [
|
|
410
|
-
'**/tests/lib/generator/generator-external-rbac.test.js'
|
|
411
|
-
]),
|
|
412
|
-
makeIsolatedProject('helpers-ensure-admin-secrets', [
|
|
413
|
-
'**/tests/lib/infrastructure/helpers-ensure-admin-secrets.test.js'
|
|
414
|
-
]),
|
|
415
|
-
makeIsolatedProject('secrets-generator', ['**/tests/lib/utils/secrets-generator.test.js']),
|
|
416
|
-
makeIsolatedProject('app-uncovered-lines', ['**/tests/lib/app/app-uncovered-lines.test.js']),
|
|
417
|
-
makeIsolatedProject('ensure-dev-certs-for-remote-docker', [
|
|
418
|
-
'**/tests/lib/utils/ensure-dev-certs-for-remote-docker.test.js'
|
|
419
|
-
]),
|
|
420
|
-
makeIsolatedProject('generator-error-paths', ['**/tests/lib/generator/generator-error-paths.test.js']),
|
|
421
|
-
makeIsolatedProject('generator-validation', ['**/tests/lib/generator/generator-validation.test.js']),
|
|
422
|
-
makeIsolatedProject('secrets-databaselog', ['**/tests/lib/core/secrets-databaselog.test.js']),
|
|
423
|
-
makeIsolatedProject('schema-241-alignment', ['**/tests/lib/validation/schema-241-alignment.test.js']),
|
|
424
|
-
makeIsolatedProject('schema-resolver-order', ['**/tests/lib/utils/schema-resolver-order.test.js']),
|
|
425
|
-
makeIsolatedProject('app-module', ['**/tests/lib/app/app.test.js']),
|
|
426
|
-
makeIsolatedProject('admin-secrets', ['**/tests/lib/core/admin-secrets.test.js']),
|
|
427
|
-
makeIsolatedProject('validate-datasource-parsed', [
|
|
428
|
-
'**/tests/lib/datasource/validate-datasource-parsed.test.js'
|
|
429
|
-
]),
|
|
430
|
-
makeIsolatedProject('capability-run-real-fs', [
|
|
431
|
-
'**/tests/lib/datasource/run-capability-copy.test.js',
|
|
432
|
-
'**/tests/lib/datasource/run-capability-diff.test.js',
|
|
433
|
-
'**/tests/lib/datasource/run-capability-edit.test.js',
|
|
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'
|
|
450
|
-
])
|
|
451
|
-
];
|
|
355
|
+
const isolatedProjects = buildIsolatedProjects(makeIsolatedProject, isCI, sharedTransform);
|
|
452
356
|
|
|
453
357
|
const allProjects = [defaultProject, ...isolatedProjects];
|
|
454
358
|
|
|
@@ -458,5 +362,6 @@ module.exports = {
|
|
|
458
362
|
makeIsolatedProject,
|
|
459
363
|
defaultProject,
|
|
460
364
|
isolatedProjects,
|
|
461
|
-
allProjects
|
|
365
|
+
allProjects,
|
|
366
|
+
globalLiveFabrixHooks
|
|
462
367
|
};
|