@aifabrix/builder 2.52.0 → 2.53.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 (310) hide show
  1. package/lib/api/datasources-extended.api.js +8 -8
  2. package/lib/api/keycloak.api.js +92 -0
  3. package/lib/api/token-providers.api.js +77 -0
  4. package/lib/api/types/keycloak.types.js +23 -0
  5. package/lib/api/types/token-providers.types.js +65 -0
  6. package/lib/app/deploy-config.js +3 -2
  7. package/lib/app/down.js +16 -1
  8. package/lib/channels/add-channel.js +134 -57
  9. package/lib/channels/approval-guides/chatgpt.js +1 -1
  10. package/lib/channels/approval-guides/index.js +3 -0
  11. package/lib/channels/approval-guides/microsoft-copilot.js +27 -14
  12. package/lib/channels/channel-add-ensure.js +128 -0
  13. package/lib/channels/channel-add-existing.js +72 -0
  14. package/lib/channels/channel-artifact-generator.js +11 -1
  15. package/lib/channels/channel-branding.js +94 -0
  16. package/lib/channels/channel-credential.js +8 -0
  17. package/lib/channels/channel-discovery.js +330 -0
  18. package/lib/channels/channel-external-system.js +1 -1
  19. package/lib/channels/channel-runtime-resolver.js +107 -14
  20. package/lib/channels/channel-status-display.js +36 -3
  21. package/lib/channels/microsoft-copilot-channel-add.js +138 -0
  22. package/lib/channels/microsoft-copilot-entra-sso-form.js +251 -0
  23. package/lib/channels/microsoft-copilot-entra-sso.js +285 -0
  24. package/lib/channels/microsoft-copilot-icons.js +74 -0
  25. package/lib/channels/microsoft-copilot-limits.js +103 -0
  26. package/lib/channels/microsoft-copilot-package.js +178 -52
  27. package/lib/channels/microsoft-copilot-validate.js +227 -0
  28. package/lib/cli/attach-default-help-examples.js +102 -0
  29. package/lib/cli/index.js +4 -0
  30. package/lib/cli/infra-guided.js +13 -6
  31. package/lib/cli/setup-credential-deployment.js +7 -5
  32. package/lib/cli/setup-infra.js +31 -4
  33. package/lib/cli/setup-utility-validate.js +1 -0
  34. package/lib/commands/channel-add-setup.js +28 -9
  35. package/lib/commands/channel.js +14 -10
  36. package/lib/commands/credential-push.js +37 -5
  37. package/lib/commands/integration-definition.js +158 -0
  38. package/lib/commands/package-score.js +72 -0
  39. package/lib/commands/repair-auth-apply.js +19 -5
  40. package/lib/commands/repair-datasource-sync-operations.js +4 -1
  41. package/lib/commands/role-assistant-test-output.js +200 -0
  42. package/lib/commands/role-assistant.js +163 -166
  43. package/lib/datasource/capability/capability-resolve.js +15 -5
  44. package/lib/datasource/capability/copy-operations.js +14 -4
  45. package/lib/deployment/deployer-poll-run.js +2 -2
  46. package/lib/deployment/deployer.js +1 -1
  47. package/lib/deployment/environment.js +2 -2
  48. package/lib/external-system/deploy.js +11 -21
  49. package/lib/infrastructure/index.js +19 -4
  50. package/lib/integration-definition/apply.js +476 -0
  51. package/lib/integration-definition/canonical-json.js +51 -0
  52. package/lib/integration-definition/emit-suite-bid.js +94 -0
  53. package/lib/integration-definition/enrich-crm-field-mappings.js +240 -0
  54. package/lib/integration-definition/enrich-openapi-operations.js +433 -0
  55. package/lib/integration-definition/from-discovery.js +339 -0
  56. package/lib/integration-definition/hash.js +37 -0
  57. package/lib/integration-definition/index.js +37 -0
  58. package/lib/integration-definition/resource-type-catalog.js +59 -0
  59. package/lib/integration-definition/system-kind-enum.js +40 -0
  60. package/lib/integration-definition/validate.js +148 -0
  61. package/lib/lab/package-parity-score.js +417 -0
  62. package/lib/programmatic/builder-api-request.js +5 -1
  63. package/lib/programmatic/builder-help-governance.js +3 -2
  64. package/lib/programmatic/capability-registry.js +20 -0
  65. package/lib/programmatic/help-content/channel-onboarding.md +35 -0
  66. package/lib/programmatic/help-content/cip-overview.md +27 -0
  67. package/lib/programmatic/help-content/connected-system-ui.md +70 -0
  68. package/lib/programmatic/help-content/dimensions-guide.md +23 -0
  69. package/lib/programmatic/help-content/enterprise-sync-fabrix.md +123 -0
  70. package/lib/programmatic/help-content/overview.md +25 -0
  71. package/lib/programmatic/help-content/subscription-guide.md +27 -0
  72. package/lib/programmatic/help-content/workflow.md +50 -0
  73. package/lib/programmatic/openapi-component-schemas.js +7 -1
  74. package/lib/programmatic/openapi-descriptions.js +46 -0
  75. package/lib/programmatic/openapi-envelope-examples.js +280 -0
  76. package/lib/programmatic/openapi-operation-bindings.js +50 -0
  77. package/lib/programmatic/openapi-request-schemas.js +40 -0
  78. package/lib/programmatic/openapi-result-schemas-overflow.js +101 -0
  79. package/lib/programmatic/openapi-result-schemas.js +76 -99
  80. package/lib/programmatic/openapi-schema-descriptions-core.js +25 -4
  81. package/lib/programmatic/openapi-schema-descriptions-help.js +1 -1
  82. package/lib/programmatic/openapi-schema-descriptions-operations.js +43 -0
  83. package/lib/programmatic/openapi-schema-helpers.js +9 -9
  84. package/lib/programmatic/openapi-spec.js +11 -1
  85. package/lib/programmatic/orchestration-openapi-meta.js +10 -0
  86. package/lib/programmatic/persist-supplied-openapi.js +180 -0
  87. package/lib/programmatic/route-handler-map.js +35 -1
  88. package/lib/programmatic/run-channel-package.js +236 -0
  89. package/lib/programmatic/run-integration-definition.js +77 -0
  90. package/lib/role-assistant/evidence-sync.js +55 -7
  91. package/lib/role-assistant/knowledge-sync-logging.js +58 -0
  92. package/lib/role-assistant/knowledge-sync.js +88 -93
  93. package/lib/role-assistant/test-cases-bid.js +155 -0
  94. package/lib/role-assistant/test-cases-evaluate.js +9 -1
  95. package/lib/role-assistant/test-cases-honesty.js +24 -10
  96. package/lib/role-assistant/test-cases.js +28 -0
  97. package/lib/role-assistant/test-runner-attachments.js +118 -0
  98. package/lib/role-assistant/test-runner-bid-apply.js +201 -0
  99. package/lib/role-assistant/test-runner-bid-document.js +278 -0
  100. package/lib/role-assistant/test-runner-start-payload.js +96 -0
  101. package/lib/role-assistant/test-runner-workhub-answers.js +249 -20
  102. package/lib/role-assistant/test-runner-workhub-helpers.js +100 -0
  103. package/lib/role-assistant/test-runner-workhub-soft.js +86 -0
  104. package/lib/role-assistant/test-runner-workhub.js +152 -107
  105. package/lib/role-assistant/test-runner.js +5 -63
  106. package/lib/role-assistant/test-suite.js +112 -0
  107. package/lib/schema/application-schema.json +56 -6
  108. package/lib/schema/external-datasource.schema.json +103 -17
  109. package/lib/schema/external-system.schema.json +54 -3
  110. package/lib/schema/integration-definition.schema.json +195 -0
  111. package/lib/utils/authentication-shape.js +6 -0
  112. package/lib/utils/compose-generator.js +10 -1
  113. package/lib/utils/compose-traefik-extra-routes.js +107 -0
  114. package/lib/utils/docker-build.js +2 -2
  115. package/lib/utils/help-builder.js +3 -1
  116. package/lib/utils/promote-dev-docker-image.js +102 -18
  117. package/lib/utils/transient-developer-id.js +28 -0
  118. package/package.json +14 -16
  119. package/templates/README.md +12 -1
  120. package/templates/applications/dataplane/application.yaml +10 -2
  121. package/templates/applications/dataplane/env.template +7 -6
  122. package/templates/applications/miso-controller/application.yaml +23 -8
  123. package/templates/applications/miso-controller/env.template +8 -2
  124. package/templates/applications/miso-controller/rbac.yaml +1 -0
  125. package/templates/channels/README.md +11 -1
  126. package/templates/channels/brand/color-192.png +0 -0
  127. package/templates/channels/brand/dark/128.png +0 -0
  128. package/templates/channels/brand/dark/192.png +0 -0
  129. package/templates/channels/brand/dark/256.png +0 -0
  130. package/templates/channels/brand/dark/32.png +0 -0
  131. package/templates/channels/brand/dark/512.png +0 -0
  132. package/templates/channels/brand/dark/64.png +0 -0
  133. package/templates/channels/brand/light/128.png +0 -0
  134. package/templates/channels/brand/light/192.png +0 -0
  135. package/templates/channels/brand/light/256.png +0 -0
  136. package/templates/channels/brand/light/32.png +0 -0
  137. package/templates/channels/brand/light/512.png +0 -0
  138. package/templates/channels/brand/light/64.png +0 -0
  139. package/templates/channels/brand/mono-white/128.png +0 -0
  140. package/templates/channels/brand/mono-white/192.png +0 -0
  141. package/templates/channels/brand/mono-white/256.png +0 -0
  142. package/templates/channels/brand/mono-white/32.png +0 -0
  143. package/templates/channels/brand/mono-white/512.png +0 -0
  144. package/templates/channels/brand/mono-white/64.png +0 -0
  145. package/templates/channels/brand/outline-32.png +0 -0
  146. package/templates/channels/chatgpt/install.template.md.hbs +6 -4
  147. package/templates/channels/chatgpt/integration/README.md +4 -5
  148. package/templates/channels/chatgpt/integration/chatgpt-system.json +1 -16
  149. package/templates/channels/microsoft-copilot/ai-plugin.template.json.hbs +14 -16
  150. package/templates/channels/microsoft-copilot/declarative-agent.template.json.hbs +5 -3
  151. package/templates/channels/microsoft-copilot/entra-sso-registration.template.md.hbs +30 -0
  152. package/templates/channels/microsoft-copilot/fi-fi.template.json.hbs +7 -0
  153. package/templates/channels/microsoft-copilot/install.template.md.hbs +93 -22
  154. package/templates/channels/microsoft-copilot/integration/README.md +2 -3
  155. package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +1 -22
  156. package/templates/channels/microsoft-copilot/manifest.template.json.hbs +34 -19
  157. package/templates/channels/microsoft-copilot/oauth-plugin-vault-required.template.md.hbs +15 -0
  158. package/templates/channels/slack/integration/README.md +2 -4
  159. package/templates/channels/teams-bot/install.template.md.hbs +4 -0
  160. package/templates/channels/teams-bot/integration/README.md +3 -5
  161. package/templates/channels/web-embed/integration/web-embed-system.json +1 -16
  162. package/templates/python/docker-compose.hbs +36 -0
  163. package/templates/typescript/docker-compose.hbs +36 -0
  164. package/.cursor/plans/Done/157.1-security-quality-violations-by-type.csv +0 -374
  165. package/.cursor/process/README.md +0 -9
  166. package/.cursor/rules/anchor-docs.mdc +0 -15
  167. package/.cursor/rules/assistant-driven-integration-build.mdc +0 -40
  168. package/.cursor/rules/cli-layout.mdc +0 -81
  169. package/.cursor/rules/cli-product-neutral.mdc +0 -43
  170. package/.cursor/rules/deploy-rules/docker-image-ip-policy.mdc +0 -49
  171. package/.cursor/rules/docs-rules.mdc +0 -32
  172. package/.cursor/rules/plan-rules/application-lifecycle.mdc +0 -30
  173. package/.cursor/rules/plan-rules/plan-frontmatter.mdc +0 -35
  174. package/.cursor/rules/plan-rules/plan-lifecycle.mdc +0 -31
  175. package/.cursor/rules/plan-rules/plan-validation-gate.mdc +0 -34
  176. package/.cursor/rules/project-rules.mdc +0 -913
  177. package/.cursor/skills/README.md +0 -15
  178. package/.dockerignore +0 -52
  179. package/.eslintignore +0 -22
  180. package/.markdownlint.json +0 -14
  181. package/anchor-docs/README.md +0 -10
  182. package/anchor-docs/_TEMPLATE +0 -24
  183. package/babel.config.js +0 -6
  184. package/bin/builder-api-cleanup.js +0 -26
  185. package/bin/builder-api-nest.js +0 -10
  186. package/bin/builder-api-spike.js +0 -19
  187. package/enterprise-knowledge/README.md +0 -50
  188. package/enterprise-knowledge/enterprise-integration-lifecycle/README.md +0 -22
  189. package/enterprise-knowledge/enterprise-integration-lifecycle/application.json +0 -15
  190. package/enterprise-knowledge/enterprise-integration-lifecycle/deploy.js +0 -69
  191. package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-deploy.json +0 -52
  192. package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-system.json +0 -29
  193. package/enterprise-knowledge/enterprise-integration-lifecycle/env.template +0 -2
  194. package/integration/README.md +0 -81
  195. package/integration/github/README.md +0 -53
  196. package/integration/github/application.json +0 -21
  197. package/integration/github/deploy.js +0 -72
  198. package/integration/github/env.template +0 -11
  199. package/integration/github/github-datasource-issue-comments.json +0 -239
  200. package/integration/github/github-datasource-issues.json +0 -399
  201. package/integration/github/github-datasource-repository.json +0 -354
  202. package/integration/github/github-deploy.json +0 -1202
  203. package/integration/github/github-system.json +0 -82
  204. package/integration/hubspot-test/README.md +0 -159
  205. package/integration/hubspot-test/application.json +0 -54
  206. package/integration/hubspot-test/companies.json +0 -2048
  207. package/integration/hubspot-test/create-hubspot.js +0 -523
  208. package/integration/hubspot-test/env.template +0 -4
  209. package/integration/hubspot-test/hubspot-test-datasource-company.json +0 -138
  210. package/integration/hubspot-test/hubspot-test-datasource-contact.json +0 -146
  211. package/integration/hubspot-test/hubspot-test-datasource-deal.json +0 -146
  212. package/integration/hubspot-test/hubspot-test-datasource-users.json +0 -76
  213. package/integration/hubspot-test/hubspot-test-deploy.json +0 -2160
  214. package/integration/hubspot-test/hubspot-test-system.json +0 -74
  215. package/integration/hubspot-test/rbac.json +0 -166
  216. package/integration/hubspot-test/test-artifacts/wizard-hubspot-credential-real.yaml +0 -20
  217. package/integration/hubspot-test/test-artifacts/wizard-hubspot-env-vars.yaml +0 -9
  218. package/integration/hubspot-test/test-artifacts/wizard-invalid-add-datasource.yaml +0 -5
  219. package/integration/hubspot-test/test-artifacts/wizard-invalid-app-name.yaml +0 -5
  220. package/integration/hubspot-test/test-artifacts/wizard-invalid-credential-create.yaml +0 -7
  221. package/integration/hubspot-test/test-artifacts/wizard-invalid-credential-select.yaml +0 -7
  222. package/integration/hubspot-test/test-artifacts/wizard-invalid-known-platform.yaml +0 -4
  223. package/integration/hubspot-test/test-artifacts/wizard-invalid-missing-app.yaml +0 -4
  224. package/integration/hubspot-test/test-artifacts/wizard-invalid-missing-source.yaml +0 -2
  225. package/integration/hubspot-test/test-artifacts/wizard-invalid-mode.yaml +0 -5
  226. package/integration/hubspot-test/test-artifacts/wizard-invalid-openapi-file.yaml +0 -5
  227. package/integration/hubspot-test/test-artifacts/wizard-invalid-openapi-url.yaml +0 -4
  228. package/integration/hubspot-test/test-artifacts/wizard-invalid-source.yaml +0 -4
  229. package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-array-test.yaml +0 -5
  230. package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-key-test.yaml +0 -5
  231. package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-path-test.yaml +0 -5
  232. package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-test.yaml +0 -5
  233. package/integration/hubspot-test/test-artifacts/wizard-valid-for-rbac-test.yaml +0 -5
  234. package/integration/hubspot-test/test-artifacts/wizard-valid-for-rbac-yaml-test.yaml +0 -5
  235. package/integration/hubspot-test/test-dataplane-down-helpers.js +0 -249
  236. package/integration/hubspot-test/test-dataplane-down-tests.js +0 -386
  237. package/integration/hubspot-test/test-dataplane-down.js +0 -209
  238. package/integration/hubspot-test/test.js +0 -1588
  239. package/integration/hubspot-test/wizard-hubspot-e2e.yaml +0 -16
  240. package/integration/hubspot-test/wizard-hubspot-platform.yaml +0 -8
  241. package/integration/hubspot-test/wizard-hubspot-test-headless.yaml +0 -23
  242. package/integration/roundtrip-test-local/README.md +0 -143
  243. package/integration/roundtrip-test-local/application.yaml +0 -13
  244. package/integration/roundtrip-test-local/env.template +0 -15
  245. package/integration/roundtrip-test-local/roundtrip-test-local-datasource-roundtrip-test-company.yaml +0 -14
  246. package/integration/roundtrip-test-local/roundtrip-test-local-deploy.json +0 -61
  247. package/integration/roundtrip-test-local/roundtrip-test-local-system.yaml +0 -25
  248. package/integration/roundtrip-test-local2/README.md +0 -143
  249. package/integration/roundtrip-test-local2/application.yaml +0 -13
  250. package/integration/roundtrip-test-local2/env.template +0 -15
  251. package/integration/roundtrip-test-local2/roundtrip-test-local2-datasource-company.yaml +0 -31
  252. package/integration/roundtrip-test-local2/roundtrip-test-local2-deploy.json +0 -86
  253. package/integration/roundtrip-test-local2/roundtrip-test-local2-system.yaml +0 -25
  254. package/integration/test/wizard.yaml +0 -8
  255. package/jest.config.coverage.js +0 -37
  256. package/jest.config.default.js +0 -11
  257. package/jest.config.integration.fixtures.js +0 -22
  258. package/jest.config.integration.js +0 -33
  259. package/jest.config.isolated.js +0 -11
  260. package/jest.config.manual.js +0 -30
  261. package/jest.global-live-fabrix-hooks.js +0 -36
  262. package/jest.isolated-projects.js +0 -260
  263. package/jest.projects.js +0 -76
  264. package/packages/builder-api/README.md +0 -120
  265. package/packages/builder-api/package.json +0 -30
  266. package/packages/builder-api/src/app.module.ts +0 -7
  267. package/packages/builder-api/src/auth/auth.module.ts +0 -5
  268. package/packages/builder-api/src/external-system/external-system.module.ts +0 -5
  269. package/packages/builder-api/src/main.ts +0 -16
  270. package/packages/builder-api/tsconfig.json +0 -15
  271. package/scripts/check-builder-api-architecture-grep.js +0 -79
  272. package/scripts/check-datasource-test-run-schema-sync.js +0 -34
  273. package/scripts/ci-fix.sh +0 -19
  274. package/scripts/ci-simulate.sh +0 -19
  275. package/scripts/diagnose-cli.js +0 -150
  276. package/scripts/docker_image_content_gate.js +0 -47
  277. package/scripts/docker_image_content_gate.sh +0 -5
  278. package/scripts/export-builder-api-evidence.js +0 -262
  279. package/scripts/install-local.js +0 -490
  280. package/scripts/lib/builder-api-docker-staging-copy.js +0 -60
  281. package/scripts/lib/builder-api-docker-staging-core.js +0 -183
  282. package/scripts/lib/docker-image-content-gate-core.js +0 -166
  283. package/scripts/lib/plan-actor.js +0 -109
  284. package/scripts/lib/plan-config.js +0 -20
  285. package/scripts/lib/plan-gates.js +0 -154
  286. package/scripts/lib/plan-meta.js +0 -104
  287. package/scripts/lib/plan-parse.js +0 -162
  288. package/scripts/lib/plan-prevalidate-gates.js +0 -337
  289. package/scripts/lib/plan-run-core.js +0 -125
  290. package/scripts/lib/plan-run-report.js +0 -119
  291. package/scripts/plan-approve.js +0 -24
  292. package/scripts/plan-archive.js +0 -49
  293. package/scripts/plan-run.js +0 -13
  294. package/scripts/plan-set-actor.js +0 -21
  295. package/scripts/plan-validate.js +0 -80
  296. package/scripts/pnpm/af.mjs +0 -110
  297. package/scripts/pnpm/check-quiet.mjs +0 -32
  298. package/scripts/pnpm/dev-install.mjs +0 -29
  299. package/scripts/pnpm/dev-reload.mjs +0 -18
  300. package/scripts/pnpm/help.mjs +0 -55
  301. package/scripts/pnpm/lib/dev-reload-core.mjs +0 -189
  302. package/scripts/pnpm/lib/dev-reload-log-capture.mjs +0 -67
  303. package/scripts/pnpm/lib/dev-reload-log-utils.mjs +0 -32
  304. package/scripts/pnpm/lib/resolve-aifabrix-bin.mjs +0 -124
  305. package/scripts/pnpm/lib/resolve-app-url.mjs +0 -183
  306. package/scripts/pnpm/lib/spinner.mjs +0 -42
  307. package/scripts/pnpm-global-remove.js +0 -48
  308. package/scripts/stage_builder_api_for_docker.js +0 -65
  309. package/scripts/sync-builder-api-template.js +0 -44
  310. package/scripts/test-dataplane-bootstrap.js +0 -331
