@aifabrix/builder 2.55.0 → 2.55.2

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.
Files changed (70) hide show
  1. package/lib/agent-kit/host-approve.js +48 -6
  2. package/lib/agent-kit/init.js +2 -2
  3. package/lib/agent-kit/remote-prompts.js +46 -13
  4. package/lib/agent-kit/run.js +1 -1
  5. package/lib/agent-kit/start.js +310 -0
  6. package/lib/app/deploy.js +7 -4
  7. package/lib/app/offer-create-from-template.js +184 -0
  8. package/lib/cli/setup-app.js +8 -1
  9. package/lib/cli/setup-auth.js +11 -2
  10. package/lib/commands/agent-kit-help.js +74 -4
  11. package/lib/commands/agent-kit.js +83 -12
  12. package/lib/commands/auth-status-user.js +99 -0
  13. package/lib/commands/auth-status.js +14 -4
  14. package/lib/commands/datasource-load-export-cli.js +7 -2
  15. package/lib/commands/datasource-test-trust-cli.js +5 -1
  16. package/lib/commands/governance-command-action.js +5 -4
  17. package/lib/commands/identity-membership-role-cache.js +6 -1
  18. package/lib/commands/lifecycle-command-action.js +16 -15
  19. package/lib/commands/login-credentials.js +8 -3
  20. package/lib/commands/login-device.js +14 -5
  21. package/lib/commands/login.js +14 -1
  22. package/lib/commands/logout.js +50 -15
  23. package/lib/commands/role-assistant.js +24 -12
  24. package/lib/commands/verify-governance-command-action.js +9 -7
  25. package/lib/commands/verify-operations-command-action.js +9 -8
  26. package/lib/commands/verify-trust-command-action.js +6 -5
  27. package/lib/external-system/download.js +1 -2
  28. package/lib/generator/helpers.js +12 -1
  29. package/lib/integration-definition/apply-static-enterprise.js +5 -2
  30. package/lib/role-assistant/knowledge-sync-settings-push.js +172 -0
  31. package/lib/role-assistant/knowledge-sync.js +9 -126
  32. package/lib/role-assistant/test-cases-evaluate.js +12 -1
  33. package/lib/role-assistant/test-cases-evidence.js +44 -5
  34. package/lib/role-assistant/test-cases-lifecycle.js +9 -3
  35. package/lib/role-assistant/test-runner.js +3 -0
  36. package/lib/schema/infra-parameter.schema.json +51 -3
  37. package/lib/schema/infra.parameter.yaml +476 -40
  38. package/lib/schema/type/document-storage.json +1 -1
  39. package/lib/utils/api-required-permissions.js +271 -0
  40. package/lib/utils/api.js +16 -13
  41. package/lib/utils/cli-json-exit.js +41 -0
  42. package/lib/utils/cli-utils.js +23 -5
  43. package/lib/utils/controller-url.js +78 -4
  44. package/lib/utils/deployment-errors.js +15 -0
  45. package/lib/utils/deployment-validation-helpers.js +4 -1
  46. package/lib/utils/device-code.js +31 -10
  47. package/lib/utils/error-formatters/error-parser.js +16 -1
  48. package/lib/utils/error-formatters/permission-errors.js +19 -5
  49. package/lib/utils/keycloak-realm-ready.js +5 -2
  50. package/lib/utils/logger.js +1 -0
  51. package/lib/utils/paths.js +26 -5
  52. package/lib/utils/secrets-helpers.js +2 -2
  53. package/lib/utils/write-stream-and-wait.js +63 -0
  54. package/package.json +20 -6
  55. package/templates/agent-kit/agent-kit.yaml +1 -1
  56. package/templates/agent-kit/instructions/AGENTKIT.md +25 -4
  57. package/templates/agent-kit/instructions/root.AGENTS.md +1 -1
  58. package/templates/agent-kit/skills/aifabrix-connected-system/SKILL.md +2 -1
  59. package/templates/agent-kit/skills/aifabrix-connected-system/references/delivery-gates.md +1 -1
  60. package/templates/agent-kit/skills/aifabrix-plan/SKILL.md +2 -1
  61. package/templates/agent-kit/skills/aifabrix-prove/SKILL.md +1 -0
  62. package/templates/agent-kit/skills/aifabrix-role-assistant/SKILL.md +1 -0
  63. package/templates/agent-kit/skills/shared/hosts.md +13 -26
  64. package/templates/agent-kit/skills/shared/login.md +16 -0
  65. package/templates/agent-kit/workspace/README.md +1 -1
  66. package/templates/applications/dataplane/application.yaml +1 -2
  67. package/templates/applications/dataplane/env.template +5 -5
  68. package/templates/applications/miso-controller/application.yaml +21 -2
  69. package/templates/applications/miso-controller/env.template +89 -17
  70. package/templates/applications/miso-controller/rbac.yaml +5 -0
