@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,30 +0,0 @@
1
- {
2
- "name": "@aifabrix/builder-api",
3
- "version": "0.1.0",
4
- "description": "AI Fabrix Builder API — HTTP orchestration for external system lifecycle (plan 154.0)",
5
- "private": true,
6
- "main": "../../lib/programmatic/builder-api-server.js",
7
- "bin": {
8
- "builder-api": "../../bin/builder-api-spike.js",
9
- "builder-api-nest": "../../bin/builder-api-nest.js"
10
- },
11
- "scripts": {
12
- "build": "tsc -p tsconfig.json",
13
- "start": "node ../../bin/builder-api-spike.js",
14
- "start:nest": "node ../../bin/builder-api-nest.js",
15
- "cleanup": "node ../../bin/builder-api-cleanup.js"
16
- },
17
- "engines": {
18
- "node": ">=18.0.0"
19
- },
20
- "dependencies": {
21
- "@aifabrix/miso-client": "4.19.0"
22
- },
23
- "peerDependencies": {
24
- "@nestjs/common": "^10.0.0",
25
- "@nestjs/core": "^10.0.0",
26
- "@nestjs/platform-express": "^10.0.0",
27
- "reflect-metadata": "^0.2.0",
28
- "rxjs": "^7.8.0"
29
- }
30
- }
@@ -1,7 +0,0 @@
1
- import { Module } from '@nestjs/common';
2
-
3
- /**
4
- * Root Nest module — HTTP routing is delegated to lib/programmatic via nest-http-bridge.
5
- */
6
- @Module({})
7
- export class AppModule {}
@@ -1,5 +0,0 @@
1
- import { Module } from '@nestjs/common';
2
-
3
- /** Placeholder for future BearerAuthGuard wiring (V1 auth runs in lib/programmatic). */
4
- @Module({})
5
- export class AuthModule {}
@@ -1,5 +0,0 @@
1
- import { Module } from '@nestjs/common';
2
-
3
- /** Placeholder for route-group modules; handlers live in lib/programmatic today. */
4
- @Module({})
5
- export class ExternalSystemModule {}
@@ -1,16 +0,0 @@
1
- import 'reflect-metadata';
2
- import { NestFactory } from '@nestjs/core';
3
- import { AppModule } from './app.module';
4
-
5
- async function bootstrap() {
6
- const app = await NestFactory.create(AppModule, { bodyParser: false });
7
- // eslint-disable-next-line @typescript-eslint/no-require-imports
8
- const { wireBuilderApiHttpBridge, BASE } = require('../../../lib/programmatic/nest-http-bridge');
9
- wireBuilderApiHttpBridge(app.getHttpAdapter().getInstance());
10
- const port = Number(process.env.PORT || 3005);
11
- await app.listen(port);
12
- // eslint-disable-next-line no-console
13
- console.log(`builder-api (Nest) listening on http://localhost:${port}${BASE}/health`);
14
- }
15
-
16
- bootstrap();
@@ -1,15 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "module": "commonjs",
4
- "target": "ES2020",
5
- "outDir": "dist",
6
- "rootDir": "src",
7
- "strict": true,
8
- "esModuleInterop": true,
9
- "experimentalDecorators": true,
10
- "emitDecoratorMetadata": true,
11
- "skipLibCheck": true,
12
- "declaration": false
13
- },
14
- "include": ["src/**/*.ts"]
15
- }
@@ -1,79 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Architecture grep gate for builder-api (plan 154.1).
4
- *
5
- * Fails when provider-specific strings appear under lib/programmatic or packages/builder-api.
6
- */
7
-
8
- 'use strict';
9
-
10
- const fs = require('fs');
11
- const path = require('path');
12
-
13
- const ROOT = path.join(__dirname, '..');
14
- const SCAN_DIRS = ['lib/programmatic', 'packages/builder-api'];
15
- const FORBIDDEN = /\b(github|gitlab|bitbucket|octokit|azuredevops|azure devops|git clone)\b/i;
16
- const ALLOWLIST = new Set([
17
- path.normalize('lib/programmatic/openapi-descriptions.js'),
18
- path.normalize('lib/programmatic/openapi-spec.js'),
19
- path.normalize('packages/builder-api/MANUAL-CHECKLIST.md')
20
- ]);
21
-
22
- /**
23
- * Recursively collect scannable files under a directory.
24
- * @param {string} dir - Directory path to scan
25
- * @param {string[]} files - Output file list
26
- * @returns {void}
27
- */
28
- function walk(dir, files) {
29
- if (!fs.existsSync(dir)) {
30
- return;
31
- }
32
- for (const name of fs.readdirSync(dir)) {
33
- const full = path.join(dir, name);
34
- const stat = fs.statSync(full);
35
- if (stat.isDirectory()) {
36
- walk(full, files);
37
- continue;
38
- }
39
- if (!/\.(js|ts|md|json|yml|yaml)$/.test(name)) {
40
- continue;
41
- }
42
- files.push(full);
43
- }
44
- }
45
-
46
- /** @type {string[]} */
47
- const files = [];
48
- for (const rel of SCAN_DIRS) {
49
- walk(path.join(ROOT, rel), files);
50
- }
51
-
52
- /** @type {Array<{ file: string, line: number, text: string }>} */
53
- const violations = [];
54
-
55
- for (const file of files) {
56
- const rel = path.normalize(path.relative(ROOT, file));
57
- if (ALLOWLIST.has(rel)) {
58
- continue;
59
- }
60
- const content = fs.readFileSync(file, 'utf8');
61
- content.split('\n').forEach((line, index) => {
62
- if (FORBIDDEN.test(line)) {
63
- violations.push({ file: rel, line: index + 1, text: line.trim() });
64
- }
65
- });
66
- }
67
-
68
- if (violations.length > 0) {
69
- // eslint-disable-next-line no-console
70
- console.error('builder-api architecture grep failed:');
71
- for (const row of violations) {
72
- // eslint-disable-next-line no-console
73
- console.error(` ${row.file}:${row.line}: ${row.text}`);
74
- }
75
- process.exit(1);
76
- }
77
-
78
- // eslint-disable-next-line no-console
79
- console.log('builder-api architecture grep passed');
@@ -1,34 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * CI helper: fail when Builder lib/schema/datasource-test-run.schema.json drifts from Dataplane copy.
4
- * @fileoverview Schema sync gate (plan §8.1)
5
- */
6
- /* eslint-disable no-console -- CLI script */
7
-
8
- const path = require('path');
9
- const { assertDatasourceTestRunSchemasInSync } = require('../lib/utils/datasource-test-run-schema-sync');
10
-
11
- const root = path.join(__dirname, '..');
12
- const builderSchema = path.join(root, 'lib/schema/datasource-test-run.schema.json');
13
- const dpRoot = process.env.AIFABRIX_DATAPLANE_ROOT || path.join(root, '..', 'aifabrix-dataplane');
14
- const dataplaneSchema = path.join(dpRoot, 'app/schemas/json/datasource-test-run.schema.json');
15
-
16
- const strict = process.env.AIFABRIX_SCHEMA_SYNC_STRICT === '1';
17
-
18
- try {
19
- const result = assertDatasourceTestRunSchemasInSync(builderSchema, dataplaneSchema);
20
- if (result.skipped) {
21
- const msg = result.reason || 'Dataplane schema path missing';
22
- if (strict) {
23
- console.error(`Schema sync failed (strict): ${msg}`);
24
- process.exit(1);
25
- }
26
- console.warn(`Schema sync skipped: ${msg}`);
27
- process.exit(0);
28
- }
29
- console.log(`DatasourceTestRun schema OK (sha256 ${result.builderSha})`);
30
- process.exit(0);
31
- } catch (e) {
32
- console.error(e.message || String(e));
33
- process.exit(1);
34
- }
package/scripts/ci-fix.sh DELETED
@@ -1,19 +0,0 @@
1
- #!/bin/bash
2
- # CI Fix Script Wrapper
3
- # This script is a wrapper that calls the actual CI fix script
4
- # located in tests/scripts/ci-fix.sh
5
-
6
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7
- ACTUAL_SCRIPT="$SCRIPT_DIR/../tests/scripts/ci-fix.sh"
8
-
9
- if [ ! -f "$ACTUAL_SCRIPT" ]; then
10
- echo "Error: CI fix script not found at $ACTUAL_SCRIPT" >&2
11
- exit 1
12
- fi
13
-
14
- # Make sure the script is executable
15
- chmod +x "$ACTUAL_SCRIPT" 2>/dev/null || true
16
-
17
- # Execute the actual script
18
- exec "$ACTUAL_SCRIPT" "$@"
19
-
@@ -1,19 +0,0 @@
1
- #!/bin/bash
2
- # CI Simulation Script Wrapper
3
- # This script is a wrapper that calls the actual CI simulation script
4
- # located in tests/scripts/ci-simulate.sh
5
-
6
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7
- ACTUAL_SCRIPT="$SCRIPT_DIR/../tests/scripts/ci-simulate.sh"
8
-
9
- if [ ! -f "$ACTUAL_SCRIPT" ]; then
10
- echo "Error: CI simulation script not found at $ACTUAL_SCRIPT" >&2
11
- exit 1
12
- fi
13
-
14
- # Make sure the script is executable
15
- chmod +x "$ACTUAL_SCRIPT" 2>/dev/null || true
16
-
17
- # Execute the actual script
18
- exec "$ACTUAL_SCRIPT" "$@"
19
-
@@ -1,150 +0,0 @@
1
- #!/usr/bin/env node
2
- /* eslint-disable no-console */
3
-
4
- /**
5
- * List every PATH hit for aifabrix / af and each --version (find duplicate installs).
6
- *
7
- * @fileoverview CLI path diagnostic for @aifabrix/builder
8
- */
9
-
10
- const { execFileSync, execSync } = require('child_process');
11
- const fs = require('fs');
12
- const path = require('path');
13
-
14
- /**
15
- * Reads package.json `bin` field.
16
- * @returns {Record<string, string>|string} Bin map or single path string
17
- */
18
- function readBins() {
19
- const pkgPath = path.join(__dirname, '..', 'package.json');
20
- const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
21
- return pkg.bin || { aifabrix: 'bin/aifabrix.js' };
22
- }
23
-
24
- /**
25
- * Resolves every PATH directory that exposes an executable named `binName`.
26
- * @param {string} binName - CLI name (e.g. aifabrix)
27
- * @returns {Array<{ path: string, real: string }>} Deduped hits with real paths
28
- */
29
- function locationsOnPath(binName) {
30
- if (process.platform === 'win32') {
31
- try {
32
- const out = execSync(`where ${binName}`, {
33
- encoding: 'utf8',
34
- stdio: ['ignore', 'pipe', 'ignore']
35
- }).trim();
36
- return out.split(/\r?\n/).filter(Boolean).map((p) => ({ path: p, real: p }));
37
- } catch {
38
- return [];
39
- }
40
- }
41
-
42
- const dirs = (process.env.PATH || '').split(path.delimiter).filter(Boolean);
43
- const out = [];
44
- const seenReal = new Set();
45
- for (const dir of dirs) {
46
- const candidate = path.join(dir, binName);
47
- try {
48
- const st = fs.lstatSync(candidate);
49
- if (!st.isFile() && !st.isSymbolicLink()) continue;
50
- fs.accessSync(candidate, fs.constants.X_OK);
51
- const real = fs.realpathSync(candidate);
52
- if (seenReal.has(real)) continue;
53
- seenReal.add(real);
54
- out.push({ path: candidate, real });
55
- } catch {
56
- // not found or not executable
57
- }
58
- }
59
- return out;
60
- }
61
-
62
- /**
63
- * Runs `executablePath --version` and returns stdout or null on failure.
64
- * @param {string} executablePath - Absolute path to the binary
65
- * @returns {string|null} Trimmed version output
66
- */
67
- function versionAt(executablePath) {
68
- try {
69
- return execFileSync(executablePath, ['--version'], {
70
- encoding: 'utf8',
71
- stdio: ['ignore', 'pipe', 'ignore']
72
- }).trim();
73
- } catch {
74
- return null;
75
- }
76
- }
77
-
78
- /**
79
- * Prints PNPM_HOME and npm prefix for debugging PATH issues.
80
- * @returns {void}
81
- */
82
- function printEnvironment() {
83
- console.log('Environment (relevant to global CLIs)\n');
84
- console.log(` PNPM_HOME ${process.env.PNPM_HOME || '(not set)'}`);
85
- try {
86
- const prefix = execSync('npm config get prefix', {
87
- encoding: 'utf8',
88
- stdio: ['ignore', 'pipe', 'ignore']
89
- }).trim();
90
- console.log(` npm prefix ${prefix}`);
91
- } catch {
92
- console.log(' npm prefix (could not read)');
93
- }
94
- console.log('');
95
- }
96
-
97
- /**
98
- * @param {string[]} names - Bin names from package.json
99
- * @returns {void}
100
- */
101
- function printBinReports(names) {
102
- for (const name of names) {
103
- console.log(`── ${name} ──`);
104
- const hits = locationsOnPath(name);
105
- if (!hits.length) {
106
- console.log(' (not found on PATH)\n');
107
- continue;
108
- }
109
- hits.forEach((h, i) => {
110
- const ver = versionAt(h.path);
111
- const marker = i === 0 ? ' ← first on PATH (what your shell runs)' : '';
112
- console.log(` [${i + 1}] ${h.path}`);
113
- if (h.real !== h.path) console.log(` → ${h.real}`);
114
- console.log(` --version: ${ver ?? '(failed to run)'}${marker}`);
115
- });
116
- console.log('');
117
- }
118
- }
119
-
120
- /**
121
- * @param {string[]} names - Bin names from package.json
122
- * @returns {void}
123
- */
124
- function warnIfMultipleVersions(names) {
125
- const uniqVersions = new Set();
126
- for (const name of names) {
127
- for (const h of locationsOnPath(name)) {
128
- const v = versionAt(h.path);
129
- if (v) uniqVersions.add(v);
130
- }
131
- }
132
- if (uniqVersions.size > 1) {
133
- console.log('⚠ Multiple distinct --version values above: remove or reorder PATH so only one install remains.');
134
- console.log(' Often: npm uninstall -g @aifabrix/builder, then ensure PNPM_HOME is before /usr/local/bin in PATH.\n');
135
- }
136
- }
137
-
138
- /**
139
- * Entry: list PATH hits and versions for each package bin.
140
- * @returns {void}
141
- */
142
- function main() {
143
- const binField = readBins();
144
- const names = typeof binField === 'string' ? ['aifabrix'] : Object.keys(binField);
145
- printEnvironment();
146
- printBinReports(names);
147
- warnIfMultipleVersions(names);
148
- }
149
-
150
- main();
@@ -1,47 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Fail when a built Docker image contains dev-only paths (plan 154.3).
4
- *
5
- * @fileoverview builder-api image content gate
6
- * @author AI Fabrix Team
7
- * @version 1.0.0
8
- */
9
-
10
- 'use strict';
11
-
12
- const { checkImage } = require('./lib/docker-image-content-gate-core');
13
-
14
- /**
15
- * @param {string[]} argv
16
- * @returns {number}
17
- */
18
- function main(argv) {
19
- const args = argv.slice(2);
20
- if (args.length < 2) {
21
- console.error('Usage: docker_image_content_gate.js <image> <profile>');
22
- return 1;
23
- }
24
-
25
- const [image, profile] = args;
26
- try {
27
- const violations = checkImage(image, profile);
28
- if (violations.length > 0) {
29
- console.error(`Image ${image} failed ${profile} content gate:`);
30
- for (const path of violations) {
31
- console.error(` - forbidden: ${path}`);
32
- }
33
- return 1;
34
- }
35
- console.log(`OK: ${image} passed ${profile} content gate`);
36
- return 0;
37
- } catch (error) {
38
- console.error(`ERROR: ${error.message}`);
39
- return 1;
40
- }
41
- }
42
-
43
- if (require.main === module) {
44
- process.exit(main(process.argv));
45
- }
46
-
47
- module.exports = { main };
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env sh
2
- # Plan 154.3 — verify a built builder-api image does not contain dev-only trees.
3
- set -eu
4
- ROOT="$(CDPATH= cd -- "$(dirname "$0")/.." && pwd)"
5
- exec node "$ROOT/scripts/docker_image_content_gate.js" "$@"