@aifabrix/builder 2.52.1 → 2.53.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/lib/app/deploy-config.js +3 -2
  2. package/lib/channels/add-channel.js +11 -41
  3. package/lib/channels/approval-guides/index.js +3 -0
  4. package/lib/channels/approval-guides/microsoft-copilot.js +26 -17
  5. package/lib/channels/channel-add-existing.js +72 -0
  6. package/lib/channels/channel-runtime-resolver.js +5 -1
  7. package/lib/channels/channel-status-display.js +30 -3
  8. package/lib/channels/microsoft-copilot-entra-sso-form.js +73 -2
  9. package/lib/channels/microsoft-copilot-entra-sso.js +26 -5
  10. package/lib/channels/microsoft-copilot-limits.js +22 -3
  11. package/lib/channels/microsoft-copilot-package.js +59 -14
  12. package/lib/channels/microsoft-copilot-validate.js +40 -10
  13. package/lib/cli/attach-default-help-examples.js +102 -0
  14. package/lib/cli/index.js +2 -0
  15. package/lib/cli/setup-credential-deployment.js +7 -5
  16. package/lib/cli/setup-utility-validate.js +1 -0
  17. package/lib/commands/credential-push.js +37 -5
  18. package/lib/commands/package-score.js +72 -0
  19. package/lib/commands/role-assistant.js +46 -8
  20. package/lib/deployment/deployer-poll-run.js +2 -2
  21. package/lib/deployment/deployer.js +1 -1
  22. package/lib/deployment/environment.js +2 -2
  23. package/lib/external-system/deploy.js +11 -21
  24. package/lib/integration-definition/apply.js +12 -14
  25. package/lib/integration-definition/enrich-openapi-operations.js +9 -10
  26. package/lib/lab/package-parity-score.js +417 -0
  27. package/lib/programmatic/capability-registry.js +1 -0
  28. package/lib/programmatic/help-content/channel-onboarding.md +35 -0
  29. package/lib/programmatic/help-content/cip-overview.md +27 -0
  30. package/lib/programmatic/help-content/connected-system-ui.md +70 -0
  31. package/lib/programmatic/help-content/dimensions-guide.md +23 -0
  32. package/lib/programmatic/help-content/enterprise-sync-fabrix.md +123 -0
  33. package/lib/programmatic/help-content/overview.md +25 -0
  34. package/lib/programmatic/help-content/subscription-guide.md +27 -0
  35. package/lib/programmatic/help-content/workflow.md +50 -0
  36. package/lib/programmatic/openapi-component-schemas.js +1 -0
  37. package/lib/programmatic/openapi-descriptions.js +6 -0
  38. package/lib/programmatic/openapi-envelope-examples.js +11 -0
  39. package/lib/programmatic/openapi-operation-bindings.js +5 -0
  40. package/lib/programmatic/openapi-request-schemas.js +39 -13
  41. package/lib/programmatic/openapi-result-schemas.js +30 -0
  42. package/lib/programmatic/openapi-schema-descriptions-core.js +18 -0
  43. package/lib/programmatic/openapi-schema-descriptions-operations.js +19 -0
  44. package/lib/programmatic/persist-supplied-openapi.js +180 -0
  45. package/lib/programmatic/route-handler-map.js +6 -0
  46. package/lib/programmatic/run-integration-definition.js +13 -5
  47. package/lib/role-assistant/evidence-sync.js +55 -7
  48. package/lib/role-assistant/test-runner-attachments.js +118 -0
  49. package/lib/role-assistant/test-runner-bid-apply.js +100 -21
  50. package/lib/role-assistant/test-runner-bid-document.js +1 -1
  51. package/lib/role-assistant/test-runner-start-payload.js +96 -0
  52. package/lib/role-assistant/test-runner-workhub-answers.js +11 -7
  53. package/lib/role-assistant/test-runner-workhub-helpers.js +100 -0
  54. package/lib/role-assistant/test-runner-workhub-soft.js +86 -0
  55. package/lib/role-assistant/test-runner-workhub.js +68 -105
  56. package/lib/role-assistant/test-runner.js +5 -63
  57. package/lib/role-assistant/test-suite.js +33 -40
  58. package/lib/schema/external-datasource.schema.json +13 -4
  59. package/lib/utils/compose-generator.js +10 -1
  60. package/lib/utils/compose-traefik-extra-routes.js +107 -0
  61. package/lib/utils/docker-build.js +2 -2
  62. package/lib/utils/help-builder.js +2 -1
  63. package/lib/utils/promote-dev-docker-image.js +15 -10
  64. package/package.json +14 -16
  65. package/templates/README.md +12 -1
  66. package/templates/applications/dataplane/application.yaml +8 -1
  67. package/templates/applications/dataplane/env.template +1 -1
  68. package/templates/applications/miso-controller/application.yaml +2 -1
  69. package/templates/applications/miso-controller/rbac.yaml +1 -0
  70. package/templates/channels/microsoft-copilot/ai-plugin.template.json.hbs +6 -2
  71. package/templates/channels/microsoft-copilot/entra-sso-registration.template.md.hbs +8 -5
  72. package/templates/channels/microsoft-copilot/fi-fi.template.json.hbs +7 -0
  73. package/templates/channels/microsoft-copilot/install.template.md.hbs +74 -22
  74. package/templates/channels/microsoft-copilot/manifest.template.json.hbs +29 -14
  75. package/templates/channels/microsoft-copilot/oauth-plugin-vault-required.template.md.hbs +6 -2
  76. package/templates/python/docker-compose.hbs +36 -0
  77. package/templates/typescript/docker-compose.hbs +36 -0
  78. package/.cursor/plans/Archive/157.1-security-quality-violations-by-type.csv +0 -374
  79. package/.cursor/process/README.md +0 -9
  80. package/.cursor/rules/anchor-docs.mdc +0 -15
  81. package/.cursor/rules/assistant-driven-integration-build.mdc +0 -40
  82. package/.cursor/rules/cli-layout.mdc +0 -81
  83. package/.cursor/rules/cli-product-neutral.mdc +0 -43
  84. package/.cursor/rules/deploy-rules/docker-image-ip-policy.mdc +0 -49
  85. package/.cursor/rules/docs-rules.mdc +0 -32
  86. package/.cursor/rules/plan-rules/application-lifecycle.mdc +0 -30
  87. package/.cursor/rules/plan-rules/plan-frontmatter.mdc +0 -35
  88. package/.cursor/rules/plan-rules/plan-lifecycle.mdc +0 -31
  89. package/.cursor/rules/plan-rules/plan-validation-gate.mdc +0 -34
  90. package/.cursor/rules/project-rules.mdc +0 -913
  91. package/.cursor/skills/README.md +0 -15
  92. package/.dockerignore +0 -52
  93. package/.eslintignore +0 -22
  94. package/.markdownlint.json +0 -14
  95. package/anchor-docs/README.md +0 -10
  96. package/anchor-docs/_TEMPLATE +0 -24
  97. package/babel.config.js +0 -6
  98. package/bin/builder-api-cleanup.js +0 -26
  99. package/bin/builder-api-nest.js +0 -10
  100. package/bin/builder-api-spike.js +0 -19
  101. package/enterprise-knowledge/README.md +0 -50
  102. package/enterprise-knowledge/enterprise-integration-lifecycle/README.md +0 -22
  103. package/enterprise-knowledge/enterprise-integration-lifecycle/application.json +0 -15
  104. package/enterprise-knowledge/enterprise-integration-lifecycle/deploy.js +0 -69
  105. package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-deploy.json +0 -52
  106. package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-system.json +0 -29
  107. package/enterprise-knowledge/enterprise-integration-lifecycle/env.template +0 -2
  108. package/integration/README.md +0 -81
  109. package/integration/github/README.md +0 -53
  110. package/integration/github/application.json +0 -21
  111. package/integration/github/deploy.js +0 -72
  112. package/integration/github/env.template +0 -11
  113. package/integration/github/github-datasource-issue-comments.json +0 -239
  114. package/integration/github/github-datasource-issues.json +0 -399
  115. package/integration/github/github-datasource-repository.json +0 -354
  116. package/integration/github/github-deploy.json +0 -1202
  117. package/integration/github/github-system.json +0 -82
  118. package/integration/hubspot-test/README.md +0 -159
  119. package/integration/hubspot-test/application.json +0 -54
  120. package/integration/hubspot-test/companies.json +0 -2048
  121. package/integration/hubspot-test/create-hubspot.js +0 -523
  122. package/integration/hubspot-test/env.template +0 -4
  123. package/integration/hubspot-test/hubspot-test-datasource-company.json +0 -138
  124. package/integration/hubspot-test/hubspot-test-datasource-contact.json +0 -146
  125. package/integration/hubspot-test/hubspot-test-datasource-deal.json +0 -146
  126. package/integration/hubspot-test/hubspot-test-datasource-users.json +0 -76
  127. package/integration/hubspot-test/hubspot-test-deploy.json +0 -2160
  128. package/integration/hubspot-test/hubspot-test-system.json +0 -74
  129. package/integration/hubspot-test/rbac.json +0 -166
  130. package/integration/hubspot-test/test-artifacts/wizard-hubspot-credential-real.yaml +0 -20
  131. package/integration/hubspot-test/test-artifacts/wizard-hubspot-env-vars.yaml +0 -9
  132. package/integration/hubspot-test/test-artifacts/wizard-invalid-add-datasource.yaml +0 -5
  133. package/integration/hubspot-test/test-artifacts/wizard-invalid-app-name.yaml +0 -5
  134. package/integration/hubspot-test/test-artifacts/wizard-invalid-credential-create.yaml +0 -7
  135. package/integration/hubspot-test/test-artifacts/wizard-invalid-credential-select.yaml +0 -7
  136. package/integration/hubspot-test/test-artifacts/wizard-invalid-known-platform.yaml +0 -4
  137. package/integration/hubspot-test/test-artifacts/wizard-invalid-missing-app.yaml +0 -4
  138. package/integration/hubspot-test/test-artifacts/wizard-invalid-missing-source.yaml +0 -2
  139. package/integration/hubspot-test/test-artifacts/wizard-invalid-mode.yaml +0 -5
  140. package/integration/hubspot-test/test-artifacts/wizard-invalid-openapi-file.yaml +0 -5
  141. package/integration/hubspot-test/test-artifacts/wizard-invalid-openapi-url.yaml +0 -4
  142. package/integration/hubspot-test/test-artifacts/wizard-invalid-source.yaml +0 -4
  143. package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-array-test.yaml +0 -5
  144. package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-key-test.yaml +0 -5
  145. package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-path-test.yaml +0 -5
  146. package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-test.yaml +0 -5
  147. package/integration/hubspot-test/test-artifacts/wizard-valid-for-rbac-test.yaml +0 -5
  148. package/integration/hubspot-test/test-artifacts/wizard-valid-for-rbac-yaml-test.yaml +0 -5
  149. package/integration/hubspot-test/test-dataplane-down-helpers.js +0 -249
  150. package/integration/hubspot-test/test-dataplane-down-tests.js +0 -386
  151. package/integration/hubspot-test/test-dataplane-down.js +0 -209
  152. package/integration/hubspot-test/test.js +0 -1588
  153. package/integration/hubspot-test/wizard-hubspot-e2e.yaml +0 -16
  154. package/integration/hubspot-test/wizard-hubspot-platform.yaml +0 -8
  155. package/integration/hubspot-test/wizard-hubspot-test-headless.yaml +0 -23
  156. package/integration/roundtrip-test-local/README.md +0 -143
  157. package/integration/roundtrip-test-local/application.yaml +0 -13
  158. package/integration/roundtrip-test-local/env.template +0 -15
  159. package/integration/roundtrip-test-local/roundtrip-test-local-datasource-roundtrip-test-company.yaml +0 -14
  160. package/integration/roundtrip-test-local/roundtrip-test-local-deploy.json +0 -61
  161. package/integration/roundtrip-test-local/roundtrip-test-local-system.yaml +0 -25
  162. package/integration/roundtrip-test-local2/README.md +0 -143
  163. package/integration/roundtrip-test-local2/application.yaml +0 -13
  164. package/integration/roundtrip-test-local2/env.template +0 -15
  165. package/integration/roundtrip-test-local2/roundtrip-test-local2-datasource-company.yaml +0 -31
  166. package/integration/roundtrip-test-local2/roundtrip-test-local2-deploy.json +0 -86
  167. package/integration/roundtrip-test-local2/roundtrip-test-local2-system.yaml +0 -25
  168. package/integration/test/wizard.yaml +0 -8
  169. package/jest.config.coverage.js +0 -37
  170. package/jest.config.default.js +0 -11
  171. package/jest.config.integration.fixtures.js +0 -22
  172. package/jest.config.integration.js +0 -33
  173. package/jest.config.isolated.js +0 -11
  174. package/jest.config.manual.js +0 -30
  175. package/jest.global-live-fabrix-hooks.js +0 -36
  176. package/jest.isolated-projects.js +0 -283
  177. package/jest.projects.js +0 -79
  178. package/lib/integration-definition/openapi-enrichment/hubspot-crm-companies.json +0 -205
  179. package/packages/builder-api/README.md +0 -120
  180. package/packages/builder-api/package.json +0 -30
  181. package/packages/builder-api/src/app.module.ts +0 -7
  182. package/packages/builder-api/src/auth/auth.module.ts +0 -5
  183. package/packages/builder-api/src/external-system/external-system.module.ts +0 -5
  184. package/packages/builder-api/src/main.ts +0 -16
  185. package/packages/builder-api/tsconfig.json +0 -15
  186. package/scripts/check-builder-api-architecture-grep.js +0 -79
  187. package/scripts/check-datasource-test-run-schema-sync.js +0 -34
  188. package/scripts/ci-fix.sh +0 -19
  189. package/scripts/ci-simulate.sh +0 -19
  190. package/scripts/diagnose-cli.js +0 -150
  191. package/scripts/docker_image_content_gate.js +0 -47
  192. package/scripts/docker_image_content_gate.sh +0 -5
  193. package/scripts/export-builder-api-evidence.js +0 -262
  194. package/scripts/install-local.js +0 -490
  195. package/scripts/lib/builder-api-docker-staging-copy.js +0 -60
  196. package/scripts/lib/builder-api-docker-staging-core.js +0 -183
  197. package/scripts/lib/docker-image-content-gate-core.js +0 -166
  198. package/scripts/lib/plan-actor.js +0 -109
  199. package/scripts/lib/plan-config.js +0 -20
  200. package/scripts/lib/plan-gates.js +0 -154
  201. package/scripts/lib/plan-meta.js +0 -104
  202. package/scripts/lib/plan-parse.js +0 -162
  203. package/scripts/lib/plan-prevalidate-gates.js +0 -337
  204. package/scripts/lib/plan-run-core.js +0 -125
  205. package/scripts/lib/plan-run-report.js +0 -119
  206. package/scripts/plan-approve.js +0 -24
  207. package/scripts/plan-archive.js +0 -49
  208. package/scripts/plan-run.js +0 -13
  209. package/scripts/plan-set-actor.js +0 -21
  210. package/scripts/plan-validate.js +0 -80
  211. package/scripts/pnpm/af.mjs +0 -125
  212. package/scripts/pnpm/check-quiet.mjs +0 -32
  213. package/scripts/pnpm/dev-install.mjs +0 -29
  214. package/scripts/pnpm/dev-reload.mjs +0 -18
  215. package/scripts/pnpm/help.mjs +0 -55
  216. package/scripts/pnpm/lib/dev-reload-core.mjs +0 -189
  217. package/scripts/pnpm/lib/dev-reload-log-capture.mjs +0 -67
  218. package/scripts/pnpm/lib/dev-reload-log-utils.mjs +0 -32
  219. package/scripts/pnpm/lib/resolve-aifabrix-bin.mjs +0 -124
  220. package/scripts/pnpm/lib/resolve-app-url.mjs +0 -183
  221. package/scripts/pnpm/lib/spinner.mjs +0 -42
  222. package/scripts/pnpm-global-remove.js +0 -48
  223. package/scripts/stage_builder_api_for_docker.js +0 -65
  224. package/scripts/sync-builder-api-template.js +0 -44
  225. package/scripts/test-dataplane-bootstrap.js +0 -331