@@ -1,10 +1,24 @@
1
1
  # Environment Variables Template
2
2
  # Use kv:// references for secrets (resolved from secrets.local.yaml)
3
3
  # Use ${VAR} for environment-specific values
4
+ #
5
+ # =============================================================================
6
+ # HOW THIS FILE IS ORGANIZED (plan 220.0)
7
+ # =============================================================================
8
+ # One env.template, three documentation blocks. Every variable below is tagged:
9
+ #
10
+ # [always] applies to both hosted onboarding modes and local dev
11
+ # [saasDirect] eSystems-hosted SaaS activation (four-step wizard)
12
+ # [customerOwned] Azure-in-tenant activation (existing TA wizard)
13
+ #
14
+ # ONBOARDING_MODE selects the onboarding step list. It is orthogonal to DEPLOYMENT,
15
+ # which selects Azure SDK vs local execution. There is NO fifth DEPLOYMENT value:
16
+ # eSystems-hosted SaaS still runs DEPLOYMENT=azure. See the DEPLOYMENT TYPE and
17
+ # ONBOARDING MODE sections below.
4
18
 
5
19
 
6
20
  # =============================================================================
7
- # FIRST-TIME ONBOARDING CONFIGURATION
21
+ # FIRST-TIME ONBOARDING CONFIGURATION — [always]
8
22
  # =============================================================================
9
23
  #
10
24
  # Onboarding runs automatically when the database has no controller row (empty DB).
@@ -45,17 +59,21 @@ ONBOARDING_ADMIN_PASSWORD=kv://miso-controller-admin-passwordKeyVault
45
59
  # Optional admin email for onboarding (default: admin@aifabrix.ai)
46
60
  ONBOARDING_ADMIN_EMAIL=kv://miso-controller-admin-emailKeyVault
47
61
 
48
- # Create development environment during onboarding (default: false)
62
+ # [customerOwned] Create development environment during onboarding (default: false)
49
63
  # Full platform: create miso, dev, tst, and pro during onboarding (default: false)
50
64
  # When true, supersedes ONBOARDING_CREATE_DEV_ENV for which extra environments are created
65
+ # [saasDirect] Keep false in the customer container — extra environments belong to the
66
+ # eSystems deploy path, not the customer wizard.
51
67
  ONBOARDING_FULL_PLATFORM=false
52
68
 
53
- # When true, run Azure env deploy for onboarding envs (SDK modules). Default false —
69
+ # [customerOwned] When true, run Azure env deploy for onboarding envs (SDK modules). Default false —
54
70
  # Marketplace already provisions infra; TA owns customer env deploy.
71
+ # [saasDirect] Keep false: eSystems already deployed the required runtime services.
55
72
  ONBOARDING_CREATE_MISO_ENV=false
56
73
 
57
- # Set to true to create both miso and dev environments during onboarding
74
+ # [customerOwned] Set to true to create both miso and dev environments during onboarding
58
75
  # When false (default), only the miso environment is created (ignored when ONBOARDING_FULL_PLATFORM=true)
76
+ # [saasDirect] Keep false in the customer container.
59
77
  ONBOARDING_CREATE_DEV_ENV=true
60
78
 
61
79
  # =============================================================================
@@ -148,8 +166,19 @@ KEYCLOAK_DEFAULT_PASSWORD=kv://keycloak-default-passwordKeyVault
148
166
  # Password setup for new local users (plan 209.0)
