@aifabrix/builder 2.49.2 → 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.
Files changed (459) hide show
  1. package/.cursor/plans/157.1-security-quality-violations-by-type.csv +374 -0
  2. package/.cursor/rules/assistant-driven-integration-build.mdc +40 -0
  3. package/.cursor/rules/deploy-rules/docker-image-ip-policy.mdc +49 -0
  4. package/.cursor/rules/plan-rules/application-lifecycle.mdc +30 -0
  5. package/.cursor/rules/plan-rules/plan-frontmatter.mdc +35 -0
  6. package/.cursor/rules/plan-rules/plan-lifecycle.mdc +31 -0
  7. package/.cursor/rules/plan-rules/plan-validation-gate.mdc +34 -0
  8. package/.cursor/skills/README.md +1 -0
  9. package/.dockerignore +52 -0
  10. package/.eslintignore +22 -0
  11. package/README.md +2 -0
  12. package/bin/builder-api-cleanup.js +26 -0
  13. package/bin/builder-api-nest.js +10 -0
  14. package/bin/builder-api-spike.js +19 -0
  15. package/enterprise-knowledge/README.md +50 -0
  16. package/enterprise-knowledge/enterprise-integration-lifecycle/README.md +22 -0
  17. package/enterprise-knowledge/enterprise-integration-lifecycle/application.json +15 -0
  18. package/enterprise-knowledge/enterprise-integration-lifecycle/deploy.js +69 -0
  19. package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-deploy.json +52 -0
  20. package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-system.json +29 -0
  21. package/enterprise-knowledge/enterprise-integration-lifecycle/env.template +2 -0
  22. package/integration/README.md +81 -0
  23. package/integration/github/README.md +53 -0
  24. package/integration/github/application.json +21 -0
  25. package/integration/github/deploy.js +72 -0
  26. package/integration/github/env.template +11 -0
  27. package/integration/github/github-datasource-issue-comments.json +239 -0
  28. package/integration/github/github-datasource-issues.json +399 -0
  29. package/integration/github/github-datasource-repository.json +354 -0
  30. package/integration/github/github-deploy.json +1202 -0
  31. package/integration/github/github-system.json +82 -0
  32. package/integration/hubspot-test/README.md +1 -1
  33. package/integration/hubspot-test/create-hubspot.js +1 -16
  34. package/jest.isolated-projects.js +31 -1
  35. package/jest.projects.js +87 -1
  36. package/lib/api/dev-server-https.js +1 -1
  37. package/lib/api/enterprise-knowledge.api.js +63 -0
  38. package/lib/api/evidence-kinds.api.js +128 -0
  39. package/lib/api/evidence.api.js +172 -0
  40. package/lib/api/external-systems.api.js +8 -2
  41. package/lib/api/pipeline.api.js +5 -1
  42. package/lib/api/resource-types.api.js +5 -4
  43. package/lib/api/roles.api.js +121 -0
  44. package/lib/api/types/enterprise-knowledge.types.js +46 -0
  45. package/lib/api/types/evidence-kinds.types.js +42 -0
  46. package/lib/api/types/evidence.types.js +67 -0
  47. package/lib/api/types/resource-types.types.js +2 -0
  48. package/lib/api/types/roles.types.js +36 -0
  49. package/lib/app/certification-verify-rows.js +1 -1
  50. package/lib/app/controller-application-filter.js +36 -0
  51. package/lib/app/deploy.js +1 -1
  52. package/lib/app/list-external-systems.js +130 -0
  53. package/lib/app/list.js +20 -8
  54. package/lib/app/run.js +3 -1
  55. package/lib/app/show-display.js +8 -3
  56. package/lib/app/show-online.js +178 -0
  57. package/lib/app/show.js +39 -90
  58. package/lib/build/builder-api-docker-staging.js +47 -0
  59. package/lib/build/miso-controller-npm-sdk-guard.js +2 -2
  60. package/lib/build/standard-docker-build.js +2 -0
  61. package/lib/certification/merge-certification-from-artifact.js +1 -1
  62. package/lib/certification/post-unified-cert-sync.js +4 -31
  63. package/lib/certification/sync-after-external-command.js +0 -1
  64. package/lib/certification/sync-system-certification.js +0 -3
  65. package/lib/channels/add-channel.js +40 -34
  66. package/lib/channels/approval-guides/chatgpt.js +33 -0
  67. package/lib/channels/approval-guides/credential-portal.js +38 -0
  68. package/lib/channels/approval-guides/index.js +110 -0
  69. package/lib/channels/approval-guides/microsoft-copilot.js +34 -0
  70. package/lib/channels/approval-guides/slack.js +34 -0
  71. package/lib/channels/approval-guides/teams-bot.js +35 -0
  72. package/lib/channels/approval-guides/web-embed.js +32 -0
  73. package/lib/channels/channel-approval-guide.js +11 -0
  74. package/lib/channels/channel-artifact-generator.js +18 -5
  75. package/lib/channels/channel-audit.js +3 -0
  76. package/lib/channels/channel-auth-context.js +1 -1
  77. package/lib/channels/channel-description.js +59 -0
  78. package/lib/channels/channel-integration-generator.js +13 -230
  79. package/lib/channels/channel-integration-template.js +94 -0
  80. package/lib/channels/channel-runtime-resolver.js +43 -3
  81. package/lib/channels/channel-status-display.js +66 -26
  82. package/lib/channels/channel-targets.js +3 -3
  83. package/lib/cli/index.js +31 -3
  84. package/lib/cli/infra-guided.js +5 -1
  85. package/lib/cli/setup-app-external-create.js +111 -0
  86. package/lib/cli/setup-app.help.js +1 -1
  87. package/lib/cli/setup-app.js +60 -130
  88. package/lib/cli/setup-app.test-commands.js +26 -52
  89. package/lib/cli/setup-certification-commands.js +4 -4
  90. package/lib/cli/setup-certification.help.js +9 -9
  91. package/lib/cli/setup-dev.js +30 -9
  92. package/lib/cli/setup-external-system-help.js +4 -6
  93. package/lib/cli/setup-external-system.js +58 -52
  94. package/lib/cli/setup-infra-up-builder-api-action.js +64 -0
  95. package/lib/cli/setup-infra-up-platform-action.js +3 -1
  96. package/lib/cli/setup-infra.js +15 -0
  97. package/lib/cli/setup-list.js +43 -0
  98. package/lib/cli/setup-utility-help-after.js +12 -0
  99. package/lib/cli/setup-utility-repair.js +26 -7
  100. package/lib/cli/setup-utility-validate.js +41 -2
  101. package/lib/cli/setup-utility.js +5 -3
  102. package/lib/commands/app.js +15 -43
  103. package/lib/commands/channel-add-setup.js +110 -0
  104. package/lib/commands/channel.js +42 -8
  105. package/lib/commands/datasource-sync-display.js +96 -0
  106. package/lib/commands/datasource-sync-policy.js +210 -0
  107. package/lib/commands/datasource-test-trust-cli.js +6 -6
  108. package/lib/commands/datasource-unified-test-cli.js +2 -1
  109. package/lib/commands/datasource-unified-test-cli.options.js +33 -23
  110. package/lib/commands/deploy-gate-failure-details.js +184 -0
  111. package/lib/commands/deploy-gate-orchestrator.js +368 -0
  112. package/lib/commands/dev-cli-handlers.js +7 -62
  113. package/lib/commands/dev-host-ops-params.js +91 -0
  114. package/lib/commands/dev-host-ops-poll.js +111 -0
  115. package/lib/commands/dev-host-ops.js +107 -94
  116. package/lib/commands/dev-init.js +6 -106
  117. package/lib/commands/dev-refresh.js +197 -0
  118. package/lib/commands/enterprise-knowledge.js +284 -0
  119. package/lib/commands/evidence-cli-leaves.js +250 -0
  120. package/lib/commands/evidence-kind.js +428 -0
  121. package/lib/commands/evidence.js +51 -0
  122. package/lib/commands/governance-cli-shared.js +2 -2
  123. package/lib/commands/governance-command-action.js +5 -3
  124. package/lib/commands/governance-fixture-subjects.js +85 -0
  125. package/lib/commands/governance.js +1 -1
  126. package/lib/commands/lifecycle-command-action.js +2 -2
  127. package/lib/commands/lifecycle-external.js +3 -3
  128. package/lib/commands/manifest-cli-auth.js +29 -0
  129. package/lib/commands/manifest-cli-commands.js +170 -0
  130. package/lib/commands/manifest-cli-integration-path.js +63 -0
  131. package/lib/commands/manifest.js +21 -0
  132. package/lib/commands/protection-cli-leaves.js +3 -3
  133. package/lib/commands/repair-auth-apply.js +15 -1
  134. package/lib/commands/repair-authentications-454.js +169 -0
  135. package/lib/commands/repair-capability-openapi-warnings.js +126 -0
  136. package/lib/commands/repair-datasource-apply.js +135 -0
  137. package/lib/commands/repair-datasource-auto-rbac.js +62 -1
  138. package/lib/commands/repair-datasource-http-service-contract.js +239 -0
  139. package/lib/commands/repair-datasource-operation-security.js +180 -0
  140. package/lib/commands/repair-datasource-run.js +7 -2
  141. package/lib/commands/repair-datasource-sync-operations.js +177 -0
  142. package/lib/commands/repair-datasource-webhooks-sync-bridge.js +133 -0
  143. package/lib/commands/repair-datasource.js +12 -68
  144. package/lib/commands/repair-env-template.js +11 -1
  145. package/lib/commands/repair-external-run.js +121 -31
  146. package/lib/commands/repair-internal.js +1 -1
  147. package/lib/commands/repair-openapi-export.js +156 -0
  148. package/lib/commands/repair-openapi-sync.js +33 -8
  149. package/lib/commands/repair-orchestration-datasource-split.js +259 -0
  150. package/lib/commands/repair-persist.js +22 -1
  151. package/lib/commands/repair-rbac-platform-preset.js +204 -0
  152. package/lib/commands/repair-rbac-reader-roles.js +191 -0
  153. package/lib/commands/repair-rbac.js +163 -86
  154. package/lib/commands/repair-steps.js +83 -18
  155. package/lib/commands/repair-system-permissions.js +1 -0
  156. package/lib/commands/repair.js +1 -1
  157. package/lib/commands/resource-type.js +166 -44
  158. package/lib/commands/role.js +452 -0
  159. package/lib/commands/run-post-publish-data-sync.js +68 -0
  160. package/lib/commands/setup-modes.js +1 -1
  161. package/lib/commands/setup.js +1 -1
  162. package/lib/commands/test-e2e-external.js +21 -8
  163. package/lib/commands/test-governance-cli-options.js +2 -2
  164. package/lib/commands/test-trust-cli-options.js +2 -2
  165. package/lib/commands/up-builder-api-bootstrap.js +71 -0
  166. package/lib/commands/up-builder-api-provision.js +241 -0
  167. package/lib/commands/up-builder-api.js +88 -0
  168. package/lib/commands/up-common.js +25 -1
  169. package/lib/commands/upload-credential-push-log.js +117 -0
  170. package/lib/commands/upload-data-sync-finalize.js +60 -0
  171. package/lib/commands/upload-probe.js +66 -0
  172. package/lib/commands/upload-publish-context.js +4 -1
  173. package/lib/commands/upload-sidecar-followups.js +55 -27
  174. package/lib/commands/upload.js +116 -157
  175. package/lib/commands/validate-json.js +230 -0
  176. package/lib/commands/verify-governance-combined-external.js +1 -1
  177. package/lib/commands/verify-governance-db.js +2 -2
  178. package/lib/commands/verify-operations-command-action.js +2 -2
  179. package/lib/commands/verify-operations-step-plan.js +79 -41
  180. package/lib/commands/verify-operations-steps.js +2 -2
  181. package/lib/commands/verify-trust-command-action.js +1 -1
  182. package/lib/commands/wizard-core.js +1 -1
  183. package/lib/commands/wizard-headless.js +2 -1
  184. package/lib/core/admin-secrets.js +2 -6
  185. package/lib/core/audit-logger.js +1 -1
  186. package/lib/core/secrets-env-content.js +10 -4
  187. package/lib/core/secrets-env-write.js +2 -13
  188. package/lib/core/secrets-load.js +1 -3
  189. package/lib/datasource/agent-trust-run.js +3 -3
  190. package/lib/datasource/capability/relate-operations.js +1 -1
  191. package/lib/datasource/deploy.js +3 -1
  192. package/lib/datasource/test-e2e.js +6 -1
  193. package/lib/datasource/unified-validation-run-body.js +4 -1
  194. package/lib/datasource/unified-validation-run.js +1 -1
  195. package/lib/deployment/deploy-poll-ui.js +73 -12
  196. package/lib/deployment/deployer-poll-run.js +113 -0
  197. package/lib/deployment/deployer.js +17 -87
  198. package/lib/evidence/dataplane-context.js +21 -0
  199. package/lib/evidence/evidence-display.js +78 -0
  200. package/lib/evidence/evidence-service.js +392 -0
  201. package/lib/external-system/deploy.js +290 -112
  202. package/lib/external-system/download.js +7 -3
  203. package/lib/external-system/test-execution.js +1 -1
  204. package/lib/external-system/test-system-level.js +8 -10
  205. package/lib/external-system/test.js +12 -6
  206. package/lib/generator/deploy-script.js +73 -0
  207. package/lib/generator/external.js +2 -1
  208. package/lib/generator/helpers.js +13 -5
  209. package/lib/generator/index.js +17 -2
  210. package/lib/generator/split-variables.js +9 -3
  211. package/lib/generator/wizard.js +3 -36
  212. package/lib/infrastructure/helpers-docker-check.js +6 -0
  213. package/lib/infrastructure/helpers.js +1 -1
  214. package/lib/internal/fs-real-sync.js +22 -1
  215. package/lib/internal/node-fs.js +2 -0
  216. package/lib/lifecycle/lifecycle-governance-options.js +1 -1
  217. package/lib/lifecycle/verify-step-progress.js +1 -1
  218. package/lib/programmatic/access-log.js +26 -0
  219. package/lib/programmatic/auth-config.js +45 -0
  220. package/lib/programmatic/bearer-auth.js +176 -0
  221. package/lib/programmatic/builder-api-request.js +175 -0
  222. package/lib/programmatic/builder-api-route-dispatch.js +82 -0
  223. package/lib/programmatic/builder-api-runtime-config.js +42 -0
  224. package/lib/programmatic/builder-api-server.js +230 -0
  225. package/lib/programmatic/builder-help-authentication-catalog.js +282 -0
  226. package/lib/programmatic/builder-help-connected-system-ui.js +266 -0
  227. package/lib/programmatic/builder-help-enterprise-sync-fabrix.js +60 -0
  228. package/lib/programmatic/builder-help-envelope.js +36 -0
  229. package/lib/programmatic/builder-help-fixtures.js +200 -0
  230. package/lib/programmatic/builder-help-governance.js +172 -0
  231. package/lib/programmatic/builder-help-schema-catalog.js +92 -0
  232. package/lib/programmatic/builder-help.js +361 -0
  233. package/lib/programmatic/capability-registry.js +77 -0
  234. package/lib/programmatic/command-options.js +32 -0
  235. package/lib/programmatic/enterprise-mcp-client.js +114 -0
  236. package/lib/programmatic/http-problem-details.js +99 -0
  237. package/lib/programmatic/http-route-match.js +40 -0
  238. package/lib/programmatic/idempotency-cache.js +69 -0
  239. package/lib/programmatic/index.js +53 -0
  240. package/lib/programmatic/integration-path-scope.js +39 -0
  241. package/lib/programmatic/log-redaction.js +66 -0
  242. package/lib/programmatic/manifest-get-section.js +146 -0
  243. package/lib/programmatic/manifest-patch-section.js +252 -0
  244. package/lib/programmatic/manifest-repair.js +122 -0
  245. package/lib/programmatic/manifest-section-dependency-graph.js +160 -0
  246. package/lib/programmatic/manifest-section-io.js +225 -0
  247. package/lib/programmatic/manifest-section-quality.js +171 -0
  248. package/lib/programmatic/manifest-section-registry-data.js +269 -0
  249. package/lib/programmatic/manifest-section-registry.js +222 -0
  250. package/lib/programmatic/nest-http-bridge.js +34 -0
  251. package/lib/programmatic/openapi-component-schemas.js +68 -0
  252. package/lib/programmatic/openapi-description-enricher.js +117 -0
  253. package/lib/programmatic/openapi-descriptions.js +190 -0
  254. package/lib/programmatic/openapi-docs-serving.js +123 -0
  255. package/lib/programmatic/openapi-help-schemas.js +63 -0
  256. package/lib/programmatic/openapi-manifest-schemas.js +141 -0
  257. package/lib/programmatic/openapi-operation-bindings.js +274 -0
  258. package/lib/programmatic/openapi-request-schemas.js +155 -0
  259. package/lib/programmatic/openapi-result-schemas.js +493 -0
  260. package/lib/programmatic/openapi-schema-descriptions-certify.js +139 -0
  261. package/lib/programmatic/openapi-schema-descriptions-core.js +162 -0
  262. package/lib/programmatic/openapi-schema-descriptions-help.js +40 -0
  263. package/lib/programmatic/openapi-schema-descriptions-manifest.js +143 -0
  264. package/lib/programmatic/openapi-schema-descriptions-mcp.js +118 -0
  265. package/lib/programmatic/openapi-schema-descriptions-operations.js +281 -0
  266. package/lib/programmatic/openapi-schema-helpers.js +108 -0
  267. package/lib/programmatic/openapi-spec.js +203 -0
  268. package/lib/programmatic/orchestration-openapi-meta.js +159 -0
  269. package/lib/programmatic/platform-rbac-catalog.js +90 -0
  270. package/lib/programmatic/request-timeout.js +53 -0
  271. package/lib/programmatic/route-handler-map.js +143 -0
  272. package/lib/programmatic/route-handlers-context.js +29 -0
  273. package/lib/programmatic/route-handlers.js +33 -0
  274. package/lib/programmatic/run-certify.js +57 -0
  275. package/lib/programmatic/run-enterprise-mcp.js +32 -0
  276. package/lib/programmatic/run-lifecycle.js +29 -0
  277. package/lib/programmatic/run-repair.js +41 -0
  278. package/lib/programmatic/run-repository-emcp.js +62 -0
  279. package/lib/programmatic/run-template-workspace.js +74 -0
  280. package/lib/programmatic/run-test.js +49 -0
  281. package/lib/programmatic/run-upload.js +63 -0
  282. package/lib/programmatic/run-validate.js +53 -0
  283. package/lib/programmatic/run-wizard.js +40 -0
  284. package/lib/programmatic/system-key.js +48 -0
  285. package/lib/programmatic/wizard-config-normalize.js +118 -0
  286. package/lib/programmatic/workspace-cleanup.js +128 -0
  287. package/lib/programmatic/workspace-context.js +145 -0
  288. package/lib/programmatic/workspace-lock.js +75 -0
  289. package/lib/programmatic/workspace-meta.js +64 -0
  290. package/lib/programmatic/workspace-ops.js +149 -0
  291. package/lib/protection/run-commands-upload-sync.js +35 -0
  292. package/lib/protection/run-commands.js +2 -20
  293. package/lib/protection/upload-batch.js +11 -7
  294. package/lib/resolvers/evidence-kind-file.js +230 -0
  295. package/lib/resolvers/resource-type-file.js +58 -1
  296. package/lib/resolvers/role-file.js +227 -0
  297. package/lib/schema/application-schema.json +22 -2
  298. package/lib/schema/external-datasource.schema.json +245 -2
  299. package/lib/schema/external-system.schema.json +259 -119
  300. package/lib/schema/flag-map-validation-run.json +3 -0
  301. package/lib/schema/infra.parameter.yaml +25 -1
  302. package/lib/schema/type/credential-field-registry.json +21 -5
  303. package/lib/schema/type/document-storage.json +9 -0
  304. package/lib/utils/agent-trust-run-display.js +1 -1
  305. package/lib/utils/api.js +8 -2
  306. package/lib/utils/app-path-resolve.js +168 -0
  307. package/lib/utils/app-register-config.js +4 -3
  308. package/lib/utils/authentication-env-template.js +222 -0
  309. package/lib/utils/cli-sync-options.js +62 -10
  310. package/lib/utils/cli-utils.js +15 -3
  311. package/lib/utils/cli-workspace-options.js +29 -0
  312. package/lib/utils/compose-generate-docker-compose.js +102 -0
  313. package/lib/utils/configuration-env-resolver.js +203 -27
  314. package/lib/utils/datasource-test-run-certificate-tty.js +28 -2
  315. package/lib/utils/datasource-test-run-certification-debug.js +130 -0
  316. package/lib/utils/datasource-test-run-debug-display.js +2 -0
  317. package/lib/utils/datasource-test-run-debug-slice.js +7 -0
  318. package/lib/utils/datasource-test-run-display.js +2 -1
  319. package/lib/utils/dev-ca-install.js +5 -6
  320. package/lib/utils/dev-config.js +2 -2
  321. package/lib/utils/dev-init-ssh-merge.js +165 -23
  322. package/lib/utils/dev-list-sort.js +145 -0
  323. package/lib/utils/dev-pin-share-instructions.js +110 -0
  324. package/lib/utils/dev-platform-tls.js +0 -63
  325. package/lib/utils/dev-ssh-config-helper.js +177 -33
  326. package/lib/utils/docker-build.js +46 -27
  327. package/lib/utils/docker-daemon-tls-ca.js +1 -1
  328. package/lib/utils/docker-exec.js +91 -6
  329. package/lib/utils/enterprise-knowledge-paths.js +142 -0
  330. package/lib/utils/env-copy.js +3 -4
  331. package/lib/utils/env-dotenv-format.js +103 -0
  332. package/lib/utils/error-formatters/error-parser.js +0 -3
  333. package/lib/utils/external-env-template.js +5 -2
  334. package/lib/utils/external-system-display.js +5 -1
  335. package/lib/utils/external-system-readiness-compact-blocks.js +248 -0
  336. package/lib/utils/external-system-readiness-compact-display.js +324 -0
  337. package/lib/utils/external-system-readiness-core.js +16 -0
  338. package/lib/utils/external-system-readiness-deploy-display.js +29 -11
  339. package/lib/utils/external-system-readiness-display-internals.js +3 -1
  340. package/lib/utils/external-system-readiness-display.js +20 -30
  341. package/lib/utils/external-system-system-test-tty-certification.js +135 -0
  342. package/lib/utils/external-system-system-test-tty.js +5 -41
  343. package/lib/utils/health-check-request.js +2 -3
  344. package/lib/utils/help-builder.js +9 -1
  345. package/lib/utils/host-ops-job-labels.js +236 -0
  346. package/lib/utils/host-ops-job-result.js +61 -0
  347. package/lib/utils/host-ops-poll-ui.js +163 -0
  348. package/lib/utils/image-name.js +22 -4
  349. package/lib/utils/integration-path-resolve.js +112 -0
  350. package/lib/utils/logger.js +37 -4
  351. package/lib/utils/manifest-source-emit.js +1 -1
  352. package/lib/utils/paths-reload-source.js +148 -0
  353. package/lib/utils/paths-system-builder-keys.js +25 -0
  354. package/lib/utils/paths.js +183 -30
  355. package/lib/utils/pipeline-upload-auth-retry.js +4 -0
  356. package/lib/utils/postgres-platform-bootstrap.js +24 -17
  357. package/lib/utils/postgres-wipe.js +5 -2
  358. package/lib/utils/remote-dev-auth.js +39 -4
  359. package/lib/utils/resolve-docker-image-ref.js +36 -6
  360. package/lib/utils/runtime-configuration-values.js +64 -2
  361. package/lib/utils/secrets-helpers.js +5 -1
  362. package/lib/utils/ssh-known-hosts.js +130 -0
  363. package/lib/utils/test-target-cli-options.js +75 -0
  364. package/lib/utils/token-manager.js +16 -0
  365. package/lib/utils/upload-sync-options.js +20 -2
  366. package/lib/utils/validation-run-request.js +11 -2
  367. package/lib/validation/external-manifest-validator.js +11 -1
  368. package/lib/validation/openapi-contract-surface-validator.js +430 -0
  369. package/lib/validation/openapi-contract-vendor-validation.js +238 -0
  370. package/lib/validation/validate-external-file.js +160 -0
  371. package/lib/validation/validate.js +6 -117
  372. package/lib/validation/validator.js +6 -5
  373. package/package.json +76 -37
  374. package/packages/builder-api/README.md +120 -0
  375. package/packages/builder-api/package.json +30 -0
  376. package/packages/builder-api/src/app.module.ts +7 -0
  377. package/packages/builder-api/src/auth/auth.module.ts +5 -0
  378. package/packages/builder-api/src/external-system/external-system.module.ts +5 -0
  379. package/packages/builder-api/src/main.ts +16 -0
  380. package/packages/builder-api/tsconfig.json +15 -0
  381. package/scripts/check-builder-api-architecture-grep.js +79 -0
  382. package/scripts/docker_image_content_gate.js +47 -0
  383. package/scripts/docker_image_content_gate.sh +5 -0
  384. package/scripts/export-builder-api-evidence.js +262 -0
  385. package/scripts/lib/builder-api-docker-staging-copy.js +60 -0
  386. package/scripts/lib/builder-api-docker-staging-core.js +183 -0
  387. package/scripts/lib/docker-image-content-gate-core.js +166 -0
  388. package/scripts/lib/plan-actor.js +109 -0
  389. package/scripts/lib/plan-config.js +20 -0
  390. package/scripts/lib/plan-gates.js +154 -0
  391. package/scripts/lib/plan-meta.js +104 -0
  392. package/scripts/lib/plan-parse.js +162 -0
  393. package/scripts/lib/plan-prevalidate-gates.js +337 -0
  394. package/scripts/lib/plan-run-core.js +125 -0
  395. package/scripts/lib/plan-run-report.js +119 -0
  396. package/scripts/plan-approve.js +24 -0
  397. package/scripts/plan-archive.js +49 -0
  398. package/scripts/plan-run.js +13 -0
  399. package/scripts/plan-set-actor.js +21 -0
  400. package/scripts/plan-validate.js +80 -0
  401. package/scripts/pnpm/af.mjs +110 -0
  402. package/scripts/pnpm/check-quiet.mjs +32 -0
  403. package/scripts/pnpm/dev-install.mjs +29 -0
  404. package/scripts/pnpm/dev-reload.mjs +18 -0
  405. package/scripts/pnpm/help.mjs +55 -0
  406. package/scripts/pnpm/lib/dev-reload-core.mjs +189 -0
  407. package/scripts/pnpm/lib/dev-reload-log-capture.mjs +67 -0
  408. package/scripts/pnpm/lib/dev-reload-log-utils.mjs +32 -0
  409. package/scripts/pnpm/lib/resolve-aifabrix-bin.mjs +124 -0
  410. package/scripts/pnpm/lib/resolve-app-url.mjs +183 -0
  411. package/scripts/pnpm/lib/spinner.mjs +42 -0
  412. package/scripts/stage_builder_api_for_docker.js +65 -0
  413. package/scripts/sync-builder-api-template.js +44 -0
  414. package/templates/README.md +3 -0
  415. package/templates/applications/builder-api/Dockerfile +38 -0
  416. package/templates/applications/builder-api/application.yaml +75 -0
  417. package/templates/applications/builder-api/env.template +48 -0
  418. package/templates/applications/dataplane/application.yaml +27 -5
  419. package/templates/applications/dataplane/env.template +38 -15
  420. package/templates/applications/dataplane/rbac.yaml +85 -3
  421. package/templates/applications/miso-controller/application.yaml +10 -1
  422. package/templates/applications/miso-controller/env.template +11 -10
  423. package/templates/applications/miso-controller/rbac.yaml +72 -0
  424. package/templates/channels/README.md +18 -0
  425. package/templates/channels/ai-fabrix-icon.jpg +0 -0
  426. package/templates/channels/chatgpt/install.template.md.hbs +21 -24
  427. package/templates/channels/chatgpt/integration/README.md +11 -0
  428. package/templates/channels/chatgpt/integration/application.json +15 -0
  429. package/templates/channels/chatgpt/integration/chatgpt-system.json +29 -0
  430. package/templates/channels/chatgpt/integration/env.template +4 -0
  431. package/templates/channels/microsoft-copilot/install.template.md.hbs +20 -25
  432. package/templates/channels/microsoft-copilot/integration/README.md +11 -0
  433. package/templates/channels/microsoft-copilot/integration/application.json +15 -0
  434. package/templates/channels/microsoft-copilot/integration/env.template +6 -0
  435. package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +34 -0
  436. package/templates/channels/slack/install.template.md.hbs +48 -18
  437. package/templates/channels/slack/integration/README.md +38 -0
  438. package/templates/channels/slack/integration/application.json +18 -0
  439. package/templates/channels/slack/integration/env.template +29 -0
  440. package/templates/channels/slack/integration/slack-datasource-conversations.json +226 -0
  441. package/templates/channels/slack/integration/slack-datasource-messages.json +269 -0
  442. package/templates/channels/slack/integration/slack-system.json +144 -0
  443. package/templates/channels/slack/manifest.template.json.hbs +20 -10
  444. package/templates/channels/teams-bot/install.template.md.hbs +31 -17
  445. package/templates/channels/teams-bot/integration/README.md +18 -0
  446. package/templates/channels/teams-bot/integration/application.json +17 -0
  447. package/templates/channels/teams-bot/integration/env.template +5 -0
  448. package/templates/channels/teams-bot/integration/teams-bot-system.json +55 -0
  449. package/templates/channels/teams-bot/manifest.template.json.hbs +27 -0
  450. package/templates/channels/web-embed/install.template.md.hbs +16 -26
  451. package/templates/channels/web-embed/integration/README.md +11 -0
  452. package/templates/channels/web-embed/integration/application.json +15 -0
  453. package/templates/channels/web-embed/integration/env.template +4 -0
  454. package/templates/channels/web-embed/integration/web-embed-system.json +29 -0
  455. package/templates/openapi/redoc_page.html +86 -0
  456. package/templates/python/docker-compose.hbs +11 -0
  457. package/templates/python/requirements.txt +2 -2
  458. package/templates/typescript/docker-compose.hbs +11 -0
  459. package/lib/certification/cli-cert-sync-skip.js +0 -21
