@aifabrix/builder 2.50.0 → 2.51.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/plans/157.1-security-quality-violations-by-type.csv +374 -0
- package/.cursor/rules/assistant-driven-integration-build.mdc +40 -0
- package/integration/hubspot-test/create-hubspot.js +1 -16
- package/lib/api/evidence-kinds.api.js +128 -0
- package/lib/api/pipeline.api.js +5 -1
- package/lib/api/resource-types.api.js +4 -4
- package/lib/api/roles.api.js +121 -0
- package/lib/api/types/evidence-kinds.types.js +42 -0
- package/lib/api/types/roles.types.js +36 -0
- package/lib/app/certification-verify-rows.js +1 -1
- package/lib/app/show.js +2 -2
- package/lib/certification/merge-certification-from-artifact.js +1 -1
- package/lib/channels/channel-artifact-generator.js +2 -1
- package/lib/cli/index.js +4 -0
- package/lib/cli/setup-app.js +22 -5
- package/lib/cli/setup-dev.js +23 -7
- package/lib/cli/setup-utility-help-after.js +12 -0
- package/lib/cli/setup-utility-validate.js +41 -2
- package/lib/commands/deploy-gate-failure-details.js +21 -0
- package/lib/commands/deploy-gate-orchestrator.js +64 -18
- package/lib/commands/dev-cli-handlers.js +6 -3
- package/lib/commands/dev-init.js +7 -109
- package/lib/commands/dev-refresh.js +197 -0
- package/lib/commands/evidence-kind.js +428 -0
- package/lib/commands/governance-command-action.js +4 -2
- package/lib/commands/repair-openapi-export.js +1 -1
- package/lib/commands/repair-openapi-sync.js +14 -6
- package/lib/commands/resource-type.js +101 -18
- package/lib/commands/role.js +452 -0
- package/lib/commands/setup.js +1 -1
- package/lib/commands/validate-json.js +230 -0
- package/lib/commands/verify-operations-step-plan.js +78 -40
- package/lib/core/audit-logger.js +1 -1
- package/lib/core/secrets-load.js +1 -3
- package/lib/datasource/capability/relate-operations.js +1 -1
- package/lib/generator/helpers.js +13 -5
- package/lib/generator/split-variables.js +9 -3
- package/lib/infrastructure/helpers-docker-check.js +6 -0
- package/lib/infrastructure/helpers.js +1 -1
- package/lib/programmatic/auth-config.js +3 -2
- package/lib/programmatic/bearer-auth.js +1 -1
- package/lib/programmatic/enterprise-mcp-client.js +18 -2
- package/lib/programmatic/manifest-section-registry.js +18 -1
- package/lib/programmatic/openapi-result-schemas.js +28 -11
- package/lib/programmatic/openapi-schema-descriptions-core.js +5 -2
- package/lib/programmatic/openapi-schema-helpers.js +16 -1
- package/lib/programmatic/openapi-spec.js +1 -1
- package/lib/programmatic/run-repository-emcp.js +11 -3
- package/lib/programmatic/run-template-workspace.js +14 -1
- package/lib/resolvers/evidence-kind-file.js +230 -0
- package/lib/resolvers/resource-type-file.js +36 -1
- package/lib/resolvers/role-file.js +227 -0
- package/lib/schema/application-schema.json +22 -2
- package/lib/schema/external-datasource.schema.json +85 -2
- package/lib/schema/external-system.schema.json +16 -2
- package/lib/schema/infra.parameter.yaml +25 -1
- package/lib/schema/type/credential-field-registry.json +19 -3
- package/lib/utils/api.js +8 -2
- package/lib/utils/app-register-config.js +4 -3
- package/lib/utils/cli-sync-options.js +59 -3
- package/lib/utils/cli-utils.js +11 -3
- package/lib/utils/dev-ca-install.js +5 -6
- package/lib/utils/dev-config.js +2 -2
- package/lib/utils/dev-list-sort.js +145 -0
- package/lib/utils/dev-platform-tls.js +0 -63
- package/lib/utils/docker-build.js +46 -27
- package/lib/utils/docker-daemon-tls-ca.js +1 -1
- package/lib/utils/docker-exec.js +91 -6
- package/lib/utils/env-copy.js +1 -3
- package/lib/utils/error-formatters/error-parser.js +0 -3
- package/lib/utils/external-env-template.js +1 -1
- package/lib/utils/external-system-readiness-compact-blocks.js +28 -1
- package/lib/utils/health-check-request.js +2 -3
- package/lib/utils/help-builder.js +3 -0
- package/lib/utils/image-name.js +22 -4
- package/lib/utils/logger.js +37 -4
- package/lib/utils/manifest-source-emit.js +1 -1
- package/lib/utils/paths.js +32 -4
- package/lib/utils/pipeline-upload-auth-retry.js +4 -0
- package/lib/utils/postgres-platform-bootstrap.js +24 -17
- package/lib/utils/postgres-wipe.js +5 -2
- package/lib/utils/remote-dev-auth.js +39 -4
- package/lib/utils/resolve-docker-image-ref.js +36 -6
- package/lib/utils/token-manager.js +16 -0
- package/lib/utils/upload-sync-options.js +17 -3
- package/lib/validation/openapi-contract-surface-validator.js +4 -0
- package/lib/validation/validator.js +6 -5
- package/package.json +34 -12
- package/scripts/export-builder-api-evidence.js +2 -2
- package/scripts/lib/plan-actor.js +2 -2
- package/scripts/lib/plan-meta.js +1 -1
- package/scripts/lib/plan-parse.js +1 -1
- package/scripts/lib/plan-prevalidate-gates.js +12 -1
- package/scripts/lib/plan-run-report.js +13 -2
- package/scripts/pnpm/lib/resolve-aifabrix-bin.mjs +10 -10
- package/templates/applications/dataplane/application.yaml +26 -4
- package/templates/applications/dataplane/env.template +28 -9
- package/templates/applications/dataplane/rbac.yaml +64 -2
- package/templates/applications/miso-controller/application.yaml +10 -1
- package/templates/applications/miso-controller/env.template +10 -7
- package/templates/applications/miso-controller/rbac.yaml +72 -0
- package/templates/channels/slack/integration/slack-system.json +60 -2
- package/templates/python/requirements.txt +1 -1
|
@@ -14,8 +14,9 @@ ENVIRONMENT=dev
|
|
|
14
14
|
DEBUG=false
|
|
15
15
|
# Logging level: DEBUG, INFO, WARNING, ERROR, CRITICAL
|
|
16
16
|
LOG_LEVEL=INFO
|
|
17
|
-
#
|
|
18
|
-
|
|
17
|
+
# Platform / enterprise language for Evidence platformText + Knowledge enterpriseLanguage.
|
|
18
|
+
# V1: English only. Do not change after install — no retranslation migration in V1.
|
|
19
|
+
AIFABRIX_PLATFORM_LANGUAGE=en
|
|
19
20
|
# Path for log file output.
|
|
20
21
|
# Docker default (no volume): use LOG_FILE_PATH=/app/logs/app.log (directory created in image).
|
|
21
22
|
# Production with persistent logs: use /mnt/data/logs/app.log and mount a volume at /mnt/data.
|
|
@@ -43,7 +44,7 @@ API_KEY_BYPASS_ROLES=full-access
|
|
|
43
44
|
|
|
44
45
|
# API Configuration
|
|
45
46
|
API_V1_STR=/api/v1
|
|
46
|
-
VERSION=2.0.
|
|
47
|
+
VERSION=2.0.10
|
|
47
48
|
# Minimum supported aifabrix-builder CLI semver (advertised on /health and /api/v1/health; empty = no gate)
|
|
48
49
|
# MIN_BUILDER_CLI_VERSION=2.45.0
|
|
49
50
|
MIN_BUILDER_CLI_VERSION=2.45.5
|
|
@@ -135,8 +136,6 @@ MISO_CLIENTSECRET=kv://dataplane-client-secretKeyVault
|
|
|
135
136
|
# Keycloak Configuration (for OAuth2 endpoints)
|
|
136
137
|
# Public: browser / issuer (includes /auth when Keycloak uses KC_HTTP_RELATIVE_PATH=/auth).
|
|
137
138
|
KEYCLOAK_SERVER_URL=url://keycloak-public
|
|
138
|
-
# Internal: server-to-Keycloak HTTP (docker: service:port + /auth from keycloak application.yaml)
|
|
139
|
-
KEYCLOAK_INTERNAL_SERVER_URL=url://keycloak-internal
|
|
140
139
|
KEYCLOAK_REALM=aifabrix
|
|
141
140
|
|
|
142
141
|
# =============================================================================
|
|
@@ -155,9 +154,14 @@ MISO_LOGOUT_URL=/logout
|
|
|
155
154
|
MISO_PIPELINE_ENV_KEY=
|
|
156
155
|
|
|
157
156
|
# LLM: chat/embed route through governed enterprise-llm only. Provider credentials
|
|
158
|
-
# live on LLM provider external systems (
|
|
159
|
-
#
|
|
160
|
-
|
|
157
|
+
# live on LLM provider external systems + dataplane secret store (not product .env).
|
|
158
|
+
# When ≥2 LLM providers are published under enterprise-llm, set selectorKey
|
|
159
|
+
# (system key), e.g. openai | azure-openai | ollama. Ignored when only one.
|
|
160
|
+
# Prefer portal Configuration category LLM after deploy; this env is the resolve target.
|
|
161
|
+
# Default LLM provider systemKey when ≥2 LLM providers are published under
|
|
162
|
+
# enterprise-llm (fail-closed if empty). Portal category LLM can override.
|
|
163
|
+
# Lab default: openai (catalog also ships azure-openai).
|
|
164
|
+
ENTERPRISE_LLM_DEFAULT_SELECTOR=openai
|
|
161
165
|
|
|
162
166
|
# =============================================================================
|
|
163
167
|
# AUDIT CONFIGURATION
|
|
@@ -194,6 +198,22 @@ AUDIT_ASYNC_SHADOW_ENQUEUE=false
|
|
|
194
198
|
# Set true for local dev policy CRUD; pair with VITE_POLICY_MANAGEMENT_ENABLED=true in app-ui.
|
|
195
199
|
POLICY_MANAGEMENT_API_ENABLED=false
|
|
196
200
|
|
|
201
|
+
# Role Assistant debug defaults (Assistants admin overrides per assistant):
|
|
202
|
+
# debugEnabled → agent_workforce.debugTraceEnabled
|
|
203
|
+
# fullDebugEnabled → agent_workforce.debugFullEnabled (system-prompt capture)
|
|
204
|
+
# debugRetentionDays → agent_workforce.debugTraceRetentionDays
|
|
205
|
+
WORKFORCE_RUNTIME_DEBUG_TRACE_ENABLED=false
|
|
206
|
+
# Shared retention for WorkerRuntimeDebugTrace + LlmPromptDebugCapture (daily Celery purge).
|
|
207
|
+
# WORKFORCE_RUNTIME_DEBUG_TRACE_RETENTION_DAYS=30
|
|
208
|
+
# WORKFORCE_RUNTIME_DEBUG_TRACE_MAX_ROWS_PER_TASK=500
|
|
209
|
+
|
|
210
|
+
# Platform default for Role Assistant fullDebugEnabled when assistant has no override.
|
|
211
|
+
# When unset: enabled in LOCAL_MODE or when WORKFORCE_RUNTIME_DEBUG_TRACE_ENABLED=true.
|
|
212
|
+
# Prefer Assistants admin → Full debug per Role Assistant.
|
|
213
|
+
# LLM_PROMPT_DEBUG_CAPTURE_ENABLED=
|
|
214
|
+
# LLM_PROMPT_DEBUG_SYSTEM_PROMPT_MAX_CHARS=32000
|
|
215
|
+
# LLM_PROMPT_DEBUG_USER_CONTENT_MAX_CHARS=4000
|
|
216
|
+
|
|
197
217
|
# VIEW_MODULES — optional comma-separated UI module allowlist (unset = all modules).
|
|
198
218
|
# Keys: dashboard, work, content-review, assistants, connected-systems, templates,
|
|
199
219
|
# audit-logs, ai-trust, administration (deep link only; never sidebar in V1).
|
|
@@ -220,7 +240,6 @@ FIRST_PARTY_HTTP_INTERNAL_SPEC_EXTERNAL_SYSTEM_ID=
|
|
|
220
240
|
|
|
221
241
|
# OpenTelemetry Configuration
|
|
222
242
|
OPENTELEMETRY_ENABLED=false
|
|
223
|
-
OPENTELEMETRY_ENDPOINT=
|
|
224
243
|
|
|
225
244
|
# =============================================================================
|
|
226
245
|
# INTEGRATION CERTIFICATE SIGNING (RS256 PEM)
|
|
@@ -30,6 +30,11 @@ roles:
|
|
|
30
30
|
description: "Developer access to deploy applications via CI pipelines"
|
|
31
31
|
groups: ["AI-Fabrix-Developers"]
|
|
32
32
|
|
|
33
|
+
- name: "AI Fabrix Business Transformation"
|
|
34
|
+
value: "aifabrix-business-transformation"
|
|
35
|
+
description: "Built-in assistant: business intention → governed Connected Systems via Runtime and builder-api"
|
|
36
|
+
groups: ["AI-Fabrix-Business-Transformation"]
|
|
37
|
+
|
|
33
38
|
- name: "AI Fabrix Observer"
|
|
34
39
|
value: "aifabrix-observer"
|
|
35
40
|
description: "Read-only access to monitoring, logs, and compliance reports"
|
|
@@ -312,6 +317,10 @@ permissions:
|
|
|
312
317
|
]
|
|
313
318
|
description: "Discover business context (semantics, exposure, enabled governance, tools, validation state) for external systems"
|
|
314
319
|
|
|
320
|
+
- name: "external-system:data-manager"
|
|
321
|
+
roles: ["aifabrix-platform-admin"]
|
|
322
|
+
description: "Reset (purge) all stored records, document rows, vectors, relations, and sync job history for a datasource (keeps datasource config)"
|
|
323
|
+
|
|
315
324
|
- name: "governance:evaluate"
|
|
316
325
|
roles: ["aifabrix-platform-admin", "aifabrix-security-admin", "aifabrix-developer"]
|
|
317
326
|
description: "Run governance scenario acceptance (subject impersonation for ABAC proof)"
|
|
@@ -362,7 +371,9 @@ permissions:
|
|
|
362
371
|
"aifabrix-developer",
|
|
363
372
|
"aifabrix-ai-trust-operator",
|
|
364
373
|
]
|
|
365
|
-
description:
|
|
374
|
+
description: >-
|
|
375
|
+
Update assistantName or preferredChannel on a user activation, and
|
|
376
|
+
work.continue on Process Executions
|
|
366
377
|
|
|
367
378
|
- name: "worker:archive"
|
|
368
379
|
roles:
|
|
@@ -380,7 +391,9 @@ permissions:
|
|
|
380
391
|
"aifabrix-security-admin",
|
|
381
392
|
"aifabrix-ai-trust-operator",
|
|
382
393
|
]
|
|
383
|
-
description:
|
|
394
|
+
description: >-
|
|
395
|
+
Approve or reject pending worker tasks, and record human.respond
|
|
396
|
+
(ask or approval) on Process Executions
|
|
384
397
|
|
|
385
398
|
- name: "worker:manager-read"
|
|
386
399
|
roles:
|
|
@@ -411,7 +424,47 @@ permissions:
|
|
|
411
424
|
]
|
|
412
425
|
description: "Create, update, delete, and reorder Evidence Fabrix v2 rows"
|
|
413
426
|
|
|
427
|
+
# Knowledge Asset platform (465.1) — no public knowledge:create
|
|
428
|
+
- name: "knowledge:read"
|
|
429
|
+
roles:
|
|
430
|
+
[
|
|
431
|
+
"aifabrix-platform-admin",
|
|
432
|
+
"aifabrix-security-admin",
|
|
433
|
+
"aifabrix-developer",
|
|
434
|
+
"aifabrix-ai-trust-operator",
|
|
435
|
+
"aifabrix-observer",
|
|
436
|
+
]
|
|
437
|
+
description: "List and get Knowledge Assets and EnterpriseLineage edges"
|
|
438
|
+
|
|
439
|
+
- name: "knowledge:update"
|
|
440
|
+
roles:
|
|
441
|
+
[
|
|
442
|
+
"aifabrix-platform-admin",
|
|
443
|
+
"aifabrix-developer",
|
|
444
|
+
"aifabrix-ai-trust-operator",
|
|
445
|
+
]
|
|
446
|
+
description: "Update draft Knowledge Assets or supersede active versions"
|
|
447
|
+
|
|
448
|
+
- name: "knowledge:archive"
|
|
449
|
+
roles:
|
|
450
|
+
[
|
|
451
|
+
"aifabrix-platform-admin",
|
|
452
|
+
"aifabrix-developer",
|
|
453
|
+
"aifabrix-ai-trust-operator",
|
|
454
|
+
]
|
|
455
|
+
description: "Archive Knowledge Assets and cascade disposable projections"
|
|
456
|
+
|
|
457
|
+
- name: "knowledge:delete"
|
|
458
|
+
roles:
|
|
459
|
+
[
|
|
460
|
+
"aifabrix-platform-admin",
|
|
461
|
+
"aifabrix-developer",
|
|
462
|
+
"aifabrix-ai-trust-operator",
|
|
463
|
+
]
|
|
464
|
+
description: "Soft-delete Knowledge Assets and cascade disposable projections"
|
|
465
|
+
|
|
414
466
|
# Workforce subscriptions (436.11 / 438.6)
|
|
467
|
+
# Role Assistant surfaces use worker:* (already defined above) — not agentWorkforce:*.
|
|
415
468
|
- name: "subscription:read"
|
|
416
469
|
roles:
|
|
417
470
|
[
|
|
@@ -423,6 +476,15 @@ permissions:
|
|
|
423
476
|
]
|
|
424
477
|
description: "List workforce subscriptions and execution audit rows"
|
|
425
478
|
|
|
479
|
+
- name: "subscription:write"
|
|
480
|
+
roles:
|
|
481
|
+
[
|
|
482
|
+
"aifabrix-platform-admin",
|
|
483
|
+
"aifabrix-developer",
|
|
484
|
+
"aifabrix-deployment-admin",
|
|
485
|
+
]
|
|
486
|
+
description: "Create and update workforce subscriptions"
|
|
487
|
+
|
|
426
488
|
- name: "subscription:run"
|
|
427
489
|
roles:
|
|
428
490
|
[
|
|
@@ -4,7 +4,7 @@ app:
|
|
|
4
4
|
displayName: 'Miso Controller'
|
|
5
5
|
description: 'Miso is the AI Fabrix in-tenant controller and portal layer for securely operating enterprise AI apps inside a customer’s Azure tenant. It provides Entra ID SSO, RBAC, audit logs, environment/app configuration via schemas, and safe secret handling via Key Vault references—ensuring governance, traceability, and predictable UX across portal, SDK, and CLI.'
|
|
6
6
|
type: webapp
|
|
7
|
-
version: '2.0.
|
|
7
|
+
version: '2.0.8'
|
|
8
8
|
|
|
9
9
|
# Image Configuration
|
|
10
10
|
# Set tag to match your build (e.g. aifabrix build miso-controller -t 1.0.0 then tag: 1.0.0)
|
|
@@ -81,6 +81,7 @@ configuration:
|
|
|
81
81
|
# Operations & Debugging
|
|
82
82
|
# -------------------------------------------------------------------------
|
|
83
83
|
- name: LOG_LEVEL
|
|
84
|
+
category: General
|
|
84
85
|
portalInput:
|
|
85
86
|
field: select
|
|
86
87
|
label: 'Log Level'
|
|
@@ -91,6 +92,7 @@ configuration:
|
|
|
91
92
|
- error
|
|
92
93
|
|
|
93
94
|
- name: ENABLE_API_DOCS
|
|
95
|
+
category: General
|
|
94
96
|
portalInput:
|
|
95
97
|
field: select
|
|
96
98
|
label: 'Enable API Documentation (Swagger/ReDoc)'
|
|
@@ -99,6 +101,7 @@ configuration:
|
|
|
99
101
|
- 'false'
|
|
100
102
|
|
|
101
103
|
- name: FAST_STARTUP
|
|
104
|
+
category: General
|
|
102
105
|
portalInput:
|
|
103
106
|
field: select
|
|
104
107
|
label: 'Fast Startup (skip non-critical init)'
|
|
@@ -107,6 +110,7 @@ configuration:
|
|
|
107
110
|
- 'false'
|
|
108
111
|
|
|
109
112
|
- name: LOG_TO_FILE
|
|
113
|
+
category: General
|
|
110
114
|
portalInput:
|
|
111
115
|
field: select
|
|
112
116
|
label: 'Log to File'
|
|
@@ -118,6 +122,7 @@ configuration:
|
|
|
118
122
|
# Keycloak Events (feature flag)
|
|
119
123
|
# -------------------------------------------------------------------------
|
|
120
124
|
- name: KEYCLOAK_EVENTS_ENABLED
|
|
125
|
+
category: General
|
|
121
126
|
portalInput:
|
|
122
127
|
field: select
|
|
123
128
|
label: 'Keycloak Events (sync users/groups)'
|
|
@@ -129,12 +134,14 @@ configuration:
|
|
|
129
134
|
# Rate Limiting (tune for environment)
|
|
130
135
|
# -------------------------------------------------------------------------
|
|
131
136
|
- name: RATE_LIMIT_WINDOW_MS
|
|
137
|
+
category: General
|
|
132
138
|
portalInput:
|
|
133
139
|
field: text
|
|
134
140
|
label: 'Rate Limit Window (milliseconds)'
|
|
135
141
|
placeholder: '900000'
|
|
136
142
|
|
|
137
143
|
- name: RATE_LIMIT_MAX
|
|
144
|
+
category: General
|
|
138
145
|
portalInput:
|
|
139
146
|
field: text
|
|
140
147
|
label: 'Rate Limit Max Requests per Window'
|
|
@@ -144,12 +151,14 @@ configuration:
|
|
|
144
151
|
# Redis Cache TTL (seconds) – RBAC/roles caching
|
|
145
152
|
# -------------------------------------------------------------------------
|
|
146
153
|
- name: REDIS_ROLES_TTL
|
|
154
|
+
category: Redis
|
|
147
155
|
portalInput:
|
|
148
156
|
field: text
|
|
149
157
|
label: 'Redis Roles Cache TTL (seconds)'
|
|
150
158
|
placeholder: '900'
|
|
151
159
|
|
|
152
160
|
- name: REDIS_PERMISSIONS_TTL
|
|
161
|
+
category: Redis
|
|
153
162
|
portalInput:
|
|
154
163
|
field: text
|
|
155
164
|
label: 'Redis Permissions Cache TTL (seconds)'
|
|
@@ -63,6 +63,8 @@ NODE_ENV=dev
|
|
|
63
63
|
PORT=${PORT}
|
|
64
64
|
AUTO_CREATE_TABLES=true
|
|
65
65
|
FAST_STARTUP=false
|
|
66
|
+
# Pending Prisma migrations still run on startup unless set to false (even when FAST_STARTUP=true).
|
|
67
|
+
# AUTO_RUN_MIGRATIONS=false
|
|
66
68
|
ENABLE_API_DOCS=true
|
|
67
69
|
|
|
68
70
|
# Rate Limiting Configuration (for local development)
|
|
@@ -189,7 +191,7 @@ CONTROLLER_EVALUATION=
|
|
|
189
191
|
#
|
|
190
192
|
# Delegated Graph (second redirect URI on the same vendor app): see section below.
|
|
191
193
|
ENTRA_CALLBACK_STATE_SECRET=kv://entra-callback-state-secret
|
|
192
|
-
ENTRA_ID_CENTRAL_CALLBACK_URI=
|
|
194
|
+
ENTRA_ID_CENTRAL_CALLBACK_URI=https://aifabrix-pro-mori-web-we.azurewebsites.net/entra-id-concent/callback
|
|
193
195
|
ENTRA_ID_CLIENT_ID=kv://entra-client-idKeyVault
|
|
194
196
|
ENTRA_ID_CLIENT_SECRET=kv://entra-client-secretKeyVault
|
|
195
197
|
|
|
@@ -265,16 +267,16 @@ API_KEY=kv://miso-controller-secrets-apiKeyVault
|
|
|
265
267
|
#
|
|
266
268
|
# Development: set to DEVELOPMENT to disable license validation (no Mori/JWT required):
|
|
267
269
|
# LICENSE_JWT=DEVELOPMENT
|
|
268
|
-
# - Use only for local development
|
|
269
|
-
|
|
270
|
+
# - Use only for local development (DEPLOYMENT=local|database|azure-mock).
|
|
271
|
+
# - Ignored when DEPLOYMENT=azure (Azure marketplace / App Service installs).
|
|
272
|
+
LICENSE_JWT=kv://miso-controller-jwt-licenseKeyVault
|
|
270
273
|
|
|
271
274
|
# =============================================================================
|
|
272
275
|
# ENTRA ID ONBOARDING (delegated Graph via Mori)
|
|
273
276
|
# =============================================================================
|
|
274
277
|
# Must match a Web redirect URI on the vendor multi-tenant app and Mori’s route
|
|
275
|
-
# …/entra-graph-delegated/callback.
|
|
276
|
-
|
|
277
|
-
ENTRA_GRAPH_DELEGATED_REDIRECT_URI=
|
|
278
|
+
# …/entra-graph-delegated/callback. Shared pro Mori (CICD):
|
|
279
|
+
ENTRA_GRAPH_DELEGATED_REDIRECT_URI=https://aifabrix-pro-mori-web-we.azurewebsites.net/entra-graph-delegated/callback
|
|
278
280
|
|
|
279
281
|
# Optional delegated Graph scopes for GET …/graph-auth-url (space- or comma-separated).
|
|
280
282
|
# 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
|
|
@@ -287,7 +289,8 @@ ENTRA_GRAPH_DELEGATED_REDIRECT_URI=
|
|
|
287
289
|
# =============================================================================
|
|
288
290
|
|
|
289
291
|
MORI_BASE_URL=url://mori-controller-public
|
|
290
|
-
MORI_AUTH_METHOD=
|
|
292
|
+
MORI_AUTH_METHOD=kv://mori-controller-auth-methodKeyVault
|
|
293
|
+
MORI_CALLBACK_API_KEY=kv://mori-callback-api-keyKeyVault
|
|
291
294
|
MORI_API_KEY=kv://mori-controller-api-keyKeyVault
|
|
292
295
|
MORI_USERNAME=kv://mori-controller-basic-usernameKeyVault
|
|
293
296
|
MORI_PASSWORD=kv://mori-controller-basic-passwordKeyVault
|
|
@@ -303,6 +303,78 @@ permissions:
|
|
|
303
303
|
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin']
|
|
304
304
|
description: 'Delete dimensions and dimension values'
|
|
305
305
|
|
|
306
|
+
# Resource Type Management
|
|
307
|
+
- name: 'resource-types:read'
|
|
308
|
+
roles:
|
|
309
|
+
[
|
|
310
|
+
'aifabrix-platform-admin',
|
|
311
|
+
'aifabrix-security-admin',
|
|
312
|
+
'aifabrix-deployment-admin',
|
|
313
|
+
'aifabrix-developer',
|
|
314
|
+
'aifabrix-observer'
|
|
315
|
+
]
|
|
316
|
+
description: 'View resource types'
|
|
317
|
+
|
|
318
|
+
- name: 'resource-types:create'
|
|
319
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin', 'aifabrix-deployment-admin']
|
|
320
|
+
description: 'Create resource types'
|
|
321
|
+
|
|
322
|
+
- name: 'resource-types:update'
|
|
323
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin', 'aifabrix-deployment-admin']
|
|
324
|
+
description: 'Update resource types'
|
|
325
|
+
|
|
326
|
+
- name: 'resource-types:delete'
|
|
327
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin']
|
|
328
|
+
description: 'Delete resource types'
|
|
329
|
+
|
|
330
|
+
# Business Role Management (COM — not RBAC auth roles)
|
|
331
|
+
- name: 'roles:read'
|
|
332
|
+
roles:
|
|
333
|
+
[
|
|
334
|
+
'aifabrix-platform-admin',
|
|
335
|
+
'aifabrix-security-admin',
|
|
336
|
+
'aifabrix-deployment-admin',
|
|
337
|
+
'aifabrix-developer',
|
|
338
|
+
'aifabrix-observer'
|
|
339
|
+
]
|
|
340
|
+
description: 'View business roles'
|
|
341
|
+
|
|
342
|
+
- name: 'roles:create'
|
|
343
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin', 'aifabrix-deployment-admin']
|
|
344
|
+
description: 'Create business roles'
|
|
345
|
+
|
|
346
|
+
- name: 'roles:update'
|
|
347
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin', 'aifabrix-deployment-admin']
|
|
348
|
+
description: 'Update business roles'
|
|
349
|
+
|
|
350
|
+
- name: 'roles:delete'
|
|
351
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin']
|
|
352
|
+
description: 'Delete business roles'
|
|
353
|
+
|
|
354
|
+
# Evidence Kind Management
|
|
355
|
+
- name: 'evidence-kinds:read'
|
|
356
|
+
roles:
|
|
357
|
+
[
|
|
358
|
+
'aifabrix-platform-admin',
|
|
359
|
+
'aifabrix-security-admin',
|
|
360
|
+
'aifabrix-deployment-admin',
|
|
361
|
+
'aifabrix-developer',
|
|
362
|
+
'aifabrix-observer'
|
|
363
|
+
]
|
|
364
|
+
description: 'View evidence kinds'
|
|
365
|
+
|
|
366
|
+
- name: 'evidence-kinds:create'
|
|
367
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin', 'aifabrix-deployment-admin']
|
|
368
|
+
description: 'Create evidence kinds'
|
|
369
|
+
|
|
370
|
+
- name: 'evidence-kinds:update'
|
|
371
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin', 'aifabrix-deployment-admin']
|
|
372
|
+
description: 'Update evidence kinds'
|
|
373
|
+
|
|
374
|
+
- name: 'evidence-kinds:delete'
|
|
375
|
+
roles: ['aifabrix-platform-admin', 'aifabrix-security-admin']
|
|
376
|
+
description: 'Delete evidence kinds'
|
|
377
|
+
|
|
306
378
|
# Token Providers
|
|
307
379
|
- name: 'token-provider:read'
|
|
308
380
|
roles:
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
"signatureHeader": "X-Slack-Signature",
|
|
18
18
|
"timestampHeader": "X-Slack-Request-Timestamp",
|
|
19
19
|
"signaturePrefix": "v0=",
|
|
20
|
-
"timestampMaxAge": "300"
|
|
20
|
+
"timestampMaxAge": "300",
|
|
21
|
+
"baseUrl": "https://slack.com",
|
|
22
|
+
"testEndpoint": "https://slack.com/api/auth.test"
|
|
21
23
|
},
|
|
22
24
|
"security": {
|
|
23
25
|
"signingSecret": "kv://slack/signingSecret",
|
|
@@ -36,7 +38,63 @@
|
|
|
36
38
|
]
|
|
37
39
|
}
|
|
38
40
|
},
|
|
39
|
-
"configuration": [
|
|
41
|
+
"configuration": [
|
|
42
|
+
{
|
|
43
|
+
"name": "ENABLE_PROACTIVE_MESSAGING",
|
|
44
|
+
"value": "true",
|
|
45
|
+
"location": "variable",
|
|
46
|
+
"required": false,
|
|
47
|
+
"portalInput": {
|
|
48
|
+
"field": "select",
|
|
49
|
+
"label": "Enable proactive messaging",
|
|
50
|
+
"options": ["true", "false"]
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "ENABLE_CHANNEL_NOTIFICATIONS",
|
|
55
|
+
"value": "true",
|
|
56
|
+
"location": "variable",
|
|
57
|
+
"required": false,
|
|
58
|
+
"portalInput": {
|
|
59
|
+
"field": "select",
|
|
60
|
+
"label": "Enable channel notifications",
|
|
61
|
+
"options": ["true", "false"]
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "ENABLE_DIRECT_MESSAGES",
|
|
66
|
+
"value": "true",
|
|
67
|
+
"location": "variable",
|
|
68
|
+
"required": false,
|
|
69
|
+
"portalInput": {
|
|
70
|
+
"field": "select",
|
|
71
|
+
"label": "Enable direct messages",
|
|
72
|
+
"options": ["true", "false"]
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "ENABLE_MODALS",
|
|
77
|
+
"value": "true",
|
|
78
|
+
"location": "variable",
|
|
79
|
+
"required": false,
|
|
80
|
+
"portalInput": {
|
|
81
|
+
"field": "select",
|
|
82
|
+
"label": "Enable modals",
|
|
83
|
+
"options": ["true", "false"]
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"name": "ENABLE_SHORTCUTS",
|
|
88
|
+
"value": "true",
|
|
89
|
+
"location": "variable",
|
|
90
|
+
"required": false,
|
|
91
|
+
"portalInput": {
|
|
92
|
+
"field": "select",
|
|
93
|
+
"label": "Enable shortcuts",
|
|
94
|
+
"options": ["true", "false"]
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
],
|
|
40
98
|
"dataSources": ["slack-messages", "slack-conversations"],
|
|
41
99
|
"endpoints": [
|
|
42
100
|
{
|