149
167
  # email = send invitation email so the user sets their own password (default)
150
168
  # admin-reveal = show a one-time temporary password to the admin (labs / no mail)
169
+ # [saasDirect] MUST be `email` — the customer activates its own administrator account from the
170
+ # Keycloak UPDATE_PASSWORD invitation; eSystems never distributes a password.
171
+ # [customerOwned] `admin-reveal` is allowed only in labs.
151
172
  IDENTITY_LOCAL_PASSWORD_MODE=admin-reveal
152
173
 
174
+ # =============================================================================
175
+ # MANAGED NOTIFICATION EMAIL (Miso -> Mori REST)
176
+ # =============================================================================
177
+ # Both onboarding modes use Mori's AI Fabrix-owned sender. MORI_API_KEY below is the
178
+ # existing installation service key; no notification-specific secret is created.
179
+ NOTIFICATION_BINDING=aifabrixManaged
180
+ MORI_ENVIRONMENT_ID=
181
+
153
182
  # Keycloak Events Configuration
154
183
  KEYCLOAK_EVENTS_ENABLED=true
155
184
  KEYCLOAK_EVENTS_VERIFY_SIGNATURE=true
@@ -191,8 +220,11 @@ MISO_CLIENTSECRET=kv://miso-controller-client-secretKeyVault
191
220
  CONTROLLER_EVALUATION=
192
221
 
193
222
  # =============================================================================
194
- # ENTRA ID ONBOARDING (vendor multi-tenant app — admin consent)
223
+ # ENTRA ID ONBOARDING (vendor multi-tenant app — admin consent) — [always]
195
224
  # =============================================================================
225
+ # Kept in the shared block because EITHER mode may install Entra later from the plan 219
226
+ # provider catalogue: Azure hosting does not force Entra, and SaaS may choose it.
227
+ #
196
228
  # AI Fabrix vendor app for TA-1 admin consent and Entra ID configure flows.
197
229
  # Same ENTRA_ID_CLIENT_ID / ENTRA_ID_CLIENT_SECRET on every deployment.
198
230
  # Customer SSO after configure uses a separate enterprise app (AI Fabrix Miso);
@@ -205,13 +237,16 @@ CONTROLLER_EVALUATION=
205
237
  #
206
238
  # Delegated Graph (second redirect URI on the same vendor app): see section below.
207
239
  ENTRA_CALLBACK_STATE_SECRET=kv://entra-callback-state-secret
208
- ENTRA_ID_CENTRAL_CALLBACK_URI=https://aifabrix-pro-mori-web-we.azurewebsites.net/entra-id-concent/callback
240
+ ENTRA_ID_CENTRAL_CALLBACK_URI=https://aifabrix-pro-miso-mori.azurewebsites.net/entra-id-concent/callback
209
241
  ENTRA_ID_CLIENT_ID=kv://entra-client-idKeyVault
210
242
  ENTRA_ID_CLIENT_SECRET=kv://entra-client-secretKeyVault
211
243
 
212
244
  # =============================================================================
213
- # TENANT ACTIVATION (TA-3) — EXISTING LLM CATALOG
245
+ # TENANT ACTIVATION (TA-3) — EXISTING LLM CATALOG — [customerOwned]
214
246
  # =============================================================================
247
+ # [saasDirect] Omit this block entirely: the SaaS wizard has no Access Model step and
248
+ # creates no LLM resources.
249
+ #
215
250
  # Optional JSON array for GET /api/v1/tenant/existing-llm-configurations (and
216
251
  # access-model.existingLlmConfigurations). Merge order: env entries first, then
217
252
  # entries derived from saved activation LLM (same id in saved overrides).
@@ -223,23 +258,32 @@ ENTRA_ID_CLIENT_SECRET=kv://entra-client-secretKeyVault
223
258
  # EXISTING_LLM_CONFIGURATIONS=
224
259
 
225
260
  # =============================================================================
226
- # AZURE AD PROVIDER CONFIGURATION
261
+ # AZURE AD PROVIDER CONFIGURATION — [always]
227
262
  # =============================================================================
