@aifabrix/builder 2.44.4 → 2.44.6

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 (214) hide show
  1. package/.cursor/rules/cli-layout.mdc +1 -1
  2. package/.cursor/rules/project-rules.mdc +1 -1
  3. package/.npmrc.token +1 -1
  4. package/README.md +15 -23
  5. package/integration/hubspot-test/README.md +2 -0
  6. package/integration/hubspot-test/test.js +5 -3
  7. package/jest.projects.js +68 -17
  8. package/lib/api/controller-health.api.js +49 -0
  9. package/lib/api/dimension-values.api.js +82 -0
  10. package/lib/api/dimensions.api.js +114 -0
  11. package/lib/api/external-systems.api.js +1 -0
  12. package/lib/api/integration-clients.api.js +168 -0
  13. package/lib/api/types/dimension-values.types.js +28 -0
  14. package/lib/api/types/dimensions.types.js +31 -0
  15. package/lib/api/types/integration-clients.types.js +45 -0
  16. package/lib/api/types/wizard.types.js +2 -1
  17. package/lib/api/validation-runner.js +46 -25
  18. package/lib/app/deploy-config.js +11 -1
  19. package/lib/app/deploy-status-display.js +3 -3
  20. package/lib/app/deploy.js +36 -14
  21. package/lib/app/display.js +15 -11
  22. package/lib/app/push.js +46 -23
  23. package/lib/app/register.js +1 -1
  24. package/lib/app/restart-display.js +95 -0
  25. package/lib/app/rotate-secret.js +1 -1
  26. package/lib/app/run-container-start.js +12 -6
  27. package/lib/app/run-env-compose.js +30 -1
  28. package/lib/app/run-helpers.js +44 -12
  29. package/lib/app/run-reload-sync.js +148 -0
  30. package/lib/app/run-resolve-image.js +51 -1
  31. package/lib/app/run.js +99 -73
  32. package/lib/build/index.js +75 -45
  33. package/lib/cli/doctor-check.js +117 -0
  34. package/lib/cli/index.js +8 -2
  35. package/lib/cli/infra-guided.js +445 -0
  36. package/lib/cli/setup-app.help.js +1 -1
  37. package/lib/cli/setup-app.js +20 -2
  38. package/lib/cli/setup-app.test-commands.js +9 -5
  39. package/lib/cli/setup-auth.js +26 -0
  40. package/lib/cli/setup-dev-path-commands.js +50 -3
  41. package/lib/cli/setup-infra.js +138 -61
  42. package/lib/cli/setup-integration-client.js +182 -0
  43. package/lib/cli/setup-parameters.js +21 -2
  44. package/lib/cli/setup-platform.js +102 -0
  45. package/lib/cli/setup-secrets.js +18 -6
  46. package/lib/cli/setup-utility.js +97 -33
  47. package/lib/commands/datasource-capability-dimension-cli.js +128 -0
  48. package/lib/commands/datasource-capability-output.js +29 -0
  49. package/lib/commands/datasource-capability-relate-cli.js +140 -0
  50. package/lib/commands/datasource-capability.js +411 -0
  51. package/lib/commands/datasource-unified-test-cli.options.js +1 -1
  52. package/lib/commands/datasource.js +53 -13
  53. package/lib/commands/dev-down.js +3 -3
  54. package/lib/commands/dev-infra-gate.js +32 -0
  55. package/lib/commands/dev-init.js +13 -7
  56. package/lib/commands/dimension-value.js +179 -0
  57. package/lib/commands/dimension.js +330 -0
  58. package/lib/commands/integration-client.js +430 -0
  59. package/lib/commands/login-device.js +65 -30
  60. package/lib/commands/login.js +21 -10
  61. package/lib/commands/parameters-validate.js +78 -13
  62. package/lib/commands/repair-datasource-auto-rbac.js +166 -0
  63. package/lib/commands/repair-datasource-keys.js +10 -5
  64. package/lib/commands/repair-datasource.js +19 -7
  65. package/lib/commands/repair-env-template.js +4 -1
  66. package/lib/commands/repair-openapi-sync.js +172 -0
  67. package/lib/commands/repair-persist.js +102 -0
  68. package/lib/commands/repair-rbac-extract.js +27 -0
  69. package/lib/commands/repair-rbac-migrate.js +186 -0
  70. package/lib/commands/repair-rbac.js +225 -19
  71. package/lib/commands/repair-system-alignment.js +246 -0
  72. package/lib/commands/repair-system-permissions.js +168 -0
  73. package/lib/commands/repair.js +120 -354
  74. package/lib/commands/secure.js +1 -1
  75. package/lib/commands/setup-modes.js +455 -0
  76. package/lib/commands/setup-prompts.js +388 -0
  77. package/lib/commands/setup.js +149 -0
  78. package/lib/commands/teardown.js +228 -0
  79. package/lib/commands/test-e2e-external.js +4 -3
  80. package/lib/commands/up-common.js +97 -12
  81. package/lib/commands/up-dataplane.js +33 -11
  82. package/lib/commands/up-miso.js +7 -11
  83. package/lib/commands/upload.js +109 -23
  84. package/lib/commands/wizard-core-helpers.js +14 -11
  85. package/lib/commands/wizard-core.js +58 -15
  86. package/lib/commands/wizard-dataplane.js +2 -2
  87. package/lib/commands/wizard-entity-selection.js +72 -14
  88. package/lib/commands/wizard-headless.js +7 -3
  89. package/lib/commands/wizard-helpers.js +13 -1
  90. package/lib/commands/wizard.js +210 -61
  91. package/lib/constants/infra-compose-service-names.js +40 -0
  92. package/lib/core/env-reader.js +16 -3
  93. package/lib/core/secrets-admin-env.js +101 -0
  94. package/lib/core/secrets-ensure-infra.js +34 -1
  95. package/lib/core/secrets-ensure.js +88 -66
  96. package/lib/core/secrets-env-content.js +432 -0
  97. package/lib/core/secrets-env-write.js +27 -1
  98. package/lib/core/secrets-load.js +248 -0
  99. package/lib/core/secrets-names.js +32 -0
  100. package/lib/core/secrets.js +17 -757
  101. package/lib/datasource/capability/basic-exposure.js +76 -0
  102. package/lib/datasource/capability/capability-diff-slice.js +41 -0
  103. package/lib/datasource/capability/capability-key.js +34 -0
  104. package/lib/datasource/capability/capability-resolve.js +172 -0
  105. package/lib/datasource/capability/capability-storage-keys.js +22 -0
  106. package/lib/datasource/capability/copy-operations.js +348 -0
  107. package/lib/datasource/capability/copy-test-payload.js +139 -0
  108. package/lib/datasource/capability/create-operations.js +235 -0
  109. package/lib/datasource/capability/dimension-operations.js +151 -0
  110. package/lib/datasource/capability/dimension-validate.js +219 -0
  111. package/lib/datasource/capability/json-pointer.js +31 -0
  112. package/lib/datasource/capability/reference-rewrite.js +51 -0
  113. package/lib/datasource/capability/relate-operations.js +325 -0
  114. package/lib/datasource/capability/relate-validate.js +219 -0
  115. package/lib/datasource/capability/remove-operations.js +275 -0
  116. package/lib/datasource/capability/run-capability-copy.js +152 -0
  117. package/lib/datasource/capability/run-capability-diff.js +135 -0
  118. package/lib/datasource/capability/run-capability-dimension.js +291 -0
  119. package/lib/datasource/capability/run-capability-edit.js +377 -0
  120. package/lib/datasource/capability/run-capability-relate.js +193 -0
  121. package/lib/datasource/capability/run-capability-remove.js +105 -0
  122. package/lib/datasource/capability/templates/minimal-fetch.json +18 -0
  123. package/lib/datasource/capability/validate-capability-slice.js +35 -0
  124. package/lib/datasource/list.js +136 -23
  125. package/lib/datasource/log-viewer.js +2 -4
  126. package/lib/datasource/unified-validation-run.js +51 -16
  127. package/lib/datasource/validate.js +53 -1
  128. package/lib/deployment/deploy-poll-ui.js +60 -0
  129. package/lib/deployment/deployer-status.js +29 -3
  130. package/lib/deployment/deployer.js +48 -30
  131. package/lib/deployment/environment.js +7 -2
  132. package/lib/deployment/poll-interval.js +72 -0
  133. package/lib/deployment/push.js +11 -9
  134. package/lib/external-system/deploy.js +4 -1
  135. package/lib/external-system/download.js +61 -32
  136. package/lib/external-system/sync-deploy-manifest.js +33 -0
  137. package/lib/generator/wizard-prompts.js +7 -1
  138. package/lib/generator/wizard.js +34 -0
  139. package/lib/infrastructure/index.js +49 -19
  140. package/lib/infrastructure/orphan-infra-docker-teardown.js +177 -0
  141. package/lib/parameters/infra-kv-discovery.js +29 -4
  142. package/lib/parameters/infra-parameter-catalog.js +6 -3
  143. package/lib/parameters/infra-parameter-validate.js +67 -19
  144. package/lib/resolvers/datasource-resolver.js +53 -0
  145. package/lib/resolvers/dimension-file.js +52 -0
  146. package/lib/resolvers/manifest-resolver.js +133 -0
  147. package/lib/schema/external-datasource.schema.json +183 -53
  148. package/lib/schema/external-system.schema.json +23 -10
  149. package/lib/schema/infra.parameter.yaml +26 -11
  150. package/lib/schema/wizard-config.schema.json +2 -2
  151. package/lib/utils/aifabrix-config-dir-walk.js +40 -0
  152. package/lib/utils/aifabrix-runtime-config-dir.js +26 -3
  153. package/lib/utils/app-run-containers.js +2 -2
  154. package/lib/utils/bash-secret-env.js +59 -0
  155. package/lib/utils/cli-secrets-error-format.js +78 -0
  156. package/lib/utils/cli-test-layout-chalk.js +31 -9
  157. package/lib/utils/cli-utils.js +4 -36
  158. package/lib/utils/datasource-test-run-display.js +8 -0
  159. package/lib/utils/dev-hosts-helper.js +3 -2
  160. package/lib/utils/dev-init-ssh-merge.js +2 -1
  161. package/lib/utils/docker-build.js +17 -9
  162. package/lib/utils/docker-reload-mount.js +127 -0
  163. package/lib/utils/external-readme.js +117 -4
  164. package/lib/utils/external-system-local-test-tty.js +3 -2
  165. package/lib/utils/external-system-readiness-core.js +45 -12
  166. package/lib/utils/external-system-readiness-deploy-display.js +3 -3
  167. package/lib/utils/external-system-readiness-display-internals.js +33 -3
  168. package/lib/utils/external-system-readiness-display.js +10 -1
  169. package/lib/utils/file-upload.js +40 -3
  170. package/lib/utils/health-check-db-init.js +107 -0
  171. package/lib/utils/health-check-public-warn.js +69 -0
  172. package/lib/utils/health-check-url.js +19 -4
  173. package/lib/utils/health-check.js +135 -105
  174. package/lib/utils/help-builder.js +5 -1
  175. package/lib/utils/image-name.js +34 -7
  176. package/lib/utils/integration-file-backup.js +74 -0
  177. package/lib/utils/mutagen-install.js +30 -3
  178. package/lib/utils/paths.js +108 -25
  179. package/lib/utils/postgres-wipe.js +212 -0
  180. package/lib/utils/register-aifabrix-shell-env.js +15 -0
  181. package/lib/utils/remote-dev-auth.js +21 -5
  182. package/lib/utils/remote-docker-env.js +9 -1
  183. package/lib/utils/remote-secrets-loader.js +42 -3
  184. package/lib/utils/resolve-docker-image-ref.js +9 -3
  185. package/lib/utils/secrets-ancestor-paths.js +47 -0
  186. package/lib/utils/secrets-helpers.js +17 -10
  187. package/lib/utils/secrets-kv-refs.js +42 -0
  188. package/lib/utils/secrets-kv-scope.js +19 -2
  189. package/lib/utils/secrets-materialize-local.js +134 -0
  190. package/lib/utils/secrets-path.js +24 -10
  191. package/lib/utils/secrets-utils.js +2 -2
  192. package/lib/utils/system-builder-root.js +34 -0
  193. package/lib/utils/url-declarative-resolve-build.js +6 -1
  194. package/lib/utils/url-declarative-runtime-base-path.js +32 -0
  195. package/lib/utils/url-declarative-vdir-inactive-env.js +2 -1
  196. package/lib/utils/urls-local-registry.js +73 -20
  197. package/lib/utils/validation-poll-ui.js +81 -0
  198. package/lib/utils/validation-run-poll.js +29 -5
  199. package/lib/utils/with-muted-logger.js +53 -0
  200. package/package.json +1 -1
  201. package/templates/applications/dataplane/application.yaml +1 -1
  202. package/templates/applications/dataplane/rbac.yaml +10 -10
  203. package/templates/applications/keycloak/env.template +8 -6
  204. package/templates/applications/miso-controller/application.yaml +7 -0
  205. package/templates/applications/miso-controller/env.template +7 -7
  206. package/templates/applications/miso-controller/rbac.yaml +9 -9
  207. package/templates/external-system/README.md.hbs +89 -102
  208. package/.nyc_output/55e9d034-ddab-4579-a706-e02a91d75c91.json +0 -1
  209. package/.nyc_output/processinfo/55e9d034-ddab-4579-a706-e02a91d75c91.json +0 -1
  210. package/.nyc_output/processinfo/index.json +0 -1
  211. package/lib/api/service-users.api.js +0 -150
  212. package/lib/api/types/service-users.types.js +0 -65
  213. package/lib/cli/setup-service-user.js +0 -187
  214. package/lib/commands/service-user.js +0 -429