@@ -5,8 +5,7 @@ app:
5
5
  description: "AI Fabrix Dataplane is a secure, in-tenant integration and automation layer that supplies governed, normalized, and explainable enterprise data to AI agents. Using CIP as a declarative standard, it enforces RBAC and ABAC, executes integrations, and exposes trusted data via MCP and OpenAPI."
6
6
  type: webapp
7
7
  language: python # Explicitly specify Python language
8
- version: 2.0.0
9
-
8
+ version: 2.0.10
10
9
  # Image Configuration
11
10
  # Set tag to match your build (e.g. aifabrix build dataplane -t 1.0.0 then tag: 1.0.0)
12
11
  # Registry is required so the controller can pull the image (avoids "docker: not found" on the controller host).
@@ -69,7 +68,7 @@ build:
69
68
  # Pulled-image local compose (no bind-mount): drives `command` in generated docker-compose. Override for non-standard images (e.g. stub ACR tags).
70
69
  imageRun: exec python -m uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-3001}
71
70
  # Image policy (442.0): explicit Dockerfile COPY; worker/beat via python -m app.core.*
72
- # integration/ in image: <systemKey>-deploy.json + application.json|yaml only (no test-*, wizard-configs).
71
+ # integration/ in image: only onboarding-catalog.json keys (+ deploy/application per key).
73
72
  worker: true