263
+ # [customerOwned] These are the customer subscription credentials collected by the TA wizard.
264
+ # [saasDirect] Present on the eSystems HOST controller so eSystems can deploy the hosted
265
+ # environment. They are never collected from, or shown to, the SaaS customer.
228
266
 
229
267
  AZURE_SUBSCRIPTION_ID=kv://azure-subscription-idKeyVault
230
268
  TENANT_ID=kv://azure-tenant-idKeyVault
231
269
  AZURE_SERVICE_NAME=kv://azure-service-nameKeyVault
232
- AZURE_CLIENT_ID=kv://azure-client-idKeyVault
233
- AZURE_CLIENT_SECRET=kv://azure-client-secretKeyVault
270
+ # Azure App Service uses managed identity through DefaultAzureCredential.
271
+ # Optional local service-principal overrides may be supplied in the runtime .env:
272
+ # AZURE_CLIENT_ID=
273
+ # AZURE_CLIENT_SECRET=
234
274
 
235
275
  # When true, environment infrastructure deploy skips the ai.azureOpenAI module (no new Cognitive Services account).
276
+ # [customerOwned] default false — Azure OpenAI is created only when the customer selects it.
277
+ # [saasDirect] leave unset or set true: the minimal SaaS baseline never creates Cognitive Services.
278
+ # When unset, ONBOARDING_MODE=saasDirect already defaults this to true.
236
279
  SKIP_AZURE_OPENAI=false
237
280
 
238
- # When true, environment deploy skips Postgres ARM/KV updates if the flexible server already exists (marketplace redeploy).
281
+ # [customerOwned] When true, environment deploy skips Postgres ARM/KV updates if the flexible server
282
+ # already exists (marketplace redeploy).
239
283
  SKIP_DB_REDEPLOY=true
240
284
 
241
285
  # =============================================================================
242
- # DEPLOYMENT TYPE
286
+ # DEPLOYMENT TYPE — [always]
243
287
  # =============================================================================
244
288
  # azure — Real Azure resources + tenant activation wizard until completed
245
289
  # azure-mock — Mock Azure SDK; dashboard after login (no wizard)
@@ -248,10 +292,28 @@ SKIP_DB_REDEPLOY=true
248
292
  #
249
293
  # Missing or invalid value defaults to azure (wizard + Azure credentials).
250
294
  # Bootstrap (SKIP_FIRST_TIME_SETUP=false) is separate from the activation wizard.
295
+ # NOTE: there is no `saas` value. eSystems-hosted SaaS runs DEPLOYMENT=azure with
296
+ # ONBOARDING_MODE=saasDirect (see next section).
251
297
  DEPLOYMENT=database
252
298
 
299
+ # =============================================================================
300
+ # ONBOARDING MODE — [always]
301
+ # =============================================================================
302
+ # Orthogonal to DEPLOYMENT (Azure SDK vs local). Selects the onboarding step list
303
+ # served by GET /api/v1/tenant/status and rendered by the wizard stepper.
304
+ #
305
+ # customerOwned = Azure-in-tenant wizard
306
+ # consent → identity → size → access-model → endpoint → validation
307
+ # saasDirect = eSystems-hosted activation
308
+ # consent → identity → endpoint (domain only) → review
309
+ # Omits size, access-model, customer deploy and platform-apps.
310
+ #
311
+ # Unset defaults to customerOwned. An unknown value fails closed with HTTP 400.
312
+ ONBOARDING_MODE=customerOwned
313
+
253
314
  # Dev/test: show TA Entra "Completing setup" countdown (120s cap). Default false.
254
315
  # Exposed to UI via GET /api/v1/tenant/status → showTaCountdown (restart controller after change).
316
+ # [saasDirect] Omit — there is no TA Entra countdown in the SaaS wizard.
255
317
  SHOW_TA_COUNT_DOWN=false
256
318
 
257
319
  # =============================================================================
@@ -269,15 +331,25 @@ BOOTSTRAP_APPKEYS=dataplane,builder-api
269
331
  # When false (default), uses local AES-256-GCM encryption with ENCRYPTION_KEY