@@ -1 +0,0 @@
1
- {"parent":null,"pid":1159804,"argv":["/usr/bin/node","/workspace/aifabrix-builder/node_modules/nyc/bin/nyc.js","--reporter=text","--reporter=lcov","--reporter=html","jest","--config","jest.config.coverage.js","--runInBand"],"execArgv":[],"cwd":"/workspace/aifabrix-builder","time":1769846848380,"ppid":1159803,"coverageFilename":"/workspace/aifabrix-builder/.nyc_output/55e9d034-ddab-4579-a706-e02a91d75c91.json","externalId":"","uuid":"55e9d034-ddab-4579-a706-e02a91d75c91","files":["/workspace/aifabrix-builder/lib/api/applications.api.js","/workspace/aifabrix-builder/lib/api/auth.api.js","/workspace/aifabrix-builder/lib/api/datasources-core.api.js","/workspace/aifabrix-builder/lib/api/datasources-extended.api.js","/workspace/aifabrix-builder/lib/api/datasources.api.js","/workspace/aifabrix-builder/lib/api/deployments.api.js","/workspace/aifabrix-builder/lib/api/environments.api.js","/workspace/aifabrix-builder/lib/api/external-systems.api.js","/workspace/aifabrix-builder/lib/api/index.js","/workspace/aifabrix-builder/lib/api/pipeline.api.js","/workspace/aifabrix-builder/lib/api/types/applications.types.js","/workspace/aifabrix-builder/lib/api/types/auth.types.js","/workspace/aifabrix-builder/lib/api/types/datasources.types.js","/workspace/aifabrix-builder/lib/api/types/deployments.types.js","/workspace/aifabrix-builder/lib/api/types/environments.types.js","/workspace/aifabrix-builder/lib/api/types/external-systems.types.js","/workspace/aifabrix-builder/lib/api/types/pipeline.types.js","/workspace/aifabrix-builder/lib/api/types/wizard.types.js","/workspace/aifabrix-builder/lib/api/wizard.api.js","/workspace/aifabrix-builder/lib/app/config.js","/workspace/aifabrix-builder/lib/app/deploy-config.js","/workspace/aifabrix-builder/lib/app/deploy.js","/workspace/aifabrix-builder/lib/app/display.js","/workspace/aifabrix-builder/lib/app/dockerfile.js","/workspace/aifabrix-builder/lib/app/down.js","/workspace/aifabrix-builder/lib/app/helpers.js","/workspace/aifabrix-builder/lib/app/index.js","/workspace/aifabrix-builder/lib/app/list.js","/workspace/aifabrix-builder/lib/app/prompts.js","/workspace/aifabrix-builder/lib/app/push.js","/workspace/aifabrix-builder/lib/app/readme.js","/workspace/aifabrix-builder/lib/app/register.js","/workspace/aifabrix-builder/lib/app/rotate-secret.js","/workspace/aifabrix-builder/lib/app/run-helpers.js","/workspace/aifabrix-builder/lib/app/run.js","/workspace/aifabrix-builder/lib/app/show-display.js","/workspace/aifabrix-builder/lib/app/show.js","/workspace/aifabrix-builder/lib/build/index.js","/workspace/aifabrix-builder/lib/cli.js","/workspace/aifabrix-builder/lib/commands/app.js","/workspace/aifabrix-builder/lib/commands/auth-config.js","/workspace/aifabrix-builder/lib/commands/auth-status.js","/workspace/aifabrix-builder/lib/commands/datasource.js","/workspace/aifabrix-builder/lib/commands/login-credentials.js","/workspace/aifabrix-builder/lib/commands/login-device.js","/workspace/aifabrix-builder/lib/commands/login.js","/workspace/aifabrix-builder/lib/commands/logout.js","/workspace/aifabrix-builder/lib/commands/secrets-set.js","/workspace/aifabrix-builder/lib/commands/secure.js","/workspace/aifabrix-builder/lib/commands/up-common.js","/workspace/aifabrix-builder/lib/commands/up-dataplane.js","/workspace/aifabrix-builder/lib/commands/up-miso.js","/workspace/aifabrix-builder/lib/commands/wizard-config-normalizer.js","/workspace/aifabrix-builder/lib/commands/wizard-core-helpers.js","/workspace/aifabrix-builder/lib/commands/wizard-core.js","/workspace/aifabrix-builder/lib/commands/wizard-dataplane.js","/workspace/aifabrix-builder/lib/commands/wizard-headless.js","/workspace/aifabrix-builder/lib/commands/wizard-helpers.js","/workspace/aifabrix-builder/lib/commands/wizard.js","/workspace/aifabrix-builder/lib/core/audit-logger.js","/workspace/aifabrix-builder/lib/core/config.js","/workspace/aifabrix-builder/lib/core/diff.js","/workspace/aifabrix-builder/lib/core/env-reader.js","/workspace/aifabrix-builder/lib/core/key-generator.js","/workspace/aifabrix-builder/lib/core/secrets-docker-env.js","/workspace/aifabrix-builder/lib/core/secrets.js","/workspace/aifabrix-builder/lib/core/templates-env.js","/workspace/aifabrix-builder/lib/core/templates.js","/workspace/aifabrix-builder/lib/datasource/deploy.js","/workspace/aifabrix-builder/lib/datasource/diff.js","/workspace/aifabrix-builder/lib/datasource/list.js","/workspace/aifabrix-builder/lib/datasource/validate.js","/workspace/aifabrix-builder/lib/deployment/deployer.js","/workspace/aifabrix-builder/lib/deployment/environment.js","/workspace/aifabrix-builder/lib/deployment/push.js","/workspace/aifabrix-builder/lib/external-system/delete.js","/workspace/aifabrix-builder/lib/external-system/deploy-helpers.js","/workspace/aifabrix-builder/lib/external-system/deploy.js","/workspace/aifabrix-builder/lib/external-system/download-helpers.js","/workspace/aifabrix-builder/lib/external-system/download.js","/workspace/aifabrix-builder/lib/external-system/generator.js","/workspace/aifabrix-builder/lib/external-system/test-auth.js","/workspace/aifabrix-builder/lib/external-system/test-execution.js","/workspace/aifabrix-builder/lib/external-system/test-helpers.js","/workspace/aifabrix-builder/lib/external-system/test.js","/workspace/aifabrix-builder/lib/generator/builders.js","/workspace/aifabrix-builder/lib/generator/external-controller-manifest.js","/workspace/aifabrix-builder/lib/generator/external-schema-utils.js","/workspace/aifabrix-builder/lib/generator/external.js","/workspace/aifabrix-builder/lib/generator/github.js","/workspace/aifabrix-builder/lib/generator/helpers.js","/workspace/aifabrix-builder/lib/generator/index.js","/workspace/aifabrix-builder/lib/generator/split.js","/workspace/aifabrix-builder/lib/generator/wizard-prompts.js","/workspace/aifabrix-builder/lib/generator/wizard.js","/workspace/aifabrix-builder/lib/infrastructure/compose.js","/workspace/aifabrix-builder/lib/infrastructure/helpers.js","/workspace/aifabrix-builder/lib/infrastructure/index.js","/workspace/aifabrix-builder/lib/infrastructure/services.js","/workspace/aifabrix-builder/lib/utils/api-error-handler.js","/workspace/aifabrix-builder/lib/utils/api.js","/workspace/aifabrix-builder/lib/utils/app-existence.js","/workspace/aifabrix-builder/lib/utils/app-register-api.js","/workspace/aifabrix-builder/lib/utils/app-register-auth.js","/workspace/aifabrix-builder/lib/utils/app-register-config.js","/workspace/aifabrix-builder/lib/utils/app-register-display.js","/workspace/aifabrix-builder/lib/utils/app-register-validator.js","/workspace/aifabrix-builder/lib/utils/app-run-containers.js","/workspace/aifabrix-builder/lib/utils/auth-config-validator.js","/workspace/aifabrix-builder/lib/utils/auth-headers.js","/workspace/aifabrix-builder/lib/utils/build-copy.js","/workspace/aifabrix-builder/lib/utils/build-helpers.js","/workspace/aifabrix-builder/lib/utils/cli-utils.js","/workspace/aifabrix-builder/lib/utils/command-header.js","/workspace/aifabrix-builder/lib/utils/compose-generator.js","/workspace/aifabrix-builder/lib/utils/config-paths.js","/workspace/aifabrix-builder/lib/utils/config-tokens.js","/workspace/aifabrix-builder/lib/utils/controller-url.js","/workspace/aifabrix-builder/lib/utils/dataplane-health.js","/workspace/aifabrix-builder/lib/utils/dataplane-resolver.js","/workspace/aifabrix-builder/lib/utils/deployment-errors.js","/workspace/aifabrix-builder/lib/utils/deployment-validation-helpers.js","/workspace/aifabrix-builder/lib/utils/deployment-validation.js","/workspace/aifabrix-builder/lib/utils/dev-config.js","/workspace/aifabrix-builder/lib/utils/device-code.js","/workspace/aifabrix-builder/lib/utils/docker-build.js","/workspace/aifabrix-builder/lib/utils/docker.js","/workspace/aifabrix-builder/lib/utils/dockerfile-utils.js","/workspace/aifabrix-builder/lib/utils/env-config-loader.js","/workspace/aifabrix-builder/lib/utils/env-copy.js","/workspace/aifabrix-builder/lib/utils/env-endpoints.js","/workspace/aifabrix-builder/lib/utils/env-map.js","/workspace/aifabrix-builder/lib/utils/env-ports.js","/workspace/aifabrix-builder/lib/utils/env-template.js","/workspace/aifabrix-builder/lib/utils/environment-checker.js","/workspace/aifabrix-builder/lib/utils/error-formatter.js","/workspace/aifabrix-builder/lib/utils/error-formatters/error-parser.js","/workspace/aifabrix-builder/lib/utils/error-formatters/http-status-errors.js","/workspace/aifabrix-builder/lib/utils/error-formatters/network-errors.js","/workspace/aifabrix-builder/lib/utils/error-formatters/permission-errors.js","/workspace/aifabrix-builder/lib/utils/error-formatters/validation-errors.js","/workspace/aifabrix-builder/lib/utils/external-readme.js","/workspace/aifabrix-builder/lib/utils/external-system-display.js","/workspace/aifabrix-builder/lib/utils/external-system-env-helpers.js","/workspace/aifabrix-builder/lib/utils/external-system-test-helpers.js","/workspace/aifabrix-builder/lib/utils/external-system-validators.js","/workspace/aifabrix-builder/lib/utils/file-upload.js","/workspace/aifabrix-builder/lib/utils/health-check.js","/workspace/aifabrix-builder/lib/utils/help-builder.js","/workspace/aifabrix-builder/lib/utils/image-name.js","/workspace/aifabrix-builder/lib/utils/infra-containers.js","/workspace/aifabrix-builder/lib/utils/infra-status.js","/workspace/aifabrix-builder/lib/utils/local-secrets.js","/workspace/aifabrix-builder/lib/utils/logger.js","/workspace/aifabrix-builder/lib/utils/parse-image-ref.js","/workspace/aifabrix-builder/lib/utils/paths.js","/workspace/aifabrix-builder/lib/utils/port-resolver.js","/workspace/aifabrix-builder/lib/utils/schema-loader.js","/workspace/aifabrix-builder/lib/utils/schema-resolver.js","/workspace/aifabrix-builder/lib/utils/secrets-encryption.js","/workspace/aifabrix-builder/lib/utils/secrets-generator.js","/workspace/aifabrix-builder/lib/utils/secrets-helpers.js","/workspace/aifabrix-builder/lib/utils/secrets-path.js","/workspace/aifabrix-builder/lib/utils/secrets-url.js","/workspace/aifabrix-builder/lib/utils/secrets-utils.js","/workspace/aifabrix-builder/lib/utils/template-helpers.js","/workspace/aifabrix-builder/lib/utils/token-encryption.js","/workspace/aifabrix-builder/lib/utils/token-manager-refresh.js","/workspace/aifabrix-builder/lib/utils/token-manager.js","/workspace/aifabrix-builder/lib/utils/variable-transformer.js","/workspace/aifabrix-builder/lib/utils/yaml-preserve.js","/workspace/aifabrix-builder/lib/validation/external-manifest-validator.js","/workspace/aifabrix-builder/lib/validation/template.js","/workspace/aifabrix-builder/lib/validation/validate-display.js","/workspace/aifabrix-builder/lib/validation/validate.js","/workspace/aifabrix-builder/lib/validation/validator.js","/workspace/aifabrix-builder/lib/validation/wizard-config-validator.js"]}
@@ -1 +0,0 @@
1
- {"processes":{"55e9d034-ddab-4579-a706-e02a91d75c91":{"parent":null,"children":[]}},"files":{"/workspace/aifabrix-builder/lib/api/applications.api.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/auth.api.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/datasources-core.api.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/datasources-extended.api.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/datasources.api.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/deployments.api.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/environments.api.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/external-systems.api.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/index.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/pipeline.api.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/types/applications.types.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/types/auth.types.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/types/datasources.types.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/types/deployments.types.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/types/environments.types.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/types/external-systems.types.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/types/pipeline.types.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/types/wizard.types.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/api/wizard.api.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/config.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/deploy-config.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/deploy.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/display.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/dockerfile.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/down.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/index.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/list.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/prompts.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/push.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/readme.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/register.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/rotate-secret.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/run-helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/run.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/show-display.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/app/show.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/build/index.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/cli.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/app.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/auth-config.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/auth-status.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/datasource.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/login-credentials.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/login-device.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/login.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/logout.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/secrets-set.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/secure.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/up-common.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/up-dataplane.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/up-miso.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/wizard-config-normalizer.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/wizard-core-helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/wizard-core.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/wizard-dataplane.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/wizard-headless.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/wizard-helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/commands/wizard.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/core/audit-logger.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/core/config.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/core/diff.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/core/env-reader.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/core/key-generator.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/core/secrets-docker-env.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/core/secrets.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/core/templates-env.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/core/templates.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/datasource/deploy.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/datasource/diff.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/datasource/list.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/datasource/validate.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/deployment/deployer.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/deployment/environment.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/deployment/push.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/external-system/delete.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/external-system/deploy-helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/external-system/deploy.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/external-system/download-helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/external-system/download.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/external-system/generator.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/external-system/test-auth.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/external-system/test-execution.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/external-system/test-helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/external-system/test.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/generator/builders.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/generator/external-controller-manifest.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/generator/external-schema-utils.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/generator/external.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/generator/github.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/generator/helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/generator/index.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/generator/split.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/generator/wizard-prompts.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/generator/wizard.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/infrastructure/compose.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/infrastructure/helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/infrastructure/index.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/infrastructure/services.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/api-error-handler.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/api.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/app-existence.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/app-register-api.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/app-register-auth.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/app-register-config.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/app-register-display.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/app-register-validator.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/app-run-containers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/auth-config-validator.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/auth-headers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/build-copy.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/build-helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/cli-utils.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/command-header.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/compose-generator.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/config-paths.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/config-tokens.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/controller-url.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/dataplane-health.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/dataplane-resolver.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/deployment-errors.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/deployment-validation-helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/deployment-validation.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/dev-config.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/device-code.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/docker-build.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/docker.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/dockerfile-utils.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/env-config-loader.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/env-copy.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/env-endpoints.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/env-map.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/env-ports.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/env-template.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/environment-checker.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/error-formatter.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/error-formatters/error-parser.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/error-formatters/http-status-errors.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/error-formatters/network-errors.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/error-formatters/permission-errors.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/error-formatters/validation-errors.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/external-readme.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/external-system-display.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/external-system-env-helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/external-system-test-helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/external-system-validators.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/file-upload.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/health-check.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/help-builder.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/image-name.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/infra-containers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/infra-status.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/local-secrets.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/logger.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/parse-image-ref.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/paths.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/port-resolver.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/schema-loader.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/schema-resolver.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/secrets-encryption.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/secrets-generator.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/secrets-helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/secrets-path.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/secrets-url.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/secrets-utils.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/template-helpers.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/token-encryption.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/token-manager-refresh.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/token-manager.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/variable-transformer.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/utils/yaml-preserve.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/validation/external-manifest-validator.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/validation/template.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/validation/validate-display.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/validation/validate.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/validation/validator.js":["55e9d034-ddab-4579-a706-e02a91d75c91"],"/workspace/aifabrix-builder/lib/validation/wizard-config-validator.js":["55e9d034-ddab-4579-a706-e02a91d75c91"]},"externalIds":{}}
@@ -1,150 +0,0 @@
1
- /**
2
- * @fileoverview Service users API functions (create, list, rotate-secret, delete, update)
3
- * @author AI Fabrix Team
4
- * @version 2.0.0
5
- */
6
-
7
- const { ApiClient } = require('./index');
8
-
9
- /**
10
- * Create a service user (username, email, redirectUris, groupIds); return one-time secret
11
- * POST /api/v1/service-users
12
- * @requiresPermission {Controller} service-user:create
13
- * @async
14
- * @function createServiceUser
15
- * @param {string} controllerUrl - Controller base URL
16
- * @param {Object} authConfig - Authentication configuration (bearer or client-credentials)
17
- * @param {Object} body - Request body
18
- * @param {string} body.username - Username (required)
19
- * @param {string} body.email - Email (required)
20
- * @param {string[]} body.redirectUris - Redirect URIs for OAuth2 (required, min 1)
21
- * @param {string[]} body.groupNames - Group names (required, e.g. AI-Fabrix-Developers)
22
- * @param {string} [body.description] - Optional description
23
- * @returns {Promise<Object>} Response with clientId and one-time clientSecret
24
- * @throws {Error} If request fails (400/401/403 or network)
25
- */
26
- async function createServiceUser(controllerUrl, authConfig, body) {
27
- const client = new ApiClient(controllerUrl, authConfig);
28
- return await client.post('/api/v1/service-users', {
29
- body: {
30
- username: body.username,
31
- email: body.email,
32
- redirectUris: body.redirectUris,
33
- groupNames: body.groupNames,
34
- description: body.description
35
- }
36
- });
37
- }
38
-
39
- /**
40
- * List service users with optional pagination and search
41
- * GET /api/v1/service-users
42
- * @requiresPermission {Controller} service-user:read
43
- * @async
44
- * @function listServiceUsers
45
- * @param {string} controllerUrl - Controller base URL
46
- * @param {Object} authConfig - Authentication configuration (bearer or client-credentials)
47
- * @param {Object} [options] - Query options
48
- * @param {number} [options.page] - Page number
49
- * @param {number} [options.pageSize] - Items per page
50
- * @param {string} [options.sort] - Sort field/direction
51
- * @param {string} [options.filter] - Filter expression
52
- * @param {string} [options.search] - Search term
53
- * @returns {Promise<Object>} Response with data (array), meta, links
54
- * @throws {Error} If request fails (401/403 or network)
55
- */
56
- async function listServiceUsers(controllerUrl, authConfig, options = {}) {
57
- const client = new ApiClient(controllerUrl, authConfig);
58
- const params = {};
59
- if (options.page !== undefined && options.page !== null) params.page = options.page;
60
- if (options.pageSize !== undefined && options.pageSize !== null) params.pageSize = options.pageSize;
61
- if (options.sort) params.sort = options.sort;
62
- if (options.filter) params.filter = options.filter;
63
- if (options.search) params.search = options.search;
64
- return await client.get('/api/v1/service-users', { params });
65
- }
66
-
67
- /**
68
- * Regenerate (rotate) secret for a service user. New secret is returned once only.
69
- * POST /api/v1/service-users/{id}/regenerate-secret
70
- * @requiresPermission {Controller} service-user:update
71
- * @async
72
- * @function regenerateSecretServiceUser
73
- * @param {string} controllerUrl - Controller base URL
74
- * @param {Object} authConfig - Authentication configuration
75
- * @param {string} id - Service user ID (UUID)
76
- * @returns {Promise<Object>} Response with data.clientSecret
77
- * @throws {Error} If request fails (401/403/404 or network)
78
- */
79
- async function regenerateSecretServiceUser(controllerUrl, authConfig, id) {
80
- const client = new ApiClient(controllerUrl, authConfig);
81
- return await client.post(`/api/v1/service-users/${encodeURIComponent(id)}/regenerate-secret`);
82
- }
83
-
84
- /**
85
- * Delete (deactivate) a service user
86
- * DELETE /api/v1/service-users/{id}
87
- * @requiresPermission {Controller} service-user:delete
88
- * @async
89
- * @function deleteServiceUser
90
- * @param {string} controllerUrl - Controller base URL
91
- * @param {Object} authConfig - Authentication configuration
92
- * @param {string} id - Service user ID (UUID)
93
- * @returns {Promise<Object>} Response (data may be null)
94
- * @throws {Error} If request fails (401/403/404 or network)
95
- */
96
- async function deleteServiceUser(controllerUrl, authConfig, id) {
97
- const client = new ApiClient(controllerUrl, authConfig);
98
- return await client.delete(`/api/v1/service-users/${encodeURIComponent(id)}`);
99
- }
100
-
101
- /**
102
- * Update group assignments for a service user
103
- * PUT /api/v1/service-users/{id}/groups
104
- * @requiresPermission {Controller} service-user:update
105
- * @async
106
- * @function updateGroupsServiceUser
107
- * @param {string} controllerUrl - Controller base URL
108
- * @param {Object} authConfig - Authentication configuration
109
- * @param {string} id - Service user ID (UUID)
110
- * @param {Object} body - Request body
111
- * @param {string[]} body.groupNames - Group names to set
112
- * @returns {Promise<Object>} Response with data.id, data.groupNames
113
- * @throws {Error} If request fails (400/401/403/404 or network)
114
- */
115
- async function updateGroupsServiceUser(controllerUrl, authConfig, id, body) {
116
- const client = new ApiClient(controllerUrl, authConfig);
117
- return await client.put(`/api/v1/service-users/${encodeURIComponent(id)}/groups`, {
118
- body: { groupNames: body.groupNames }
119
- });
120
- }
121
-
122
- /**
123
- * Update redirect URIs for a service user (min 1). Controller merges in its callback URL.
124
- * PUT /api/v1/service-users/{id}/redirect-uris
125
- * @requiresPermission {Controller} service-user:update
126
- * @async
127
- * @function updateRedirectUrisServiceUser
128
- * @param {string} controllerUrl - Controller base URL
129
- * @param {Object} authConfig - Authentication configuration
130
- * @param {string} id - Service user ID (UUID)
131
- * @param {Object} body - Request body
132
- * @param {string[]} body.redirectUris - Redirect URIs (min 1)
133
- * @returns {Promise<Object>} Response with data.id, data.redirectUris
134
- * @throws {Error} If request fails (400/401/403/404 or network)
135
- */
136
- async function updateRedirectUrisServiceUser(controllerUrl, authConfig, id, body) {
137
- const client = new ApiClient(controllerUrl, authConfig);
138
- return await client.put(`/api/v1/service-users/${encodeURIComponent(id)}/redirect-uris`, {
139
- body: { redirectUris: body.redirectUris }
140
- });
141
- }
142
-
143
- module.exports = {
144
- createServiceUser,
145
- listServiceUsers,
146
- regenerateSecretServiceUser,
147
- deleteServiceUser,
148
- updateGroupsServiceUser,
149
- updateRedirectUrisServiceUser
150
- };
@@ -1,65 +0,0 @@
1
- /**
2
- * @fileoverview Service users API type definitions
3
- * @author AI Fabrix Team
4
- * @version 2.0.0
5
- */
6
-
7
- /**
8
- * Service user create request body (builder sends this to controller)
9
- * @typedef {Object} ServiceUserCreateRequest
10
- * @property {string} username - Username (1–100 chars, e.g. api-client-001)
11
- * @property {string} email - Email address
12
- * @property {string[]} redirectUris - Allowed redirect URIs for OAuth2 (min 1)
13
- * @property {string[]} groupNames - Group names to assign (e.g. AI-Fabrix-Developers)
14
- * @property {string} [description] - Optional description (max 500 chars)
15
- */
16
-
17
- /**
18
- * Service user create response (clientSecret is one-time-only; store at creation time)
19
- * @typedef {Object} ServiceUserCreateResponse
20
- * @property {string} clientId - Stable identifier for the service user
21
- * @property {string} clientSecret - One-time-only secret; not returned by any other endpoint
22
- * @property {boolean} [success] - Optional wrapper flag
23
- * @property {string} [createdAt] - Optional creation timestamp (ISO 8601)
24
- */
25
-
26
- /**
27
- * Single service user item in list response
28
- * @typedef {Object} ListServiceUserItem
29
- * @property {string} id - Service user ID (UUID)
30
- * @property {string} [username] - Username
31
- * @property {string} [email] - Email
32
- * @property {string} [clientId] - OAuth2 client ID
33
- * @property {boolean} [active] - Whether the service user is active
34
- */
35
-
36
- /**
37
- * List service users response (Controller GET /api/v1/service-users)
38
- * @typedef {Object} ListServiceUsersResponse
39
- * @property {ListServiceUserItem[]} data - Array of service users
40
- * @property {Object} [meta] - Pagination metadata (e.g. total, page, pageSize)
41
- * @property {Object} [links] - Pagination links
42
- */
43
-
44
- /**
45
- * Regenerate secret response (Controller POST .../regenerate-secret). clientSecret is one-time-only.
46
- * @typedef {Object} RegenerateSecretServiceUserResponse
47
- * @property {Object} data - Response data
48
- * @property {string} data.clientSecret - New client secret (shown once only)
49
- */
50
-
51
- /**
52
- * Update groups response (Controller PUT .../groups)
53
- * @typedef {Object} UpdateGroupsServiceUserResponse
54
- * @property {Object} data - Response data
55
- * @property {string} data.id - Service user ID
56
- * @property {string[]} data.groupNames - Updated group names
57
- */
58
-
59
- /**
60
- * Update redirect URIs response (Controller PUT .../redirect-uris)
61
- * @typedef {Object} UpdateRedirectUrisServiceUserResponse
62
- * @property {Object} data - Response data
63
- * @property {string} data.id - Service user ID
64
- * @property {string[]} data.redirectUris - Updated redirect URIs
65
- */
@@ -1,187 +0,0 @@
1
- /**
2
- * CLI service-user command setup.
3
- * Command: service-user create (create service user, get one-time secret).
4
- *
5
- * @fileoverview Service user CLI definitions
6
- * @author AI Fabrix Team
7
- * @version 2.0.0
8
- */
9
-
10
- const chalk = require('chalk');
11
- const logger = require('../utils/logger');
12
- const { handleCommandError } = require('../utils/cli-utils');
13
- const {
14
- runServiceUserCreate,
15
- runServiceUserList,
16
- runServiceUserRotateSecret,
17
- runServiceUserDelete,
18
- runServiceUserUpdateGroups,
19
- runServiceUserUpdateRedirectUris
20
- } = require('../commands/service-user');
21
-
22
- const HELP_AFTER = `
23
- Service users are dedicated accounts for integrations, CI pipelines, or API clients.
24
- Use: list (service-user:read), create (service-user:create), rotate-secret, update-groups, update-redirect-uris (service-user:update), delete (service-user:delete).
25
- The controller returns a one-time clientSecret on create and rotate-secret—save it immediately; it cannot be retrieved again.
26
-
27
- Examples:
28
- $ aifabrix service-user create -u postman -e postman@aifabrix.dev \\
29
- --redirect-uris https://oauth.pstmn.io/v1/callback --group-names AI-Fabrix-Platform-Admins
30
- $ aifabrix service-user list
31
- $ aifabrix service-user rotate-secret --id <uuid>
32
- $ aifabrix service-user delete --id <uuid>
33
- $ aifabrix service-user update-groups --id <uuid> --group-names Group1,Group2
34
- $ aifabrix service-user update-redirect-uris --id <uuid> --redirect-uris https://app.example.com/callback
35
-
36
- Run "aifabrix login" first.`;
37
-
38
- function parseOptionalInt(val) {
39
- return (val !== undefined && val !== null) ? parseInt(val, 10) : undefined;
40
- }
41
-
42
- function addCreateCommand(serviceUser) {
43
- serviceUser.command('create')
44
- .description('Create a service user and receive a one-time clientSecret (save it now; it will not be shown again)')
45
- .option('--controller <url>', 'Controller base URL (default: from config)')
46
- .option('-u, --username <username>', 'Service user username (required)')
47
- .option('-e, --email <email>', 'Email address (required)')
48
- .option('--redirect-uris <uris>', 'Comma-separated OAuth2 redirect URIs (required)')
49
- .option('--group-names <names>', 'Comma-separated group names to assign (required)')
50
- .option('-d, --description <description>', 'Description for the service user')
51
- .action(async(options) => {
52
- try {
53
- await runServiceUserCreate({
54
- controller: options.controller,
55
- username: options.username,
56
- email: options.email,
57
- redirectUris: options.redirectUris,
58
- groupNames: options.groupNames,
59
- description: options.description
60
- });
61
- } catch (error) {
62
- logger.error(chalk.red(`Error: ${error.message}`));
63
- handleCommandError(error, 'service-user create');
64
- process.exit(1);
65
- }
66
- });
67
- }
68
-
69
- function addListCommand(serviceUser) {
70
- serviceUser.command('list')
71
- .description('List service users (supports pagination and search)')
72
- .option('--controller <url>', 'Controller base URL (default: from config)')
73
- .option('--page <n>', 'Page number')
74
- .option('--page-size <n>', 'Items per page')
75
- .option('--search <term>', 'Search term')
76
- .option('--sort <field>', 'Sort field/direction')
77
- .option('--filter <expr>', 'Filter expression')
78
- .action(async(options) => {
79
- try {
80
- await runServiceUserList({
81
- controller: options.controller,
82
- page: parseOptionalInt(options.page),
83
- pageSize: parseOptionalInt(options.pageSize),
84
- search: options.search,
85
- sort: options.sort,
86
- filter: options.filter
87
- });
88
- } catch (error) {
89
- logger.error(chalk.red(`Error: ${error.message}`));
90
- handleCommandError(error, 'service-user list');
91
- process.exit(1);
92
- }
93
- });
94
- }
95
-
96
- function addRotateSecretCommand(serviceUser) {
97
- serviceUser.command('rotate-secret')
98
- .description('Rotate (regenerate) secret for a service user; new secret shown once only')
99
- .option('--controller <url>', 'Controller base URL (default: from config)')
100
- .option('--id <uuid>', 'Service user ID (required)')
101
- .action(async(options) => {
102
- try {
103
- await runServiceUserRotateSecret({ controller: options.controller, id: options.id });
104
- } catch (error) {
105
- logger.error(chalk.red(`Error: ${error.message}`));
106
- handleCommandError(error, 'service-user rotate-secret');
107
- process.exit(1);
108
- }
109
- });
110
- }
111
-
112
- function addDeleteCommand(serviceUser) {
113
- serviceUser.command('delete')
114
- .description('Delete (deactivate) a service user')
115
- .option('--controller <url>', 'Controller base URL (default: from config)')
116
- .option('--id <uuid>', 'Service user ID (required)')
117
- .action(async(options) => {
118
- try {
119
- await runServiceUserDelete({ controller: options.controller, id: options.id });
120
- } catch (error) {
121
- logger.error(chalk.red(`Error: ${error.message}`));
122
- handleCommandError(error, 'service-user delete');
123
- process.exit(1);
124
- }
125
- });
126
- }
127
-
128
- function addUpdateGroupsCommand(serviceUser) {
129
- serviceUser.command('update-groups')
130
- .description('Update group assignments for a service user')
131
- .option('--controller <url>', 'Controller base URL (default: from config)')
132
- .option('--id <uuid>', 'Service user ID (required)')
133
- .option('--group-names <names>', 'Comma-separated group names (required)')
134
- .action(async(options) => {
135
- try {
136
- await runServiceUserUpdateGroups({
137
- controller: options.controller,
138
- id: options.id,
139
- groupNames: options.groupNames
140
- });
141
- } catch (error) {
142
- logger.error(chalk.red(`Error: ${error.message}`));
143
- handleCommandError(error, 'service-user update-groups');
144
- process.exit(1);
145
- }
146
- });
147
- }
148
-
149
- function addUpdateRedirectUrisCommand(serviceUser) {
150
- serviceUser.command('update-redirect-uris')
151
- .description('Update redirect URIs for a service user (min 1)')
152
- .option('--controller <url>', 'Controller base URL (default: from config)')
153
- .option('--id <uuid>', 'Service user ID (required)')
154
- .option('--redirect-uris <uris>', 'Comma-separated redirect URIs (required, min 1)')
155
- .action(async(options) => {
156
- try {
157
- await runServiceUserUpdateRedirectUris({
158
- controller: options.controller,
159
- id: options.id,
160
- redirectUris: options.redirectUris
161
- });
162
- } catch (error) {
163
- logger.error(chalk.red(`Error: ${error.message}`));
164
- handleCommandError(error, 'service-user update-redirect-uris');
165
- process.exit(1);
166
- }
167
- });
168
- }
169
-
170
- /**
171
- * Sets up service-user commands
172
- * @param {Command} program - Commander program instance
173
- */
174
- function setupServiceUserCommands(program) {
175
- const serviceUser = program
176
- .command('service-user')
177
- .description('OAuth service users on Controller (integrations, CI)')
178
- .addHelpText('after', HELP_AFTER);
179
- addCreateCommand(serviceUser);
180
- addListCommand(serviceUser);
181
- addRotateSecretCommand(serviceUser);
182
- addDeleteCommand(serviceUser);
183
- addUpdateGroupsCommand(serviceUser);
184
- addUpdateRedirectUrisCommand(serviceUser);
185
- }
186
-
187
- module.exports = { setupServiceUserCommands };