@aifabrix/builder 2.45.0 → 2.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/.cursor/rules/cli-layout.mdc +2 -0
  2. package/.cursor/rules/cli-product-neutral.mdc +43 -0
  3. package/.cursor/rules/docs-rules.mdc +3 -1
  4. package/.cursor/rules/project-rules.mdc +1 -0
  5. package/README.md +43 -17
  6. package/integration/hubspot-test/wizard-hubspot-e2e.yaml +1 -1
  7. package/jest.config.default.js +2 -1
  8. package/jest.config.isolated.js +2 -1
  9. package/jest.global-live-fabrix-hooks.js +36 -0
  10. package/jest.isolated-projects.js +130 -0
  11. package/jest.projects.js +69 -121
  12. package/lib/api/agent-metadata-validation.api.js +93 -0
  13. package/lib/api/api-response-errors.js +124 -0
  14. package/lib/api/audit-api-helpers.js +68 -0
  15. package/lib/api/audit.api.js +119 -0
  16. package/lib/api/auth-cache.api.js +44 -0
  17. package/lib/api/certificates.api.js +4 -4
  18. package/lib/api/credential.api.js +2 -2
  19. package/lib/api/dataplane-health.api.js +137 -0
  20. package/lib/api/dataplane-sync.api.js +27 -0
  21. package/lib/api/datasources-core.api.js +21 -18
  22. package/lib/api/datasources-extended.api.js +22 -22
  23. package/lib/api/dimensions.api.js +3 -0
  24. package/lib/api/external-systems.api.js +13 -13
  25. package/lib/api/governance-scenario-pack.api.js +159 -0
  26. package/lib/api/governance-scenarios.api.js +39 -0
  27. package/lib/api/groups.api.js +79 -0
  28. package/lib/api/index.js +88 -5
  29. package/lib/api/lifecycle.api.js +77 -0
  30. package/lib/api/pipeline.api.js +7 -5
  31. package/lib/api/protection.api.js +157 -0
  32. package/lib/api/records-bulk.api.js +43 -0
  33. package/lib/api/records-search-parse.js +49 -0
  34. package/lib/api/records-search.api.js +29 -0
  35. package/lib/api/types/agent-metadata-validation.types.js +67 -0
  36. package/lib/api/types/audit.types.js +72 -0
  37. package/lib/api/types/dataplane-health.types.js +27 -0
  38. package/lib/api/types/dimensions.types.js +2 -0
  39. package/lib/api/types/governance-scenarios.types.js +39 -0
  40. package/lib/api/types/protection.types.js +69 -0
  41. package/lib/api/types/records-bulk.types.js +35 -0
  42. package/lib/api/types/records-search.types.js +28 -0
  43. package/lib/api/user-groups.api.js +50 -0
  44. package/lib/api/users.api.js +95 -0
  45. package/lib/api/validation-run.api.js +3 -3
  46. package/lib/api/validation-runner.js +5 -3
  47. package/lib/api/wizard-platform.api.js +3 -3
  48. package/lib/api/wizard.api.js +21 -21
  49. package/lib/app/deploy-config.js +4 -1
  50. package/lib/app/deploy.js +34 -19
  51. package/lib/app/down.js +20 -1
  52. package/lib/app/push.js +4 -5
  53. package/lib/app/register.js +7 -4
  54. package/lib/app/run-env-compose.js +84 -30
  55. package/lib/build/index.js +5 -0
  56. package/lib/certification/sync-system-certification.js +13 -6
  57. package/lib/cli/index.js +8 -2
  58. package/lib/cli/infra-guided-auth.js +109 -0
  59. package/lib/cli/infra-guided.js +91 -69
  60. package/lib/cli/setup-app.help.js +19 -2
  61. package/lib/cli/setup-app.js +58 -23
  62. package/lib/cli/setup-app.test-commands.js +28 -21
  63. package/lib/cli/setup-auth.js +55 -3
  64. package/lib/cli/setup-certification-commands.js +147 -0
  65. package/lib/cli/setup-certification.help.js +141 -0
  66. package/lib/cli/setup-environment.js +19 -2
  67. package/lib/cli/setup-external-system-help.js +62 -0
  68. package/lib/cli/setup-external-system.js +62 -6
  69. package/lib/cli/setup-infra.js +9 -1
  70. package/lib/cli/setup-platform.js +6 -1
  71. package/lib/cli/setup-secrets.js +33 -1
  72. package/lib/cli/setup-utility-help-after.js +65 -0
  73. package/lib/cli/setup-utility-repair.js +198 -0
  74. package/lib/cli/setup-utility-resolve.js +42 -6
  75. package/lib/cli/setup-utility-validate.js +197 -0
  76. package/lib/cli/setup-utility.js +41 -258
  77. package/lib/commands/auth-status-client-tokens.js +214 -0
  78. package/lib/commands/auth-status-dataplane-version.js +269 -0
  79. package/lib/commands/auth-status-display.js +94 -0
  80. package/lib/commands/auth-status.js +111 -53
  81. package/lib/commands/credential-push.js +10 -5
  82. package/lib/commands/datasource-load-export-cli.js +178 -0
  83. package/lib/commands/datasource-test-trust-cli.js +118 -0
  84. package/lib/commands/datasource-unified-test-cli.js +31 -20
  85. package/lib/commands/datasource-unified-test-cli.options.js +22 -3
  86. package/lib/commands/datasource-unified-test-e2e-cli-helpers.js +5 -5
  87. package/lib/commands/datasource-verify-audit-cli.js +96 -0
  88. package/lib/commands/datasource.js +68 -1
  89. package/lib/commands/dev-show-display.js +8 -1
  90. package/lib/commands/dimension-value.js +43 -13
  91. package/lib/commands/dimension.js +38 -7
  92. package/lib/commands/governance-cli-shared.js +94 -0
  93. package/lib/commands/governance-command-action.js +132 -0
  94. package/lib/commands/governance-download-external.js +34 -0
  95. package/lib/commands/governance-generate-external.js +71 -0
  96. package/lib/commands/governance-upload-external.js +36 -0
  97. package/lib/commands/governance-verify-external.js +64 -0
  98. package/lib/commands/governance.js +144 -0
  99. package/lib/commands/identity-apply-sync.js +131 -0
  100. package/lib/commands/identity-group-cli.js +146 -0
  101. package/lib/commands/identity-membership-role-cache.js +175 -0
  102. package/lib/commands/identity-shared.js +94 -0
  103. package/lib/commands/identity-user-cli.js +158 -0
  104. package/lib/commands/identity.js +43 -0
  105. package/lib/commands/lifecycle-command-action.js +123 -0
  106. package/lib/commands/lifecycle-external.js +268 -0
  107. package/lib/commands/login.js +56 -17
  108. package/lib/commands/protection-cli-leaves.js +286 -0
  109. package/lib/commands/protection.js +50 -0
  110. package/lib/commands/repair-auth-apply.js +127 -0
  111. package/lib/commands/repair-changed-files.js +41 -0
  112. package/lib/commands/repair-datasource-keys.js +4 -1
  113. package/lib/commands/repair-datasource-run.js +59 -0
  114. package/lib/commands/repair-datasource-test-payload.js +259 -0
  115. package/lib/commands/repair-datasource.js +1 -51
  116. package/lib/commands/repair-env-template.js +64 -13
  117. package/lib/commands/repair-external-run.js +216 -0
  118. package/lib/commands/repair-openapi-sync.js +23 -0
  119. package/lib/commands/repair-persist.js +4 -0
  120. package/lib/commands/repair-rbac.js +52 -1
  121. package/lib/commands/repair-steps.js +145 -0
  122. package/lib/commands/repair.js +29 -286
  123. package/lib/commands/secrets-get.js +184 -0
  124. package/lib/commands/secrets-remove-all.js +3 -1
  125. package/lib/commands/setup-image-refresh.js +146 -0
  126. package/lib/commands/setup-modes.js +158 -162
  127. package/lib/commands/setup-platform-auth.js +76 -0
  128. package/lib/commands/setup-prompts-admin.js +244 -0
  129. package/lib/commands/setup-prompts-platform-mode.js +67 -0
  130. package/lib/commands/setup-prompts-validators.js +36 -0
  131. package/lib/commands/setup-prompts.js +24 -76
  132. package/lib/commands/setup-run-context.js +45 -0
  133. package/lib/commands/setup-spinners.js +39 -0
  134. package/lib/commands/setup.js +27 -5
  135. package/lib/commands/teardown.js +39 -0
  136. package/lib/commands/test-e2e-external.js +61 -14
  137. package/lib/commands/test-governance-cli-options.js +47 -0
  138. package/lib/commands/test-governance-external.js +67 -0
  139. package/lib/commands/test-trust-cli-options.js +32 -0
  140. package/lib/commands/test-trust-external.js +126 -0
  141. package/lib/commands/up-common.js +25 -13
  142. package/lib/commands/up-dataplane.js +50 -13
  143. package/lib/commands/upload-publish-context.js +75 -0
  144. package/lib/commands/upload-sidecar-followups.js +89 -0
  145. package/lib/commands/upload.js +108 -105
  146. package/lib/commands/verify-governance-combined-external.js +61 -0
  147. package/lib/commands/verify-governance-command-action.js +64 -0
  148. package/lib/commands/verify-governance-db.js +102 -0
  149. package/lib/commands/verify-governance-external.js +77 -0
  150. package/lib/commands/verify-governance-result-builders.js +71 -0
  151. package/lib/commands/verify-operations-command-action.js +68 -0
  152. package/lib/commands/verify-operations-external.js +268 -0
  153. package/lib/commands/verify-operations-persist.js +75 -0
  154. package/lib/commands/verify-operations-step-plan.js +68 -0
  155. package/lib/commands/verify-operations-steps.js +111 -0
  156. package/lib/commands/verify-trust-command-action.js +70 -0
  157. package/lib/commands/verify-trust-external.js +67 -0
  158. package/lib/commands/wizard-config-normalizer.js +43 -23
  159. package/lib/commands/wizard-core.js +5 -0
  160. package/lib/core/admin-password-generator.js +38 -0
  161. package/lib/core/admin-secrets-bundle.js +111 -0
  162. package/lib/core/admin-secrets-env-overlay.js +62 -0
  163. package/lib/core/admin-secrets.js +32 -4
  164. package/lib/core/config-attach-extensions.js +3 -0
  165. package/lib/core/config-device-dataplane.js +185 -0
  166. package/lib/core/config-platform-controller.js +44 -0
  167. package/lib/core/config-setup-installation-profile.js +42 -0
  168. package/lib/core/config-setup-platform-mode.js +46 -0
  169. package/lib/core/config.js +46 -36
  170. package/lib/core/secrets-admin-env.js +6 -2
  171. package/lib/core/secrets-ensure.js +4 -0
  172. package/lib/core/secrets-env-content.js +54 -48
  173. package/lib/core/secrets-env-write.js +10 -1
  174. package/lib/core/secrets-infra-placeholder-sync.js +2 -0
  175. package/lib/core/setup-installation-profile.js +43 -0
  176. package/lib/core/setup-platform-mode.js +55 -0
  177. package/lib/datasource/agent-trust-debug-log.js +45 -0
  178. package/lib/datasource/agent-trust-fetch.js +115 -0
  179. package/lib/datasource/agent-trust-map.js +101 -0
  180. package/lib/datasource/agent-trust-mock.js +44 -0
  181. package/lib/datasource/agent-trust-run.js +95 -0
  182. package/lib/datasource/agent-trust-timeout.js +25 -0
  183. package/lib/datasource/audit-evidence-display.js +80 -0
  184. package/lib/datasource/audit-evidence-extract-debug.js +115 -0
  185. package/lib/datasource/audit-evidence-extract.js +180 -0
  186. package/lib/datasource/audit-evidence-matrix-rows.js +158 -0
  187. package/lib/datasource/audit-evidence-operation-aliases.js +63 -0
  188. package/lib/datasource/audit-evidence-poll.js +109 -0
  189. package/lib/datasource/audit-evidence-run.js +177 -0
  190. package/lib/datasource/audit-evidence-verify-helpers.js +167 -0
  191. package/lib/datasource/audit-evidence-verify-matrix.js +205 -0
  192. package/lib/datasource/audit-evidence-verify.js +108 -0
  193. package/lib/datasource/bulk-loader-run-batches.js +100 -0
  194. package/lib/datasource/bulk-loader-service-retry.js +52 -0
  195. package/lib/datasource/bulk-loader-service.js +127 -0
  196. package/lib/datasource/capability/run-capability-dimension.js +2 -1
  197. package/lib/datasource/datasource-exporter-resolve.js +82 -0
  198. package/lib/datasource/datasource-exporter-service.js +144 -0
  199. package/lib/datasource/datasource-identifier.js +148 -0
  200. package/lib/datasource/datasource-load-export-context.js +95 -0
  201. package/lib/datasource/integration-context.js +6 -4
  202. package/lib/datasource/local-data-paths.js +145 -0
  203. package/lib/datasource/log-cleaner.js +241 -0
  204. package/lib/datasource/log-viewer.js +111 -6
  205. package/lib/datasource/record-file-parser.js +85 -0
  206. package/lib/datasource/record-mapper.js +129 -0
  207. package/lib/datasource/resolve-app.js +74 -55
  208. package/lib/datasource/test-e2e.js +29 -2
  209. package/lib/datasource/unified-validation-run-body.js +3 -1
  210. package/lib/datasource/unified-validation-run-resolve.js +45 -12
  211. package/lib/datasource/unified-validation-run.js +47 -18
  212. package/lib/datasource/validate.js +37 -20
  213. package/lib/deployment/environment-poll-status.js +138 -0
  214. package/lib/deployment/environment.js +42 -34
  215. package/lib/external-system/download.js +21 -20
  216. package/lib/external-system/generator.js +5 -1
  217. package/lib/external-system/integration-auth-context.js +45 -0
  218. package/lib/external-system/test-auth.js +12 -5
  219. package/lib/external-system/test-system-level.js +25 -4
  220. package/lib/external-system/test.js +9 -7
  221. package/lib/generator/external-controller-manifest.js +15 -0
  222. package/lib/governance/governance-cli-errors.js +96 -0
  223. package/lib/governance/governance-download-display.js +38 -0
  224. package/lib/governance/governance-pack-loader.js +70 -0
  225. package/lib/governance/governance-run-display.js +309 -0
  226. package/lib/identity/identity-apply-core.js +108 -0
  227. package/lib/identity/identity-apply-phases.js +244 -0
  228. package/lib/identity/identity-apply-service.js +77 -0
  229. package/lib/identity/identity-csv-parser.js +114 -0
  230. package/lib/infrastructure/admin-secrets-apply.js +84 -0
  231. package/lib/infrastructure/admin-secrets-ensure.js +130 -0
  232. package/lib/infrastructure/admin-secrets-resolve.js +95 -0
  233. package/lib/infrastructure/admin-secrets-sync.js +91 -0
  234. package/lib/infrastructure/helpers.js +23 -129
  235. package/lib/infrastructure/index.js +5 -6
  236. package/lib/infrastructure/orphan-infra-docker-teardown.js +11 -5
  237. package/lib/internal/fs-real-sync.js +29 -1
  238. package/lib/lifecycle/certification-progress.js +231 -0
  239. package/lib/lifecycle/dataplane-ui-url.js +145 -0
  240. package/lib/lifecycle/exit-codes.js +24 -0
  241. package/lib/lifecycle/json-envelope.js +25 -0
  242. package/lib/lifecycle/lifecycle-governance-options.js +51 -0
  243. package/lib/lifecycle/logger-quiet.js +29 -0
  244. package/lib/lifecycle/open-api-published.js +59 -0
  245. package/lib/lifecycle/operations-readiness-metrics.js +101 -0
  246. package/lib/lifecycle/product-model.js +196 -0
  247. package/lib/lifecycle/report-display.js +471 -0
  248. package/lib/lifecycle/scenario-upload.js +191 -0
  249. package/lib/lifecycle/verify-step-progress.js +87 -0
  250. package/lib/parameters/infra-kv-discovery.js +27 -2
  251. package/lib/protection/auth-context.js +51 -0
  252. package/lib/protection/convert-batch.js +90 -0
  253. package/lib/protection/load.js +41 -0
  254. package/lib/protection/paths.js +158 -0
  255. package/lib/protection/preflight-datasource-ready.js +46 -0
  256. package/lib/protection/protection-create-probe-lines.js +142 -0
  257. package/lib/protection/protection-create-probes.js +95 -0
  258. package/lib/protection/protection-create-scaffold.js +281 -0
  259. package/lib/protection/protection-display-helpers.js +445 -0
  260. package/lib/protection/protection-display.js +215 -0
  261. package/lib/protection/protection-preset-registry.js +97 -0
  262. package/lib/protection/report-exit.js +62 -0
  263. package/lib/protection/resolve.js +202 -0
  264. package/lib/protection/run-commands-validate.js +130 -0
  265. package/lib/protection/run-commands.js +216 -0
  266. package/lib/protection/run-protection-create-helpers.js +134 -0
  267. package/lib/protection/run-protection-create-probes-flow.js +43 -0
  268. package/lib/protection/run-protection-create.js +191 -0
  269. package/lib/protection/scope.js +22 -0
  270. package/lib/protection/sync-after-upload.js +64 -0
  271. package/lib/protection/upload-batch.js +127 -0
  272. package/lib/protection/validate-batch.js +113 -0
  273. package/lib/protection/validate-local.js +65 -0
  274. package/lib/resolvers/dimension-file.js +29 -4
  275. package/lib/schema/application-schema.json +1 -1
  276. package/lib/schema/datasource-test-run.schema.json +89 -6
  277. package/lib/schema/external-datasource.schema.json +2636 -2588
  278. package/lib/schema/external-system.schema.json +1089 -761
  279. package/lib/schema/flag-map-validation-run.json +2 -2
  280. package/lib/schema/infra.parameter.yaml +45 -0
  281. package/lib/schema/protection.schema.json +374 -0
  282. package/lib/schema/type/credential-field-registry.json +642 -0
  283. package/lib/schema/wizard-config.schema.json +1 -1
  284. package/lib/utils/agent-trust-run-display.js +231 -0
  285. package/lib/utils/agent-trust-run-exit.js +59 -0
  286. package/lib/utils/agent-trust-wait-ui.js +94 -0
  287. package/lib/utils/aifabrix-test-runtime-guard.js +125 -0
  288. package/lib/utils/api.js +55 -31
  289. package/lib/utils/app-relative-path-env.js +112 -0
  290. package/lib/utils/cli-exit-codes.js +30 -0
  291. package/lib/utils/cli-secrets-error-format.js +83 -21
  292. package/lib/utils/cli-sync-options.js +33 -0
  293. package/lib/utils/cli-utils.js +16 -4
  294. package/lib/utils/compose-generate-docker-compose.js +4 -0
  295. package/lib/utils/compose-traefik-ingress-base.js +16 -1
  296. package/lib/utils/config-secrets-path.js +46 -0
  297. package/lib/utils/controller-url.js +88 -1
  298. package/lib/utils/credential-push-ui.js +90 -0
  299. package/lib/utils/credential-secrets-env.js +137 -9
  300. package/lib/utils/dataplane-cli-version-gate.js +202 -0
  301. package/lib/utils/dataplane-cli-version-help.js +74 -0
  302. package/lib/utils/dataplane-resolver.js +129 -2
  303. package/lib/utils/datasource-export-display.js +137 -0
  304. package/lib/utils/datasource-load-display.js +174 -0
  305. package/lib/utils/datasource-load-export-ui.js +120 -0
  306. package/lib/utils/datasource-test-run-capability-scope.js +3 -3
  307. package/lib/utils/datasource-test-run-display.js +3 -3
  308. package/lib/utils/datasource-test-run-tty-log.js +5 -1
  309. package/lib/utils/declarative-url-ports.js +3 -3
  310. package/lib/utils/deployment-auth-mode.js +41 -0
  311. package/lib/utils/developer-volume-id.js +33 -0
  312. package/lib/utils/env-copy.js +14 -9
  313. package/lib/utils/env-kv-orphan-lines.js +43 -0
  314. package/lib/utils/error-formatters/network-errors.js +13 -4
  315. package/lib/utils/external-env-template.js +1 -0
  316. package/lib/utils/external-system-readiness-core.js +10 -0
  317. package/lib/utils/external-system-readiness-display.js +80 -23
  318. package/lib/utils/health-check.js +4 -1
  319. package/lib/utils/help-builder.js +35 -26
  320. package/lib/utils/keycloak-realm-ready.js +101 -0
  321. package/lib/utils/load-cip-capacity-display-config.js +61 -15
  322. package/lib/utils/manifest-source-emit.js +24 -0
  323. package/lib/utils/pipeline-upload-auth-retry.js +82 -0
  324. package/lib/utils/platform-controller-url.js +156 -0
  325. package/lib/utils/postgres-platform-bootstrap.js +199 -0
  326. package/lib/utils/postgres-wipe.js +9 -2
  327. package/lib/utils/resolve-env-mode.js +47 -0
  328. package/lib/utils/secrets-generator.js +31 -25
  329. package/lib/utils/secrets-missing-error.js +164 -0
  330. package/lib/utils/semver-compare.js +127 -0
  331. package/lib/utils/service-url-label.js +81 -0
  332. package/lib/utils/setup-quiet-output.js +25 -0
  333. package/lib/utils/template-helpers.js +15 -0
  334. package/lib/utils/token-manager-client-credentials.js +201 -0
  335. package/lib/utils/token-manager-messages.js +8 -0
  336. package/lib/utils/token-manager-refresh.js +12 -2
  337. package/lib/utils/token-manager.js +86 -105
  338. package/lib/utils/upload-pipeline-ui.js +98 -0
  339. package/lib/utils/upload-sync-options.js +42 -0
  340. package/lib/utils/url-declarative-public-base.js +21 -3
  341. package/lib/utils/url-declarative-vdir-inactive-env.js +14 -4
  342. package/lib/utils/validation-poll-ui.js +22 -7
  343. package/lib/utils/validation-run-stage.js +45 -0
  344. package/lib/validation/wizard-config-validator.js +58 -19
  345. package/package.json +1 -1
  346. package/templates/applications/dataplane/application.yaml +2 -1
  347. package/templates/applications/dataplane/env.template +36 -1
  348. package/templates/applications/dataplane/rbac.yaml +4 -0
  349. package/templates/applications/miso-controller/env.template +16 -0
  350. package/templates/external-system/README.md.hbs +116 -11
  351. package/templates/python/docker-compose.hbs +19 -18
  352. package/templates/typescript/docker-compose.hbs +18 -17
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @fileoverview Audit API type definitions (dataplane read-only audit queries)
3
+ * @author AI Fabrix Team
4
+ * @version 1.0.0
5
+ */
6
+
7
+ /**
8
+ * Paginated list meta (miso-client shape).
9
+ * @typedef {Object} AuditListMeta
10
+ * @property {number} totalItems
11
+ * @property {number} [currentPage]
12
+ * @property {number} [pageSize]
13
+ */
14
+
15
+ /**
16
+ * CIP execution list item (abbreviated).
17
+ * @typedef {Object} AuditExecutionListItem
18
+ * @property {string} id
19
+ * @property {string} [datasourceKey]
20
+ * @property {string} [operation]
21
+ * @property {string} [correlationId]
22
+ * @property {'captured'|'disabled'} rbacAuditStatus
23
+ * @property {'captured'|'disabled'} abacAuditStatus
24
+ * @property {import('./audit.types').ForeignKeyReference} [rbacDecision]
25
+ * @property {import('./audit.types').ForeignKeyReference} [abacTrace]
26
+ */
27
+
28
+ /**
29
+ * @typedef {Object} ForeignKeyReference
30
+ * @property {string} [id]
31
+ * @property {string} [key]
32
+ * @property {string} [name]
33
+ */
34
+
35
+ /**
36
+ * RBAC decision list item.
37
+ * @typedef {Object} AuditRbacDecisionListItem
38
+ * @property {string} id
39
+ * @property {import('./audit.types').ForeignKeyReference} [executionId]
40
+ * @property {string} [reason]
41
+ * @property {string} [decision]
42
+ */
43
+
44
+ /**
45
+ * ABAC trace list item.
46
+ * @typedef {Object} AuditAbacTraceListItem
47
+ * @property {string} id
48
+ * @property {import('./audit.types').ForeignKeyReference} [executionId]
49
+ * @property {string} [decision]
50
+ * @property {string} [reason]
51
+ */
52
+
53
+ /**
54
+ * One matrix row result.
55
+ * @typedef {Object} AuditEvidenceMatrixRow
56
+ * @property {number} row
57
+ * @property {'passed'|'failed'} status
58
+ * @property {string} detail
59
+ * @property {string} [code]
60
+ */
61
+
62
+ /**
63
+ * Verifier output (407.3).
64
+ * @typedef {Object} AuditEvidenceVerification
65
+ * @property {'passed'|'failed'} status
66
+ * @property {string} datasourceKey
67
+ * @property {string|null} correlationId
68
+ * @property {string[]} executionIds
69
+ * @property {AuditEvidenceMatrixRow[]} matrix
70
+ */
71
+
72
+ module.exports = {};
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @fileoverview Dataplane health API type definitions
3
+ * @author AI Fabrix Team
4
+ * @version 2.0.0
5
+ */
6
+
7
+ /**
8
+ * Dataplane health JSON payload (public, no auth — `security: []` on dataplane).
9
+ * Matches `app/schemas/common.py` `HealthResponse` in aifabrix-dataplane (plan 403.0).
10
+ * @typedef {Object} DataplaneHealthPayload
11
+ * @property {string} status - 'healthy' or 'unhealthy'
12
+ * @property {string} service - Service name (e.g. 'dataplane')
13
+ * @property {string} version - Dataplane semver (always present)
14
+ * @property {string} [message] - Optional probe message (e.g. 'pong')
15
+ * @property {string} [minBuilderCliVersion] - Minimum supported Builder CLI semver; omitted when not enforced
16
+ */
17
+
18
+ /**
19
+ * Parsed health snapshot used by Builder CLI cache + UX.
20
+ * @typedef {Object} DataplaneHealthSnapshot
21
+ * @property {string} status - 'healthy' / 'unhealthy' / 'unknown'
22
+ * @property {string} [version] - Dataplane version (undefined when probe failed)
23
+ * @property {string} [minBuilderCliVersion] - Trimmed minimum required Builder CLI semver (undefined when not enforced)
24
+ * @property {string|null} [endpoint] - Dataplane endpoint path that answered (e.g. '/api/v1/health' or '/health')
25
+ */
26
+
27
+ module.exports = {};
@@ -11,6 +11,7 @@
11
11
  * @property {string} displayName
