@aifabrix/builder 2.49.2 → 2.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/.cursor/plans/157.1-security-quality-violations-by-type.csv +374 -0
  2. package/.cursor/rules/assistant-driven-integration-build.mdc +40 -0
  3. package/.cursor/rules/deploy-rules/docker-image-ip-policy.mdc +49 -0
  4. package/.cursor/rules/plan-rules/application-lifecycle.mdc +30 -0
  5. package/.cursor/rules/plan-rules/plan-frontmatter.mdc +35 -0
  6. package/.cursor/rules/plan-rules/plan-lifecycle.mdc +31 -0
  7. package/.cursor/rules/plan-rules/plan-validation-gate.mdc +34 -0
  8. package/.cursor/skills/README.md +1 -0
  9. package/.dockerignore +52 -0
  10. package/.eslintignore +22 -0
  11. package/README.md +2 -0
  12. package/bin/builder-api-cleanup.js +26 -0
  13. package/bin/builder-api-nest.js +10 -0
  14. package/bin/builder-api-spike.js +19 -0
  15. package/enterprise-knowledge/README.md +50 -0
  16. package/enterprise-knowledge/enterprise-integration-lifecycle/README.md +22 -0
  17. package/enterprise-knowledge/enterprise-integration-lifecycle/application.json +15 -0
  18. package/enterprise-knowledge/enterprise-integration-lifecycle/deploy.js +69 -0
  19. package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-deploy.json +52 -0
  20. package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-system.json +29 -0
  21. package/enterprise-knowledge/enterprise-integration-lifecycle/env.template +2 -0
  22. package/integration/README.md +81 -0
  23. package/integration/github/README.md +53 -0
  24. package/integration/github/application.json +21 -0
  25. package/integration/github/deploy.js +72 -0
  26. package/integration/github/env.template +11 -0
  27. package/integration/github/github-datasource-issue-comments.json +239 -0
  28. package/integration/github/github-datasource-issues.json +399 -0
  29. package/integration/github/github-datasource-repository.json +354 -0
  30. package/integration/github/github-deploy.json +1202 -0
  31. package/integration/github/github-system.json +82 -0
  32. package/integration/hubspot-test/README.md +1 -1
  33. package/integration/hubspot-test/create-hubspot.js +1 -16
  34. package/jest.isolated-projects.js +31 -1
  35. package/jest.projects.js +87 -1
  36. package/lib/api/dev-server-https.js +1 -1
  37. package/lib/api/enterprise-knowledge.api.js +63 -0
  38. package/lib/api/evidence-kinds.api.js +128 -0
  39. package/lib/api/evidence.api.js +172 -0
  40. package/lib/api/external-systems.api.js +8 -2
  41. package/lib/api/pipeline.api.js +5 -1
  42. package/lib/api/resource-types.api.js +5 -4
  43. package/lib/api/roles.api.js +121 -0
  44. package/lib/api/types/enterprise-knowledge.types.js +46 -0
  45. package/lib/api/types/evidence-kinds.types.js +42 -0
  46. package/lib/api/types/evidence.types.js +67 -0
  47. package/lib/api/types/resource-types.types.js +2 -0
  48. package/lib/api/types/roles.types.js +36 -0
  49. package/lib/app/certification-verify-rows.js +1 -1
  50. package/lib/app/controller-application-filter.js +36 -0
  51. package/lib/app/deploy.js +1 -1
  52. package/lib/app/list-external-systems.js +130 -0
  53. package/lib/app/list.js +20 -8
  54. package/lib/app/run.js +3 -1
  55. package/lib/app/show-display.js +8 -3
  56. package/lib/app/show-online.js +178 -0
  57. package/lib/app/show.js +39 -90
  58. package/lib/build/builder-api-docker-staging.js +47 -0
  59. package/lib/build/miso-controller-npm-sdk-guard.js +2 -2
  60. package/lib/build/standard-docker-build.js +2 -0
  61. package/lib/certification/merge-certification-from-artifact.js +1 -1
  62. package/lib/certification/post-unified-cert-sync.js +4 -31
  63. package/lib/certification/sync-after-external-command.js +0 -1
  64. package/lib/certification/sync-system-certification.js +0 -3
  65. package/lib/channels/add-channel.js +40 -34
  66. package/lib/channels/approval-guides/chatgpt.js +33 -0
  67. package/lib/channels/approval-guides/credential-portal.js +38 -0
  68. package/lib/channels/approval-guides/index.js +110 -0
  69. package/lib/channels/approval-guides/microsoft-copilot.js +34 -0
  70. package/lib/channels/approval-guides/slack.js +34 -0
  71. package/lib/channels/approval-guides/teams-bot.js +35 -0
  72. package/lib/channels/approval-guides/web-embed.js +32 -0
  73. package/lib/channels/channel-approval-guide.js +11 -0
  74. package/lib/channels/channel-artifact-generator.js +18 -5
  75. package/lib/channels/channel-audit.js +3 -0
  76. package/lib/channels/channel-auth-context.js +1 -1
  77. package/lib/channels/channel-description.js +59 -0
  78. package/lib/channels/channel-integration-generator.js +13 -230
  79. package/lib/channels/channel-integration-template.js +94 -0
  80. package/lib/channels/channel-runtime-resolver.js +43 -3
  81. package/lib/channels/channel-status-display.js +66 -26
  82. package/lib/channels/channel-targets.js +3 -3
  83. package/lib/cli/index.js +31 -3
  84. package/lib/cli/infra-guided.js +5 -1
  85. package/lib/cli/setup-app-external-create.js +111 -0
  86. package/lib/cli/setup-app.help.js +1 -1
  87. package/lib/cli/setup-app.js +60 -130
  88. package/lib/cli/setup-app.test-commands.js +26 -52
  89. package/lib/cli/setup-certification-commands.js +4 -4
  90. package/lib/cli/setup-certification.help.js +9 -9
  91. package/lib/cli/setup-dev.js +30 -9
  92. package/lib/cli/setup-external-system-help.js +4 -6
  93. package/lib/cli/setup-external-system.js +58 -52
  94. package/lib/cli/setup-infra-up-builder-api-action.js +64 -0
  95. package/lib/cli/setup-infra-up-platform-action.js +3 -1
  96. package/lib/cli/setup-infra.js +15 -0
  97. package/lib/cli/setup-list.js +43 -0
  98. package/lib/cli/setup-utility-help-after.js +12 -0
  99. package/lib/cli/setup-utility-repair.js +26 -7
  100. package/lib/cli/setup-utility-validate.js +41 -2
  101. package/lib/cli/setup-utility.js +5 -3
  102. package/lib/commands/app.js +15 -43
  103. package/lib/commands/channel-add-setup.js +110 -0
  104. package/lib/commands/channel.js +42 -8
  105. package/lib/commands/datasource-sync-display.js +96 -0
  106. package/lib/commands/datasource-sync-policy.js +210 -0
  107. package/lib/commands/datasource-test-trust-cli.js +6 -6
  108. package/lib/commands/datasource-unified-test-cli.js +2 -1
  109. package/lib/commands/datasource-unified-test-cli.options.js +33 -23
  110. package/lib/commands/deploy-gate-failure-details.js +184 -0
  111. package/lib/commands/deploy-gate-orchestrator.js +368 -0
  112. package/lib/commands/dev-cli-handlers.js +7 -62
  113. package/lib/commands/dev-host-ops-params.js +91 -0
  114. package/lib/commands/dev-host-ops-poll.js +111 -0
  115. package/lib/commands/dev-host-ops.js +107 -94
  116. package/lib/commands/dev-init.js +6 -106
  117. package/lib/commands/dev-refresh.js +197 -0
  118. package/lib/commands/enterprise-knowledge.js +284 -0
  119. package/lib/commands/evidence-cli-leaves.js +250 -0
  120. package/lib/commands/evidence-kind.js +428 -0
  121. package/lib/commands/evidence.js +51 -0
  122. package/lib/commands/governance-cli-shared.js +2 -2
  123. package/lib/commands/governance-command-action.js +5 -3
  124. package/lib/commands/governance-fixture-subjects.js +85 -0
  125. package/lib/commands/governance.js +1 -1
  126. package/lib/commands/lifecycle-command-action.js +2 -2
  127. package/lib/commands/lifecycle-external.js +3 -3
  128. package/lib/commands/manifest-cli-auth.js +29 -0
  129. package/lib/commands/manifest-cli-commands.js +170 -0
  130. package/lib/commands/manifest-cli-integration-path.js +63 -0
  131. package/lib/commands/manifest.js +21 -0
  132. package/lib/commands/protection-cli-leaves.js +3 -3
  133. package/lib/commands/repair-auth-apply.js +15 -1
  134. package/lib/commands/repair-authentications-454.js +169 -0
  135. package/lib/commands/repair-capability-openapi-warnings.js +126 -0
  136. package/lib/commands/repair-datasource-apply.js +135 -0
  137. package/lib/commands/repair-datasource-auto-rbac.js +62 -1
  138. package/lib/commands/repair-datasource-http-service-contract.js +239 -0
  139. package/lib/commands/repair-datasource-operation-security.js +180 -0
  140. package/lib/commands/repair-datasource-run.js +7 -2
  141. package/lib/commands/repair-datasource-sync-operations.js +177 -0
  142. package/lib/commands/repair-datasource-webhooks-sync-bridge.js +133 -0
  143. package/lib/commands/repair-datasource.js +12 -68
  144. package/lib/commands/repair-env-template.js +11 -1
  145. package/lib/commands/repair-external-run.js +121 -31
  146. package/lib/commands/repair-internal.js +1 -1
  147. package/lib/commands/repair-openapi-export.js +156 -0
  148. package/lib/commands/repair-openapi-sync.js +33 -8
  149. package/lib/commands/repair-orchestration-datasource-split.js +259 -0
  150. package/lib/commands/repair-persist.js +22 -1
  151. package/lib/commands/repair-rbac-platform-preset.js +204 -0
  152. package/lib/commands/repair-rbac-reader-roles.js +191 -0
  153. package/lib/commands/repair-rbac.js +163 -86
  154. package/lib/commands/repair-steps.js +83 -18
  155. package/lib/commands/repair-system-permissions.js +1 -0
  156. package/lib/commands/repair.js +1 -1
  157. package/lib/commands/resource-type.js +166 -44
  158. package/lib/commands/role.js +452 -0
  159. package/lib/commands/run-post-publish-data-sync.js +68 -0
  160. package/lib/commands/setup-modes.js +1 -1
  161. package/lib/commands/setup.js +1 -1
  162. package/lib/commands/test-e2e-external.js +21 -8
  163. package/lib/commands/test-governance-cli-options.js +2 -2
  164. package/lib/commands/test-trust-cli-options.js +2 -2
  165. package/lib/commands/up-builder-api-bootstrap.js +71 -0
  166. package/lib/commands/up-builder-api-provision.js +241 -0
  167. package/lib/commands/up-builder-api.js +88 -0
  168. package/lib/commands/up-common.js +25 -1
  169. package/lib/commands/upload-credential-push-log.js +117 -0
  170. package/lib/commands/upload-data-sync-finalize.js +60 -0
  171. package/lib/commands/upload-probe.js +66 -0
  172. package/lib/commands/upload-publish-context.js +4 -1
  173. package/lib/commands/upload-sidecar-followups.js +55 -27
  174. package/lib/commands/upload.js +116 -157
  175. package/lib/commands/validate-json.js +230 -0
  176. package/lib/commands/verify-governance-combined-external.js +1 -1
  177. package/lib/commands/verify-governance-db.js +2 -2
  178. package/lib/commands/verify-operations-command-action.js +2 -2
  179. package/lib/commands/verify-operations-step-plan.js +79 -41
  180. package/lib/commands/verify-operations-steps.js +2 -2
  181. package/lib/commands/verify-trust-command-action.js +1 -1
  182. package/lib/commands/wizard-core.js +1 -1
  183. package/lib/commands/wizard-headless.js +2 -1
  184. package/lib/core/admin-secrets.js +2 -6
  185. package/lib/core/audit-logger.js +1 -1
  186. package/lib/core/secrets-env-content.js +10 -4
  187. package/lib/core/secrets-env-write.js +2 -13
  188. package/lib/core/secrets-load.js +1 -3
  189. package/lib/datasource/agent-trust-run.js +3 -3
  190. package/lib/datasource/capability/relate-operations.js +1 -1
  191. package/lib/datasource/deploy.js +3 -1
  192. package/lib/datasource/test-e2e.js +6 -1
  193. package/lib/datasource/unified-validation-run-body.js +4 -1
  194. package/lib/datasource/unified-validation-run.js +1 -1
  195. package/lib/deployment/deploy-poll-ui.js +73 -12
  196. package/lib/deployment/deployer-poll-run.js +113 -0
  197. package/lib/deployment/deployer.js +17 -87
  198. package/lib/evidence/dataplane-context.js +21 -0
  199. package/lib/evidence/evidence-display.js +78 -0
  200. package/lib/evidence/evidence-service.js +392 -0
  201. package/lib/external-system/deploy.js +290 -112
  202. package/lib/external-system/download.js +7 -3
  203. package/lib/external-system/test-execution.js +1 -1
  204. package/lib/external-system/test-system-level.js +8 -10
  205. package/lib/external-system/test.js +12 -6
  206. package/lib/generator/deploy-script.js +73 -0
  207. package/lib/generator/external.js +2 -1
  208. package/lib/generator/helpers.js +13 -5
  209. package/lib/generator/index.js +17 -2
  210. package/lib/generator/split-variables.js +9 -3
  211. package/lib/generator/wizard.js +3 -36
  212. package/lib/infrastructure/helpers-docker-check.js +6 -0
  213. package/lib/infrastructure/helpers.js +1 -1
  214. package/lib/internal/fs-real-sync.js +22 -1
  215. package/lib/internal/node-fs.js +2 -0
  216. package/lib/lifecycle/lifecycle-governance-options.js +1 -1
  217. package/lib/lifecycle/verify-step-progress.js +1 -1
  218. package/lib/programmatic/access-log.js +26 -0
  219. package/lib/programmatic/auth-config.js +45 -0
  220. package/lib/programmatic/bearer-auth.js +176 -0
  221. package/lib/programmatic/builder-api-request.js +175 -0
  222. package/lib/programmatic/builder-api-route-dispatch.js +82 -0
  223. package/lib/programmatic/builder-api-runtime-config.js +42 -0
  224. package/lib/programmatic/builder-api-server.js +230 -0
  225. package/lib/programmatic/builder-help-authentication-catalog.js +282 -0
  226. package/lib/programmatic/builder-help-connected-system-ui.js +266 -0
  227. package/lib/programmatic/builder-help-enterprise-sync-fabrix.js +60 -0
  228. package/lib/programmatic/builder-help-envelope.js +36 -0
  229. package/lib/programmatic/builder-help-fixtures.js +200 -0
  230. package/lib/programmatic/builder-help-governance.js +172 -0
  231. package/lib/programmatic/builder-help-schema-catalog.js +92 -0
  232. package/lib/programmatic/builder-help.js +361 -0
  233. package/lib/programmatic/capability-registry.js +77 -0
  234. package/lib/programmatic/command-options.js +32 -0
  235. package/lib/programmatic/enterprise-mcp-client.js +114 -0
  236. package/lib/programmatic/http-problem-details.js +99 -0
  237. package/lib/programmatic/http-route-match.js +40 -0
  238. package/lib/programmatic/idempotency-cache.js +69 -0
  239. package/lib/programmatic/index.js +53 -0
  240. package/lib/programmatic/integration-path-scope.js +39 -0
  241. package/lib/programmatic/log-redaction.js +66 -0
  242. package/lib/programmatic/manifest-get-section.js +146 -0
  243. package/lib/programmatic/manifest-patch-section.js +252 -0
  244. package/lib/programmatic/manifest-repair.js +122 -0
  245. package/lib/programmatic/manifest-section-dependency-graph.js +160 -0
  246. package/lib/programmatic/manifest-section-io.js +225 -0
  247. package/lib/programmatic/manifest-section-quality.js +171 -0
  248. package/lib/programmatic/manifest-section-registry-data.js +269 -0
  249. package/lib/programmatic/manifest-section-registry.js +222 -0
  250. package/lib/programmatic/nest-http-bridge.js +34 -0
  251. package/lib/programmatic/openapi-component-schemas.js +68 -0
  252. package/lib/programmatic/openapi-description-enricher.js +117 -0
  253. package/lib/programmatic/openapi-descriptions.js +190 -0
  254. package/lib/programmatic/openapi-docs-serving.js +123 -0
  255. package/lib/programmatic/openapi-help-schemas.js +63 -0
  256. package/lib/programmatic/openapi-manifest-schemas.js +141 -0
  257. package/lib/programmatic/openapi-operation-bindings.js +274 -0
  258. package/lib/programmatic/openapi-request-schemas.js +155 -0
  259. package/lib/programmatic/openapi-result-schemas.js +493 -0
  260. package/lib/programmatic/openapi-schema-descriptions-certify.js +139 -0
  261. package/lib/programmatic/openapi-schema-descriptions-core.js +162 -0
  262. package/lib/programmatic/openapi-schema-descriptions-help.js +40 -0
  263. package/lib/programmatic/openapi-schema-descriptions-manifest.js +143 -0
  264. package/lib/programmatic/openapi-schema-descriptions-mcp.js +118 -0
  265. package/lib/programmatic/openapi-schema-descriptions-operations.js +281 -0
  266. package/lib/programmatic/openapi-schema-helpers.js +108 -0
  267. package/lib/programmatic/openapi-spec.js +203 -0
  268. package/lib/programmatic/orchestration-openapi-meta.js +159 -0
  269. package/lib/programmatic/platform-rbac-catalog.js +90 -0
  270. package/lib/programmatic/request-timeout.js +53 -0
  271. package/lib/programmatic/route-handler-map.js +143 -0
  272. package/lib/programmatic/route-handlers-context.js +29 -0
  273. package/lib/programmatic/route-handlers.js +33 -0
  274. package/lib/programmatic/run-certify.js +57 -0
  275. package/lib/programmatic/run-enterprise-mcp.js +32 -0
  276. package/lib/programmatic/run-lifecycle.js +29 -0
  277. package/lib/programmatic/run-repair.js +41 -0
  278. package/lib/programmatic/run-repository-emcp.js +62 -0
  279. package/lib/programmatic/run-template-workspace.js +74 -0
  280. package/lib/programmatic/run-test.js +49 -0
  281. package/lib/programmatic/run-upload.js +63 -0
  282. package/lib/programmatic/run-validate.js +53 -0
  283. package/lib/programmatic/run-wizard.js +40 -0
  284. package/lib/programmatic/system-key.js +48 -0
  285. package/lib/programmatic/wizard-config-normalize.js +118 -0
  286. package/lib/programmatic/workspace-cleanup.js +128 -0
  287. package/lib/programmatic/workspace-context.js +145 -0
  288. package/lib/programmatic/workspace-lock.js +75 -0
  289. package/lib/programmatic/workspace-meta.js +64 -0
  290. package/lib/programmatic/workspace-ops.js +149 -0
  291. package/lib/protection/run-commands-upload-sync.js +35 -0
  292. package/lib/protection/run-commands.js +2 -20
  293. package/lib/protection/upload-batch.js +11 -7
  294. package/lib/resolvers/evidence-kind-file.js +230 -0
  295. package/lib/resolvers/resource-type-file.js +58 -1
  296. package/lib/resolvers/role-file.js +227 -0
  297. package/lib/schema/application-schema.json +22 -2
  298. package/lib/schema/external-datasource.schema.json +245 -2
  299. package/lib/schema/external-system.schema.json +259 -119
  300. package/lib/schema/flag-map-validation-run.json +3 -0
  301. package/lib/schema/infra.parameter.yaml +25 -1
  302. package/lib/schema/type/credential-field-registry.json +21 -5
  303. package/lib/schema/type/document-storage.json +9 -0
  304. package/lib/utils/agent-trust-run-display.js +1 -1
  305. package/lib/utils/api.js +8 -2
  306. package/lib/utils/app-path-resolve.js +168 -0
  307. package/lib/utils/app-register-config.js +4 -3
  308. package/lib/utils/authentication-env-template.js +222 -0
  309. package/lib/utils/cli-sync-options.js +62 -10
  310. package/lib/utils/cli-utils.js +15 -3
  311. package/lib/utils/cli-workspace-options.js +29 -0
  312. package/lib/utils/compose-generate-docker-compose.js +102 -0
  313. package/lib/utils/configuration-env-resolver.js +203 -27
  314. package/lib/utils/datasource-test-run-certificate-tty.js +28 -2
  315. package/lib/utils/datasource-test-run-certification-debug.js +130 -0
  316. package/lib/utils/datasource-test-run-debug-display.js +2 -0
  317. package/lib/utils/datasource-test-run-debug-slice.js +7 -0
  318. package/lib/utils/datasource-test-run-display.js +2 -1
  319. package/lib/utils/dev-ca-install.js +5 -6
  320. package/lib/utils/dev-config.js +2 -2
  321. package/lib/utils/dev-init-ssh-merge.js +165 -23
  322. package/lib/utils/dev-list-sort.js +145 -0
  323. package/lib/utils/dev-pin-share-instructions.js +110 -0
  324. package/lib/utils/dev-platform-tls.js +0 -63
  325. package/lib/utils/dev-ssh-config-helper.js +177 -33
  326. package/lib/utils/docker-build.js +46 -27
  327. package/lib/utils/docker-daemon-tls-ca.js +1 -1
  328. package/lib/utils/docker-exec.js +91 -6
  329. package/lib/utils/enterprise-knowledge-paths.js +142 -0
  330. package/lib/utils/env-copy.js +3 -4
  331. package/lib/utils/env-dotenv-format.js +103 -0
  332. package/lib/utils/error-formatters/error-parser.js +0 -3
  333. package/lib/utils/external-env-template.js +5 -2
  334. package/lib/utils/external-system-display.js +5 -1
  335. package/lib/utils/external-system-readiness-compact-blocks.js +248 -0
  336. package/lib/utils/external-system-readiness-compact-display.js +324 -0
  337. package/lib/utils/external-system-readiness-core.js +16 -0
  338. package/lib/utils/external-system-readiness-deploy-display.js +29 -11
  339. package/lib/utils/external-system-readiness-display-internals.js +3 -1
  340. package/lib/utils/external-system-readiness-display.js +20 -30
  341. package/lib/utils/external-system-system-test-tty-certification.js +135 -0
  342. package/lib/utils/external-system-system-test-tty.js +5 -41
  343. package/lib/utils/health-check-request.js +2 -3
  344. package/lib/utils/help-builder.js +9 -1
  345. package/lib/utils/host-ops-job-labels.js +236 -0
  346. package/lib/utils/host-ops-job-result.js +61 -0
  347. package/lib/utils/host-ops-poll-ui.js +163 -0
  348. package/lib/utils/image-name.js +22 -4
  349. package/lib/utils/integration-path-resolve.js +112 -0
  350. package/lib/utils/logger.js +37 -4
  351. package/lib/utils/manifest-source-emit.js +1 -1
  352. package/lib/utils/paths-reload-source.js +148 -0
  353. package/lib/utils/paths-system-builder-keys.js +25 -0
  354. package/lib/utils/paths.js +183 -30
  355. package/lib/utils/pipeline-upload-auth-retry.js +4 -0
  356. package/lib/utils/postgres-platform-bootstrap.js +24 -17
  357. package/lib/utils/postgres-wipe.js +5 -2
  358. package/lib/utils/remote-dev-auth.js +39 -4
  359. package/lib/utils/resolve-docker-image-ref.js +36 -6
  360. package/lib/utils/runtime-configuration-values.js +64 -2
  361. package/lib/utils/secrets-helpers.js +5 -1
  362. package/lib/utils/ssh-known-hosts.js +130 -0
  363. package/lib/utils/test-target-cli-options.js +75 -0
  364. package/lib/utils/token-manager.js +16 -0
  365. package/lib/utils/upload-sync-options.js +20 -2
  366. package/lib/utils/validation-run-request.js +11 -2
  367. package/lib/validation/external-manifest-validator.js +11 -1
  368. package/lib/validation/openapi-contract-surface-validator.js +430 -0
  369. package/lib/validation/openapi-contract-vendor-validation.js +238 -0
  370. package/lib/validation/validate-external-file.js +160 -0
  371. package/lib/validation/validate.js +6 -117
  372. package/lib/validation/validator.js +6 -5
  373. package/package.json +76 -37
  374. package/packages/builder-api/README.md +120 -0
  375. package/packages/builder-api/package.json +30 -0
  376. package/packages/builder-api/src/app.module.ts +7 -0
  377. package/packages/builder-api/src/auth/auth.module.ts +5 -0
  378. package/packages/builder-api/src/external-system/external-system.module.ts +5 -0
  379. package/packages/builder-api/src/main.ts +16 -0
  380. package/packages/builder-api/tsconfig.json +15 -0
  381. package/scripts/check-builder-api-architecture-grep.js +79 -0
  382. package/scripts/docker_image_content_gate.js +47 -0
  383. package/scripts/docker_image_content_gate.sh +5 -0
  384. package/scripts/export-builder-api-evidence.js +262 -0
  385. package/scripts/lib/builder-api-docker-staging-copy.js +60 -0
  386. package/scripts/lib/builder-api-docker-staging-core.js +183 -0
  387. package/scripts/lib/docker-image-content-gate-core.js +166 -0
  388. package/scripts/lib/plan-actor.js +109 -0
  389. package/scripts/lib/plan-config.js +20 -0
  390. package/scripts/lib/plan-gates.js +154 -0
  391. package/scripts/lib/plan-meta.js +104 -0
  392. package/scripts/lib/plan-parse.js +162 -0
  393. package/scripts/lib/plan-prevalidate-gates.js +337 -0
  394. package/scripts/lib/plan-run-core.js +125 -0
  395. package/scripts/lib/plan-run-report.js +119 -0
  396. package/scripts/plan-approve.js +24 -0
  397. package/scripts/plan-archive.js +49 -0
  398. package/scripts/plan-run.js +13 -0
  399. package/scripts/plan-set-actor.js +21 -0
  400. package/scripts/plan-validate.js +80 -0
  401. package/scripts/pnpm/af.mjs +110 -0
  402. package/scripts/pnpm/check-quiet.mjs +32 -0
  403. package/scripts/pnpm/dev-install.mjs +29 -0
  404. package/scripts/pnpm/dev-reload.mjs +18 -0
  405. package/scripts/pnpm/help.mjs +55 -0
  406. package/scripts/pnpm/lib/dev-reload-core.mjs +189 -0
  407. package/scripts/pnpm/lib/dev-reload-log-capture.mjs +67 -0
  408. package/scripts/pnpm/lib/dev-reload-log-utils.mjs +32 -0
  409. package/scripts/pnpm/lib/resolve-aifabrix-bin.mjs +124 -0
  410. package/scripts/pnpm/lib/resolve-app-url.mjs +183 -0
  411. package/scripts/pnpm/lib/spinner.mjs +42 -0
  412. package/scripts/stage_builder_api_for_docker.js +65 -0
  413. package/scripts/sync-builder-api-template.js +44 -0
  414. package/templates/README.md +3 -0
  415. package/templates/applications/builder-api/Dockerfile +38 -0
  416. package/templates/applications/builder-api/application.yaml +75 -0
  417. package/templates/applications/builder-api/env.template +48 -0
  418. package/templates/applications/dataplane/application.yaml +27 -5
  419. package/templates/applications/dataplane/env.template +38 -15
  420. package/templates/applications/dataplane/rbac.yaml +85 -3
  421. package/templates/applications/miso-controller/application.yaml +10 -1
  422. package/templates/applications/miso-controller/env.template +11 -10
  423. package/templates/applications/miso-controller/rbac.yaml +72 -0
  424. package/templates/channels/README.md +18 -0
  425. package/templates/channels/ai-fabrix-icon.jpg +0 -0
  426. package/templates/channels/chatgpt/install.template.md.hbs +21 -24
  427. package/templates/channels/chatgpt/integration/README.md +11 -0
  428. package/templates/channels/chatgpt/integration/application.json +15 -0
  429. package/templates/channels/chatgpt/integration/chatgpt-system.json +29 -0
  430. package/templates/channels/chatgpt/integration/env.template +4 -0
  431. package/templates/channels/microsoft-copilot/install.template.md.hbs +20 -25
  432. package/templates/channels/microsoft-copilot/integration/README.md +11 -0
  433. package/templates/channels/microsoft-copilot/integration/application.json +15 -0
  434. package/templates/channels/microsoft-copilot/integration/env.template +6 -0
  435. package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +34 -0
  436. package/templates/channels/slack/install.template.md.hbs +48 -18
  437. package/templates/channels/slack/integration/README.md +38 -0
  438. package/templates/channels/slack/integration/application.json +18 -0
  439. package/templates/channels/slack/integration/env.template +29 -0
  440. package/templates/channels/slack/integration/slack-datasource-conversations.json +226 -0
  441. package/templates/channels/slack/integration/slack-datasource-messages.json +269 -0
  442. package/templates/channels/slack/integration/slack-system.json +144 -0
  443. package/templates/channels/slack/manifest.template.json.hbs +20 -10
  444. package/templates/channels/teams-bot/install.template.md.hbs +31 -17
  445. package/templates/channels/teams-bot/integration/README.md +18 -0
  446. package/templates/channels/teams-bot/integration/application.json +17 -0
  447. package/templates/channels/teams-bot/integration/env.template +5 -0
  448. package/templates/channels/teams-bot/integration/teams-bot-system.json +55 -0
  449. package/templates/channels/teams-bot/manifest.template.json.hbs +27 -0
  450. package/templates/channels/web-embed/install.template.md.hbs +16 -26
  451. package/templates/channels/web-embed/integration/README.md +11 -0
  452. package/templates/channels/web-embed/integration/application.json +15 -0
  453. package/templates/channels/web-embed/integration/env.template +4 -0
  454. package/templates/channels/web-embed/integration/web-embed-system.json +29 -0
  455. package/templates/openapi/redoc_page.html +86 -0
  456. package/templates/python/docker-compose.hbs +11 -0
  457. package/templates/python/requirements.txt +2 -2
  458. package/templates/typescript/docker-compose.hbs +11 -0
  459. package/lib/certification/cli-cert-sync-skip.js +0 -21