270
332
  KEY_VAULT_ENABLED=false
271
333
 
334
+ # Show Settings > System Secrets in the portal (runtime feature flag).
335
+ MISO_APPLICATION_SECRETS_UI_ENABLED=false
336
+
337
+ # Sliding browser-session idle timeout (30 minutes).
338
+ AUTH_BROWSER_SESSION_TTL_SECONDS=1800
339
+
272
340
  # JWT Configuration (for client token generation)
273
341
  JWT_SECRET=kv://miso-controller-jwt-secretKeyVault
274
342
 
275
- # When API_KEY is set, a matching Bearer token bypasses OAuth2 validation
343
+ # When API_KEY is set, a matching Bearer token bypasses OAuth2 validation.
344
+ # The key is optional: local environments may set it; Azure may leave it empty.
276
345
  API_KEY=kv://miso-controller-secrets-apiKeyVault
277
346
 
278
347
  # =============================================================================
279
- # LICENSE CONFIGURATION
348
+ # LICENSE CONFIGURATION — [always]
280
349
  # =============================================================================
350
+ # [saasDirect] Must use the Mori flow (never DEVELOPMENT): Mori issues and owns the
351
+ # 30-day STANDARD / M trial, and sales later updates the same subscription.
352
+ #
281
353
  # Offline JWT license (optional):
282
354
  # - If set, controller validates license offline (RS256) without Mori subscription status call.
283
355
  # - Value can be literal JWT or kv:// reference.
@@ -293,8 +365,8 @@ LICENSE_JWT=kv://miso-controller-jwt-licenseKeyVault
293
365
  # ENTRA ID ONBOARDING (delegated Graph via Mori)
294
366
  # =============================================================================
295
367
  # Must match a Web redirect URI on the vendor multi-tenant app and Mori’s route
296
- # …/entra-graph-delegated/callback. Shared pro Mori (CICD):
297
- ENTRA_GRAPH_DELEGATED_REDIRECT_URI=https://aifabrix-pro-mori-web-we.azurewebsites.net/entra-graph-delegated/callback
368
+ # …/entra-graph-delegated/callback. Shared pro Mori addon (CICD *-miso-rg):
369
+ ENTRA_GRAPH_DELEGATED_REDIRECT_URI=https://aifabrix-pro-miso-mori.azurewebsites.net/entra-graph-delegated/callback
298
370
 
299
371
  # Optional delegated Graph scopes for GET …/graph-auth-url (space- or comma-separated).
300
372
  # 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
@@ -309,7 +381,7 @@ ENTRA_GRAPH_DELEGATED_REDIRECT_URI=https://aifabrix-pro-mori-web-we.azurewebsite
309
381
  # only works when a local Mori app is registered and running for this developer.
310
382
  # MORI_CALLBACK_API_KEY must be the same secret as Mori MORI_CONTROLLER_CALLBACK_API_KEY
311
383
  # (both resolve from kv://mori-callback-api-keyKeyVault — do not generate separate values).
312
- MORI_BASE_URL=https://aifabrix-pro-mori-web-we.azurewebsites.net
384
+ MORI_BASE_URL=https://aifabrix-pro-miso-mori.azurewebsites.net
313
385
  MORI_AUTH_METHOD=kv://mori-controller-auth-methodKeyVault
314
386
  MORI_CALLBACK_API_KEY=kv://mori-callback-api-keyKeyVault
315
387
  MORI_API_KEY=kv://mori-controller-api-keyKeyVault
@@ -34,6 +34,11 @@ roles:
34
34
  description: 'Read-only access to monitoring, logs, and compliance reports'
35
35
  groups: ['AI-Fabrix-Observers']
36
36
 
37
+ - name: 'AI Fabrix Everyone'
38
+ value: 'aifabrix-everyone'
39
+ description: 'Authenticated-user consume access for Enterprise LLM and platform search (not a Role Assistant)'
40
+ groups: ['AI-Fabrix-Everyone']
41
+
37
42
  permissions:
38
43
  # Integration clients (Keycloak OIDC clients + control-plane metadata)
39
44
  - name: 'integration-client:create'