@aifabrix/builder 2.43.0 → 2.44.1

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 (371) hide show
  1. package/.cursor/rules/anchor-docs.mdc +15 -0
  2. package/.cursor/rules/cli-layout.mdc +75 -0
  3. package/.cursor/rules/project-rules.mdc +8 -0
  4. package/.npmrc.token +1 -0
  5. package/.nyc_output/55e9d034-ddab-4579-a706-e02a91d75c91.json +1 -0
  6. package/.nyc_output/processinfo/55e9d034-ddab-4579-a706-e02a91d75c91.json +1 -0
  7. package/.nyc_output/processinfo/index.json +1 -0
  8. package/README.md +1 -1
  9. package/anchor-docs/README.md +10 -0
  10. package/anchor-docs/_TEMPLATE +24 -0
  11. package/bin/aifabrix.js +13 -4
  12. package/integration/hubspot-test/README.md +31 -0
  13. package/integration/hubspot-test/create-hubspot.js +5 -5
  14. package/integration/hubspot-test/hubspot-test-datasource-company.json +58 -462
  15. package/integration/hubspot-test/hubspot-test-datasource-contact.json +61 -555
  16. package/integration/hubspot-test/hubspot-test-datasource-deal.json +63 -506
  17. package/integration/hubspot-test/hubspot-test-datasource-users.json +42 -83
  18. package/integration/hubspot-test/hubspot-test-deploy.json +3 -3
  19. package/integration/hubspot-test/test-dataplane-down-tests.js +1 -7
  20. package/integration/hubspot-test/test-dataplane-down.js +3 -3
  21. package/integration/hubspot-test/test.js +35 -43
  22. package/integration/hubspot-test/wizard-hubspot-test-headless.yaml +23 -0
  23. package/integration/roundtrip-test-local/README.md +144 -0
  24. package/integration/roundtrip-test-local/application.yaml +13 -0
  25. package/integration/roundtrip-test-local/env.template +15 -0
  26. package/integration/roundtrip-test-local/roundtrip-test-local-datasource-roundtrip-test-company.yaml +14 -0
  27. package/integration/roundtrip-test-local/roundtrip-test-local-deploy.json +61 -0
  28. package/integration/roundtrip-test-local/roundtrip-test-local-system.yaml +25 -0
  29. package/integration/roundtrip-test-local2/README.md +144 -0
  30. package/integration/roundtrip-test-local2/application.yaml +13 -0
  31. package/integration/roundtrip-test-local2/env.template +15 -0
  32. package/integration/roundtrip-test-local2/roundtrip-test-local2-datasource-company.yaml +31 -0
  33. package/integration/roundtrip-test-local2/roundtrip-test-local2-deploy.json +86 -0
  34. package/integration/roundtrip-test-local2/roundtrip-test-local2-system.yaml +25 -0
  35. package/integration/test/wizard.yaml +8 -0
  36. package/jest.config.default.js +10 -0
  37. package/jest.config.integration.fixtures.js +22 -0
  38. package/jest.config.integration.js +21 -18
  39. package/jest.config.isolated.js +10 -0
  40. package/jest.projects.js +301 -0
  41. package/lib/api/certificates.api.js +62 -0
  42. package/lib/api/datasources-core.api.js +3 -3
  43. package/lib/api/dev-mtls-request.js +110 -0
  44. package/lib/api/dev-server-https.js +145 -0
  45. package/lib/api/dev.api.js +133 -144
  46. package/lib/api/index.js +11 -3
  47. package/lib/api/pipeline.api.js +67 -20
  48. package/lib/api/types/certificates.types.js +48 -0
  49. package/lib/api/types/dev.types.js +4 -3
  50. package/lib/api/types/pipeline.types.js +8 -5
  51. package/lib/api/types/validation-run.types.js +56 -0
  52. package/lib/api/validation-run.api.js +111 -0
  53. package/lib/api/validation-runner.js +109 -0
  54. package/lib/app/certification-show-enrich.js +129 -0
  55. package/lib/app/certification-verify-rows.js +60 -0
  56. package/lib/app/config.js +1 -1
  57. package/lib/app/deploy-status-display.js +2 -2
  58. package/lib/app/deploy.js +7 -6
  59. package/lib/app/display.js +2 -1
  60. package/lib/app/dockerfile.js +3 -2
  61. package/lib/app/down.js +2 -1
  62. package/lib/app/helpers.js +6 -5
  63. package/lib/app/index.js +27 -8
  64. package/lib/app/list.js +7 -6
  65. package/lib/app/push.js +4 -3
  66. package/lib/app/register.js +16 -7
  67. package/lib/app/rotate-secret.js +14 -13
  68. package/lib/app/run-container-start.js +184 -0
  69. package/lib/app/run-docker-fallback.js +108 -0
  70. package/lib/app/run-env-compose.js +30 -42
  71. package/lib/app/run-helpers.js +49 -126
  72. package/lib/app/run-infra-requirements.js +30 -0
  73. package/lib/app/run-resolve-image.js +21 -0
  74. package/lib/app/run.js +74 -21
  75. package/lib/app/show-display.js +44 -1
  76. package/lib/app/show.js +93 -9
  77. package/lib/build/index.js +13 -10
  78. package/lib/certification/cli-cert-sync-skip.js +21 -0
  79. package/lib/certification/merge-certification-from-artifact.js +185 -0
  80. package/lib/certification/post-unified-cert-sync.js +33 -0
  81. package/lib/certification/sync-after-external-command.js +52 -0
  82. package/lib/certification/sync-system-certification.js +197 -0
  83. package/lib/cli/index.js +2 -0
  84. package/lib/cli/setup-app.help.js +67 -0
  85. package/lib/cli/setup-app.js +61 -121
  86. package/lib/cli/setup-app.test-commands.js +195 -0
  87. package/lib/cli/setup-auth.js +19 -5
  88. package/lib/cli/setup-credential-deployment.js +22 -8
  89. package/lib/cli/setup-dev-path-commands.js +124 -0
  90. package/lib/cli/setup-dev.js +170 -113
  91. package/lib/cli/setup-environment.js +7 -1
  92. package/lib/cli/setup-external-system.js +84 -23
  93. package/lib/cli/setup-infra.js +126 -47
  94. package/lib/cli/setup-parameters.js +32 -0
  95. package/lib/cli/setup-secrets.js +137 -18
  96. package/lib/cli/setup-service-user.js +1 -1
  97. package/lib/cli/setup-utility.js +54 -22
  98. package/lib/commands/app-down.js +5 -7
  99. package/lib/commands/app-install.js +14 -7
  100. package/lib/commands/app-logs.js +13 -10
  101. package/lib/commands/app-shell.js +4 -1
  102. package/lib/commands/app-test.js +25 -19
  103. package/lib/commands/app.js +32 -11
  104. package/lib/commands/auth-config.js +6 -6
  105. package/lib/commands/auth-status.js +4 -3
  106. package/lib/commands/credential-env.js +4 -3
  107. package/lib/commands/credential-list.js +5 -4
  108. package/lib/commands/credential-push.js +4 -3
  109. package/lib/commands/datasource-unified-test-cli.js +428 -0
  110. package/lib/commands/datasource-unified-test-cli.options.js +191 -0
  111. package/lib/commands/datasource-unified-test-e2e-cli-helpers.js +106 -0
  112. package/lib/commands/datasource-validation-cli.js +143 -0
  113. package/lib/commands/datasource.js +125 -95
  114. package/lib/commands/deployment-list.js +6 -5
  115. package/lib/commands/dev-cli-handlers.js +122 -18
  116. package/lib/commands/dev-down.js +4 -3
  117. package/lib/commands/dev-init.js +231 -116
  118. package/lib/commands/dev-show-display.js +473 -0
  119. package/lib/commands/login-credentials.js +3 -2
  120. package/lib/commands/login-device.js +4 -3
  121. package/lib/commands/login.js +5 -4
  122. package/lib/commands/logout.js +8 -7
  123. package/lib/commands/parameters-validate.js +54 -0
  124. package/lib/commands/repair-datasource.js +314 -68
  125. package/lib/commands/repair-env-template.js +2 -2
  126. package/lib/commands/repair.js +21 -3
  127. package/lib/commands/secrets-list.js +23 -12
  128. package/lib/commands/secrets-remove-all.js +220 -0
  129. package/lib/commands/secrets-remove.js +21 -12
  130. package/lib/commands/secrets-set.js +21 -12
  131. package/lib/commands/secrets-validate.js +4 -4
  132. package/lib/commands/secure.js +10 -9
  133. package/lib/commands/service-user.js +26 -25
  134. package/lib/commands/test-e2e-external.js +27 -1
  135. package/lib/commands/up-common.js +3 -2
  136. package/lib/commands/up-dataplane.js +29 -16
  137. package/lib/commands/up-miso.js +19 -29
  138. package/lib/commands/upload.js +149 -39
  139. package/lib/commands/wizard-core-helpers.js +1 -1
  140. package/lib/commands/wizard-dataplane.js +4 -3
  141. package/lib/commands/wizard-helpers.js +3 -3
  142. package/lib/commands/wizard.js +2 -2
  143. package/lib/core/admin-secrets.js +14 -5
  144. package/lib/core/audit-logger.js +12 -4
  145. package/lib/core/config-attach-extensions.js +46 -0
  146. package/lib/core/config-runtime-paths.js +29 -0
  147. package/lib/core/config.js +55 -56
  148. package/lib/core/diff.js +3 -2
  149. package/lib/core/ensure-encryption-key.js +1 -1
  150. package/lib/core/secrets-ensure-infra.js +77 -0
  151. package/lib/core/secrets-ensure.js +120 -64
  152. package/lib/core/secrets-env-write.js +35 -7
  153. package/lib/core/secrets-infra-placeholder-sync.js +61 -0
  154. package/lib/core/secrets.js +200 -37
  155. package/lib/core/templates-env.js +4 -3
  156. package/lib/datasource/abac-validator.js +1 -10
  157. package/lib/datasource/deploy.js +75 -53
  158. package/lib/datasource/field-reference-validator.js +9 -6
  159. package/lib/datasource/integration-context.js +63 -0
  160. package/lib/datasource/list.js +8 -7
  161. package/lib/datasource/log-viewer.js +189 -67
  162. package/lib/datasource/resolve-app.js +4 -4
  163. package/lib/datasource/test-e2e.js +113 -146
  164. package/lib/datasource/test-integration.js +114 -122
  165. package/lib/datasource/unified-validation-run-body.js +68 -0
  166. package/lib/datasource/unified-validation-run-post.js +23 -0
  167. package/lib/datasource/unified-validation-run-resolve.js +43 -0
  168. package/lib/datasource/unified-validation-run.js +93 -0
  169. package/lib/datasource/validate.js +157 -13
  170. package/lib/deployment/deployer.js +4 -3
  171. package/lib/deployment/environment.js +7 -6
  172. package/lib/deployment/push.js +17 -8
  173. package/lib/external-system/delete.js +4 -3
  174. package/lib/external-system/deploy.js +166 -53
  175. package/lib/external-system/download-helpers.js +1 -1
  176. package/lib/external-system/download.js +7 -6
  177. package/lib/external-system/generator.js +92 -6
  178. package/lib/external-system/integration-test-dispatch.js +26 -0
  179. package/lib/external-system/test-execution.js +5 -1
  180. package/lib/external-system/test-helpers.js +0 -4
  181. package/lib/external-system/test-system-level-helpers.js +110 -0
  182. package/lib/external-system/test-system-level.js +83 -44
  183. package/lib/external-system/test.js +59 -8
  184. package/lib/generator/builders.js +23 -11
  185. package/lib/generator/deploy-manifest-azure-kv.js +81 -0
  186. package/lib/generator/external.js +16 -4
  187. package/lib/generator/helpers.js +58 -3
  188. package/lib/generator/index.js +4 -0
  189. package/lib/generator/split-readme.js +12 -7
  190. package/lib/generator/split-variables.js +2 -1
  191. package/lib/generator/split.js +1 -1
  192. package/lib/generator/wizard-readme.js +3 -3
  193. package/lib/generator/wizard.js +8 -8
  194. package/lib/infrastructure/compose.js +70 -7
  195. package/lib/infrastructure/helpers-docker-check.js +67 -0
  196. package/lib/infrastructure/helpers.js +203 -42
  197. package/lib/infrastructure/index.js +31 -18
  198. package/lib/infrastructure/services.js +21 -67
  199. package/lib/internal/fs-real-sync.js +104 -0
  200. package/lib/internal/node-fs.js +98 -0
  201. package/lib/parameters/database-secret-values.js +173 -0
  202. package/lib/parameters/infra-kv-discovery.js +121 -0
  203. package/lib/parameters/infra-parameter-catalog.js +458 -0
  204. package/lib/parameters/infra-parameter-validate.js +64 -0
  205. package/lib/schema/application-schema.json +37 -17
  206. package/lib/schema/datasource-test-run.schema.json +493 -0
  207. package/lib/schema/deployment-rules.yaml +102 -63
  208. package/lib/schema/external-datasource.schema.json +1200 -442
  209. package/lib/schema/external-system.schema.json +203 -5
  210. package/lib/schema/flag-map-validation-run.json +31 -0
  211. package/lib/schema/infra-parameter.schema.json +106 -0
  212. package/lib/schema/infra.parameter.yaml +421 -0
  213. package/lib/schema/type/credential-auth-templates.json +40 -0
  214. package/lib/schema/type/document-storage.json +226 -0
  215. package/lib/schema/type/message-service.json +123 -0
  216. package/lib/schema/type/vector-store.json +88 -0
  217. package/lib/utils/aifabrix-runtime-config-dir.js +132 -0
  218. package/lib/utils/api-error-handler.js +2 -2
  219. package/lib/utils/api.js +77 -17
  220. package/lib/utils/app-register-api.js +3 -2
  221. package/lib/utils/app-register-auth.js +1 -1
  222. package/lib/utils/app-register-config.js +4 -4
  223. package/lib/utils/app-register-display.js +3 -2
  224. package/lib/utils/app-register-validator.js +3 -2
  225. package/lib/utils/app-run-containers.js +26 -22
  226. package/lib/utils/app-scoped-config.js +31 -0
  227. package/lib/utils/app-service-env-from-builder.js +164 -0
  228. package/lib/utils/build-copy.js +1 -1
  229. package/lib/utils/build-helpers.js +20 -20
  230. package/lib/utils/build-resolve-image.js +165 -0
  231. package/lib/utils/cli-layout-chalk.js +8 -0
  232. package/lib/utils/cli-test-layout-chalk.js +267 -0
  233. package/lib/utils/cli-utils.js +88 -11
  234. package/lib/utils/compose-db-passwords.js +138 -0
  235. package/lib/utils/compose-generate-docker-compose.js +216 -0
  236. package/lib/utils/compose-generator.js +197 -291
  237. package/lib/utils/compose-miso-env.js +18 -0
  238. package/lib/utils/compose-traefik-ingress-base.js +158 -0
  239. package/lib/utils/config-paths.js +166 -7
  240. package/lib/utils/config-scoped-resources-preference.js +41 -0
  241. package/lib/utils/configuration-env-resolver.js +11 -8
  242. package/lib/utils/controller-deployment-outcome.js +68 -0
  243. package/lib/utils/credential-display.js +2 -2
  244. package/lib/utils/credential-secrets-env.js +5 -5
  245. package/lib/utils/dataplane-pipeline-warning.js +4 -3
  246. package/lib/utils/datasource-test-run-capability-scope.js +43 -0
  247. package/lib/utils/datasource-test-run-certificate-tty.js +82 -0
  248. package/lib/utils/datasource-test-run-debug-display.js +137 -0
  249. package/lib/utils/datasource-test-run-debug-slice.js +93 -0
  250. package/lib/utils/datasource-test-run-display.js +459 -0
  251. package/lib/utils/datasource-test-run-exit.js +83 -0
  252. package/lib/utils/datasource-test-run-legacy-adapter.js +93 -0
  253. package/lib/utils/datasource-test-run-report-version.js +51 -0
  254. package/lib/utils/datasource-test-run-schema-sync.js +59 -0
  255. package/lib/utils/datasource-test-run-tty-log.js +81 -0
  256. package/lib/utils/datasource-validation-watch.js +266 -0
  257. package/lib/utils/declarative-url-ports.js +47 -0
  258. package/lib/utils/derive-env-key-from-client-id.js +41 -0
  259. package/lib/utils/dev-ca-install.js +185 -23
  260. package/lib/utils/dev-cert-helper.js +266 -17
  261. package/lib/utils/dev-hosts-helper.js +307 -0
  262. package/lib/utils/dev-init-cert-hints.js +37 -0
  263. package/lib/utils/dev-init-health-messages.js +52 -0
  264. package/lib/utils/dev-init-resolve.js +86 -0
  265. package/lib/utils/dev-init-ssh-merge.js +65 -0
  266. package/lib/utils/dev-ssh-config-helper.js +196 -0
  267. package/lib/utils/dev-user-groups.js +93 -0
  268. package/lib/utils/docker-build.js +42 -17
  269. package/lib/utils/docker-exec.js +28 -0
  270. package/lib/utils/docker-manifest-public-port.js +116 -0
  271. package/lib/utils/docker-not-running-hint.js +52 -0
  272. package/lib/utils/docker.js +98 -11
  273. package/lib/utils/ensure-dev-certs-for-remote-docker.js +192 -0
  274. package/lib/utils/env-config-loader.js +10 -91
  275. package/lib/utils/env-copy.js +19 -10
  276. package/lib/utils/env-map.js +35 -8
  277. package/lib/utils/env-template.js +2 -2
  278. package/lib/utils/environment-scoped-resources.js +144 -0
  279. package/lib/utils/error-formatter.js +92 -13
  280. package/lib/utils/error-formatters/http-status-errors.js +6 -5
  281. package/lib/utils/error-formatters/network-errors.js +2 -1
  282. package/lib/utils/error-formatters/permission-errors.js +2 -1
  283. package/lib/utils/error-formatters/validation-errors.js +2 -1
  284. package/lib/utils/external-readme.js +8 -1
  285. package/lib/utils/external-system-display.js +242 -136
  286. package/lib/utils/external-system-local-test-tty.js +389 -0
  287. package/lib/utils/external-system-readiness-core.js +377 -0
  288. package/lib/utils/external-system-readiness-deploy-display.js +270 -0
  289. package/lib/utils/external-system-readiness-display-internals.js +150 -0
  290. package/lib/utils/external-system-readiness-display.js +186 -0
  291. package/lib/utils/external-system-system-test-tty-overview.js +120 -0
  292. package/lib/utils/external-system-system-test-tty.js +417 -0
  293. package/lib/utils/external-system-test-helpers.js +24 -6
  294. package/lib/utils/external-system-validators.js +30 -12
  295. package/lib/utils/health-check-url.js +119 -0
  296. package/lib/utils/health-check.js +59 -25
  297. package/lib/utils/help-builder.js +11 -8
  298. package/lib/utils/image-version.js +4 -8
  299. package/lib/utils/infra-containers.js +4 -7
  300. package/lib/utils/infra-env-defaults.js +162 -0
  301. package/lib/utils/infra-status-display.js +167 -0
  302. package/lib/utils/infra-status.js +16 -8
  303. package/lib/utils/local-secrets.js +3 -4
  304. package/lib/utils/paths.js +148 -47
  305. package/lib/utils/port-resolver.js +10 -23
  306. package/lib/utils/redis-env-scope.js +62 -0
  307. package/lib/utils/register-aifabrix-shell-env.js +204 -0
  308. package/lib/utils/remote-builder-validation.js +99 -0
  309. package/lib/utils/remote-dev-auth.js +117 -21
  310. package/lib/utils/remote-docker-env.js +67 -15
  311. package/lib/utils/remote-secrets-loader.js +13 -4
  312. package/lib/utils/resolve-docker-image-ref.js +124 -0
  313. package/lib/utils/schema-loader.js +22 -9
  314. package/lib/utils/secrets-bash-kv.js +25 -0
  315. package/lib/utils/secrets-generator.js +169 -49
  316. package/lib/utils/secrets-helpers.js +70 -59
  317. package/lib/utils/secrets-kv-scope.js +60 -0
  318. package/lib/utils/secrets-utils.js +32 -38
  319. package/lib/utils/secrets-validation.js +3 -1
  320. package/lib/utils/secrets-yaml-preserve.js +109 -0
  321. package/lib/utils/ssh-key-helper.js +4 -2
  322. package/lib/utils/template-helpers.js +2 -2
  323. package/lib/utils/test-log-writer.js +3 -3
  324. package/lib/utils/token-manager.js +1 -2
  325. package/lib/utils/url-declarative-public-base.js +188 -0
  326. package/lib/utils/url-declarative-resolve-build.js +493 -0
  327. package/lib/utils/url-declarative-resolve-load-doc.js +51 -0
  328. package/lib/utils/url-declarative-resolve.js +220 -0
  329. package/lib/utils/url-declarative-token-parse.js +74 -0
  330. package/lib/utils/url-declarative-url-flags.js +50 -0
  331. package/lib/utils/url-declarative-vdir-inactive-env.js +99 -0
  332. package/lib/utils/url-public-path-prefix.js +34 -0
  333. package/lib/utils/urls-local-registry.js +220 -0
  334. package/lib/utils/validation-report-tty-kit.js +77 -0
  335. package/lib/utils/validation-run-poll.js +112 -0
  336. package/lib/utils/validation-run-post-retry.js +85 -0
  337. package/lib/utils/validation-run-request.js +116 -0
  338. package/lib/utils/variable-transformer.js +21 -4
  339. package/lib/utils/yaml-preserve.js +33 -14
  340. package/lib/validation/datasource-warnings.js +56 -0
  341. package/lib/validation/env-template-auth.js +1 -1
  342. package/lib/validation/external-manifest-validator.js +27 -7
  343. package/lib/validation/validate-display.js +37 -31
  344. package/lib/validation/validate-external-cert-sync.js +23 -0
  345. package/lib/validation/validate.js +8 -14
  346. package/lib/validation/validator-unresolved-placeholders.js +98 -0
  347. package/lib/validation/validator.js +22 -65
  348. package/lib/validation/wizard-config-validator.js +2 -1
  349. package/package.json +9 -4
  350. package/scripts/check-datasource-test-run-schema-sync.js +34 -0
  351. package/scripts/diagnose-cli.js +150 -0
  352. package/scripts/install-local.js +307 -55
  353. package/scripts/pnpm-global-remove.js +48 -0
  354. package/templates/README.md +15 -2
  355. package/templates/applications/dataplane/application.yaml +52 -2
  356. package/templates/applications/dataplane/env.template +79 -17
  357. package/templates/applications/dataplane/rbac.yaml +8 -0
  358. package/templates/applications/keycloak/application.yaml +9 -1
  359. package/templates/applications/keycloak/env.template +15 -6
  360. package/templates/applications/miso-controller/application.yaml +10 -2
  361. package/templates/applications/miso-controller/env.template +42 -12
  362. package/templates/applications/miso-controller/rbac.yaml +5 -0
  363. package/templates/external-system/README.md.hbs +20 -7
  364. package/templates/external-system/deploy.js.hbs +5 -5
  365. package/templates/external-system/external-datasource.yaml.hbs +197 -118
  366. package/templates/infra/compose.yaml.hbs +33 -16
  367. package/templates/infra/servers.json.hbs +3 -1
  368. package/templates/python/docker-compose.hbs +16 -0
  369. package/templates/typescript/docker-compose.hbs +16 -0
  370. package/lib/api/external-test.api.js +0 -111
  371. package/lib/schema/env-config.yaml +0 -60
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "$schema":"http://json-schema.org/draft-07/schema#",
3
- "$id":"https://raw.githubusercontent.com/esystemsdev/aifabrix-builder/refs/heads/main/lib/schema/external-system.schema.json",
3
+ "$id":"aifabrix://schema/external-system.schema.json",
4
4
  "title":"AI Fabrix External System Configuration Schema",