74
73
  imageRunWorker: exec python -m app.core.celery_worker_main
75
74
  imageRunBeat: exec python -m app.core.celery_beat_main
@@ -83,7 +82,9 @@ build:
83
82
  # NOT included (auto-configured):
84
83
  # - Database URLs, Redis → auto-generated during Azure install
85
84
  # - MISO_*, KEYCLOAK_* → auto-generated during Azure install
86
- # - AI params (OPENAI_*, AZURE_OPENAI_*) → from controller config
85
+ # - AI params / provider secrets → LLM external systems + secret store
86
+ # (never product OPENAI_* / AZURE_OPENAI_*). ≥2 providers →
87
+ # ENTERPRISE_LLM_DEFAULT_SELECTOR (portal LLM category).
87
88
  # - ENVIRONMENT → set by deployment target
88
89
 
89
90
  configuration:
@@ -91,6 +92,7 @@ configuration:
91
92
  # Operations & Debugging
92
93
  # -------------------------------------------------------------------------
93
94
  - name: LOG_LEVEL
95
+ category: Operations & Debugging
94
96
  portalInput:
95
97
  field: select
96
98
  label: "Log Level"
@@ -101,6 +103,7 @@ configuration:
101
103
  - ERROR
102
104
 
103
105
  - name: ABAC_AUDIT_DETAIL_LEVEL