@@ -1,16 +0,0 @@
1
- appName: wizard-e2e-e2e
2
- mode: create-system
3
- source:
4
- type: openapi-file
5
- filePath: ./integration/hubspot-test/companies.json
6
- credential:
7
- action: skip
8
- preferences:
9
- intent: "HubSpot CRM integration for companies entity"
10
- fieldOnboardingLevel: full
11
- enableOpenAPIGeneration: true
12
- enableABAC: true
13
- enableRBAC: false
14
- deployment:
15
- controller: http://localhost:3110
16
- environment: dev
@@ -1,8 +0,0 @@
1
- appName: wizard-e2e-platform
2
- mode: create-system
3
- source:
4
- type: known-platform
5
- platform: hubspot
6
- preferences:
7
- intent: "HubSpot CRM integration"
8
- fieldOnboardingLevel: standard
@@ -1,23 +0,0 @@
1
- # Headless wizard: regenerate HubSpot integration under integration/hubspot-test/
2
- # Requires dataplane access (controller → dataplane) and auth (login or client credentials).
3
- #
4
- # From repo root:
5
- # node bin/aifabrix.js wizard --config integration/hubspot-test/wizard-hubspot-test-headless.yaml \
6
- # --controller <CONTROLLER_URL> --environment <ENV>
7
- #
8
- # Or set deployment.controller / deployment.environment below and omit CLI flags if your
9
- # wizard runner merges them (see docs/commands/external-integration.md).
10
-
11
- appName: hubspot-test
12
- mode: create-system
13
- source:
14
- type: known-platform
15
- platform: hubspot
16
- credential:
17
- action: skip
18
- preferences:
19
- intent: "HubSpot CRM integration (hubspot-test fixtures)"
20
- fieldOnboardingLevel: standard
21
- deployment:
22
- controller: http://localhost:3110
23
- environment: dev
@@ -1,143 +0,0 @@
1
- # Roundtrip Test
2
-
3
- Roundtrip validation test
4
-
5
- ## System Information
6
-
7
- - **System Key**: `roundtrip-test-local`
8
- - **System Type**: `openapi`
9
- - **Datasources**: 1
10
-
11
- ## Files
12
-
13
- - `application.yaml` – Application configuration with `app` and `externalIntegration` blocks
14
- - `roundtrip-test-local-system.yaml` – External system definition (authentication, OpenAPI/MCP, RBAC)
15
- - `roundtrip-test-local-datasource-roundtrip-test-company.yaml` – Datasource: Company
16
- - `env.template` – Environment variables template (secrets, API keys)
17
- - `roundtrip-test-local-deploy.json` – Deployment manifest (generated by `aifabrix json roundtrip-test-local`)
18
- - `deploy.js` – Deploy script for the integration
19
- - `wizard.yaml` – Wizard configuration (if created via wizard)
20
-
21
- Optional: `rbac.yaml` – Roles and permissions merged into the system when present.
22
-
23
- ## Quick Start
24
-
25
- Login to your controller
26
- ```bash
27
- aifabrix auth config --set-controller <url> --set-environment dev
28
- aifabrix login
29
- ```
30
-
31
- ### 1. Extend External System
32
-
33
- Use the interactive wizard to extend your existing system:
34
-
35
- ```bash
36
- aifabrix wizard --app roundtrip-test-local
37
- ```
38
-
39
- ### 2. Configure Authentication and Datasources
40
-
41
- Edit files in `integration/roundtrip-test-local/`:
42
-
43
- - **Authentication**: `roundtrip-test-local-system.yaml` (auth type, credentials placeholders)
44
- - **Field mappings**: `roundtrip-test-local-datasource-*-datasource.yaml` (dimensions, attributes, operations)
45
- - **Credential and configuration**: `env.template` (security settings and configuration variables)
46
-
47
-
48
- ### Secrets
49
-
50
- Secrets are resolved from `.aifabrix` or key vault. Set them with:
51
-
52
- ```bash
53
- aifabrix secret set roundtrip-test-local/apiKey <your value> # API Key
54
- ```
55
-
56
-
57
- ### 3. Validate Configuration
58
-
59
- ```bash
60
- aifabrix validate roundtrip-test-local
61
- ```
62
-
63
- ### 4. Repair Deployment Manifest
64
-
65
- **Run repair regularly.** It keeps naming conventions, filenames, and the deployment manifest aligned with AI Fabrix platform best practices. Use it after editing datasources, env.template, or system config—and run it often to catch drift early.
66
-
67
- ```bash
68
- aifabrix repair roundtrip-test-local
69
- ```
70
-
71
- Options:
72
- --auth <method> Set authentication method (oauth2, aad, apikey, basic, queryParam, oidc, hmac, none); updates system file and env.template
73
- --dry-run Report changes only; do not write
74
- --rbac Ensure RBAC permissions per datasource and add default Admin/Reader roles if none exist
75
- --expose Set exposed.attributes on each datasource to all fieldMappings.attributes keys
76
- --sync Add default sync section to datasources that lack it
77
- --test Generate testPayload.payloadTemplate and testPayload.expectedResult from attributes
78
-
79
- ### 5. Upload to dataplane
80
-
81
- ```bash
82
- aifabrix upload roundtrip-test-local
83
- ```
84
-
85
- ## Testing
86
-
87
- ### Unit Tests (Local Validation, No API)
88
-
89
- ```bash
90
- aifabrix test roundtrip-test-local
91
- ```
92
-
93
- ### Integration Tests (Via Dataplane)
94
-
95
- ```bash
96
- aifabrix test-integration roundtrip-test-local
97
- ```
98
-
99
- ### End-to-end Tests (Via Dataplane)
100
-
101
- ```bash
102
- aifabrix test-e2e roundtrip-test-local
103
- ```
104
-
105
- Options:
106
- -e, --env <env> Environment: dev, tst, or pro (builder: dev/tst for container)
107
- -v, --verbose Show detailed step output and poll progress
108
- --debug Include debug output and write log to integration/roundtrip-test-local/logs/
109
- --no-async Use sync mode (no polling); single POST per datasource
110
-
111
- ### E2E tests per datasource
112
-
113
- To run a full E2E test for a single datasource (config, credential, sync, data, CIP), use `aifabrix datasource test-e2e` with the datasource key and app:
114
-
115
- ```bash
116
- # Company
117
- aifabrix datasource test-e2e roundtrip-test-company --app roundtrip-test-local
118
-
119
- ```
120
-
121
- Options:
122
- -a, --app roundtrip-test-local App key (default: resolve from cwd if inside integration/roundtrip-test-local/)
123
- -e, --env <env> Environment: dev, tst, or pro
124
- -v, --verbose Show detailed step output and poll progress
125
- --debug Include debug output and write log to integration/roundtrip-test-local/logs/
126
- --no-run-scenarios Skip expanding testPayload.scenarios in capacity step
127
- --no-cleanup Disable cleanup after test (body cleanup: false)
128
- --primary-key-value <value|@path> Primary key value or path to JSON file (e.g. @pk.json) for body primaryKeyValue
129
- --no-async Use sync mode (no polling); single POST, no asyncRun
130
-
131
- ## Deployment
132
-
133
- Deploy via miso-controller pipeline (same as regular apps). Auth and controller come from `aifabrix login` and `aifabrix auth config`:
134
-
135
- ```bash
136
- aifabrix deploy roundtrip-test-local
137
- ```
138
-
139
- ## Troubleshooting
140
-
141
- - **Validation errors**: Run `aifabrix validate roundtrip-test-local` to see schema and manifest errors.
142
- - **Deployment / auth**: Run `aifabrix auth config --set-controller <url> --set-environment <env>` and `aifabrix login` before `aifabrix deploy`.
143
- - **File not found**: Run commands from the project root (where `package.json` and `integration/` live).
@@ -1,13 +0,0 @@
1
- app:
2
- key: roundtrip-test-local
3
- displayName: Roundtrip Test
4
- description: Roundtrip validation test
5
- type: external
6
- externalIntegration:
7
- schemaBasePath: ./
8
- systems:
9
- - roundtrip-test-local-system.yaml
10
- dataSources:
11
- - roundtrip-test-local-datasource-roundtrip-test-company.yaml
12
- autopublish: true
13
- version: 1.0.0
@@ -1,15 +0,0 @@
1
- # Environment variables for external system integration
2
- # Use kv:// (or aifabrix secret set) for sensitive values; plain values for non-sensitive configuration.
3
- #
4
-
5
- # Authentication
6
- # Type: oauth2
7
- KV_ROUNDTRIP_TEST_LOCAL_CLIENTID=kv://roundtrip-test-local/clientId
8
- KV_ROUNDTRIP_TEST_LOCAL_CLIENTSECRET=kv://roundtrip-test-local/clientSecret
9
- # Non-secure (e.g. URLs): baseUrl, tokenUrl, authorizationUrl
10
-
11
- # Configuration
12
- # KV_ROUNDTRIP_TEST_CLIENTID
13
- KV_ROUNDTRIP_TEST_CLIENTID=kv://roundtrip-test/clientId
14
- # KV_ROUNDTRIP_TEST_CLIENTSECRET
15
- KV_ROUNDTRIP_TEST_CLIENTSECRET=kv://roundtrip-test/clientSecret
@@ -1,14 +0,0 @@
1
- key: roundtrip-test-company
2
- displayName: Company
3
- systemKey: roundtrip-test-local
4
- entityType: record-storage
5
- resourceType: customer
6
- primaryKey:
7
- - country
8
- fieldMappings:
9
- dimensions:
10
- country: metadata.country
11
- attributes:
12
- country:
13
- expression: '{{metadata.country}}'
14
- type: string
@@ -1,61 +0,0 @@
1
- {
2
- "system": {
3
- "key": "roundtrip-test-local",
4
- "displayName": "Roundtrip Test",
5
- "description": "Roundtrip validation test",
6
- "type": "openapi",
7
- "enabled": true,
8
- "authentication": {
9
- "method": "oauth2",
10
- "variables": {
11
- "baseUrl": "https://api.example.com",
12
- "tokenUrl": "https://api.example.com/oauth/token",
13
- "authorizationUrl": "https://api.example.com/oauth/authorize"
14
- },
15
- "security": {
16
- "clientId": "kv://roundtrip-test/clientId",
17
- "clientSecret": "kv://roundtrip-test/clientSecret"
18
- }
19
- },
20
- "configuration": [
21
- {
22
- "name": "KV_ROUNDTRIP_TEST_CLIENTID",
23
- "value": "roundtrip-test/clientId",
24
- "location": "keyvault",
25
- "required": true
26
- },
27
- {
28
- "name": "KV_ROUNDTRIP_TEST_CLIENTSECRET",
29
- "value": "roundtrip-test/clientSecret",
30
- "location": "keyvault",
31
- "required": true
32
- }
33
- ],
34
- "dataSources": [
35
- "roundtrip-test-company"
36
- ]
37
- },
38
- "dataSources": [
39
- {
40
- "key": "roundtrip-test-company",
41
- "displayName": "Company",
42
- "systemKey": "roundtrip-test-local",
43
- "entityType": "record-storage",
44
- "resourceType": "customer",
45
- "primaryKey": [
46
- "country"
47
- ],
48
- "fieldMappings": {
49
- "dimensions": {
50
- "country": "metadata.country"
51
- },
52
- "attributes": {
53
- "country": {
54
- "expression": "{{metadata.country}}",
55
- "type": "string"
56
- }
57
- }
58
- }
59
- }
60
- ]
61
- }
@@ -1,25 +0,0 @@
1
- key: roundtrip-test-local
2
- displayName: Roundtrip Test
3
- description: Roundtrip validation test
4
- type: openapi
5
- enabled: true
6
- authentication:
7
- method: oauth2
8
- variables:
9
- baseUrl: https://api.example.com
10
- tokenUrl: https://api.example.com/oauth/token
11
- authorizationUrl: https://api.example.com/oauth/authorize
12
- security:
13
- clientId: kv://roundtrip-test/clientId
14
- clientSecret: kv://roundtrip-test/clientSecret
15
- configuration:
16
- - name: KV_ROUNDTRIP_TEST_CLIENTID
17
- value: roundtrip-test/clientId
18
- location: keyvault
19
- required: true
20
- - name: KV_ROUNDTRIP_TEST_CLIENTSECRET
21
- value: roundtrip-test/clientSecret
22
- location: keyvault
23
- required: true
24
- dataSources:
25
- - roundtrip-test-company
@@ -1,143 +0,0 @@
1
- # Roundtrip Test
2
-
3
- Roundtrip validation test
4
-
5
- ## System Information
6
-
7
- - **System Key**: `roundtrip-test-local2`
8
- - **System Type**: `openapi`
9
- - **Datasources**: 1
10
-
11
- ## Files
12
-
13
- - `application.yaml` – Application configuration with `app` and `externalIntegration` blocks
14
- - `roundtrip-test-local2-system.yaml` – External system definition (authentication, OpenAPI/MCP, RBAC)
15
- - `roundtrip-test-local2-datasource-company.yaml` – Datasource: Company
16
- - `env.template` – Environment variables template (secrets, API keys)
17
- - `roundtrip-test-local2-deploy.json` – Deployment manifest (generated by `aifabrix json roundtrip-test-local2`)
18
- - `deploy.js` – Deploy script for the integration
19
- - `wizard.yaml` – Wizard configuration (if created via wizard)
20
-
21
- Optional: `rbac.yaml` – Roles and permissions merged into the system when present.
22
-
23
- ## Quick Start
24
-
25
- Login to your controller
26
- ```bash
27
- aifabrix auth config --set-controller <url> --set-environment dev
28
- aifabrix login
29
- ```
30
-
31
- ### 1. Extend External System
32
-
33
- Use the interactive wizard to extend your existing system:
34
-
35
- ```bash
36
- aifabrix wizard --app roundtrip-test-local2
37
- ```
38
-
39
- ### 2. Configure Authentication and Datasources
40
-
41
- Edit files in `integration/roundtrip-test-local2/`:
42
-
43
- - **Authentication**: `roundtrip-test-local2-system.yaml` (auth type, credentials placeholders)
44
- - **Field mappings**: `roundtrip-test-local2-datasource-*-datasource.yaml` (dimensions, attributes, operations)
45
- - **Credential and configuration**: `env.template` (security settings and configuration variables)
46
-
47
-
48
- ### Secrets
49
-
50
- Secrets are resolved from `.aifabrix` or key vault. Set them with:
51
-
52
- ```bash
53
- aifabrix secret set roundtrip-test-local2/apiKey <your value> # API Key
54
- ```
55
-
56
-
57
- ### 3. Validate Configuration
58
-
59
- ```bash
60
- aifabrix validate roundtrip-test-local2
61
- ```
62
-
63
- ### 4. Repair Deployment Manifest
64
-
65
- **Run repair regularly.** It keeps naming conventions, filenames, and the deployment manifest aligned with AI Fabrix platform best practices. Use it after editing datasources, env.template, or system config—and run it often to catch drift early.
66
-
67
- ```bash
68
- aifabrix repair roundtrip-test-local2
69
- ```
70
-
71
- Options:
72
- --auth <method> Set authentication method (oauth2, aad, apikey, basic, queryParam, oidc, hmac, none); updates system file and env.template
73
- --dry-run Report changes only; do not write
74
- --rbac Ensure RBAC permissions per datasource and add default Admin/Reader roles if none exist
75
- --expose Set exposed.attributes on each datasource to all fieldMappings.attributes keys
76
- --sync Add default sync section to datasources that lack it
77
- --test Generate testPayload.payloadTemplate and testPayload.expectedResult from attributes
78
-
79
- ### 5. Upload to dataplane
80
-
81
- ```bash
82
- aifabrix upload roundtrip-test-local2
83
- ```
84
-
85
- ## Testing
86
-
87
- ### Unit Tests (Local Validation, No API)
88
-
89
- ```bash
90
- aifabrix test roundtrip-test-local2
91
- ```
92
-
93
- ### Integration Tests (Via Dataplane)
94
-
95
- ```bash
96
- aifabrix test-integration roundtrip-test-local2
97
- ```
98
-
99
- ### End-to-end Tests (Via Dataplane)
100
-
101
- ```bash
102
- aifabrix test-e2e roundtrip-test-local2
103
- ```
104
-
105
- Options:
106
- -e, --env <env> Environment: dev, tst, or pro (builder: dev/tst for container)
107
- -v, --verbose Show detailed step output and poll progress
108
- --debug Include debug output and write log to integration/roundtrip-test-local2/logs/
109
- --no-async Use sync mode (no polling); single POST per datasource
110
-
111
- ### E2E tests per datasource
112
-
113
- To run a full E2E test for a single datasource (config, credential, sync, data, CIP), use `aifabrix datasource test-e2e` with the datasource key and app:
114
-
115
- ```bash
116
- # Company
117
- aifabrix datasource test-e2e roundtrip-test-local2-company --app roundtrip-test-local2
118
-
119
- ```
120
-
121
- Options:
122
- -a, --app roundtrip-test-local2 App key (default: resolve from cwd if inside integration/roundtrip-test-local2/)
123
- -e, --env <env> Environment: dev, tst, or pro
124
- -v, --verbose Show detailed step output and poll progress
125
- --debug Include debug output and write log to integration/roundtrip-test-local2/logs/
126
- --no-run-scenarios Skip expanding testPayload.scenarios in capacity step
127
- --no-cleanup Disable cleanup after test (body cleanup: false)
128
- --primary-key-value <value|@path> Primary key value or path to JSON file (e.g. @pk.json) for body primaryKeyValue
129
- --no-async Use sync mode (no polling); single POST, no asyncRun
130
-
131
- ## Deployment
132
-
133
- Deploy via miso-controller pipeline (same as regular apps). Auth and controller come from `aifabrix login` and `aifabrix auth config`:
134
-
135
- ```bash
136
- aifabrix deploy roundtrip-test-local2
137
- ```
138
-
139
- ## Troubleshooting
140
-
141
- - **Validation errors**: Run `aifabrix validate roundtrip-test-local2` to see schema and manifest errors.
142
- - **Deployment / auth**: Run `aifabrix auth config --set-controller <url> --set-environment <env>` and `aifabrix login` before `aifabrix deploy`.
143
- - **File not found**: Run commands from the project root (where `package.json` and `integration/` live).
@@ -1,13 +0,0 @@
1
- app:
2
- key: roundtrip-test-local2
3
- displayName: Roundtrip Test
4
- description: Roundtrip validation test
5
- type: external
6
- externalIntegration:
7
- schemaBasePath: ./
8
- systems:
9
- - roundtrip-test-local2-system.yaml
10
- dataSources:
11
- - roundtrip-test-local2-datasource-company.yaml
12
- autopublish: true
13
- version: 1.0.0
@@ -1,15 +0,0 @@
1
- # Environment variables for external system integration
2
- # Use kv:// (or aifabrix secret set) for sensitive values; plain values for non-sensitive configuration.
3
- #
4
-
5
- # Authentication
6
- # Type: oauth2
7
- KV_ROUNDTRIP_TEST_LOCAL2_CLIENTID=kv://roundtrip-test-local2/clientId
8
- KV_ROUNDTRIP_TEST_LOCAL2_CLIENTSECRET=kv://roundtrip-test-local2/clientSecret
9
- # Non-secure (e.g. URLs): baseUrl, tokenUrl, authorizationUrl
10
-
11
- # Configuration
12
- # KV_ROUNDTRIP_TEST_CLIENTID
13
- KV_ROUNDTRIP_TEST_CLIENTID=kv://roundtrip-test-local2/clientId
14
- # KV_ROUNDTRIP_TEST_CLIENTSECRET
15
- KV_ROUNDTRIP_TEST_CLIENTSECRET=kv://roundtrip-test-local2/clientSecret
@@ -1,31 +0,0 @@
1
- key: roundtrip-test-local2-company
2
- displayName: Company
3
- systemKey: roundtrip-test-local2
4
- entityType: recordStorage
5
- resourceType: record
6
- primaryKey:
7
- - id
8
- labelKey:
9
- - id
10
- metadataSchema:
11
- type: object
12
- required:
13
- - id
14
- - externalId
15
- properties:
16
- id:
17
- type: string
18
- index: true
19
- externalId:
20
- type: string
21
- index: true
22
- fieldMappings:
23
- attributes:
24
- id:
25
- expression: '{{raw.id}}'
26
- externalId:
27
- expression: '{{raw.externalId}}'
28
- exposed:
29
- schema:
30
- id: metadata.id
31
- externalId: metadata.externalId
@@ -1,86 +0,0 @@
1
- {
2
- "system": {
3
- "key": "roundtrip-test-local2",
4
- "displayName": "Roundtrip Test",
5
- "description": "Roundtrip validation test",
6
- "type": "openapi",
7
- "enabled": true,
8
- "authentication": {
9
- "method": "oauth2",
10
- "variables": {
11
- "baseUrl": "https://api.example.com",
12
- "tokenUrl": "https://api.example.com/oauth/token",
13
- "authorizationUrl": "https://api.example.com/oauth/authorize"
14
- },
15
- "security": {
16
- "clientId": "kv://roundtrip-test-local2/clientId",
17
- "clientSecret": "kv://roundtrip-test-local2/clientSecret"
18
- }
19
- },
20
- "configuration": [
21
- {
22
- "name": "KV_ROUNDTRIP_TEST_CLIENTID",
23
- "value": "roundtrip-test-local2/clientId",
24
- "location": "keyvault",
25
- "required": true
26
- },
27
- {
28
- "name": "KV_ROUNDTRIP_TEST_CLIENTSECRET",
29
- "value": "roundtrip-test-local2/clientSecret",
30
- "location": "keyvault",
31
- "required": true
32
- }
33
- ],
34
- "dataSources": [
35
- "roundtrip-test-local2-company"
36
- ]
37
- },
38
- "dataSources": [
39
- {
40
- "key": "roundtrip-test-local2-company",
41
- "displayName": "Company",
42
- "systemKey": "roundtrip-test-local2",
43
- "entityType": "recordStorage",
44
- "resourceType": "record",
45
- "primaryKey": [
46
- "id"
47
- ],
48
- "labelKey": [
49
- "id"
50
- ],
51
- "metadataSchema": {
52
- "type": "object",
53
- "required": [
54
- "id",
55
- "externalId"
56
- ],
57
- "properties": {
58
- "id": {
59
- "type": "string",
60
- "index": true
61
- },
62
- "externalId": {
63
- "type": "string",
64
- "index": true
65
- }
66
- }
67
- },
68
- "fieldMappings": {
69
- "attributes": {
70
- "id": {
71
- "expression": "{{raw.id}}"
72
- },
73
- "externalId": {
74
- "expression": "{{raw.externalId}}"
75
- }
76
- }
77
- },
78
- "exposed": {
79
- "schema": {
80
- "id": "metadata.id",
81
- "externalId": "metadata.externalId"
82
- }
83
- }
84
- }
85
- ]
86
- }
@@ -1,25 +0,0 @@
1
- key: roundtrip-test-local2
2
- displayName: Roundtrip Test
3
- description: Roundtrip validation test
4
- type: openapi
5
- enabled: true
6
- authentication:
7
- method: oauth2
8
- variables:
9
- baseUrl: https://api.example.com
10
- tokenUrl: https://api.example.com/oauth/token
11
- authorizationUrl: https://api.example.com/oauth/authorize
12
- security:
13
- clientId: kv://roundtrip-test-local2/clientId
14
- clientSecret: kv://roundtrip-test-local2/clientSecret
15
- configuration:
16
- - name: KV_ROUNDTRIP_TEST_CLIENTID
17
- value: roundtrip-test-local2/clientId
18
- location: keyvault
19
- required: true
20
- - name: KV_ROUNDTRIP_TEST_CLIENTSECRET
21
- value: roundtrip-test-local2/clientSecret
22
- location: keyvault
23
- required: true
24
- dataSources:
25
- - roundtrip-test-local2-company
@@ -1,8 +0,0 @@
1
- appName: test
2
- mode: create-system
3
- source:
4
- type: openapi-file
5
- filePath: /workspace/aifabrix-builder/integration/hubspot-test/companies.json
6
- credential:
7
- action: create
8
- preferences: {}