@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.
- package/lib/app/deploy-config.js +3 -2
- package/lib/channels/add-channel.js +11 -41
- package/lib/channels/approval-guides/index.js +3 -0
- package/lib/channels/approval-guides/microsoft-copilot.js +26 -17
- package/lib/channels/channel-add-existing.js +72 -0
- package/lib/channels/channel-runtime-resolver.js +5 -1
- package/lib/channels/channel-status-display.js +30 -3
- package/lib/channels/microsoft-copilot-entra-sso-form.js +73 -2
- package/lib/channels/microsoft-copilot-entra-sso.js +26 -5
- package/lib/channels/microsoft-copilot-limits.js +22 -3
- package/lib/channels/microsoft-copilot-package.js +59 -14
- package/lib/channels/microsoft-copilot-validate.js +40 -10
- package/lib/cli/attach-default-help-examples.js +102 -0
- package/lib/cli/index.js +2 -0
- package/lib/cli/setup-credential-deployment.js +7 -5
- package/lib/cli/setup-utility-validate.js +1 -0
- package/lib/commands/credential-push.js +37 -5
- package/lib/commands/package-score.js +72 -0
- package/lib/commands/role-assistant.js +46 -8
- package/lib/deployment/deployer-poll-run.js +2 -2
- package/lib/deployment/deployer.js +1 -1
- package/lib/deployment/environment.js +2 -2
- package/lib/external-system/deploy.js +11 -21
- package/lib/integration-definition/apply.js +12 -14
- package/lib/integration-definition/enrich-openapi-operations.js +9 -10
- package/lib/lab/package-parity-score.js +417 -0
- package/lib/programmatic/capability-registry.js +1 -0
- package/lib/programmatic/help-content/channel-onboarding.md +35 -0
- package/lib/programmatic/help-content/cip-overview.md +27 -0
- package/lib/programmatic/help-content/connected-system-ui.md +70 -0
- package/lib/programmatic/help-content/dimensions-guide.md +23 -0
- package/lib/programmatic/help-content/enterprise-sync-fabrix.md +123 -0
- package/lib/programmatic/help-content/overview.md +25 -0
- package/lib/programmatic/help-content/subscription-guide.md +27 -0
- package/lib/programmatic/help-content/workflow.md +50 -0
- package/lib/programmatic/openapi-component-schemas.js +1 -0
- package/lib/programmatic/openapi-descriptions.js +6 -0
- package/lib/programmatic/openapi-envelope-examples.js +11 -0
- package/lib/programmatic/openapi-operation-bindings.js +5 -0
- package/lib/programmatic/openapi-request-schemas.js +39 -13
- package/lib/programmatic/openapi-result-schemas.js +30 -0
- package/lib/programmatic/openapi-schema-descriptions-core.js +18 -0
- package/lib/programmatic/openapi-schema-descriptions-operations.js +19 -0
- package/lib/programmatic/persist-supplied-openapi.js +180 -0
- package/lib/programmatic/route-handler-map.js +6 -0
- package/lib/programmatic/run-integration-definition.js +13 -5
- package/lib/role-assistant/evidence-sync.js +55 -7
- package/lib/role-assistant/test-runner-attachments.js +118 -0
- package/lib/role-assistant/test-runner-bid-apply.js +100 -21
- package/lib/role-assistant/test-runner-bid-document.js +1 -1
- package/lib/role-assistant/test-runner-start-payload.js +96 -0
- package/lib/role-assistant/test-runner-workhub-answers.js +11 -7
- package/lib/role-assistant/test-runner-workhub-helpers.js +100 -0
- package/lib/role-assistant/test-runner-workhub-soft.js +86 -0
- package/lib/role-assistant/test-runner-workhub.js +68 -105
- package/lib/role-assistant/test-runner.js +5 -63
- package/lib/role-assistant/test-suite.js +33 -40
- package/lib/schema/external-datasource.schema.json +13 -4
- package/lib/utils/compose-generator.js +10 -1
- package/lib/utils/compose-traefik-extra-routes.js +107 -0
- package/lib/utils/docker-build.js +2 -2
- package/lib/utils/help-builder.js +2 -1
- package/lib/utils/promote-dev-docker-image.js +15 -10
- package/package.json +14 -16
- package/templates/README.md +12 -1
- package/templates/applications/dataplane/application.yaml +8 -1
- package/templates/applications/dataplane/env.template +1 -1
- package/templates/applications/miso-controller/application.yaml +2 -1
- package/templates/applications/miso-controller/rbac.yaml +1 -0
- package/templates/channels/microsoft-copilot/ai-plugin.template.json.hbs +6 -2
- package/templates/channels/microsoft-copilot/entra-sso-registration.template.md.hbs +8 -5
- package/templates/channels/microsoft-copilot/fi-fi.template.json.hbs +7 -0
- package/templates/channels/microsoft-copilot/install.template.md.hbs +74 -22
- package/templates/channels/microsoft-copilot/manifest.template.json.hbs +29 -14
- package/templates/channels/microsoft-copilot/oauth-plugin-vault-required.template.md.hbs +6 -2
- package/templates/python/docker-compose.hbs +36 -0
- package/templates/typescript/docker-compose.hbs +36 -0
- package/.cursor/plans/Archive/157.1-security-quality-violations-by-type.csv +0 -374
- package/.cursor/process/README.md +0 -9
- package/.cursor/rules/anchor-docs.mdc +0 -15
- package/.cursor/rules/assistant-driven-integration-build.mdc +0 -40
- package/.cursor/rules/cli-layout.mdc +0 -81
- package/.cursor/rules/cli-product-neutral.mdc +0 -43
- package/.cursor/rules/deploy-rules/docker-image-ip-policy.mdc +0 -49
- package/.cursor/rules/docs-rules.mdc +0 -32
- package/.cursor/rules/plan-rules/application-lifecycle.mdc +0 -30
- package/.cursor/rules/plan-rules/plan-frontmatter.mdc +0 -35
- package/.cursor/rules/plan-rules/plan-lifecycle.mdc +0 -31
- package/.cursor/rules/plan-rules/plan-validation-gate.mdc +0 -34
- package/.cursor/rules/project-rules.mdc +0 -913
- package/.cursor/skills/README.md +0 -15
- package/.dockerignore +0 -52
- package/.eslintignore +0 -22
- package/.markdownlint.json +0 -14
- package/anchor-docs/README.md +0 -10
- package/anchor-docs/_TEMPLATE +0 -24
- package/babel.config.js +0 -6
- package/bin/builder-api-cleanup.js +0 -26
- package/bin/builder-api-nest.js +0 -10
- package/bin/builder-api-spike.js +0 -19
- package/enterprise-knowledge/README.md +0 -50
- package/enterprise-knowledge/enterprise-integration-lifecycle/README.md +0 -22
- package/enterprise-knowledge/enterprise-integration-lifecycle/application.json +0 -15
- package/enterprise-knowledge/enterprise-integration-lifecycle/deploy.js +0 -69
- package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-deploy.json +0 -52
- package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-system.json +0 -29
- package/enterprise-knowledge/enterprise-integration-lifecycle/env.template +0 -2
- package/integration/README.md +0 -81
- package/integration/github/README.md +0 -53
- package/integration/github/application.json +0 -21
- package/integration/github/deploy.js +0 -72
- package/integration/github/env.template +0 -11
- package/integration/github/github-datasource-issue-comments.json +0 -239
- package/integration/github/github-datasource-issues.json +0 -399
- package/integration/github/github-datasource-repository.json +0 -354
- package/integration/github/github-deploy.json +0 -1202
- package/integration/github/github-system.json +0 -82
- package/integration/hubspot-test/README.md +0 -159
- package/integration/hubspot-test/application.json +0 -54
- package/integration/hubspot-test/companies.json +0 -2048
- package/integration/hubspot-test/create-hubspot.js +0 -523
- package/integration/hubspot-test/env.template +0 -4
- package/integration/hubspot-test/hubspot-test-datasource-company.json +0 -138
- package/integration/hubspot-test/hubspot-test-datasource-contact.json +0 -146
- package/integration/hubspot-test/hubspot-test-datasource-deal.json +0 -146
- package/integration/hubspot-test/hubspot-test-datasource-users.json +0 -76
- package/integration/hubspot-test/hubspot-test-deploy.json +0 -2160
- package/integration/hubspot-test/hubspot-test-system.json +0 -74
- package/integration/hubspot-test/rbac.json +0 -166
- package/integration/hubspot-test/test-artifacts/wizard-hubspot-credential-real.yaml +0 -20
- package/integration/hubspot-test/test-artifacts/wizard-hubspot-env-vars.yaml +0 -9
- package/integration/hubspot-test/test-artifacts/wizard-invalid-add-datasource.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-invalid-app-name.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-invalid-credential-create.yaml +0 -7
- package/integration/hubspot-test/test-artifacts/wizard-invalid-credential-select.yaml +0 -7
- package/integration/hubspot-test/test-artifacts/wizard-invalid-known-platform.yaml +0 -4
- package/integration/hubspot-test/test-artifacts/wizard-invalid-missing-app.yaml +0 -4
- package/integration/hubspot-test/test-artifacts/wizard-invalid-missing-source.yaml +0 -2
- package/integration/hubspot-test/test-artifacts/wizard-invalid-mode.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-invalid-openapi-file.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-invalid-openapi-url.yaml +0 -4
- package/integration/hubspot-test/test-artifacts/wizard-invalid-source.yaml +0 -4
- package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-array-test.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-key-test.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-path-test.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-valid-for-dimension-test.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-valid-for-rbac-test.yaml +0 -5
- package/integration/hubspot-test/test-artifacts/wizard-valid-for-rbac-yaml-test.yaml +0 -5
- package/integration/hubspot-test/test-dataplane-down-helpers.js +0 -249
- package/integration/hubspot-test/test-dataplane-down-tests.js +0 -386
- package/integration/hubspot-test/test-dataplane-down.js +0 -209
- package/integration/hubspot-test/test.js +0 -1588
- package/integration/hubspot-test/wizard-hubspot-e2e.yaml +0 -16
- package/integration/hubspot-test/wizard-hubspot-platform.yaml +0 -8
- package/integration/hubspot-test/wizard-hubspot-test-headless.yaml +0 -23
- package/integration/roundtrip-test-local/README.md +0 -143
- package/integration/roundtrip-test-local/application.yaml +0 -13
- package/integration/roundtrip-test-local/env.template +0 -15
- package/integration/roundtrip-test-local/roundtrip-test-local-datasource-roundtrip-test-company.yaml +0 -14
- package/integration/roundtrip-test-local/roundtrip-test-local-deploy.json +0 -61
- package/integration/roundtrip-test-local/roundtrip-test-local-system.yaml +0 -25
- package/integration/roundtrip-test-local2/README.md +0 -143
- package/integration/roundtrip-test-local2/application.yaml +0 -13
- package/integration/roundtrip-test-local2/env.template +0 -15
- package/integration/roundtrip-test-local2/roundtrip-test-local2-datasource-company.yaml +0 -31
- package/integration/roundtrip-test-local2/roundtrip-test-local2-deploy.json +0 -86
- package/integration/roundtrip-test-local2/roundtrip-test-local2-system.yaml +0 -25
- package/integration/test/wizard.yaml +0 -8
- package/jest.config.coverage.js +0 -37
- package/jest.config.default.js +0 -11
- package/jest.config.integration.fixtures.js +0 -22
- package/jest.config.integration.js +0 -33
- package/jest.config.isolated.js +0 -11
- package/jest.config.manual.js +0 -30
- package/jest.global-live-fabrix-hooks.js +0 -36
- package/jest.isolated-projects.js +0 -283
- package/jest.projects.js +0 -79
- package/lib/integration-definition/openapi-enrichment/hubspot-crm-companies.json +0 -205
- package/packages/builder-api/README.md +0 -120
- package/packages/builder-api/package.json +0 -30
- package/packages/builder-api/src/app.module.ts +0 -7
- package/packages/builder-api/src/auth/auth.module.ts +0 -5
- package/packages/builder-api/src/external-system/external-system.module.ts +0 -5
- package/packages/builder-api/src/main.ts +0 -16
- package/packages/builder-api/tsconfig.json +0 -15
- package/scripts/check-builder-api-architecture-grep.js +0 -79
- package/scripts/check-datasource-test-run-schema-sync.js +0 -34
- package/scripts/ci-fix.sh +0 -19
- package/scripts/ci-simulate.sh +0 -19
- package/scripts/diagnose-cli.js +0 -150
- package/scripts/docker_image_content_gate.js +0 -47
- package/scripts/docker_image_content_gate.sh +0 -5
- package/scripts/export-builder-api-evidence.js +0 -262
- package/scripts/install-local.js +0 -490
- package/scripts/lib/builder-api-docker-staging-copy.js +0 -60
- package/scripts/lib/builder-api-docker-staging-core.js +0 -183
- package/scripts/lib/docker-image-content-gate-core.js +0 -166
- package/scripts/lib/plan-actor.js +0 -109
- package/scripts/lib/plan-config.js +0 -20
- package/scripts/lib/plan-gates.js +0 -154
- package/scripts/lib/plan-meta.js +0 -104
- package/scripts/lib/plan-parse.js +0 -162
- package/scripts/lib/plan-prevalidate-gates.js +0 -337
- package/scripts/lib/plan-run-core.js +0 -125
- package/scripts/lib/plan-run-report.js +0 -119
- package/scripts/plan-approve.js +0 -24
- package/scripts/plan-archive.js +0 -49
- package/scripts/plan-run.js +0 -13
- package/scripts/plan-set-actor.js +0 -21
- package/scripts/plan-validate.js +0 -80
- package/scripts/pnpm/af.mjs +0 -125
- package/scripts/pnpm/check-quiet.mjs +0 -32
- package/scripts/pnpm/dev-install.mjs +0 -29
- package/scripts/pnpm/dev-reload.mjs +0 -18
- package/scripts/pnpm/help.mjs +0 -55
- package/scripts/pnpm/lib/dev-reload-core.mjs +0 -189
- package/scripts/pnpm/lib/dev-reload-log-capture.mjs +0 -67
- package/scripts/pnpm/lib/dev-reload-log-utils.mjs +0 -32
- package/scripts/pnpm/lib/resolve-aifabrix-bin.mjs +0 -124
- package/scripts/pnpm/lib/resolve-app-url.mjs +0 -183
- package/scripts/pnpm/lib/spinner.mjs +0 -42
- package/scripts/pnpm-global-remove.js +0 -48
- package/scripts/stage_builder_api_for_docker.js +0 -65
- package/scripts/sync-builder-api-template.js +0 -44
- package/scripts/test-dataplane-bootstrap.js +0 -331
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"key": "github",
|
|
3
|
-
"displayName": "GitHub",
|
|
4
|
-
"description": "Production GitHub REST integration: repository issues (list/create/update/close), issue comments, and repository lifecycle operations. Uses Miso apiProvider github with GitHub App expiring user tokens.",
|
|
5
|
-
"type": "custom",
|
|
6
|
-
"enabled": true,
|
|
7
|
-
"authentication": {
|
|
8
|
-
"authType": "apiProvider",
|
|
9
|
-
"apiProvider": {
|
|
10
|
-
"apiProviderKey": "github"
|
|
11
|
-
}
|
|
12
|
-
},
|
|
13
|
-
"configuration": [
|
|
14
|
-
{
|
|
15
|
-
"name": "BASE_URL",
|
|
16
|
-
"value": "https://api.github.com",
|
|
17
|
-
"location": "variable",
|
|
18
|
-
"required": true
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"name": "GITHUB_OWNER",
|
|
22
|
-
"value": "{{GITHUB_OWNER}}",
|
|
23
|
-
"location": "variable",
|
|
24
|
-
"required": true,
|
|
25
|
-
"portalInput": {
|
|
26
|
-
"field": "text",
|
|
27
|
-
"label": "GitHub repository owner",
|
|
28
|
-
"placeholder": "Organization or user login (e.g. octocat)",
|
|
29
|
-
"validation": {
|
|
30
|
-
"required": true,
|
|
31
|
-
"minLength": 1
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"name": "GITHUB_REPO",
|
|
37
|
-
"value": "{{GITHUB_REPO}}",
|
|
38
|
-
"location": "variable",
|
|
39
|
-
"required": true,
|
|
40
|
-
"portalInput": {
|
|
41
|
-
"field": "text",
|
|
42
|
-
"label": "GitHub repository name",
|
|
43
|
-
"placeholder": "Repository name without owner (e.g. Hello-World)",
|
|
44
|
-
"validation": {
|
|
45
|
-
"required": true,
|
|
46
|
-
"minLength": 1
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
],
|
|
51
|
-
"endpoints": [
|
|
52
|
-
{
|
|
53
|
-
"type": "issues",
|
|
54
|
-
"path": "/issues",
|
|
55
|
-
"description": "GitHub repository issues",
|
|
56
|
-
"active": true
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"type": "comments",
|
|
60
|
-
"path": "/comments",
|
|
61
|
-
"description": "GitHub issue comments",
|
|
62
|
-
"active": true
|
|
63
|
-
}
|
|
64
|
-
],
|
|
65
|
-
"endpointsActive": true,
|
|
66
|
-
"dataSources": [
|
|
67
|
-
"github-issues",
|
|
68
|
-
"github-issue-comments",
|
|
69
|
-
"github-repository"
|
|
70
|
-
],
|
|
71
|
-
"certification": {
|
|
72
|
-
"enabled": true,
|
|
73
|
-
"publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtwvWqPVKNUCLAmBIrK0u\nrsxzgtvIiyIFQVc+T5FeBYevUDOoS2VBF0aOCJGGV8P+ARzU7PtaTCZYvRvsmqou\namy+c1+b0kGCObh/gxGGVCFmbH4VCfQ2xkwML8vvAHXBW1v9Abu9EuTv3YpIZUSh\nq+0xuivs3xYwq5Lm/K10WaWzfwbjCND0K7aQmNhQq+n45EjgmkEWV2gQUDyALzsW\nfTikMtbBJEQ8BSCN8uOsZsa8MH2bBFgThIUXX/gxeUIEBfEavi8F3eR2ZC+Q/if2\nJkIwUCcH5nN2jTCDZgt5CLTIhYs51A+1kLTjtCmJ2fMmeV7Wr3DgnzdbM1cHRnT+\nlwIDAQAB\n-----END PUBLIC KEY-----",
|
|
74
|
-
"algorithm": "RS256",
|
|
75
|
-
"issuer": "Dataplane - community edition",
|
|
76
|
-
"version": "1.0.0",
|
|
77
|
-
"status": "passed",
|
|
78
|
-
"level": "SILVER",
|
|
79
|
-
"publicKeyFingerprint": "sha256:e14a67b980051e46d6b15e2c42c57aea6328d8c96622d10f01e4f9c2f22af3c5",
|
|
80
|
-
"contractHash": "sha256:70531b5131122bd8b93c948dc93506b9d3cce5fe28efa4a28d136022f834ccc5"
|
|
81
|
-
}
|
|
82
|
-
}
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# HubSpot CRM
|
|
2
|
-
|
|
3
|
-
HubSpot CRM integration with OpenAPI support for companies, contacts, and deals
|
|
4
|
-
|
|
5
|
-
## System Information
|
|
6
|
-
|
|
7
|
-
- **System Key**: `hubspot-test`
|
|
8
|
-
- **System Type**: `openapi`
|
|
9
|
-
- **Datasources**: 4
|
|
10
|
-
|
|
11
|
-
## Regenerating files with the CLI (recommended)
|
|
12
|
-
|
|
13
|
-
Datasource and system JSON under this folder are **normally produced by the Builder**, not edited by hand for structural/schema changes. Use one of these flows (from the **repository root**):
|
|
14
|
-
|
|
15
|
-
1. **Interactive wizard** (writes to `integration/hubspot-test/` when the app key is `hubspot-test`):
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
aifabrix wizard hubspot-test
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
2. **Headless wizard – known platform HubSpot** (same folder; needs dataplane + auth):
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
node bin/aifabrix.js wizard \
|
|
25
|
-
--config integration/hubspot-test/wizard-hubspot-test-headless.yaml \
|
|
26
|
-
--controller <YOUR_CONTROLLER_URL> \
|
|
27
|
-
--environment <YOUR_ENV>
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Edit `deployment.controller` / `deployment.environment` in that YAML if you prefer not to pass flags.
|
|
31
|
-
|
|
32
|
-
3. **Helper script** (generates a temporary wizard config and runs the CLI; defaults OpenAPI to `companies.json` in this directory):
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
node integration/hubspot-test/create-hubspot.js --name hubspot-test --keep-wizard-files
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
After regeneration, run `aifabrix validate hubspot-test --type external` and the HubSpot integration tests as needed.
|
|
39
|
-
|
|
40
|
-
Committed copies may still be **trimmed or adjusted** for repo tests (e.g. deterministic fields); prefer changing **generators/templates** in `lib/` and `templates/` when defaults should change for everyone.
|
|
41
|
-
|
|
42
|
-
## Files
|
|
43
|
-
|
|
44
|
-
- `application.yaml` – Application configuration with `app` and `externalIntegration` blocks
|
|
45
|
-
- `hubspot-test-system.json` – External system definition (authentication, OpenAPI/MCP, RBAC)
|
|
46
|
-
- `hubspot-test-datasource-deal.json` – Datasource: HubSpot Deal
|
|
47
|
-
- `hubspot-test-datasource-contact.json` – Datasource: HubSpot Contact
|
|
48
|
-
- `hubspot-test-datasource-users.json` – Datasource: HubSpot Users
|
|
49
|
-
- `hubspot-test-datasource-company.json` – Datasource: HubSpot Company
|
|
50
|
-
- `env.template` – Environment variables template (secrets, API keys)
|
|
51
|
-
- `hubspot-test-deploy.json` – Deployment manifest (generated by `aifabrix json`)
|
|
52
|
-
|
|
53
|
-
Optional: `rbac.yaml` – Roles and permissions merged into the system when present.
|
|
54
|
-
|
|
55
|
-
## Quick Start
|
|
56
|
-
|
|
57
|
-
### 1. Create External System
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
aifabrix create hubspot-test
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
(External is the default type. Use `aifabrix create <name> --type webapp` for a builder app.)
|
|
64
|
-
|
|
65
|
-
Or use the interactive wizard:
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
aifabrix wizard --app hubspot-test
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### 2. Configure Authentication and Datasources
|
|
72
|
-
|
|
73
|
-
Edit files in `integration/hubspot-test/`:
|
|
74
|
-
|
|
75
|
-
- **Authentication**: `hubspot-test-system.json` (auth type, credentials placeholders)
|
|
76
|
-
- **Field mappings**: `hubspot-test-datasource-*.json` (dimensions, attributes, operations)
|
|
77
|
-
|
|
78
|
-
### 3. Validate Configuration
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
aifabrix validate hubspot-test --type external
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### 4. Generate Deployment Manifest
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
aifabrix json hubspot-test --type external
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
This creates `hubspot-test-deploy.json` in `integration/hubspot-test/`.
|
|
91
|
-
|
|
92
|
-
### 5. Deploy
|
|
93
|
-
|
|
94
|
-
Controller URL and environment are read from config. Configure and log in first:
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
aifabrix auth config --set-controller <url> --set-environment dev
|
|
98
|
-
aifabrix login
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
Then deploy:
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
aifabrix deploy hubspot-test
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## Testing
|
|
108
|
-
|
|
109
|
-
### Unit Tests (Local Validation, No API)
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
aifabrix test hubspot-test
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Integration Tests (Via Dataplane)
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
aifabrix test-integration hubspot-test
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## Deployment
|
|
122
|
-
|
|
123
|
-
Deploy via miso-controller pipeline (same as regular apps). Auth and controller come from `aifabrix login` and `aifabrix auth config`:
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
aifabrix deploy hubspot-test
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
## Wizard E2E tests (`test.js`)
|
|
130
|
-
|
|
131
|
-
Run positive wizard tests with:
|
|
132
|
-
|
|
133
|
-
```bash
|
|
134
|
-
pnpm run test:hubspot-wizard -- --type positive
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
If you see **"Invalid token or insufficient permissions"** or **"Failed to create wizard session"** even though `aifabrix auth status` shows connected, the dataplane may be configured to accept only **client credentials** for the wizard API, not device tokens.
|
|
138
|
-
|
|
139
|
-
**Option A – Use client credentials (recommended if dataplane requires them)**
|
|
140
|
-
|
|
141
|
-
1. Get a **client ID** and **client secret** for an app that the dataplane accepts for wizard (e.g. from your admin or Miso/Keycloak for the environment).
|
|
142
|
-
2. Put them in **`~/.aifabrix/secrets.local.yaml`** under keys that depend on the **app name in the wizard config**:
|
|
143
|
-
- For `wizard-hubspot-e2e.yaml` the app name is `wizard-e2e-e2e`, so use:
|
|
144
|
-
- `wizard-e2e-e2e-client-idKeyVault`: `<your client id>`
|
|
145
|
-
- `wizard-e2e-e2e-client-secretKeyVault`: `<your client secret>`
|
|
146
|
-
- If your platform uses a single “wizard” or “dataplane” app for all wizard runs, ask your admin for that app’s client ID/secret and the exact key names (they may be something like `dataplane-client-idKeyVault` / `dataplane-client-secretKeyVault`; the builder looks up `<appName>-client-idKeyVault` and `<appName>-client-secretKeyVault` where `appName` comes from the config file).
|
|
147
|
-
3. **Optional fallback:** you can also set **`integration/hubspot-test/.env`** with `CLIENTID` and `CLIENTSECRET`; the test runner maps those to `HUBSPOT_CLIENT_ID` / `HUBSPOT_CLIENT_SECRET` for real-credential tests, and the token manager uses `CLIENTID`/`CLIENTSECRET` when no secrets file entry exists for the app.
|
|
148
|
-
|
|
149
|
-
**Option B – Use device token**
|
|
150
|
-
|
|
151
|
-
If the dataplane is configured to accept device tokens for the wizard API, ensure you are logged in with `aifabrix login` and that the controller URL and environment match (e.g. `dev`). No client credentials are needed.
|
|
152
|
-
|
|
153
|
-
When this error appears, `pnpm test:hubspot-wizard` **skips** the live wizard cases (exit code 0) so optional CI/agents are not blocked; configure client credentials or dataplane auth to run those cases for real.
|
|
154
|
-
|
|
155
|
-
## Troubleshooting
|
|
156
|
-
|
|
157
|
-
- **Validation errors**: Run `aifabrix validate hubspot-test --type external` to see schema and manifest errors.
|
|
158
|
-
- **Deployment / auth**: Run `aifabrix auth config --set-controller <url> --set-environment <env>` and `aifabrix login` before `aifabrix deploy`.
|
|
159
|
-
- **File not found**: Run commands from the project root (where `package.json` and `integration/` live).
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"app": {
|
|
3
|
-
"key": "hubspot-test",
|
|
4
|
-
"displayName": "HubSpot CRM",
|
|
5
|
-
"description": "HubSpot CRM integration with OpenAPI support for companies, contacts, and deals",
|
|
6
|
-
"type": "external"
|
|
7
|
-
},
|
|
8
|
-
"externalIntegration": {
|
|
9
|
-
"schemaBasePath": "./",
|
|
10
|
-
"systems": [
|
|
11
|
-
"hubspot-test-system.json"
|
|
12
|
-
],
|
|
13
|
-
"dataSources": [
|
|
14
|
-
"hubspot-test-datasource-company.json",
|
|
15
|
-
"hubspot-test-datasource-contact.json",
|
|
16
|
-
"hubspot-test-datasource-deal.json",
|
|
17
|
-
"hubspot-test-datasource-users.json"
|
|
18
|
-
],
|
|
19
|
-
"autopublish": true,
|
|
20
|
-
"version": "1.0.0"
|
|
21
|
-
},
|
|
22
|
-
"configuration": [
|
|
23
|
-
{
|
|
24
|
-
"name": "HUBSPOT_API_VERSION",
|
|
25
|
-
"portalInput": {
|
|
26
|
-
"field": "select",
|
|
27
|
-
"label": "HubSpot API Version",
|
|
28
|
-
"placeholder": "Select API version",
|
|
29
|
-
"options": [
|
|
30
|
-
"v1",
|
|
31
|
-
"v2",
|
|
32
|
-
"v3"
|
|
33
|
-
],
|
|
34
|
-
"validation": {
|
|
35
|
-
"required": false
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"name": "MAX_PAGE_SIZE",
|
|
41
|
-
"portalInput": {
|
|
42
|
-
"field": "text",
|
|
43
|
-
"label": "Maximum Page Size",
|
|
44
|
-
"placeholder": "100",
|
|
45
|
-
"validation": {
|
|
46
|
-
"required": false,
|
|
47
|
-
"pattern": "^[0-9]+$",
|
|
48
|
-
"minLength": 1,
|
|
49
|
-
"maxLength": 1000
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
]
|
|
54
|
-
}
|