106
+ category: Operations & Debugging
104
107
  portalInput:
105
108
  field: select
106
109
  label: "ABAC Audit Detail Level"
@@ -109,6 +112,7 @@ configuration:
109
112
  - detailed
110
113
 
111
114
  - name: RBAC_AUDIT_DETAIL_LEVEL
115
+ category: Operations & Debugging
112
116
  portalInput:
113
117
  field: select
114
118
  label: "RBAC Audit Detail Level"
@@ -118,6 +122,7 @@ configuration:
118
122
  - explain
119
123
 
120
124
  - name: TRUST_CUSTOMER_POLICY_LEVEL
125
+ category: Trust
121
126
  portalInput:
122
127
  field: select
123
128
  label: "Trust policy level (no-policy defaults)"
@@ -127,6 +132,7 @@ configuration:
127
132
  - relaxed
128
133
 
129
134
  - name: TRUST_PUBLISH_GATE_ENABLED
135
+ category: Trust
130
136
  portalInput:
131
137
  field: select
132
138
  label: "Enforce trust gate on datasource publish"
@@ -135,6 +141,7 @@ configuration:
135
141
  - "true"
136
142
 
137
143
  - name: TRUST_PROMOTE_GATE_ENABLED
144
+ category: Trust
138
145
  portalInput:
139
146
  field: select
140
147
  label: "Enforce trust gate on external system publish (promote scope)"
@@ -143,14 +150,16 @@ configuration:
143
150
  - "true"
144
151
 
145
152
  - name: TRUST_RUNTIME_GATE_ENABLED
153
+ category: Trust
146
154
  portalInput:
147
155
  field: select
148
- label: "Enforce trust gate on CIP execution (runtime scope)"
156
+ label: "Enforce trust gate on CIP execution and workforce generation inputs (runtime scope)"
149
157
  options:
150
158
  - "false"
151
159
  - "true"
152
160
 
153
161
  - name: TRUST_AI_EXPOSURE_GATE_ENABLED
162
+ category: Trust
154
163
  portalInput:
155
164
  field: select
156
165
  label: "Enforce trust gate on AI document-storage prompt generation"
@@ -164,24 +173,28 @@ configuration:
164
173
  # Tune based on customer data volumes and external API characteristics
165
174
 
166
175
  - name: CIP_EXECUTION_MAX_RECORDS
176
+ category: CIP Execution
167
177
  portalInput:
168
178
  field: text
169
179
  label: "Max Records per CIP Execution"
170
180
  placeholder: "100000"
171
181
 
172
182
  - name: CIP_EXECUTION_MAX_RESPONSE_SIZE_MB