12
12
  * @property {string} [description]
13
13
  * @property {'string'|'number'|'boolean'} dataType
14
+ * @property {'static'|'dynamic'|'both'} [valueType]
14
15
  * @property {boolean} [isRequired]
15
16
  */
16
17
 
@@ -22,6 +23,7 @@
22
23
  * @property {string} displayName
23
24
  * @property {string|null} [description]
24
25
  * @property {'string'|'number'|'boolean'} dataType
26
+ * @property {'static'|'dynamic'|'both'} [valueType]
25
27
  * @property {boolean} isRequired
26
28
  * @property {string|null} [createdBy]
27
29
  * @property {string|null} [updatedBy]
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @fileoverview Governance scenario acceptance API types
3
+ * @author AI Fabrix Team
4
+ * @version 1.0.0
5
+ */
6
+
7
+ /**
8
+ * @typedef {Object} GovernanceScenariosRunRequest
9
+ * @property {string} systemKey
10
+ * @property {Object} pack - Inline governance scenario pack document
11
+ * @property {string[]} [scenarios] - Optional subset of scenario ids
12
+ */
13
+
14
+ /**
15
+ * @typedef {Object} GovernanceScenarioResult
16
+ * @property {string} id
17
+ * @property {'pass'|'fail'} status
18
+ * @property {string} verdict
19
+ * @property {string} subjectUserId
20
+ * @property {string} subjectDisplayName
21
+ * @property {string[]} subjectGroups
22
+ * @property {number} visibleKeyCount
23
+ * @property {string[]} unexpectedVisibleKeys
24
+ * @property {string[]} missingRequiredKeys
25
+ * @property {number} excludedAbac
26
+ * @property {number} excludedFilter
27
+ * @property {string} [failureReason]
28
+ * @property {string} [fixHint]
29
+ * @property {string} [auditRef]
30
+ */
31
+
32
+ /**
33
+ * @typedef {Object} GovernanceScenariosRunResponse
34
+ * @property {string} packKey
35
+ * @property {{ total: number, passed: number, failed: number }} summary
36
+ * @property {GovernanceScenarioResult[]} scenarios
37
+ */
38
+
39
+ module.exports = {};
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @fileoverview Protection API type definitions (dataplane /api/v1/protection/*).
3
+ * @author AI Fabrix Team
4
+ * @version 1.0.0
5
+ */
6
+
7
+ /**
8
+ * @typedef {Object} ProtectionUploadRequest
9
+ * @property {Object} manifest - Full protection manifest document
10
+ */
11
+
12
+ /**
13
+ * @typedef {Object} ProtectionValidateOptions
14
+ * @property {boolean} [strict] - Promote WARN to FAIL
15
+ * @property {boolean} [explain]
16
+ * @property {number} [sampleSize] - For simulate
17
+ */
18
+
19
+ /**
20
+ * @typedef {Object} ProtectionDeployResponse
21
+ * @property {string} protectionKey
22
+ * @property {string} deploymentId
23
+ * @property {number} revision
24
+ * @property {string} configHash
25
+ * @property {string} deployedAt
26
+ * @property {Object} manifest
27
+ */
28
+
29
+ /**
30
+ * @typedef {Object} ProtectionManifestResponse
31
+ * @property {string} key
32
+ * @property {string} displayName
33
+ * @property {Object} spec
34
+ * @property {boolean} enabled
35
+ * @property {string} datasourceKey
36
+ * @property {number} [currentRevision]
37
+ * @property {string} [lastDeployedAt]
38
+ */
39
+
40
+ /**
41
+ * @typedef {Object} ProtectionListResult
42
+ * @property {ProtectionManifestResponse[]} items
43
+ * @property {Object|null} meta
44
+ * @property {*} raw
45
+ */
46
+
47
+ /**
48
+ * @typedef {Object} ProtectionGrantStatusSummary
49
+ * @property {string} dimensionKey
50
+ * @property {string} effectiveValueType
51
+ * @property {string} projectionRuleKey
52
+ */
53
+
54
+ /**
55
+ * @typedef {Object} ProtectionStatusResponse
56
+ * @property {string} protectionKey
57
+ * @property {boolean} enabled
58
+ * @property {string} datasourceKey
59
+ * @property {number} [currentRevision]
60
+ * @property {string} [configHash]
61
+ * @property {string} [lastDeployedAt]
62
+ * @property {string} [lastProjectionRunAt]
63
+ * @property {string} [lastSuccessfulProjectionRunAt]
64
+ * @property {number} [dynamicValueCount]
65
+ * @property {number} [grantCount]
66
+ * @property {ProtectionGrantStatusSummary[]} [grants]
67
+ */
68
+
69
+ module.exports = {};
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @fileoverview Types for dataplane bulk record sync API
3
+ * @author AI Fabrix Team
4
+ * @version 1.0.0
5
+ */
6
+
7
+ /**
8
+ * Single record in a bulk sync request
9
+ * @typedef {Object} ExternalBulkRecord
10
+ * @property {string} key - External record key
11
+ * @property {string} displayName - Human-readable label
12
+ * @property {string} recordType - Resource type from datasource manifest
13
+ * @property {Object} metadata - Record metadata payload
14
+ */
15
+
16
+ /**
17
+ * Bulk sync request body
18
+ * @typedef {Object} ExternalRecordBulkRequest
19
+ * @property {'incremental'|'bulk'|'validate'} syncType - Sync mode
20
+ * @property {boolean} [sync] - Create linked sync job when true
21
+ * @property {ExternalBulkRecord[]} records - Records to process
22
+ */
23
+
24
+ /**
25
+ * Bulk sync response
26
+ * @typedef {Object} ExternalRecordBulkResponse
27
+ * @property {number} insertedCount
28
+ * @property {number} updatedCount
29
+ * @property {number} deletedCount
30
+ * @property {number} totalProcessed
31
+ * @property {number} [skippedCount]
32
+ * @property {Object} [recordSkipSummary]
33
+ */
34
+
35
+ module.exports = {};
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @fileoverview Types for dataplane Records Search API
3
+ * @author AI Fabrix Team
4
+ * @version 1.0.0
5
+ */
6
+
7
+ /**
8
+ * Records search request
9
+ * @typedef {Object} RecordsSearchRequest
10
+ * @property {'retrieval'|'grounding'|'analytics'|'validation'} intent
11
+ * @property {string[]} [datasourceKeys]
12
+ * @property {string[]} [resourceTypes]
13
+ * @property {string|Object} [filters]
14
+ * @property {string|Object} [exclude]
15
+ * @property {'ids'|'full'} [searchMode]
16
+ * @property {number} [limit]
17
+ * @property {boolean} [dryRun]
18
+ */
19
+
20
+ /**
21
+ * Records search response
22
+ * @typedef {Object} RecordsSearchResponse
23
+ * @property {Array<string|Object>} data
24
+ * @property {Object} meta
25
+ * @property {Object} [links]
26
+ */
27
+
28
+ module.exports = {};
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @fileoverview User–group membership API (Controller)
3
+ * @author AI Fabrix Team
4
+ * @version 1.0.0
5
+ */
6
+
7
+ 'use strict';
8
+
9
+ const { ApiClient } = require('./index');
10
+
11
+ /**
12
+ * Add user to group
13
+ * @requiresPermission {Controller} users:update
14
+ * @async
15
+ * @param {string} controllerUrl
16
+ * @param {Object} authConfig
17
+ * @param {string} userId
18
+ * @param {string} groupId
19
+ * @param {Object} [body]
20
+ * @returns {Promise<Object>}
21
+ */
22
+ async function addUserToGroup(controllerUrl, authConfig, userId, groupId, body = {}) {
23
+ const client = new ApiClient(controllerUrl, authConfig);
24
+ return await client.post(
25
+ `/api/v1/users/${encodeURIComponent(userId)}/groups/${encodeURIComponent(groupId)}`,
26
+ { body }
27
+ );
28
+ }
29
+
30
+ /**
31
+ * Remove user from group
32
+ * @requiresPermission {Controller} users:update
33
+ * @async
34
+ * @param {string} controllerUrl
35
+ * @param {Object} authConfig
36
+ * @param {string} userId
37
+ * @param {string} groupId
38
+ * @returns {Promise<Object>}
39
+ */
40
+ async function removeUserFromGroup(controllerUrl, authConfig, userId, groupId) {
41
+ const client = new ApiClient(controllerUrl, authConfig);
42
+ return await client.delete(
43
+ `/api/v1/users/${encodeURIComponent(userId)}/groups/${encodeURIComponent(groupId)}`
44
+ );
45
+ }
46
+
47
+ module.exports = {
48
+ addUserToGroup,
49
+ removeUserFromGroup
50
+ };
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @fileoverview Users API (Controller /api/v1/users)
3
+ * @author AI Fabrix Team
4
+ * @version 1.0.0
5
+ */
6
+
7
+ 'use strict';
8
+
9
+ const { ApiClient } = require('./index');
10
+
11
+ const BASE = '/api/v1/users';
12
+
13
+ /**
14
+ * List users (paginated)
15
+ * @requiresPermission {Controller} users:read
16
+ * @async
17
+ * @param {string} controllerUrl
18
+ * @param {Object} authConfig
19
+ * @param {Object} [options]
20
+ * @returns {Promise<Object>}
21
+ */
22
+ async function listUsers(controllerUrl, authConfig, options = {}) {
23
+ const client = new ApiClient(controllerUrl, authConfig);
24
+ return await client.get(BASE, { params: options });
25
+ }
26
+
27
+ /**
28
+ * Get user by id
29
+ * @requiresPermission {Controller} users:read
30
+ * @async
31
+ * @param {string} controllerUrl
32
+ * @param {Object} authConfig
33
+ * @param {string} userId
34
+ * @param {Object} [options]
35
+ * @returns {Promise<Object>}
36
+ */
37
+ async function getUser(controllerUrl, authConfig, userId, options = {}) {
38
+ const client = new ApiClient(controllerUrl, authConfig);
39
+ const params = {};
40
+ if (options.includeGroups) {
41
+ params.includeGroups = 'true';
42
+ }
43
+ return await client.get(`${BASE}/${encodeURIComponent(userId)}`, { params });
44
+ }
45
+
46
+ /**
47
+ * Create user
48
+ * @requiresPermission {Controller} users:create
49
+ * @async
50
+ * @param {string} controllerUrl
51
+ * @param {Object} authConfig
52
+ * @param {Object} body
53
+ * @returns {Promise<Object>}
54
+ */
55
+ async function createUser(controllerUrl, authConfig, body) {
56
+ const client = new ApiClient(controllerUrl, authConfig);
57
+ return await client.post(BASE, { body });
58
+ }
59
+
60
+ /**
61
+ * Patch user
62
+ * @requiresPermission {Controller} users:update
63
+ * @async
64
+ * @param {string} controllerUrl
65
+ * @param {Object} authConfig
66
+ * @param {string} userId
67
+ * @param {Object} body
68
+ * @returns {Promise<Object>}
69
+ */
70
+ async function updateUser(controllerUrl, authConfig, userId, body) {
71
+ const client = new ApiClient(controllerUrl, authConfig);
72
+ return await client.patch(`${BASE}/${encodeURIComponent(userId)}`, { body });
73
+ }
74
+
75
+ /**
76
+ * List groups for a user
77
+ * @requiresPermission {Controller} users:read
78
+ * @async
79
+ * @param {string} controllerUrl
80
+ * @param {Object} authConfig
81
+ * @param {string} userId
82
+ * @returns {Promise<Object>}
83
+ */
84
+ async function listUserGroups(controllerUrl, authConfig, userId) {
85
+ const client = new ApiClient(controllerUrl, authConfig);
86
+ return await client.get(`${BASE}/${encodeURIComponent(userId)}/groups`);
87
+ }
88
+
89
+ module.exports = {
90
+ listUsers,
91
+ getUser,
92
+ createUser,
93
+ updateUser,
94
+ listUserGroups
95
+ };
@@ -4,7 +4,7 @@
4
4
  * @version 2.0.0
5
5
  */
6
6
 
7
- const { ApiClient } = require('./index');
7
+ const { createDataplaneApiClient } = require('./index');
8
8
 
9
9
  const POST_PATH = '/api/v1/validation/run';
10
10
 
@@ -52,7 +52,7 @@ function normalizeDataplaneAuth(authConfig) {
52
52
  async function postValidationRun(dataplaneUrl, authConfig, body, transportOpts = {}) {
53
53
  const hdrs = buildClientCredentialHeaders(authConfig);
54
54
  const clientAuth = hdrs ? {} : normalizeDataplaneAuth(authConfig);
55
- const client = new ApiClient(dataplaneUrl, clientAuth);
55
+ const client = createDataplaneApiClient(dataplaneUrl, clientAuth);
56
56
  const postOpts = { body, headers: hdrs || undefined };
57
57
  if (Number.isFinite(transportOpts.timeoutMs) && transportOpts.timeoutMs > 0) {
58
58
  postOpts.timeoutMs = transportOpts.timeoutMs;
@@ -77,7 +77,7 @@ async function getValidationRun(dataplaneUrl, authConfig, testRunId, transportOp
77
77
  }
78
78
  const hdrs = buildClientCredentialHeaders(authConfig);
79
79
  const clientAuth = hdrs ? {} : normalizeDataplaneAuth(authConfig);
80
- const client = new ApiClient(dataplaneUrl, clientAuth);
80
+ const client = createDataplaneApiClient(dataplaneUrl, clientAuth);
81
81
  const path = `${POST_PATH}/${encodeURIComponent(testRunId)}`;
82
82
  const getOpts = { headers: hdrs || undefined };
83
83
  if (Number.isFinite(transportOpts.timeoutMs) && transportOpts.timeoutMs > 0) {
@@ -10,7 +10,6 @@ const { extractTestRunId } = require('./validation-run.api');
10
10
  const { postValidationRunWithTransportRetry } = require('../utils/validation-run-post-retry');
11
11
  const { pollValidationRunUntilComplete } = require('../utils/validation-run-poll');
12
12
  const { createValidationPollHandlers } = require('../utils/validation-poll-ui');
13
- const logger = require('../utils/logger');
14
13
 
15
14
  /**
16
15
  * POST /api/v1/validation/run and (when async) poll GET until reportCompleteness is full.
@@ -23,6 +22,7 @@ const logger = require('../utils/logger');
23
22
  * @param {boolean} opts.useAsync
24
23
  * @param {boolean} opts.noAsync
25
24
  * @param {boolean} [opts.verbosePoll] - Throttled poll lines when no TTY poll UI (see validation-run-poll)
25
+ * @param {boolean} [opts.quietPollUi] - Suppress poll spinner/lines (orchestrated verify-* owns progress)
26
26
  * @param {Function} [opts.onPollProgress] - Extra hook: `(envelope, attemptIndex, meta)` during poll
27
27
  * @returns {Promise<{ envelope: Object|null, apiError: Object|null, pollTimedOut: boolean, incompleteNoAsync: boolean }>}
28
28
  */
@@ -60,8 +60,10 @@ async function postValidationRunAndOptionalPoll(opts) {
60
60
  const remaining = Math.max(0, timeoutMs - elapsed);
61
61
  const deadlineMs = Date.now() + remaining;
62
62
 
63
- logger.log('');
64
- const pollUi = createValidationPollHandlers(deadlineMs);
63
+ const pollUi = createValidationPollHandlers(deadlineMs, {
64
+ subject: opts.pollSubject,
65
+ quiet: opts.quietPollUi === true
66
+ });
65
67
  const mergeOnPollProgress =
66
68
  typeof opts.onPollProgress === 'function'
67
69
  ? (envelope, attemptIndex, meta) => {
@@ -4,7 +4,7 @@
4
4
  * @version 2.0.0
5
5
  */
6
6
 
7
- const { ApiClient } = require('./index');
7
+ const { createDataplaneApiClient } = require('./index');
8
8
 
9
9
  /**
10
10
  * Get platform details including available datasources
@@ -19,7 +19,7 @@ const { ApiClient } = require('./index');
19
19
  * @throws {Error} If request fails or platform not found (404)
20
20
  */
21
21
  async function getPlatformDetails(dataplaneUrl, authConfig, platformKey) {
22
- const client = new ApiClient(dataplaneUrl, authConfig);
22
+ const client = createDataplaneApiClient(dataplaneUrl, authConfig);
23
23
  const response = await client.get(`/api/v1/wizard/platforms/${encodeURIComponent(platformKey)}`);
24
24
  if (!response.success) {
25
25
  const msg = response.status === 404
@@ -45,7 +45,7 @@ async function getPlatformDetails(dataplaneUrl, authConfig, platformKey) {
45
45
  * @throws {Error} If request fails
46
46
  */
47
47
  async function discoverEntities(dataplaneUrl, authConfig, openapiSpec) {
48
- const client = new ApiClient(dataplaneUrl, authConfig);
48
+ const client = createDataplaneApiClient(dataplaneUrl, authConfig);
49
49
  const response = await client.post('/api/v1/wizard/discover-entities', {
50
50
  body: { openapiSpec }
51
51
  });