5
5
  "description":"Schema for configuring an external system connected to the AI Fabrix Dataplane. This defines authentication, OpenAPI/MCP bindings, field mappings defaults, metadata handling and portal inputs.",
6
6
  "metadata":{
7
7
  "key":"external-system-schema",
8
8
  "name":"External System Configuration Schema",
9
9
  "description":"JSON schema for validating ExternalSystem configuration files",
10
- "version":"1.5.0",
10
+ "version":"1.6.0",
11
11
  "type":"schema",
12
12
  "category":"integration",
13
13
  "author":"AI Fabrix Team",
14
14
  "createdAt":"2024-01-01T00:00:00Z",
15
- "updatedAt":"2026-03-07T00:00:00Z",
15
+ "updatedAt":"2026-04-09T00:00:00Z",
16
16
  "compatibility":{
17
17
  "minVersion":"1.4.0",
18
18
  "maxVersion":"2.0.0",
@@ -29,6 +29,14 @@
29
29
 
30
30
  ],
31
31
  "changelog":[
32
+ {
33
+ "version":"1.6.0",
34
+ "date":"2026-04-09T00:00:00Z",
35
+ "changes":[
36
+ "Added identityPropagation configuration for impersonation, attribution, and system identity execution modes",
37
+ "Added tokenBroker mint endpoint and attribution field injection settings for runtime identity behavior"
38
+ ]
39
+ },
32
40
  {
33
41
  "version":"1.5.0",
34
42
  "date":"2026-03-07T00:00:00Z",
@@ -367,7 +375,7 @@
367
375
  "value":{
368
376
  "type":"string",
369
377
  "description":"Role identifier (used in JWT and ACL)",
370
- "pattern":"^[a-z-]+$"
378
+ "pattern":"^[a-z0-9-]+$"
371
379
  },
372
380
  "description":{
373
381
  "type":"string",
@@ -411,7 +419,7 @@
411
419
  "description":"Roles that have this permission",
412
420
  "items":{
413
421
  "type":"string",
414
- "pattern":"^[a-z-]+$",
422
+ "pattern":"^[a-z0-9-]+$",
415
423
  "minLength":1,
416
424
  "maxLength":50
417
425
  },
@@ -484,6 +492,112 @@
484
492
  "description":"SHA256 hash of triggerPaths payload (64-char hex). Used to detect structural changes. Optional; Dataplane computes when absent.",
485
493
  "pattern":"^[a-f0-9]{64}$"
486
494
  },
495
+ "identityPropagation":{
496
+ "type":"object",
497
+ "description":"Declares supported identity propagation modes and defaults for outbound operations.",
498
+ "required":[
499
+ "modes",
500
+ "default"
501
+ ],
502
+ "properties":{
503
+ "modes":{
504
+ "type":"array",
505
+ "items":{
506
+ "type":"string",
507
+ "enum":[
508
+ "impersonation",
509
+ "attribution",
510
+ "system"
511
+ ]
512
+ },
513
+ "uniqueItems":true,
514
+ "minItems":1
515
+ },
516
+ "default":{
517
+ "type":"string",
518
+ "enum":[
519
+ "impersonation",
520
+ "attribution",
521
+ "system"
522
+ ]
523
+ },
524
+ "impersonation":{
525
+ "type":"object",
526
+ "properties":{
527
+ "tokenBroker":{
528
+ "type":"object",
529
+ "properties":{
530
+ "mintEndpoint":{
531
+ "type":"string",
532
+ "default":"/api/v1/auth/token/mint",
533
+ "description":"Controller endpoint for delegated token minting."
534
+ }
535
+ },
536
+ "additionalProperties":false
537
+ },
538
+ "scopes":{
539
+ "type":"array",
540
+ "items":{
541
+ "type":"string"
542
+ }
543
+ },
544
+ "requiredUserConsent":{
545
+ "type":"boolean",
546
+ "default":false
547
+ }
548
+ },
549
+ "additionalProperties":false
550
+ },
551
+ "attribution":{
552
+ "type":"object",
553
+ "properties":{
554
+ "actorFieldMappings":{
555
+ "type":"object",
556
+ "description":"Map target fields to actor templates (supports {{actor.*}} and {{request.*}}).",
557
+ "additionalProperties":{
558
+ "type":[
559
+ "string",
560
+ "number",
561
+ "boolean"
562
+ ]
563
+ }
564
+ },
565
+ "commentTemplate":{
566
+ "type":"string",
567
+ "description":"Optional comment template for attribution logs (supports {{actor.*}})."
568
+ },
569
+ "injectionLocations":{
570
+ "type":"array",
571
+ "items":{
572
+ "type":"string",
573
+ "enum":[
574
+ "body",
575
+ "headers",
576
+ "query",
577
+ "comment"
578
+ ]
579
+ },
580
+ "default":[
581
+ "body"
582
+ ],
583
+ "uniqueItems":true
584
+ }
585
+ },
586
+ "additionalProperties":false
587
+ },
588
+ "system":{
589
+ "type":"object",
590
+ "properties":{
591
+ "allowWrites":{
592
+ "type":"boolean",
593
+ "default":true
594
+ }
595
+ },
596
+ "additionalProperties":false
597
+ }
598
+ },
599
+ "additionalProperties":false
600
+ },
487
601
  "rateLimit":{
488
602
  "type":"object",
489
603
  "description":"Outbound rate limit for requests from the dataplane to this external system. When set, the dataplane enforces the limit per base URL and handles HTTP 429 (wait and retry). When absent, global env defaults apply (CIP_EXECUTION_RATE_LIMIT_REQUESTS_PER_SECOND, CIP_EXECUTION_RATE_LIMIT_BURST_SIZE). Supports window-based (e.g. HubSpot 100/10s) or token-bucket style (requestsPerSecond + burstSize).",
@@ -522,6 +636,90 @@
522
636
  {"requestsPerWindow":100,"windowSeconds":10},
523
637
  {"requestsPerSecond":10,"burstSize":100}
524
638
  ]
639
+ },
640
+ "performance":{
641
+ "type":"object",
642
+ "description":"Performance defaults for runtime paths in this external system.",
643
+ "properties":{
644
+ "cacheDefaults":{
645
+ "type":"object",
646
+ "description":"Default cache policy inherited by datasources unless overridden under sync.cache.",
647
+ "properties":{
648
+ "enabled":{
649
+ "type":"boolean",
650
+ "default":true
651
+ },
652
+ "ttlSeconds":{
653
+ "type":"integer",
654
+ "minimum":1,
655
+ "maximum":604800,
656
+ "default":1800
657
+ }
658
+ },
659
+ "additionalProperties":false
660
+ }
661
+ },
662
+ "additionalProperties":false
663
+ },
664
+ "certification":{
665
+ "type":"object",
666
+ "description":"Public certification settings for external system version verification.",
667
+ "required":[
668
+ "enabled",
669
+ "publicKey",
670
+ "algorithm",
671
+ "issuer",
672
+ "version"
673
+ ],
674
+ "properties":{
675
+ "enabled":{
676
+ "type":"boolean",
677
+ "description":"Enable public certification metadata for this external system."
678
+ },
679
+ "publicKey":{
680
+ "type":"string",
681
+ "minLength":1,
682
+ "description":"Public verification material (SPKI PEM for RS256; dev placeholder for HS256). Private keys must never appear in config."
683
+ },
684
+ "algorithm":{
685
+ "type":"string",
686
+ "enum":[
687
+ "RS256",
688
+ "HS256"
689
+ ],
690
+ "description":"Signing algorithm for certificate verification (RS256 in production; HS256 only for local dev when the dataplane uses the dev HMAC signer)."
691
+ },
692
+ "issuer":{
693
+ "type":"string",
694
+ "minLength":1,
695
+ "description":"Certificate issuer identifier."
696
+ },
697
+ "version":{
698
+ "type":"string",
699
+ "minLength":1,
700
+ "description":"Certification version identifier; must align with external system versioning."
701
+ },
702
+ "status":{
703
+ "type":"string",
704
+ "enum":[
705
+ "passed",
706
+ "not_passed",
707
+ "pending"
708
+ ],
709
+ "description":"Outcome of certification evaluation for this block (aligns with DatasourceTestRun certificate.status)."
710
+ },
711
+ "level":{
712
+ "type":"string",
713
+ "enum":[
714
+ "BRONZE",
715
+ "SILVER",
716
+ "GOLD",
717
+ "PLATINUM"
718
+ ],
719
+ "description":"Achieved certification tier (aligns with integration certificate certificationLevel)."
720
+ }
721
+ },
722
+ "additionalProperties":false
525
723
  }
526
724
  },
527
725
  "additionalProperties":false
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Validation run CLI flag map",
4
+ "description": "Machine-readable mapping from CLI flags to ValidationRunRequest intent (plan §4). Exact JSON field names are defined in Dataplane OpenAPI.",
5
+ "operationId": "runValidation",
6
+ "flags": [
7
+ { "cliFlag": "test | test-integration | test-e2e (subcommand)", "requestField": "runType", "values": ["test", "integration", "e2e"] },
8
+ { "cliFlag": "-a, --app <app>", "requestField": null, "note": "Resolution only; paths and auth context" },
9
+ { "cliFlag": "-e, --env <env>", "requestField": null, "note": "Controller/dataplane URL and token selection" },
10
+ { "cliFlag": "-p, --payload <file>", "requestField": "payloadTemplate", "note": "Loaded object merged into request when integration-style test" },
11
+ { "cliFlag": "--timeout <ms>", "requestField": null, "note": "Client aggregate HTTP budget (POST + polls)" },
12
+ { "cliFlag": "--debug [level]", "requestField": "includeDebug", "default": false, "note": "summary|full|raw affects TTY appendix only; any presence sets includeDebug" },
13
+ { "cliFlag": "--no-async", "requestField": "asyncRun", "note": "When true on CLI, omit asyncRun or set false; sync-only POST" },
14
+ { "cliFlag": "--test-crud", "requestField": "e2eOptions.testCrud", "runType": "e2e" },
15
+ { "cliFlag": "--record-id", "requestField": "e2eOptions.recordId", "runType": "e2e" },
16
+ { "cliFlag": "--no-cleanup", "requestField": "e2eOptions.cleanup", "runType": "e2e" },
17
+ { "cliFlag": "--primary-key-value", "requestField": "e2eOptions.primaryKeyValue", "runType": "e2e" },
18
+ { "cliFlag": "--capability <key>", "requestField": "e2eOptions.capabilityKeys", "runType": "e2e", "note": "Single key forwarded as capabilityKeys array in request body when set" },
19
+ { "cliFlag": "--strict-capability-scope", "requestField": null, "runType": "e2e", "note": "Client-only: exit ≥1 when capabilities[] has >1 row while --capability is set (plan §2.3)" },
20
+ { "cliFlag": "--require-cert", "requestField": null, "note": "Client-only exit code 2 gate" },
21
+ { "cliFlag": "--warnings-as-errors", "requestField": null, "note": "Client-only exit code 1 on warn" },
22
+ { "cliFlag": "--json", "requestField": null, "note": "Stdout prints raw DatasourceTestRun" },
23
+ { "cliFlag": "--summary", "requestField": null, "note": "Compact machine-oriented lines (plan §16.9)" },
24
+ { "cliFlag": "-v, --verbose", "requestField": "e2eOptions.audit", "runType": "e2e", "note": "Also poll progress in legacy E2E path" },
25
+ { "cliFlag": "--watch", "requestField": null, "note": "Client-only: re-run test / test-integration / test-e2e when watched paths change (debounced; plan §3.14)" },
26
+ { "cliFlag": "--watch-path <path>", "requestField": null, "note": "Client-only: extra file or dir to watch (repeatable)" },
27
+ { "cliFlag": "--watch-application-yaml", "requestField": null, "note": "Client-only: ensure integration/<app>/application.yaml is in the watch set" },
28
+ { "cliFlag": "--watch-ci", "requestField": null, "note": "Client-only: exit after first validation run (normal exit code) for CI-style one-shot" },
29
+ { "cliFlag": "--watch-full-diff", "requestField": null, "note": "Client-only: print full before/after fingerprint lines on change" }
30
+ ]
31
+ }
@@ -0,0 +1,106 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://aifabrix.dev/schemas/infra-parameter.schema.json",
4
+ "title": "Infra parameter catalog",
5
+ "type": "object",
6
+ "required": ["version", "parameters"],
7
+ "additionalProperties": false,
8
+ "properties": {
9
+ "version": {
10
+ "type": "integer",
11
+ "minimum": 1
12
+ },
13
+ "standardUpInfraEnsureKeys": {
14
+ "type": "array",
15
+ "items": { "type": "string", "minLength": 1 },
16
+ "description": "Extra keys always merged on up-infra (e.g. default miso-controller DB pair when no workspace template lists them)."
17
+ },
18
+ "defaults": {
19
+ "type": "object",
20
+ "additionalProperties": false,
21
+ "description": "Default values for {{adminPassword}}, {{adminEmail}}, {{userPassword}} in literal generator values; overridden by aifabrix up-infra flags.",
22
+ "properties": {
23
+ "adminEmail": { "type": "string" },
24
+ "adminPassword": { "type": "string" },
25
+ "userPassword": { "type": "string" }
26
+ }
27
+ },
28
+ "parameters": {
29
+ "type": "array",
30
+ "items": { "$ref": "#/definitions/parameterEntry" }
31
+ }
32
+ },
33
+ "definitions": {
34
+ "ensureOnEnum": {
35
+ "type": "string",
36
+ "enum": ["upInfra", "resolveApp", "appRegister"]
37
+ },
38
+ "scopeEnum": {
39
+ "type": "string",
40
+ "enum": ["infra", "app", "shared-service"]
41
+ },
42
+ "generator": {
43
+ "type": "object",
44
+ "required": ["type"],
45
+ "additionalProperties": false,
46
+ "properties": {
47
+ "type": {
48
+ "type": "string",
49
+ "enum": [
50
+ "randomBytes32",
51
+ "randomAlphanumeric",
52
+ "password",
53
+ "emptyString",
54
+ "emptyAllowed",
55
+ "literal",
56
+ "databaseUrl",
57
+ "databasePassword"
58
+ ]
59
+ },
60
+ "value": {
61
+ "type": "string"
62
+ },
63
+ "length": {
64
+ "type": "integer",
65
+ "minimum": 1,
66
+ "maximum": 512,
67
+ "description": "For randomAlphanumeric: character count (default 32). For password: default 8. Charset [a-zA-Z0-9]."
68
+ }
69
+ }
70
+ },
71
+ "azureBlock": {
72
+ "type": "object",
73
+ "additionalProperties": false,
74
+ "properties": {
75
+ "vaultSecretName": { "type": "string" },
76
+ "vaultSecretNamePattern": { "type": "string" },
77
+ "notes": { "type": "string" }
78
+ }
79
+ },
80
+ "parameterEntry": {
81
+ "type": "object",
82
+ "required": ["scope", "generator", "ensureOn"],
83
+ "additionalProperties": false,
84
+ "properties": {
85
+ "key": {
86
+ "type": "string",
87
+ "minLength": 1
88
+ },
89
+ "keyPattern": {
90
+ "type": "string",
91
+ "minLength": 1
92
+ },
93
+ "scope": { "$ref": "#/definitions/scopeEnum" },
94
+ "generator": { "$ref": "#/definitions/generator" },
95
+ "ensureOn": {
96
+ "type": "array",
97
+ "minItems": 1,
98
+ "items": { "$ref": "#/definitions/ensureOnEnum" }
99
+ },
100
+ "requiredForLocal": { "type": "boolean" },
101
+ "azure": { "$ref": "#/definitions/azureBlock" },
102
+ "notes": { "type": "string" }
103
+ }
104
+ }
105
+ }
106
+ }