183
+ category: CIP Execution
173
184
  portalInput:
174
185
  field: text
175
186
  label: "Max Response Size (MB)"
176
187
  placeholder: "100.0"
177
188
 
178
189
  - name: CIP_EXECUTION_OPERATION_TIMEOUT
190
+ category: CIP Execution
179
191
  portalInput:
180
192
  field: text
181
193
  label: "Operation Timeout (seconds)"
182
194
  placeholder: "300.0"
183
195
 
184
196
  - name: CIP_EXECUTION_HTTP_TIMEOUT
197
+ category: CIP Execution
185
198
  portalInput:
186
199
  field: text
187
200
  label: "HTTP Request Timeout (seconds)"
@@ -193,13 +206,22 @@ configuration:
193
206
  # Tune to match external API rate limits
194
207
 
195
208
  - name: CIP_EXECUTION_RATE_LIMIT_REQUESTS_PER_SECOND
209
+ category: CIP Rate Limiting
196
210
  portalInput:
197
211
  field: text
198
212
  label: "Rate Limit (requests/second)"
199
213
  placeholder: "10.0"
200
214
 
201
215
  - name: CIP_EXECUTION_RATE_LIMIT_BURST_SIZE
216
+ category: CIP Rate Limiting
202
217
  portalInput:
203
218
  field: text
204
219
  label: "Rate Limit Burst Size"
205
220
  placeholder: "20"
221
+
222
+ - name: ENTERPRISE_LLM_DEFAULT_SELECTOR
223
+ category: LLM
224
+ portalInput:
225
+ field: text
226
+ label: "Default LLM provider (system key when two or more providers)"
227
+ placeholder: "openai"
@@ -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
- # Log format: json or text
18
- LOG_FORMAT=json
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.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
@@ -79,8 +80,9 @@ VECTOR_DATABASE_URL=kv://databases-dataplane-1-urlKeyVault
79
80
  DB_1_PASSWORD=kv://databases-dataplane-1-passwordKeyVault