@@ -1,15 +0,0 @@
1
- # aifabrix-builder Cursor skills
2
-
3
- | Skill | Command | Purpose |
4
- | ----- | ------- | ------- |
5
- | [**aifabrix-application-lifecycle**](aifabrix-application-lifecycle/SKILL.md) | (all plan commands) | **Mandatory semantic lifecycle checklist** |
6
- | [builder-push-github](builder-push-github/SKILL.md) | `/push-github` | Release branch CI + optional NPM deploy PR |
7
- | [builder-repair-release](builder-repair-release/SKILL.md) | `/repair-release` | Version bump + CHANGELOG |
8
- | [builder-validate-tests](builder-validate-tests/SKILL.md) | `/validate-tests` | Lint + Jest fix loop |
9
- | [builder-validate-tests-ci](builder-validate-tests-ci/SKILL.md) | `/validate-tests.ci` | `build:ci` / GitHub parity |
10
- | [builder-validate-code](builder-validate-code/SKILL.md) | `/validate-code` | Code analysis → improvement plans |
11
- | [builder-validate-plan](builder-validate-plan/SKILL.md) | `/validate-plan` | Pre-implementation plan validation |
12
- | [builder-validate-implementation](builder-validate-implementation/SKILL.md) | `/validate-implementation` | Post-implementation plan validation |
13
- | [builder-validate-knowledgebase](builder-validate-knowledgebase/SKILL.md) | `/validate-knowledgebase` | `docs/` + schema validation |
14
-
15
- Commands live in `.cursor/commands/`.
package/.dockerignore DELETED
@@ -1,52 +0,0 @@
1
- # Builder API Docker build context (plan 154.3)
2
- # Deny-by-default: Dockerfile COPY uses docker-builder-api-staging/ only (host script).
3
- # Never ship .cursor/, integration labs, tests, full templates/, or CLI entry aifabrix.js.
4
-
5
- # Git and IDE
6
- .git/
7
- .gitignore
8
- .github/
9
- .cursor/
10
- .aifabrix/
11
- .vscode/
12
- .idea/
13
- *.swp
14
- *~
15
- .DS_Store
16
-
17
- # Dev / CI trees (not runtime)
18
- tests/
19
- docs/
20
- integration/
21
- packages/
22
- builder/
23
- scripts/
24
- temp/
25
- .temp/
26
- coverage/
27
- .nyc_output/
28
- eslint-report.json
29
-
30
- # Full source trees replaced by docker-builder-api-staging/
31
- lib/
32
- bin/
33
- templates/
34
-
35
- # Staged runtime output (must remain in context)
36
- !docker-builder-api-staging/
37
-
38
- # Node dev artifacts (package manifests whitelisted below)
39
- node_modules/
40
- npm-debug.log*
41
-
42
- # Env and secrets
43
- .env
44
- .env.*
45
-
46
- # Misc root clutter
47
- *.md
48
- !docker-builder-api-staging/**
49
-
50
- # Keep npm install inputs
51
- !package.json
52
- !package-lock.json
package/.eslintignore DELETED
@@ -1,22 +0,0 @@
1
- # Dependencies and coverage
2
- node_modules/
3
- coverage/
4
- .nyc_output/
5
-
6
- # Build and staging artifacts
7
- dist/
8
- build/
9
- out/
10
- docker-builder-api-staging/
11
- packages/builder-api/dist/
12
-
13
- # Temporary and local-only paths (see .gitignore)
14
- .temp/
15
- .temp/**
16
- temp/
17
- tmp-imgver*/
18
- mount/
19
-
20
- # Generated integration deploy scripts and local lab fixtures
21
- integration/**/deploy.js
22
- integration/**/backup/
@@ -1,14 +0,0 @@
1
- {
2
- "default": true,
3
- "MD007": false,
4
- "MD012": false,
5
- "MD013": false,
6
- "MD022": false,
7
- "MD024": { "siblings_only": true },
8
- "MD029": false,
9
- "MD031": false,
10
- "MD032": false,
11
- "MD033": false,
12
- "MD041": false
13
- }
14
-
@@ -1,10 +0,0 @@
1
- # anchor-docs (Builder CLI)
2
-
3
- Canonical technical notes for the AI Fabrix Builder. Command references, JSON schemas, and generator entrypoints live here; **aifabrix-docs** `docs/builder/` should only summarize and link.
4
-
5
- ## Conventions
6
-
7
- * Copy `anchor-docs/_TEMPLATE` to a new `*.md` file and fill in placeholders (the template is not `.md`, so it is not validated as an anchor).
8
- * `navigation_id` must match **aifabrix-docs** `docs/builder/navigation.yaml` (`builder/<url>`).
9
- * Use **`[path:aifabrix-builder/...]`** markers only.
10
- * PRs touching anchors should request review from the `owner` team.
@@ -1,24 +0,0 @@
1
- # Copy this file to `your-topic.md` and replace placeholders. This is not `*.md` so it is not validated as an anchor-doc.
2
-
3
- ---
4
- title: <Title>
5
- navigation_id: builder/<slug-from-navigation.yaml>
6
- owner: <team>
7
- last_verified_commit: <sha-or-TBD>
8
- ---
9
-
10
- ## Summary
11
-
12
- <What this anchor covers for Builder CLI or schemas.>
13
-
14
- ## Details
15
-
16
- <Implementation notes; keep persona docs in aifabrix-docs thin.>
17
-
18
- ## Examples
19
-
20
- <aifabrix wizard|validate|deploy ...>
21
-
22
- ## Paths
23
-
24
- [path:aifabrix-builder/README.md]
package/babel.config.js DELETED
@@ -1,6 +0,0 @@
1
- /** Babel config for Jest (babel-jest). Single file so all workers resolve the same config. */
2
- // Syntax-only plugin ensures Babel never treats config as "no configuration data" in workers.
3
- module.exports = {
4
- presets: [['@babel/preset-env', { targets: { node: 'current' } }]],
5
- plugins: ['@babel/plugin-syntax-optional-chaining']
6
- };
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Purge expired builder-api workspaces (cron / scheduled job entry).
4
- */
5
-
6
- 'use strict';
7
-
8
- const { purgeExpiredWorkspaces } = require('../lib/programmatic/workspace-cleanup');
9
-
10
- const dryRun = process.argv.includes('--dry-run');
11
-
12
- const result = purgeExpiredWorkspaces({ dryRun });
13
-
14
- // eslint-disable-next-line no-console
15
- console.log(
16
- dryRun
17
- ? `Would purge ${result.count} workspace(s)`
18
- : `Purged ${result.count} workspace(s)`
19
- );
20
-
21
- if (result.count > 0) {
22
- for (const row of result.purged) {
23
- // eslint-disable-next-line no-console
24
- console.log(` ${row.userId}/integration/${row.systemKey}`);
25
- }
26
- }
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Start builder-api via NestJS bootstrap (plan 154.0 monorepo scaffold).
4
- */
5
-
6
- 'use strict';
7
-
8
- require('reflect-metadata');
9
- require('ts-node/register/transpile-only');
10
- require('../packages/builder-api/src/main.ts');
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Start builder-api HTTP server (plan 154.0 spike / pre-Nest).
4
- */
5
-
6
- 'use strict';
7
-
8
- const { createBuilderApiServer, BASE } = require('../lib/programmatic/builder-api-server');
9
- const { ensureBuilderApiRuntimeConfigDir } = require('../lib/programmatic/builder-api-runtime-config');
10
-
11
- ensureBuilderApiRuntimeConfigDir();
12
-
13
- const port = Number(process.env.PORT || 3005);
14
- const server = createBuilderApiServer(port);
15
-
16
- server.on('listening', () => {
17
- // eslint-disable-next-line no-console
18
- console.log(`builder-api listening on http://localhost:${port}${BASE}/health`);
19
- });
@@ -1,50 +0,0 @@
1
- # Enterprise Knowledge anchors (aifabrix-builder SSOT)
2
-
3
- Authoring workspace for **Enterprise Knowledge** external systems (`systemKind: enterpriseKnowledge`).
4
-
5
- Connected Systems (vendor integrations) stay under `integration/`. Enterprise Knowledge anchors live here.
6
-
7
- ## Layout
8
-
9
- ```text
10
- enterprise-knowledge/<anchorKey>/
11
- application.json
12
- <anchorKey>-system.json
13
- <anchorKey>-deploy.json
14
- env.template
15
- deploy.js
16
- ```
17
-
18
- ## CLI
19
-
20
- Commands resolve this tree automatically when `*-system.json` has `systemKind: enterpriseKnowledge`:
21
-
22
- ```bash
23
- aifabrix validate enterprise-integration-lifecycle
24
- aifabrix upload enterprise-integration-lifecycle
25
- aifabrix deploy enterprise-integration-lifecycle
26
- ```
27
-
28
- Optional override:
29
-
30
- ```bash
31
- aifabrix upload <anchor>
32
- ```
33
-
34
- Generate a full manifest preview (human review before upload/deploy):
35
-
36
- ```bash
37
- aifabrix enterprise-knowledge generate-manifest --domain sales --source-system hubspot-e2e
38
- ```
39
-
40
- Preview JSON is written under `enterprise-knowledge/<anchor>/generated-service-contracts/` unless `--output` or `--json` is used.
41
-
42
- User-facing CLI copy uses **Enterprise Knowledge** (not internal abbreviations).
43
-
44
- ## Platform anchor
45
-
46
- | Anchor | Purpose |
47
- | --- | --- |
48
- | `enterprise-integration-lifecycle/` | Platform COM lifecycle subscriptions (repository.\*, template.\*) |
49
-
50
- See repo-root `integration/README.md` for the three-layer platform model and Connected Systems workflows.
@@ -1,22 +0,0 @@
1
- # Enterprise MCP — Integration lifecycle (Layer 2)
2
-
3
- Platform **enterpriseKnowledge** anchor for normalized **repository.*** and **template.*** Enterprise MCP tools.
4
-
5
- | Generated datasource | Trigger |
6
- | --- | --- |
7
- | `enterprise-repository` | Published datasource with `resourceType: repository` (e.g. `github-repository`) |
8
- | `enterprise-template` | Published datasource with `resourceType: template` |
9
-
10
- **Builder-api** calls this system via `ENTERPRISE_MCP_SYSTEM_KEY=enterprise-integration-lifecycle` (see `builder/builder-api/env.template`).
11
-
12
- ## Bootstrap
13
-
14
- ```bash
15
- aifabrix validate enterprise-integration-lifecycle
16
- aifabrix json enterprise-integration-lifecycle
17
- aifabrix upload enterprise-integration-lifecycle --probe
18
- ```
19
-
20
- Publish **before** uploading repository provider integrations (`github`).
21
-
22
- See `tests/manual/com/integration_lifecycle_golden_path.md` in aifabrix-dataplane (manual proof).
@@ -1,15 +0,0 @@
1
- {
2
- "app": {
3
- "key": "enterprise-integration-lifecycle",
4
- "displayName": "Enterprise MCP — Integration lifecycle",
5
- "description": "Platform anchor for unified Enterprise MCP repository and template capabilities (154.1 Layer 2).",
6
- "type": "external"
7
- },
8
- "externalIntegration": {
9
- "version": "1.0.0",
10
- "autopublish": false,
11
- "schemaBasePath": "./",
12
- "systems": ["enterprise-integration-lifecycle-system.json"],
13
- "dataSources": []
14
- }
15
- }
@@ -1,69 +0,0 @@
1
- #!/usr/bin/env node
2
- /* eslint-disable no-console */
3
- /**
4
- * Deploy enterprise-integration-lifecycle external system and datasources using aifabrix CLI.
5
- * Run: node deploy.js
6
- * Flow: check auth → login if needed → deploy → run integration tests.
7
- */
8
-
9
- const { execSync } = require('child_process');
10
- const path = require('path');
11
-
12
- const scriptDir = __dirname;
13
- // Project root (repo containing integration/ and builder/) so deploy/test-integration resolve app paths correctly
14
- const projectRoot = path.join(scriptDir, '..', '..');
15
- const appKey = 'enterprise-integration-lifecycle';
16
- const env = process.env.ENVIRONMENT || 'dev';
17
- // Controller URL: from config (aifabrix auth config) or set CONTROLLER env before running
18
-
19
- /**
20
- * Run a shell command with optional options.
21
- * @param {string} cmd - Command to run
22
- * @param {Object} [options={}] - Options (cwd, stdio, ignoreExit)
23
- * @returns {boolean} True if command succeeded
24
- */
25
- function run(cmd, options = {}) {
26
- const opts = { cwd: scriptDir, stdio: 'inherit', ...options };
27
- try {
28
- execSync(cmd, opts);
29
- return true;
30
- } catch (err) {
31
- if (options.ignoreExit) return false;
32
- process.exit(err.status ?? 1);
33
- }
34
- }
35
-
36
- /**
37
- * Check if aifabrix auth is logged in.
38
- * @returns {boolean} True if logged in
39
- */
40
- function isLoggedIn() {
41
- try {
42
- execSync('aifabrix auth status', { cwd: scriptDir, stdio: 'pipe' });
43
- return true;
44
- } catch {
45
- return false;
46
- }
47
- }
48
-
49
- console.log('🔍 Checking authentication...');
50
- if (!isLoggedIn()) {
51
- console.log('⚠ Not logged in. Run login (e.g. aifabrix login --controller <url> --method device --environment ' + env + ').');
52
- run('aifabrix login --environment ' + env);
53
- }
54
-
55
- console.log('🔍 Validating configuration...');
56
- run('aifabrix validate "' + path.join(scriptDir, 'enterprise-integration-lifecycle-system.json') + '"');
57
- console.log('✔ Validation passed');
58
-
59
- console.log('🚀 Deploying ' + appKey + '...');
60
- run('aifabrix deploy ' + appKey, { cwd: projectRoot });
61
- console.log('✔ Deployment complete');
62
-
63
- if (process.env.RUN_TESTS !== 'false') {
64
- console.log('🧪 Running integration tests...');
65
- run('aifabrix test-integration ' + appKey, { cwd: projectRoot });
66
- console.log('✔ Tests passed');
67
- }
68
-
69
- console.log('✔ Done.');
@@ -1,52 +0,0 @@
1
- {
2
- "key": "enterprise-integration-lifecycle",
3
- "displayName": "Enterprise MCP — Integration lifecycle",
4
- "description": "Platform anchor for unified Enterprise MCP repository and template capabilities (154.1 Layer 2).",
5
- "type": "external",
6
- "version": "1.0.0",
7
- "externalIntegration": {
8
- "schemaBasePath": "./",
9
- "systems": [
10
- "enterprise-integration-lifecycle-system.json"
11
- ],
12
- "dataSources": [],
13
- "autopublish": false,
14
- "version": "1.0.0"
15
- },
16
- "system": {
17
- "key": "enterprise-integration-lifecycle",
18
- "displayName": "Enterprise MCP — Integration lifecycle",
19
- "description": "Platform anchor for Builder workspace lifecycle. Generates enterprise-repository and enterprise-template MCP datasources when repository or template provider datasources publish. Referenced by builder-api ENTERPRISE_MCP_SYSTEM_KEY.",
20
- "type": "custom",
21
- "enabled": true,
22
- "systemKind": "enterpriseKnowledge",
23
- "authentication": {
24
- "authType": "none"
25
- },
26
- "configuration": [],
27
- "dataSources": [],
28
- "subscriptions": [
29
- {
30
- "key": "enterprise-integration-lifecycle-generator",
31
- "displayName": "Enterprise integration lifecycle generator",
32
- "description": "Regenerate enterprise repository and template MCP datasources when provider datasources publish.",
33
- "event": "platform.datasource.published",
34
- "filter": {
35
- "resourceTypes": [
36
- "repository",
37
- "template"
38
- ]
39
- },
40
- "task": {
41
- "type": "generateEnterpriseDatasources",
42
- "version": 1
43
- },
44
- "runOnCreate": true
45
- }
46
- ]
47
- },
48
- "dataSources": [],
49
- "requiresDatabase": false,
50
- "requiresRedis": false,
51
- "requiresStorage": false
52
- }
@@ -1,29 +0,0 @@
1
- {
2
- "key": "enterprise-integration-lifecycle",
3
- "displayName": "Enterprise MCP — Integration lifecycle",
4
- "description": "Platform anchor for Builder workspace lifecycle. Generates enterprise-repository and enterprise-template MCP datasources when repository or template provider datasources publish. Referenced by builder-api ENTERPRISE_MCP_SYSTEM_KEY.",
5
- "type": "custom",
6
- "enabled": true,
7
- "systemKind": "enterpriseKnowledge",
8
- "authentication": {
9
- "authType": "none"
10
- },
11
- "configuration": [],
12
- "dataSources": [],
13
- "subscriptions": [
14
- {
15
- "key": "enterprise-integration-lifecycle-generator",
16
- "displayName": "Enterprise integration lifecycle generator",
17
- "description": "Regenerate enterprise repository and template MCP datasources when provider datasources publish.",
18
- "event": "platform.datasource.published",
19
- "filter": {
20
- "resourceTypes": ["repository", "template"]
21
- },
22
- "task": {
23
- "type": "generateEnterpriseDatasources",
24
- "version": 1
25
- },
26
- "runOnCreate": true
27
- }
28
- ]
29
- }
@@ -1,2 +0,0 @@
1
- # Enterprise MCP integration lifecycle anchor — no secrets required.
2
- # Publish once per environment before repository/template provider datasources.
@@ -1,81 +0,0 @@
1
- # Platform integrations (aifabrix-builder SSOT)
2
-
3
- Production and platform integration manifests live here — **not** in aifabrix-dataplane `integration/` (lab/CI mirrors only).
4
-
5
- **Use the Builder CLI for everything below** — do not hand-scaffold folders or copy from dataplane. SSOT files in git are maintained by the team; developers bootstrap and change integrations with `aifabrix` commands.
6
-
7
- ## Three-layer model (154.0 / 154.1)
8
-
9
- | Layer | Artifact | Path | Bootstrap (Builder CLI) |
10
- | --- | --- | --- | --- |
11
- | **1 — Builder API** | Platform webapp (workspace HTTP orchestration) | `../builder/builder-api/` | `aifabrix up-builder-api` or `aifabrix create builder-api --template builder-api --type webapp` |
12
- | **1 — GitHub provider** | Production GitHub external system (`apiProvider: github`) | `github/` | `aifabrix create github --type external` then repair/json — **not** OpenAPI wizard (custom CIP + delegated OAuth) |
13
- | **2 — Enterprise MCP** | COM anchor (repository.\*, template.\*) | `../enterprise-knowledge/enterprise-integration-lifecycle/` | `aifabrix create enterprise-integration-lifecycle --type external` then edit system subscriptions — wizard does not generate COM tasks yet |
14
-
15
- **Role assistants (Layer 3):** Platform-generated from certified business roles — not hand-authored integration folders here. See [How role assistants are created](https://docs.aifabrix.ai/docs/role-assistants-how-role-assistants-are-created). Admins **Activate for AI**; users do not submit role keys or capability lists.
16
-
17
- ```text
18
- builder-api → WORKSPACE_ROOT/{userId}/integration/{systemKey}/
19
- → Enterprise MCP execute on enterprise-integration-lifecycle
20
- github → production repository provider (aifabrix upload → dataplane)
21
- ```
22
-
23
- ## Builder CLI workflow (normative)
24
-
25
- ### Prerequisites
26
-
27
- ```bash
28
- aifabrix auth status
29
- aifabrix up-infra # Postgres, Redis
30
- aifabrix up-platform # or up-miso + up-dataplane + up-builder-api
31
- ```
32
-
33
- ### Builder API (webapp — `builder/`, not `integration/`)
34
-
35
- Materialized from `templates/applications/builder-api/` into `builder/builder-api/`:
36
-
37
- ```bash
38
- aifabrix up-builder-api # copy template if missing, resolve, run
39
- aifabrix resolve builder-api # expand url:// and kv:// in env.template → .env
40
- aifabrix run builder-api --reload # or: pnpm run dev-reload (from aifabrix-builder repo root)
41
- aifabrix validate builder-api
42
- ```
43
-
44
- Repo maintainers edit SSOT under `builder/builder-api/` and run `npm run sync-json` to refresh templates — same pattern as miso-controller/dataplane.
45
-
46
- ### External integrations (`integration/<systemKey>/`)
47
-
48
- | Command | When |
49
- | --- | --- |
50
- | `aifabrix create <app> --type external` | New integration folder scaffold |
51
- | `aifabrix wizard` / `aifabrix wizard --config …` | OpenAPI/MCP/known-platform integrations (HubSpot, etc.) |
52
- | `aifabrix repair <systemKey>` | Fix manifest drift, auth, env.template, `deploy.js`, deploy JSON |
53
- | `aifabrix json <systemKey>` | Regenerate `<systemKey>-deploy.json` |
54
- | `aifabrix validate <systemKey>` | Schema + deployment manifest gate |
55
- | `aifabrix upload <systemKey> --probe` | Publish config to dataplane (pipeline) |
56
- | `aifabrix download <systemKey>` | Pull an already-published system from dataplane into `integration/` |
57
-
58
- **Platform SSOT in this repo** was checked in after initial `create` + manual COM/custom auth edits (see each folder’s `INTEGRATION_CHANGELOG.md`).
59
-
60
- ### Publish order (dev)
61
-
62
- ```bash
63
- aifabrix upload enterprise-integration-lifecycle --probe
64
- aifabrix upload github --probe
65
- aifabrix run builder-api --reload
66
- ```
67
-
68
- Enterprise MCP anchor must be on dataplane **before** repository provider integrations such as **`github`**.
69
-
70
- ## Why not wizard for these two?
71
-
72
- | Integration | Reason |
73
- | --- | --- |
74
- | `github` | `type: custom`, `authType: apiProvider` (Miso GitHub App + delegated OAuth). Wizard targets OpenAPI/MCP shapes; manifests are maintained with `create` → edit → `repair` → `json`. |
75
- | `enterprise-integration-lifecycle` | COM subscription + `generateEnterpriseDatasources` task. Not generated by wizard today; use `create --type external` + system.json subscription block. |
76
-
77
- For standard CRM/API integrations, use `integration/wizard-configs/*.yaml` and `aifabrix wizard --config …` (see `integration/hubspot-test/` examples).
78
-
79
- **Note:** Dataplane may still mirror legacy `integration/test-e2e-github/` for CI until aligned; **production SSOT is `integration/github/`** in this repo.
80
-
81
- Lab-only fixtures (`hubspot-test/`, `roundtrip-test-local*`) remain for Builder CLI regression tests.
@@ -1,53 +0,0 @@
1
- # GitHub (production repository provider)
2
-
3
- **Production SSOT** for the GitHub repository provider (Layer 1 — 154.1). Path: **`aifabrix-builder/integration/github/`**.
4
-
5
- Delegated OAuth via Miso **`apiProvider: github`**, issues/comments datasources, and **`github-repository`** (`resourceType: repository`) for Enterprise MCP lifecycle.
6
-
7
- **Setup:** `aifabrix upload github --probe` after Miso GitHub provider is linked.
8
-
9
- ## Scope
10
-
11
- | Datasource | Operations |
12
- | --- | --- |
13
- | `github-issues` | list, get, create, update, delete (maps to **close**; GitHub has no hard delete) |
14
- | `github-issue-comments` | list (by `issueNumber`), create |
15
- | `github-repository` | repository lifecycle CIP (`status`, `sync`, branches, reviews, pipeline dispatch) |
16
-
17
- ## Authentication
18
-
19
- - External system key: **`github`**
20
- - Auth: **`authType: apiProvider`** → Miso provider **`github`**
21
- - Use a **GitHub App** with **expiring user access tokens** (refresh tokens required for Miso link/mint).
22
- - Link the provider for your user in Miso before running CIP execute tests.
23
-
24
- ## Configuration
25
-
26
- | Variable | Purpose |
27
- | --- | --- |
28
- | `BASE_URL` | `https://api.github.com` (default in manifest) |
29
- | `GITHUB_OWNER` | Repository owner |
30
- | `GITHUB_REPO` | Repository name |
31
-
32
- See [`env.template`](env.template) for deploy placeholders.
33
-
34
- ## Quick start
35
-
36
- ```bash
37
- aifabrix validate github
38
- aifabrix json github
39
- aifabrix upload github --probe
40
-
41
- # Or run the generated deploy script from the integration folder:
42
- node integration/github/deploy.js
43
- ```
44
-
45
- ## Manifest files
46
-
47
- | File | Role |
48
- | --- | --- |
49
- | [`github-system.json`](github-system.json) | External system |
50
- | [`github-datasource-issues.json`](github-datasource-issues.json) | Issues datasource |
51
- | [`github-datasource-issue-comments.json`](github-datasource-issue-comments.json) | Comments datasource |
52
- | [`github-datasource-repository.json`](github-datasource-repository.json) | Repository datasource (`resourceType: repository`) |
53
- | [`github-deploy.json`](github-deploy.json) | Pipeline upload payload (regenerate with `aifabrix json github`) |
@@ -1,21 +0,0 @@
1
- {
2
- "app": {
3
- "key": "github",
4
- "displayName": "GitHub",
5
- "description": "Production GitHub repository provider: delegated OAuth via Miso apiProvider, issues, comments, and repository lifecycle CIP.",
6
- "type": "external"
7
- },
8
- "externalIntegration": {
9
- "schemaBasePath": "./",
10
- "systems": [
11
- "github-system.json"
12
- ],
13
- "dataSources": [
14
- "github-datasource-issues.json",
15
- "github-datasource-issue-comments.json",
16
- "github-datasource-repository.json"
17
- ],
18
- "autopublish": true,
19
- "version": "1.0.0"
20
- }
21
- }