@@ -2,10 +2,7 @@
2
2
  * Resource type catalog commands (Controller).
3
3
  *
4
4
  * Commands:
5
- * - aifabrix resource-type create
6
- * - aifabrix resource-type import
7
- * - aifabrix resource-type get
8
- * - aifabrix resource-type list
5
+ * - aifabrix resource-type create|import|export|get|list
9
6
  *
10
7
  * @fileoverview Resource type CLI commands
11
8
  * @author AI Fabrix Team
@@ -21,7 +18,9 @@ const { normalizeControllerUrl, resolveEnvironment } = require('../core/config')
21
18
  const { getOrRefreshDeviceToken } = require('../utils/token-manager');
22
19
  const {
23
20
  readResourceTypeCreateFile,
24
- readResourceTypeCatalogFile
21
+ readResourceTypeCatalogFile,
22
+ mapResourceTypeApiToFileRow,
23
+ writeResourceTypeCatalogFile
25
24
  } = require('../resolvers/resource-type-file');
26
25
  const {
27
26
  formatBlockingError,
@@ -41,45 +40,43 @@ const RESOURCE_TYPE_KEY_PATTERN = /^[a-z][a-z0-9-]*$/;
41
40
  const RESOURCE_TYPE_HELP_AFTER = `
42
41
 
43
42
  Examples:
44
- $ aifabrix resource-type create --key customer --display-name "Customer"
43
+ $ aifabrix resource-type create --key customer --display-name "Customer" --domain sales
45
44
  $ aifabrix resource-type get customer
46
45
  $ aifabrix resource-type list --search customer
46
+ $ aifabrix resource-type export --file ./resource-types-export.json
47
47
 
48
48
  Per-command help: aifabrix resource-type <command> --help
49
49
  `;
50
50
 
51
51
  const RESOURCE_TYPE_IMPORT_HELP_AFTER = `
52
-
53
52
  Examples:
54
53
  $ aifabrix resource-type import --file ./baseline-resourcetypes.json
55
54
  $ aifabrix resource-type import --file /path/to/catalog.json
55
+ `;
56
56
 
57
+ const RESOURCE_TYPE_EXPORT_HELP_AFTER = `
58
+ Examples:
59
+ $ aifabrix resource-type export --file ./resource-types-export.json
57
60
  `;
58
61
 
59
62
  const RESOURCE_TYPE_CREATE_HELP_AFTER = `
60
-
61
63
  Examples:
62
- $ aifabrix resource-type create --key customer --display-name "Customer"
63
- $ aifabrix resource-type create --key deal --display-name "Deal" --category business --default-risk-level medium
64
+ $ aifabrix resource-type create --key customer --display-name "Customer" --domain sales
65
+ $ aifabrix resource-type create --key deal --display-name "Deal" --category business --default-risk-level medium --domain sales
64
66
  $ aifabrix resource-type create --file ./customer.json
65
-
66
67
  `;
67
68
 
68
69
  const RESOURCE_TYPE_GET_HELP_AFTER = `
69
-
70
70
  Examples:
71
71
  $ aifabrix resource-type get customer
72
72
  $ aifabrix resource-type get clx1234567890abcdef
73
-
74
73
  `;
75
74
 
76
75
  const RESOURCE_TYPE_LIST_HELP_AFTER = `
77
-
78
76
  Examples:
79
77
  $ aifabrix resource-type list
80
78
  $ aifabrix resource-type list --page 1 --page-size 50
81
79
  $ aifabrix resource-type list --search customer
82
-
83
80
  `;
84
81
 
85
82
  /**
@@ -145,10 +142,14 @@ function buildCreatePayload(options) {
145
142
  if (options.category) payload.category = options.category;
146
143
  if (options.defaultRiskLevel) payload.defaultRiskLevel = options.defaultRiskLevel;
147
144
  if (options.status) payload.status = options.status;
145
+ if (options.domain) payload.domain = options.domain;
148
146
  payload.key = requireResourceTypeKey(payload.key);
149
147
  if (!payload.displayName) {
150
148
  throw new Error('displayName is required (--display-name <name> or in --file).');
151
149
  }
150
+ if (!payload.domain) {
151
+ throw new Error('domain is required (--domain <domain> or in --file).');
152
+ }
152
153
  return payload;
153
154
  }
154
155
 
@@ -161,8 +162,62 @@ function unwrapControllerData(response) {
161
162
  }
162
163
 
163
164
  /**
164
- * @param {import('commander').Command} rt
165
+ * @param {Object|null|undefined} response
166
+ * @param {string} label
167
+ * @returns {void}
168
+ */
169
+ function assertControllerListSuccess(response, label) {
170
+ if (response && response.success !== false) {
171
+ return;
172
+ }
173
+ const message =
174
+ response?.formattedError || response?.error || `Failed to list ${label}`;
175
+ throw new Error(message);
176
+ }
177
+
178
+ /**
179
+ * @param {Object} response
180
+ * @returns {Object[]}
181
+ */
182
+ function extractControllerListItems(response) {
183
+ if (response?.data && Array.isArray(response.data.data)) {
184
+ return response.data.data;
185
+ }
186
+ const unwrapped = unwrapControllerData(response);
187
+ if (Array.isArray(unwrapped)) {
188
+ return unwrapped;
189
+ }
190
+ if (unwrapped && Array.isArray(unwrapped.data)) {
191
+ return unwrapped.data;
192
+ }
193
+ throw new Error('Unexpected list response from controller');
194
+ }
195
+
196
+ /**
197
+ * @param {string} controllerUrl
198
+ * @param {Object} authConfig
199
+ * @returns {Promise<Object[]>}
165
200
  */
201
+ async function fetchAllResourceTypes(controllerUrl, authConfig) {
202
+ const all = [];
203
+ let page = 1;
204
+ const pageSize = 100;
205
+ for (;;) {
206
+ const res = await listResourceTypes(controllerUrl, authConfig, { page, pageSize });
207
+ assertControllerListSuccess(res, 'resource types');
208
+ const items = extractControllerListItems(res);
209
+ if (items.length === 0) {
210
+ break;
211
+ }
212
+ all.push(...items);
213
+ if (items.length < pageSize) {
214
+ break;
215
+ }
216
+ page += 1;
217
+ }
218
+ return all;
219
+ }
220
+
166
221
  /**
167
222
  * @param {Object[]} rows
168
223
  * @param {string} controllerUrl
@@ -209,6 +264,35 @@ function setupResourceTypeImportCommand(rt) {
209
264
  });
210
265
  }
211
266
 
267
+ function setupResourceTypeExportCommand(rt) {
268
+ rt
269
+ .command('export')
270
+ .description('Export resource types to baseline-shaped JSON')
271
+ .addHelpText('after', RESOURCE_TYPE_EXPORT_HELP_AFTER)
272
+ .requiredOption('--file <path>', 'Output path for baseline catalog JSON')
273
+ .action(async(options) => {
274
+ try {
275
+ const { controllerUrl, authConfig } = await resolveControllerAndAuth(options);
276
+ const records = await fetchAllResourceTypes(controllerUrl, authConfig);
277
+ const rows = records.map(mapResourceTypeApiToFileRow);
278
+ writeResourceTypeCatalogFile(options.file, rows);
279
+ if (rows.length === 0) {
280
+ logger.log(
281
+ infoLine(
282
+ 'No resource types on the controller. Create or import types, then re-run export.'
283
+ )
284
+ );
285
+ }
286
+ logger.log(
287
+ formatSuccessLine(`Resource types exported: ${rows.length} written to ${options.file}`)
288
+ );
289
+ } catch (e) {
290
+ logger.error(formatBlockingError(e.message));
291
+ process.exit(1);
292
+ }
293
+ });
294
+ }
295
+
212
296
  function setupResourceTypeCreateCommand(rt) {
213
297
  rt
214
298
  .command('create')
@@ -224,6 +308,10 @@ function setupResourceTypeCreateCommand(rt) {
224
308
  )
225
309
  .option('--default-risk-level <level>', 'low | medium | high | critical')
226
310
  .option('--status <status>', 'draft | active | deprecated | retired')
311
+ .option(
312
+ '--domain <domain>',
313
+ 'sales | finance | people | collaboration | content | operations | governance | platform'
314
+ )
227
315
  .action(async(options) => {
228
316
  try {
229
317
  const { controllerUrl, authConfig } = await resolveControllerAndAuth(options);
@@ -232,13 +320,20 @@ function setupResourceTypeCreateCommand(rt) {
232
320
  const row = unwrapControllerData(out.response);
233
321
  const category = row.category || payload.category || 'business';
234
322
  const risk = row.defaultRiskLevel || payload.defaultRiskLevel || 'medium';
323
+ const domain = row.domain || payload.domain || '—';
235
324
  if (out.created) {
236
325
  logger.log(
237
- formatSuccessLine(`Resource type created: ${row.key} (category: ${category}, risk: ${risk})`)
326
+ formatSuccessLine(
327
+ `Resource type created: ${row.key} (category: ${category}, risk: ${risk}, domain: ${domain})`
328
+ )
238
329
  );
239
330
  return;
240
331
  }
241
- logger.log(formatSuccessLine(`Resource type exists: ${row.key} (category: ${category}, risk: ${risk})`));
332
+ logger.log(
333
+ formatSuccessLine(
334
+ `Resource type exists: ${row.key} (category: ${category}, risk: ${risk}, domain: ${domain})`
335
+ )
336
+ );
242
337
  logger.log(infoLine('No changes were needed.'));
243
338
  } catch (e) {
244
339
  logger.error(formatBlockingError(e.message));
@@ -265,6 +360,7 @@ function setupResourceTypeGetCommand(rt) {
265
360
  logger.log(headerKeyValue('Display:', row.displayName || '—'));
266
361
  logger.log(headerKeyValue('Category:', row.category || '—'));
267
362
  logger.log(headerKeyValue('Default risk:', row.defaultRiskLevel || '—'));
363
+ logger.log(headerKeyValue('Domain:', row.domain || '—'));
268
364
  logger.log(headerKeyValue('Status:', row.status || '—'));
269
365
  if (row.description) {
270
366
  logger.log(headerKeyValue('Description:', row.description));
@@ -282,6 +378,49 @@ function setupResourceTypeGetCommand(rt) {
282
378
  * @param {string} environment
283
379
  * @param {string} controllerUrl
284
380
  */
381
+ const RESOURCE_TYPE_LIST_COLUMNS = {
382
+ key: 22,
383
+ display: 24,
384
+ category: 14,
385
+ domain: 14,
386
+ risk: 8,
387
+ status: 10
388
+ };
389
+
390
+ function resourceTypeListSeparatorLength(columns) {
391
+ return (
392
+ columns.key +
393
+ columns.display +
394
+ columns.category +
395
+ columns.domain +
396
+ columns.risk +
397
+ columns.status
398
+ );
399
+ }
400
+
401
+ function logResourceTypeListHeader(columns) {
402
+ const keyCol = 'Key'.padEnd(columns.key);
403
+ const displayCol = 'Display'.padEnd(columns.display);
404
+ const categoryCol = 'Category'.padEnd(columns.category);
405
+ const domainCol = 'Domain'.padEnd(columns.domain);
406
+ const riskCol = 'Risk'.padEnd(columns.risk);
407
+ const statusCol = 'Status'.padEnd(columns.status);
408
+ logger.log(chalk.gray(`${keyCol}${displayCol}${categoryCol}${domainCol}${riskCol}${statusCol}`));
409
+ logger.log(chalk.gray('-'.repeat(resourceTypeListSeparatorLength(columns))));
410
+ }
411
+
412
+ function logResourceTypeListRows(items, columns) {
413
+ items.forEach((d) => {
414
+ const key = (d?.key ?? '—').toString().padEnd(columns.key);
415
+ const displayName = (d?.displayName ?? '—').toString().padEnd(columns.display);
416
+ const category = (d?.category ?? '—').toString().padEnd(columns.category);
417
+ const domain = (d?.domain ?? '—').toString().padEnd(columns.domain);
418
+ const risk = (d?.defaultRiskLevel ?? '—').toString().padEnd(columns.risk);
419
+ const status = (d?.status ?? '—').toString().padEnd(columns.status);
420
+ logger.log(`${key}${displayName}${category}${domain}${risk}${status}`);
421
+ });
422
+ }
423
+
285
424
  function displayResourceTypeList(items, environment, controllerUrl) {
286
425
  logger.log(
287
426
  chalk.bold(`\n🏷️ Resource types in ${environment} environment (${controllerUrl}):\n`)
@@ -291,29 +430,9 @@ function displayResourceTypeList(items, environment, controllerUrl) {
291
430
  return;
292
431
  }
293
432
 
294
- const KEY_WIDTH = 22;
295
- const DISPLAY_WIDTH = 30;
296
- const CATEGORY_WIDTH = 16;
297
- const RISK_WIDTH = 10;
298
- const STATUS_WIDTH = 12;
299
- const SEP_LEN = KEY_WIDTH + DISPLAY_WIDTH + CATEGORY_WIDTH + RISK_WIDTH + STATUS_WIDTH;
300
-
301
- const keyCol = 'Key'.padEnd(KEY_WIDTH);
302
- const displayCol = 'Display'.padEnd(DISPLAY_WIDTH);
303
- const categoryCol = 'Category'.padEnd(CATEGORY_WIDTH);
304
- const riskCol = 'Risk'.padEnd(RISK_WIDTH);
305
- const statusCol = 'Status'.padEnd(STATUS_WIDTH);
306
- logger.log(chalk.gray(`${keyCol}${displayCol}${categoryCol}${riskCol}${statusCol}`));
307
- logger.log(chalk.gray('-'.repeat(SEP_LEN)));
308
-
309
- items.forEach((d) => {
310
- const key = (d?.key ?? '—').toString().padEnd(KEY_WIDTH);
311
- const displayName = (d?.displayName ?? '—').toString().padEnd(DISPLAY_WIDTH);
312
- const category = (d?.category ?? '—').toString().padEnd(CATEGORY_WIDTH);
313
- const risk = (d?.defaultRiskLevel ?? '—').toString().padEnd(RISK_WIDTH);
314
- const status = (d?.status ?? '—').toString().padEnd(STATUS_WIDTH);
315
- logger.log(`${key}${displayName}${category}${risk}${status}`);
316
- });
433
+ const columns = RESOURCE_TYPE_LIST_COLUMNS;
434
+ logResourceTypeListHeader(columns);
435
+ logResourceTypeListRows(items, columns);
317
436
  logger.log('');
318
437
  }
319
438
 
@@ -338,8 +457,8 @@ function setupResourceTypeListCommand(rt) {
338
457
  category: options.category,
339
458
  status: options.status
340
459
  });
341
- const payload = unwrapControllerData(res);
342
- const items = payload?.data ?? payload ?? [];
460
+ assertControllerListSuccess(res, 'resource types');
461
+ const items = extractControllerListItems(res);
343
462
  displayResourceTypeList(items, environment, headerControllerUrl);
344
463
  } catch (e) {
345
464
  logger.error(formatBlockingError(e.message));
@@ -358,6 +477,7 @@ function setupResourceTypeCommands(program) {
358
477
  .addHelpText('after', RESOURCE_TYPE_HELP_AFTER);
359
478
  setupResourceTypeCreateCommand(rt);
360
479
  setupResourceTypeImportCommand(rt);
480
+ setupResourceTypeExportCommand(rt);
361
481
  setupResourceTypeGetCommand(rt);
362
482
  setupResourceTypeListCommand(rt);
363
483
  }
@@ -367,5 +487,7 @@ module.exports = {
367
487
  requireResourceTypeKey,
368
488
  buildCreatePayload,
369
489
  unwrapControllerData,
370
- importResourceTypeRows
490
+ importResourceTypeRows,
491
+ fetchAllResourceTypes,
492
+ mapResourceTypeApiToFileRow
371
493
  };