80
81
 
81
82
  # Base path for document binary storage (used when datasource config has no processing.fileStoragePath).
82
- # Dataplane creates subdirs per datasource key (e.g. DOCUMENT_STORAGE_BASE_PATH/test-e2e-sharepoint-documents).
83
- # Production: use a writable path (e.g. /data/documents) and mount a volume. Local/Docker: use /tmp/documents or /app/data/documents.
83
+ # Dataplane creates subdirs per datasource key (e.g. DOCUMENT_STORAGE_BASE_PATH/test-e2e-sharepoint-deals).
84
+ # Container (--reload): /mnt/data/documents with repo mount/ bind-mounted to /mnt/data.
85
+ # Host root .env: aifabrix resolve substitutes /mnt/data → <repo>/mount (e.g. mount/documents).
84
86
  DOCUMENT_STORAGE_BASE_PATH=/mnt/data/documents
85
87
 
86
88
  # Logs Database Configuration (for execution, audit, ABAC traces)
@@ -134,8 +136,6 @@ MISO_CLIENTSECRET=kv://dataplane-client-secretKeyVault
134
136
  # Keycloak Configuration (for OAuth2 endpoints)
135
137
  # Public: browser / issuer (includes /auth when Keycloak uses KC_HTTP_RELATIVE_PATH=/auth).
136
138
  KEYCLOAK_SERVER_URL=url://keycloak-public
137
- # Internal: server-to-Keycloak HTTP (docker: service:port + /auth from keycloak application.yaml)
138
- KEYCLOAK_INTERNAL_SERVER_URL=url://keycloak-internal
139
139
  KEYCLOAK_REALM=aifabrix
140
140
 
141
141
  # =============================================================================
@@ -154,9 +154,14 @@ MISO_LOGOUT_URL=/logout
154
154
  MISO_PIPELINE_ENV_KEY=
155
155
 
156
156
  # LLM: chat/embed route through governed enterprise-llm only. Provider credentials
157
- # live on LLM provider external systems (integration/openai, azure-openai, ollama).
158
- # Shared secret for integration/openai: secrets-openaiApiKeyVault (af secret set ... --shared)
159
- AI_VALIDATION_LLM_MODEL=gpt-4o-mini
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
160
165
 
161
166
  # =============================================================================
162
167
  # AUDIT CONFIGURATION
@@ -193,6 +198,22 @@ AUDIT_ASYNC_SHADOW_ENQUEUE=false
193
198
  # Set true for local dev policy CRUD; pair with VITE_POLICY_MANAGEMENT_ENABLED=true in app-ui.
194
199
  POLICY_MANAGEMENT_API_ENABLED=false
195
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
+
196
217
  # VIEW_MODULES — optional comma-separated UI module allowlist (unset = all modules).
197
218
  # Keys: dashboard, work, content-review, assistants, connected-systems, templates,
198
219
  # audit-logs, ai-trust, administration (deep link only; never sidebar in V1).
@@ -219,7 +240,6 @@ FIRST_PARTY_HTTP_INTERNAL_SPEC_EXTERNAL_SYSTEM_ID=
219
240
 
220
241
  # OpenTelemetry Configuration
221
242
  OPENTELEMETRY_ENABLED=false
222
- OPENTELEMETRY_ENDPOINT=
223
243
 
224
244
  # =============================================================================
225
245
  # INTEGRATION CERTIFICATE SIGNING (RS256 PEM)
@@ -234,10 +254,10 @@ DATAPLANE_PUBLIC_KEY_ID=
234
254
  # engine uses RS256. When unset and LOCAL_MODE=true, a process-local ephemeral RSA keypair is used
235
255
  # (still RS256, with publicKey + publicKeyFingerprint on issued certs). Non-local requires PEM keys.
236
256
  # PEM values are often multi-line; resolve via secret store / deploy pipeline (kv://) or inject as env.
237
- CERTIFICATE_PRIVATE_KEY=
238
- CERTIFICATE_PUBLIC_KEY=
257
+ CERTIFICATE_PRIVATE_KEY=kv://secrets-certificatePrivateKeyVault
258
+ CERTIFICATE_PUBLIC_KEY=kv://secrets-certificatePublicKeyVault
239
259
  # Optional public key identifier for issued certificates; default if unset: dataplane-signing-key
240
- CERTIFICATE_PUBLIC_KEY_ID=
260
+ CERTIFICATE_PUBLIC_KEY_ID=dev01-dataplane-signing
241
261
 
242
262
  # =============================================================================
243
263
  # VALIDATION ENGINE — YAML CONTRACTS
@@ -296,11 +316,14 @@ TRUST_CUSTOMER_POLICY_LEVEL=standard
296
316
  #
297
317
  # Opt-in gates (default false). When true, trust is evaluated at the call site;
298
318
  # DENY/REVIEW can block the operation (e.g. datasource publish returns 403).
319
+ # Enterprise Knowledge COM compile and Digital Worker capability generation reuse
320
+ # these gates via app/services/workforce/enterprise_binding_eligibility.py when
321
+ # collecting generation bindings (published + trust-ready datasources only).
299
322
  # Datasource publish — scope publish; runs before marking the datasource published
300
323
  TRUST_PUBLISH_GATE_ENABLED=false
301
324
  # External system publish — scope promote; evaluated per active datasource first
302
325
  TRUST_PROMOTE_GATE_ENABLED=false
303
- # CIP operation execution — scope runtime; evaluation uses live/runtime checks
326
+ # CIP operation execution — scope runtime; also filters workforce/EK generation inputs
304
327
  TRUST_RUNTIME_GATE_ENABLED=false
305
328
  # Document-storage AI system prompt generation — scope aiExposure; before LLM call
306
329
  TRUST_AI_EXPOSURE_GATE_ENABLED=false
@@ -27,9 +27,14 @@ roles:
27
27
 
28
28
  - name: "AI Fabrix Developer"
29
29
  value: "aifabrix-developer"
30
- description: "Developer access to deploy applications via GitHub Actions"
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: "Update assistantName or preferredChannel on a user activation"
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: "Approve or reject pending worker tasks"
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:
@@ -391,7 +404,67 @@ permissions:
391
404
  ]
