@aifabrix/builder 2.55.2 → 2.57.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/lib/agent-kit/session-report.js +76 -0
- package/lib/agent-kit/start.js +124 -57
- package/lib/agent-kit/tmux-sessions.js +163 -0
- package/lib/api/environments.api.js +38 -0
- package/lib/api/marketplace-bootstrap.api.js +31 -0
- package/lib/api/pipeline.api.js +32 -3
- package/lib/app/deploy.js +6 -5
- package/lib/cli/setup-app.js +7 -6
- package/lib/cli/setup-environment.js +76 -19
- package/lib/cli/setup-external-system-help.js +15 -3
- package/lib/cli/setup-external-system.js +21 -3
- package/lib/commands/agent-kit-help.js +32 -15
- package/lib/commands/agent-kit.js +90 -8
- package/lib/commands/repair-datasource-auto-rbac.js +4 -9
- package/lib/commands/upload-openapi-sync-followup.js +59 -0
- package/lib/commands/upload-qualification-client.js +131 -0
- package/lib/commands/upload-qualification-followups.js +104 -0
- package/lib/commands/upload-qualification-poll.js +143 -0
- package/lib/commands/upload.js +37 -156
- package/lib/deployment/deploy-poll-ui.js +14 -10
- package/lib/deployment/deployer-status.js +4 -4
- package/lib/deployment/installation/azure-infra-stage.js +160 -0
- package/lib/deployment/installation/azure-preflight.js +102 -0
- package/lib/deployment/installation/azure-readiness.js +71 -0
- package/lib/deployment/installation/docker-register.js +112 -0
- package/lib/deployment/installation/environment-auth.js +76 -0
- package/lib/deployment/installation/environment-manifest.js +165 -0
- package/lib/deployment/installation/environment-stage.js +191 -0
- package/lib/deployment/installation/index.js +39 -0
- package/lib/deployment/installation/infra-catalog.js +165 -0
- package/lib/deployment/installation/infra-manifest.js +161 -0
- package/lib/deployment/installation/infra-projection.js +86 -0
- package/lib/deployment/installation/public-ip.js +65 -0
- package/lib/deployment/installation/stage-input.js +169 -0
- package/lib/deployment/installation/stage-output.js +53 -0
- package/lib/deployment/installation/workspace-env.js +76 -0
- package/lib/deployment/installation/workspace-files.js +178 -0
- package/lib/deployment/installation/workspace-schema.js +40 -0
- package/lib/deployment/installation/workspace-secrets.js +66 -0
- package/lib/deployment/installation/workspace.js +128 -0
- package/lib/deployment/marketplace-environment.js +305 -0
- package/lib/external-system/deploy.js +46 -51
- package/lib/generator/builders.js +4 -0
- package/lib/generator/helpers.js +55 -99
- package/lib/generator/index.js +0 -4
- package/lib/generator/split-variables.js +11 -5
- package/lib/internal/fs-real-sync.js +29 -0
- package/lib/programmatic/builder-api-request.js +8 -4
- package/lib/programmatic/capability-registry.js +2 -0
- package/lib/programmatic/get-deploy-status.js +45 -0
- package/lib/programmatic/get-upload-status.js +45 -0
- package/lib/programmatic/http-accepted-response.js +31 -0
- package/lib/programmatic/openapi-descriptions.js +14 -4
- package/lib/programmatic/request-timeout.js +21 -15
- package/lib/programmatic/route-handler-map.js +6 -0
- package/lib/programmatic/run-deploy.js +7 -3
- package/lib/programmatic/run-upload.js +11 -7
- package/lib/role-assistant/package-validate.js +4 -0
- package/lib/role-assistant/test-runner-clarification-resubmit.js +149 -0
- package/lib/role-assistant/test-runner.js +14 -17
- package/lib/schema/application-schema.json +20 -2
- package/lib/schema/infra-parameter.schema.json +7 -0
- package/lib/schema/infra.parameter.yaml +32 -43
- package/lib/schema/infrastructure-schema.json +1480 -399
- package/lib/schema/installation-environment.schema.json +601 -0
- package/lib/utils/cli-utils.js +3 -2
- package/lib/utils/qualification-poll-ui.js +136 -0
- package/lib/utils/variable-transformer.js +3 -0
- package/lib/validation/required-variables.js +41 -0
- package/lib/validation/validator.js +8 -5
- package/package.json +7 -2
- package/templates/README.md +4 -0
- package/templates/agent-kit/instructions/AGENTKIT.md +6 -6
- package/templates/agent-kit/skills/shared/hosts.md +10 -10
- package/templates/applications/builder-api/env.template +4 -0
- package/templates/applications/dataplane/application.yaml +1 -1
- package/templates/applications/dataplane/env.template +1 -1
- package/templates/applications/keycloak/Dockerfile +12 -5
- package/templates/applications/keycloak/application.yaml +2 -2
- package/templates/applications/keycloak/cimd-lenient-parse/AbstractClientIdMetadataDocumentExecutor.java +3 -3
- package/templates/applications/keycloak/cimd-lenient-parse/SOURCE.md +6 -6
- package/templates/applications/keycloak/env.template +13 -1
- package/templates/applications/miso-controller/application.yaml +3 -2
- package/templates/applications/miso-controller/env.template +28 -22
- package/templates/marketplace/createUiDefinition.json +77 -0
- package/templates/marketplace/install.parameters.example.json +9 -0
- package/templates/marketplace/main.json +4087 -0
- package/lib/generator/deploy-manifest-azure-kv.js +0 -81
|
@@ -177,7 +177,7 @@ IDENTITY_LOCAL_PASSWORD_MODE=admin-reveal
|
|
|
177
177
|
# Both onboarding modes use Mori's AI Fabrix-owned sender. MORI_API_KEY below is the
|
|
178
178
|
# existing installation service key; no notification-specific secret is created.
|
|
179
179
|
NOTIFICATION_BINDING=aifabrixManaged
|
|
180
|
-
MORI_ENVIRONMENT_ID=
|
|
180
|
+
MORI_ENVIRONMENT_ID=kv://mori-controller-environment-idKeyVault
|
|
181
181
|
|
|
182
182
|
# Keycloak Events Configuration
|
|
183
183
|
KEYCLOAK_EVENTS_ENABLED=true
|
|
@@ -213,12 +213,6 @@ MISO_ENVIRONMENT=miso
|
|
|
213
213
|
MISO_CLIENTID=kv://miso-controller-client-idKeyVault
|
|
214
214
|
MISO_CLIENTSECRET=kv://miso-controller-client-secretKeyVault
|
|
215
215
|
|
|
216
|
-
# Evaluation mode (optional .env override of DB controller.configuration.evaluation):
|
|
217
|
-
# When true (default if DB omits flag), infra deploy may coerce :envKey to `miso` — e2e poll on `dev` can 404.
|
|
218
|
-
# Set false locally to force path envKey to match deploy + GET .../deployments/:id.
|
|
219
|
-
# Unset = use DB only.
|
|
220
|
-
CONTROLLER_EVALUATION=
|
|
221
|
-
|
|
222
216
|
# =============================================================================
|
|
223
217
|
# ENTRA ID ONBOARDING (vendor multi-tenant app — admin consent) — [always]
|
|
224
218
|
# =============================================================================
|
|
@@ -237,7 +231,7 @@ CONTROLLER_EVALUATION=
|
|
|
237
231
|
#
|
|
238
232
|
# Delegated Graph (second redirect URI on the same vendor app): see section below.
|
|
239
233
|
ENTRA_CALLBACK_STATE_SECRET=kv://entra-callback-state-secret
|
|
240
|
-
ENTRA_ID_CENTRAL_CALLBACK_URI=https://aifabrix
|
|
234
|
+
ENTRA_ID_CENTRAL_CALLBACK_URI=https://dev01.aifabrix.dev/mori/entra-id-concent/callback
|
|
241
235
|
ENTRA_ID_CLIENT_ID=kv://entra-client-idKeyVault
|
|
242
236
|
ENTRA_ID_CLIENT_SECRET=kv://entra-client-secretKeyVault
|
|
243
237
|
|
|
@@ -323,8 +317,10 @@ SHOW_TA_COUNT_DOWN=false
|
|
|
323
317
|
# Encryption Key for Database Secrets
|
|
324
318
|
ENCRYPTION_KEY=kv://miso-controller-secrets-encryptionKeyVault
|
|
325
319
|
|
|
326
|
-
# Comma-separated application keys allowed for POST .../applications/bootstrap (install-time only)
|
|
327
|
-
|
|
320
|
+
# Comma-separated application keys allowed for POST .../applications/bootstrap (install-time only).
|
|
321
|
+
# Environment placement is a separate controller rule: workloads (dataplane, builder-api) install into
|
|
322
|
+
# dev/tst/pro but never `miso`; miso-controller and keycloak only into `miso`; mori-controller anywhere.
|
|
323
|
+
BOOTSTRAP_APPKEYS=dataplane,builder-api,mori-controller
|
|
328
324
|
|
|
329
325
|
# Key Vault Integration (for security parameter encryption)
|
|
330
326
|
# Set to true to enable Azure Key Vault for storing security parameters
|
|
@@ -347,26 +343,39 @@ API_KEY=kv://miso-controller-secrets-apiKeyVault
|
|
|
347
343
|
# =============================================================================
|
|
348
344
|
# LICENSE CONFIGURATION — [always]
|
|
349
345
|
# =============================================================================
|
|
350
|
-
# [saasDirect] Must use the Mori flow
|
|
346
|
+
# [saasDirect] Must use the Mori flow: Mori issues and owns the
|
|
351
347
|
# 30-day STANDARD / M trial, and sales later updates the same subscription.
|
|
352
348
|
#
|
|
353
349
|
# Offline JWT license (optional):
|
|
354
350
|
# - If set, controller validates license offline (RS256) without Mori subscription status call.
|
|
355
351
|
# - Value can be literal JWT or kv:// reference.
|
|
356
|
-
# - If
|
|
357
|
-
#
|
|
358
|
-
#
|
|
359
|
-
#
|
|
360
|
-
# - Use only for local development (DEPLOYMENT=local|database|azure-mock).
|
|
361
|
-
# - Ignored when DEPLOYMENT=azure (Azure marketplace / App Service installs).
|
|
352
|
+
# - If empty and no stored licence exists, controller runs as Community edition
|
|
353
|
+
# (DEV environment, size S, shared resources).
|
|
354
|
+
# - Set only to a real signed offline licence JWT. Controlled tests may use the separate
|
|
355
|
+
# LICENSE_VALIDATION_DISABLED=true switch; do not use it in deployed installations.
|
|
362
356
|
LICENSE_JWT=kv://miso-controller-jwt-licenseKeyVault
|
|
363
357
|
|
|
358
|
+
# Signed licenses require a Mori issuer key trusted independently of the JWT.
|
|
359
|
+
# Provision the SPKI PEM public key and exact issuer during installation, before
|
|
360
|
+
# pasting LICENSE_JWT or using Update license. An embedded JWT publicKey/jwk or Mori URL
|
|
361
|
+
# is not a trust source. For disconnected installs, deliver the key through the
|
|
362
|
+
# authenticated installation package or another operator-verified channel.
|
|
363
|
+
# Azure resolves this from Key Vault using the app's managed identity.
|
|
364
|
+
# Builder Docker resolves the same kv:// catalog key from the installer's local
|
|
365
|
+
# secrets store before starting the container. Provision a trusted Mori public key
|
|
366
|
+
# there first; the empty catalog default is only for unlicensed Community mode.
|
|
367
|
+
MORI_LICENSE_PUBLIC_KEY=kv://mori-license-public-keyKeyVault
|
|
368
|
+
# Plain docker run can instead leave MORI_LICENSE_PUBLIC_KEY unset and use a
|
|
369
|
+
# trusted, read-only PEM mount at this path.
|
|
370
|
+
# MORI_LICENSE_PUBLIC_KEY_FILE=/run/secrets/mori-license-public-key.pem
|
|
371
|
+
MORI_LICENSE_ISSUER=mori-controller
|
|
372
|
+
|
|
364
373
|
# =============================================================================
|
|
365
374
|
# ENTRA ID ONBOARDING (delegated Graph via Mori)
|
|
366
375
|
# =============================================================================
|
|
367
376
|
# Must match a Web redirect URI on the vendor multi-tenant app and Mori’s route
|
|
368
377
|
# …/entra-graph-delegated/callback. Shared pro Mori addon (CICD *-miso-rg):
|
|
369
|
-
ENTRA_GRAPH_DELEGATED_REDIRECT_URI=https://aifabrix
|
|
378
|
+
ENTRA_GRAPH_DELEGATED_REDIRECT_URI=https://dev01.aifabrix.dev/mori/entra-graph-delegated/callback
|
|
370
379
|
|
|
371
380
|
# Optional delegated Graph scopes for GET …/graph-auth-url (space- or comma-separated).
|
|
372
381
|
# ENTRA_GRAPH_DELEGATED_SCOPES=https://graph.microsoft.com/Application.ReadWrite.All,https://graph.microsoft.com/Group.ReadWrite.All,https://graph.microsoft.com/Synchronization.ReadWrite.All,openid,profile,offline_access
|
|
@@ -381,12 +390,9 @@ ENTRA_GRAPH_DELEGATED_REDIRECT_URI=https://aifabrix-pro-miso-mori.azurewebsites.
|
|
|
381
390
|
# only works when a local Mori app is registered and running for this developer.
|
|
382
391
|
# MORI_CALLBACK_API_KEY must be the same secret as Mori MORI_CONTROLLER_CALLBACK_API_KEY
|
|
383
392
|
# (both resolve from kv://mori-callback-api-keyKeyVault — do not generate separate values).
|
|
384
|
-
MORI_BASE_URL=
|
|
385
|
-
MORI_AUTH_METHOD=kv://mori-controller-auth-methodKeyVault
|
|
393
|
+
MORI_BASE_URL=kv://mori-controller-web-server-url
|
|
386
394
|
MORI_CALLBACK_API_KEY=kv://mori-callback-api-keyKeyVault
|
|
387
395
|
MORI_API_KEY=kv://mori-controller-api-keyKeyVault
|
|
388
|
-
MORI_USERNAME=kv://mori-controller-basic-usernameKeyVault
|
|
389
|
-
MORI_PASSWORD=kv://mori-controller-basic-passwordKeyVault
|
|
390
396
|
|
|
391
397
|
# =============================================================================
|
|
392
398
|
# LOGGING CONFIGURATION
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
|
|
3
|
+
"handler": "Microsoft.Azure.CreateUIDef",
|
|
4
|
+
"version": "0.1.2-preview",
|
|
5
|
+
"parameters": {
|
|
6
|
+
"config": {
|
|
7
|
+
"basics": {
|
|
8
|
+
"description": "Choose subscription, resource group, and region above. Under **Application resources Resource group name**, enter your install id (for example `aifabrixpoc02`). That managed resource group name is the naming prefix: resources become `{rg}-miso-asp`, `{rg}-miso-miso`, and so on. Set the Azure **Application name** to the same id when the portal asks. Enter the initial platform administrator password and choose the license below. Container images are pulled with the web apps' managed identities; no registry credential is needed."
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"basics": [
|
|
12
|
+
{
|
|
13
|
+
"name": "adminPassword",
|
|
14
|
+
"type": "Microsoft.Common.PasswordBox",
|
|
15
|
+
"label": "Administrator password",
|
|
16
|
+
"toolTip": "Password for the initial AI Fabrix platform administrator (user admin). PostgreSQL, Keycloak, and encryption secrets are generated automatically and stored in Key Vault — do not reuse this password for infrastructure.",
|
|
17
|
+
"constraints": {
|
|
18
|
+
"required": true,
|
|
19
|
+
"regex": "^.{8,128}$",
|
|
20
|
+
"validationMessage": "Password must be 8–128 characters."
|
|
21
|
+
},
|
|
22
|
+
"options": {
|
|
23
|
+
"hideConfirmation": false
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "licenseChoice",
|
|
28
|
+
"type": "Microsoft.Common.DropDown",
|
|
29
|
+
"label": "License",
|
|
30
|
+
"toolTip": "License AI Fabrix requests during tenant activation. Community is permanent. Standard or Enterprise requested by name is a 30-day evaluation. For a purchased plan, choose 'Purchased Marketplace subscription' and enter its subscription ID; the edition is then resolved from the purchased plan.",
|
|
31
|
+
"defaultValue": "Community",
|
|
32
|
+
"constraints": {
|
|
33
|
+
"required": true,
|
|
34
|
+
"allowedValues": [
|
|
35
|
+
{
|
|
36
|
+
"label": "Community",
|
|
37
|
+
"value": "COMMUNITY"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"label": "Standard (30-day evaluation)",
|
|
41
|
+
"value": "STANDARD"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"label": "Enterprise (30-day evaluation)",
|
|
45
|
+
"value": "ENTERPRISE"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"label": "Purchased Marketplace subscription",
|
|
49
|
+
"value": "SUBSCRIPTION_ID"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "licenseSubscriptionKey",
|
|
56
|
+
"type": "Microsoft.Common.TextBox",
|
|
57
|
+
"label": "Marketplace subscription ID",
|
|
58
|
+
"toolTip": "The ID (GUID) of the purchased AI Fabrix Azure Marketplace subscription.",
|
|
59
|
+
"defaultValue": "",
|
|
60
|
+
"visible": "[equals(basics('licenseChoice'), 'SUBSCRIPTION_ID')]",
|
|
61
|
+
"constraints": {
|
|
62
|
+
"required": "[equals(basics('licenseChoice'), 'SUBSCRIPTION_ID')]",
|
|
63
|
+
"regex": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
|
|
64
|
+
"validationMessage": "Enter the Marketplace subscription ID as a GUID (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)."
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"steps": [],
|
|
69
|
+
"outputs": {
|
|
70
|
+
"location": "[location()]",
|
|
71
|
+
"deploymentEnvironment": "evaluation",
|
|
72
|
+
"adminPassword": "[basics('adminPassword')]",
|
|
73
|
+
"licenseEdition": "[if(equals(basics('licenseChoice'), 'SUBSCRIPTION_ID'), basics('licenseSubscriptionKey'), basics('licenseChoice'))]",
|
|
74
|
+
"acrResourceId": "__MARKETPLACE_ACR_RESOURCE_ID__"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
|
|
3
|
+
"contentVersion": "1.0.0.0",
|
|
4
|
+
"parameters": {
|
|
5
|
+
"adminPassword": { "value": "" },
|
|
6
|
+
"marketplaceSubscriptionId": { "value": "" },
|
|
7
|
+
"location": { "value": "swedencentral" }
|
|
8
|
+
}
|
|
9
|
+
}
|