392
405
  description: "Read manager-scoped workforce impact aggregates (no task detail)"
393
406
 
407
+ # Evidence Fabrix v2 operator + runtime retrieval (453.1 / 453.2)
408
+ - name: "evidence:read"
409
+ roles:
410
+ [
411
+ "aifabrix-platform-admin",
412
+ "aifabrix-security-admin",
413
+ "aifabrix-developer",
414
+ "aifabrix-ai-trust-operator",
415
+ ]
416
+ description: "List, get, and retrieve Evidence Fabrix v2 rows for planning"
417
+
418
+ - name: "evidence:manage"
419
+ roles:
420
+ [
421
+ "aifabrix-platform-admin",
422
+ "aifabrix-developer",
423
+ "aifabrix-ai-trust-operator",
424
+ ]
425
+ description: "Create, update, delete, and reorder Evidence Fabrix v2 rows"
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
+
394
466
  # Workforce subscriptions (436.11 / 438.6)
467
+ # Role Assistant surfaces use worker:* (already defined above) — not agentWorkforce:*.
395
468
  - name: "subscription:read"
396
469
  roles:
397
470
  [
@@ -403,6 +476,15 @@ permissions:
403
476
  ]
404
477
  description: "List workforce subscriptions and execution audit rows"
405
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
+
406
488
  - name: "subscription:run"
407
489
  roles:
408
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: '1.9.5'
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)
@@ -157,8 +159,6 @@ WAIT_FOR_KEYCLOAK=true
157
159
  # For production: use public domain (e.g., https://miso.example.com)
158
160
  # url://public includes front-door path from application.yaml (e.g. /controller).
159
161
  MISO_WEB_SERVER_URL=url://public
160
- # Provider-grant OAuth redirect_uri base (Azure/start-dev also set this explicitly; code falls back to MISO_WEB_SERVER_URL)
161
- CONTROLLER_BASE_URL=url://public
162
162
  MISO_CONTROLLER_URL=url://internal
163
163
  MISO_RELATIVE_PATH=url://vdir-public
164
164
  ALLOWED_ORIGINS=http://localhost:*,url://host-public,url://host-private,url://dataplane-host-public,url://dataplane-host-private
@@ -191,7 +191,7 @@ CONTROLLER_EVALUATION=
191
191
  #
192
192
  # Delegated Graph (second redirect URI on the same vendor app): see section below.
193
193
  ENTRA_CALLBACK_STATE_SECRET=kv://entra-callback-state-secret
194
- ENTRA_ID_CENTRAL_CALLBACK_URI=kv://entra-callback-uri
194
+ ENTRA_ID_CENTRAL_CALLBACK_URI=https://aifabrix-pro-mori-web-we.azurewebsites.net/entra-id-concent/callback
195
195
  ENTRA_ID_CLIENT_ID=kv://entra-client-idKeyVault
196
196
  ENTRA_ID_CLIENT_SECRET=kv://entra-client-secretKeyVault
197
197
 
@@ -244,7 +244,7 @@ DEPLOYMENT=database
244
244
  ENCRYPTION_KEY=kv://miso-controller-secrets-encryptionKeyVault
245
245
 
246
246
  # Comma-separated application keys allowed for POST .../applications/bootstrap (install-time only)
247
- BOOTSTRAP_APPKEYS=dataplane
247
+ BOOTSTRAP_APPKEYS=dataplane,builder-api
248
248
 
249
249
  # Key Vault Integration (for security parameter encryption)
250
250
  # Set to true to enable Azure Key Vault for storing security parameters
@@ -267,16 +267,16 @@ API_KEY=kv://miso-controller-secrets-apiKeyVault
267
267
  #
268
268
  # Development: set to DEVELOPMENT to disable license validation (no Mori/JWT required):
269
269
  # LICENSE_JWT=DEVELOPMENT
270
- # - Use only for local development; do not use in production.
271
- LICENSE_JWT=DEVELOPMENT
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
272
273
 
273
274
  # =============================================================================
274
275
  # ENTRA ID ONBOARDING (delegated Graph via Mori)
275
276
  # =============================================================================
276
277
  # Must match a Web redirect URI on the vendor multi-tenant app and Mori’s route
277
- # …/entra-graph-delegated/callback. Example (001 dev Mori API):
278
- # ENTRA_GRAPH_DELEGATED_REDIRECT_URI=https://aifabrix001-mori-web-we.azurewebsites.net/entra-graph-delegated/callback
279
- 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
280
280
 
281
281
  # Optional delegated Graph scopes for GET …/graph-auth-url (space- or comma-separated).
282
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
@@ -289,7 +289,8 @@ ENTRA_GRAPH_DELEGATED_REDIRECT_URI=
289
289
  # =============================================================================
290
290
 
291
291
  MORI_BASE_URL=url://mori-controller-public
292
- MORI_AUTH_METHOD=apiKey
292
+ MORI_AUTH_METHOD=kv://mori-controller-auth-methodKeyVault
293
+ MORI_CALLBACK_API_KEY=kv://mori-callback-api-keyKeyVault
293
294
  MORI_API_KEY=kv://mori-controller-api-keyKeyVault
294
295
  MORI_USERNAME=kv://mori-controller-basic-usernameKeyVault
295
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:
@@ -0,0 +1,18 @@
1
+ # Channel integration templates
2
+
3
+ Published copies of communication external-system manifests for `aifabrix channel scaffold <target>`.
4
+
5
+ ## SSOT
6
+
7
+ | Channel | Master location | Publish |
8
+ | --- | --- | --- |
9
+ | **All channel targets** | `aifabrix-dataplane/integration/<target>/` | `make sync-json` in dataplane (copies manifests; **no** `*-deploy.json`) |
10
+ | Targets | `slack`, `teams-bot`, `microsoft-copilot`, `chatgpt`, `web-embed` | See `CHANNEL_INTEGRATION_TARGETS` in dataplane `make/config.mk` |
11
+
12
+ `channel scaffold` copies files from `integration/` subfolder here into the user's `integration/<target>/`, then generates **only** `<target>-deploy.json` via `aifabrix json`.
13
+
14
+ Do **not** hardcode manifests in `lib/channels/*.js`.
15
+
16
+ ## Slack App manifest (install)
17
+
18
+ `manifest.template.json.hbs` and `install.template.md.hbs` are for `aifabrix channel add slack` (Slack developer portal), separate from the external-system integration tree above.