@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.
- package/lib/api/datasources-extended.api.js +8 -8
- package/lib/api/keycloak.api.js +92 -0
- package/lib/api/token-providers.api.js +77 -0
- package/lib/api/types/keycloak.types.js +23 -0
- package/lib/api/types/token-providers.types.js +65 -0
- package/lib/app/deploy-config.js +3 -2
- package/lib/app/down.js +16 -1
- package/lib/channels/add-channel.js +134 -57
- package/lib/channels/approval-guides/chatgpt.js +1 -1
- package/lib/channels/approval-guides/index.js +3 -0
- package/lib/channels/approval-guides/microsoft-copilot.js +27 -14
- package/lib/channels/channel-add-ensure.js +128 -0
- package/lib/channels/channel-add-existing.js +72 -0
- package/lib/channels/channel-artifact-generator.js +11 -1
- package/lib/channels/channel-branding.js +94 -0
- package/lib/channels/channel-credential.js +8 -0
- package/lib/channels/channel-discovery.js +330 -0
- package/lib/channels/channel-external-system.js +1 -1
- package/lib/channels/channel-runtime-resolver.js +107 -14
- package/lib/channels/channel-status-display.js +36 -3
- package/lib/channels/microsoft-copilot-channel-add.js +138 -0
- package/lib/channels/microsoft-copilot-entra-sso-form.js +251 -0
- package/lib/channels/microsoft-copilot-entra-sso.js +285 -0
- package/lib/channels/microsoft-copilot-icons.js +74 -0
- package/lib/channels/microsoft-copilot-limits.js +103 -0
- package/lib/channels/microsoft-copilot-package.js +178 -52
- package/lib/channels/microsoft-copilot-validate.js +227 -0
- package/lib/cli/attach-default-help-examples.js +102 -0
- package/lib/cli/index.js +4 -0
- package/lib/cli/infra-guided.js +13 -6
- package/lib/cli/setup-credential-deployment.js +7 -5
- package/lib/cli/setup-infra.js +31 -4
- package/lib/cli/setup-utility-validate.js +1 -0
- package/lib/commands/channel-add-setup.js +28 -9
- package/lib/commands/channel.js +14 -10
- package/lib/commands/credential-push.js +37 -5
- package/lib/commands/integration-definition.js +158 -0
- package/lib/commands/package-score.js +72 -0
- package/lib/commands/repair-auth-apply.js +19 -5
- package/lib/commands/repair-datasource-sync-operations.js +4 -1
- package/lib/commands/role-assistant-test-output.js +200 -0
- package/lib/commands/role-assistant.js +163 -166
- package/lib/datasource/capability/capability-resolve.js +15 -5
- package/lib/datasource/capability/copy-operations.js +14 -4
- 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/infrastructure/index.js +19 -4
- package/lib/integration-definition/apply.js +476 -0
- package/lib/integration-definition/canonical-json.js +51 -0
- package/lib/integration-definition/emit-suite-bid.js +94 -0
- package/lib/integration-definition/enrich-crm-field-mappings.js +240 -0
- package/lib/integration-definition/enrich-openapi-operations.js +433 -0
- package/lib/integration-definition/from-discovery.js +339 -0
- package/lib/integration-definition/hash.js +37 -0
- package/lib/integration-definition/index.js +37 -0
- package/lib/integration-definition/resource-type-catalog.js +59 -0
- package/lib/integration-definition/system-kind-enum.js +40 -0
- package/lib/integration-definition/validate.js +148 -0
- package/lib/lab/package-parity-score.js +417 -0
- package/lib/programmatic/builder-api-request.js +5 -1
- package/lib/programmatic/builder-help-governance.js +3 -2
- package/lib/programmatic/capability-registry.js +20 -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 +7 -1
- package/lib/programmatic/openapi-descriptions.js +46 -0
- package/lib/programmatic/openapi-envelope-examples.js +280 -0
- package/lib/programmatic/openapi-operation-bindings.js +50 -0
- package/lib/programmatic/openapi-request-schemas.js +40 -0
- package/lib/programmatic/openapi-result-schemas-overflow.js +101 -0
- package/lib/programmatic/openapi-result-schemas.js +76 -99
- package/lib/programmatic/openapi-schema-descriptions-core.js +25 -4
- package/lib/programmatic/openapi-schema-descriptions-help.js +1 -1
- package/lib/programmatic/openapi-schema-descriptions-operations.js +43 -0
- package/lib/programmatic/openapi-schema-helpers.js +9 -9
- package/lib/programmatic/openapi-spec.js +11 -1
- package/lib/programmatic/orchestration-openapi-meta.js +10 -0
- package/lib/programmatic/persist-supplied-openapi.js +180 -0
- package/lib/programmatic/route-handler-map.js +35 -1
- package/lib/programmatic/run-channel-package.js +236 -0
- package/lib/programmatic/run-integration-definition.js +77 -0
- package/lib/role-assistant/evidence-sync.js +55 -7
- package/lib/role-assistant/knowledge-sync-logging.js +58 -0
- package/lib/role-assistant/knowledge-sync.js +88 -93
- package/lib/role-assistant/test-cases-bid.js +155 -0
- package/lib/role-assistant/test-cases-evaluate.js +9 -1
- package/lib/role-assistant/test-cases-honesty.js +24 -10
- package/lib/role-assistant/test-cases.js +28 -0
- package/lib/role-assistant/test-runner-attachments.js +118 -0
- package/lib/role-assistant/test-runner-bid-apply.js +201 -0
- package/lib/role-assistant/test-runner-bid-document.js +278 -0
- package/lib/role-assistant/test-runner-start-payload.js +96 -0
- package/lib/role-assistant/test-runner-workhub-answers.js +249 -20
- 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 +152 -107
- package/lib/role-assistant/test-runner.js +5 -63
- package/lib/role-assistant/test-suite.js +112 -0
- package/lib/schema/application-schema.json +56 -6
- package/lib/schema/external-datasource.schema.json +103 -17
- package/lib/schema/external-system.schema.json +54 -3
- package/lib/schema/integration-definition.schema.json +195 -0
- package/lib/utils/authentication-shape.js +6 -0
- 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 +3 -1
- package/lib/utils/promote-dev-docker-image.js +102 -18
- package/lib/utils/transient-developer-id.js +28 -0
- package/package.json +14 -16
- package/templates/README.md +12 -1
- package/templates/applications/dataplane/application.yaml +10 -2
- package/templates/applications/dataplane/env.template +7 -6
- package/templates/applications/miso-controller/application.yaml +23 -8
- package/templates/applications/miso-controller/env.template +8 -2
- package/templates/applications/miso-controller/rbac.yaml +1 -0
- package/templates/channels/README.md +11 -1
- package/templates/channels/brand/color-192.png +0 -0
- package/templates/channels/brand/dark/128.png +0 -0
- package/templates/channels/brand/dark/192.png +0 -0
- package/templates/channels/brand/dark/256.png +0 -0
- package/templates/channels/brand/dark/32.png +0 -0
- package/templates/channels/brand/dark/512.png +0 -0
- package/templates/channels/brand/dark/64.png +0 -0
- package/templates/channels/brand/light/128.png +0 -0
- package/templates/channels/brand/light/192.png +0 -0
- package/templates/channels/brand/light/256.png +0 -0
- package/templates/channels/brand/light/32.png +0 -0
- package/templates/channels/brand/light/512.png +0 -0
- package/templates/channels/brand/light/64.png +0 -0
- package/templates/channels/brand/mono-white/128.png +0 -0
- package/templates/channels/brand/mono-white/192.png +0 -0
- package/templates/channels/brand/mono-white/256.png +0 -0
- package/templates/channels/brand/mono-white/32.png +0 -0
- package/templates/channels/brand/mono-white/512.png +0 -0
- package/templates/channels/brand/mono-white/64.png +0 -0
- package/templates/channels/brand/outline-32.png +0 -0
- package/templates/channels/chatgpt/install.template.md.hbs +6 -4
- package/templates/channels/chatgpt/integration/README.md +4 -5
- package/templates/channels/chatgpt/integration/chatgpt-system.json +1 -16
- package/templates/channels/microsoft-copilot/ai-plugin.template.json.hbs +14 -16
- package/templates/channels/microsoft-copilot/declarative-agent.template.json.hbs +5 -3
- package/templates/channels/microsoft-copilot/entra-sso-registration.template.md.hbs +30 -0
- package/templates/channels/microsoft-copilot/fi-fi.template.json.hbs +7 -0
- package/templates/channels/microsoft-copilot/install.template.md.hbs +93 -22
- package/templates/channels/microsoft-copilot/integration/README.md +2 -3
- package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +1 -22
- package/templates/channels/microsoft-copilot/manifest.template.json.hbs +34 -19
- package/templates/channels/microsoft-copilot/oauth-plugin-vault-required.template.md.hbs +15 -0
- package/templates/channels/slack/integration/README.md +2 -4
- package/templates/channels/teams-bot/install.template.md.hbs +4 -0
- package/templates/channels/teams-bot/integration/README.md +3 -5
- package/templates/channels/web-embed/integration/web-embed-system.json +1 -16
- package/templates/python/docker-compose.hbs +36 -0
- package/templates/typescript/docker-compose.hbs +36 -0
- package/.cursor/plans/Done/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 -260
- package/jest.projects.js +0 -76
- 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 -110
- 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
|
@@ -53,6 +53,29 @@ const OPENAPI_REQUEST_SCHEMAS = {
|
|
|
53
53
|
sync: { type: 'boolean' }
|
|
54
54
|
}),
|
|
55
55
|
CreateSystemRequest: frozenObject({ systemKey: schemaRef('SystemKey') }, ['systemKey']),
|
|
56
|
+
PersistSuppliedOpenApiDocument: frozenObject(
|
|
57
|
+
{
|
|
58
|
+
filename: { type: 'string' },
|
|
59
|
+
name: { type: 'string' },
|
|
60
|
+
mediaType: { type: 'string' },
|
|
61
|
+
digest: { type: 'string' },
|
|
62
|
+
body: {
|
|
63
|
+
description: 'Authorized OpenAPI document object or JSON string (Runtime-resolved).',
|
|
64
|
+
oneOf: [{ type: 'object', additionalProperties: true }, { type: 'string' }]
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
['body']
|
|
68
|
+
),
|
|
69
|
+
PersistSuppliedOpenApiRequest: frozenObject(
|
|
70
|
+
{
|
|
71
|
+
documents: {
|
|
72
|
+
type: 'array',
|
|
73
|
+
minItems: 1,
|
|
74
|
+
items: schemaRef('PersistSuppliedOpenApiDocument')
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
['documents']
|
|
78
|
+
),
|
|
56
79
|
WizardConfigRequest: frozenObject(
|
|
57
80
|
{
|
|
58
81
|
appName: { type: 'string' },
|
|
@@ -66,6 +89,23 @@ const OPENAPI_REQUEST_SCHEMAS = {
|
|
|
66
89
|
},
|
|
67
90
|
['appName', 'source']
|
|
68
91
|
),
|
|
92
|
+
IntegrationDefinitionApplyRequest: frozenObject(
|
|
93
|
+
{
|
|
94
|
+
integrationDefinition: {
|
|
95
|
+
type: 'object',
|
|
96
|
+
additionalProperties: true,
|
|
97
|
+
description: 'Builder Integration Definition (aifabrix.builder.integrationDefinition).'
|
|
98
|
+
},
|
|
99
|
+
bid: {
|
|
100
|
+
type: 'object',
|
|
101
|
+
additionalProperties: true,
|
|
102
|
+
description: 'Alias for integrationDefinition.'
|
|
103
|
+
},
|
|
104
|
+
force: { type: 'boolean' },
|
|
105
|
+
dryRun: { type: 'boolean' }
|
|
106
|
+
},
|
|
107
|
+
['integrationDefinition']
|
|
108
|
+
),
|
|
69
109
|
RepairRequest: frozenObject({
|
|
70
110
|
dryRun: { type: 'boolean' },
|
|
71
111
|
auth: { type: 'string' },
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { frozenObject, schemaRef } = require('./openapi-schema-helpers');
|
|
4
|
+
|
|
5
|
+
const OPENAPI_RESULT_SCHEMA_OVERFLOW = {
|
|
6
|
+
LifecycleRunStep: frozenObject(
|
|
7
|
+
{
|
|
8
|
+
pillar: { type: 'string' },
|
|
9
|
+
success: { type: 'boolean' },
|
|
10
|
+
error: { type: 'string' }
|
|
11
|
+
},
|
|
12
|
+
['pillar', 'success']
|
|
13
|
+
),
|
|
14
|
+
LifecycleRunReport: frozenObject(
|
|
15
|
+
{
|
|
16
|
+
systemKey: schemaRef('SystemKey'),
|
|
17
|
+
certification: schemaRef('CertificationSummary')
|
|
18
|
+
},
|
|
19
|
+
['systemKey']
|
|
20
|
+
),
|
|
21
|
+
CertifyLifecycleRunResultData: frozenObject(
|
|
22
|
+
{
|
|
23
|
+
report: schemaRef('LifecycleRunReport'),
|
|
24
|
+
stepsRun: { type: 'array', items: schemaRef('LifecycleRunStep') }
|
|
25
|
+
},
|
|
26
|
+
['report']
|
|
27
|
+
),
|
|
28
|
+
CertifyResultData: {
|
|
29
|
+
oneOf: [
|
|
30
|
+
schemaRef('CertifyOperationsResultData'),
|
|
31
|
+
schemaRef('CertifyTrustResultData'),
|
|
32
|
+
schemaRef('CertifyGovernanceResultData'),
|
|
33
|
+
schemaRef('CertifyLifecycleRunResultData')
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
LifecycleReportData: frozenObject(
|
|
37
|
+
{
|
|
38
|
+
systemKey: schemaRef('SystemKey'),
|
|
39
|
+
certification: schemaRef('CertificationSummary'),
|
|
40
|
+
operationalReadinessPercent: { type: 'number' },
|
|
41
|
+
summary: { type: 'boolean' },
|
|
42
|
+
details: { type: 'boolean' }
|
|
43
|
+
},
|
|
44
|
+
['systemKey']
|
|
45
|
+
),
|
|
46
|
+
EnterpriseMcpToolOutput: frozenObject({
|
|
47
|
+
success: { type: 'boolean' },
|
|
48
|
+
status: { type: 'string' },
|
|
49
|
+
message: { type: 'string' },
|
|
50
|
+
branch: { type: 'string' },
|
|
51
|
+
pullRequestUrl: { type: 'string', format: 'uri' },
|
|
52
|
+
syncDirection: schemaRef('RepositorySyncDirection'),
|
|
53
|
+
commitSha: { type: 'string' },
|
|
54
|
+
workflowRunId: { type: 'string' }
|
|
55
|
+
}),
|
|
56
|
+
WorkspaceRemoteUnavailable: frozenObject(
|
|
57
|
+
{
|
|
58
|
+
unavailable: { type: 'boolean', enum: [true] },
|
|
59
|
+
message: { type: 'string' }
|
|
60
|
+
},
|
|
61
|
+
['unavailable', 'message']
|
|
62
|
+
),
|
|
63
|
+
WorkspaceRemoteStatus: {
|
|
64
|
+
oneOf: [
|
|
65
|
+
schemaRef('EnterpriseMcpToolOutput'),
|
|
66
|
+
schemaRef('WorkspaceRemoteUnavailable'),
|
|
67
|
+
{ type: 'null' }
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
EnterpriseMcpInvocationData: frozenObject(
|
|
71
|
+
{
|
|
72
|
+
capabilityKey: { type: 'string' },
|
|
73
|
+
result: schemaRef('EnterpriseMcpToolOutput')
|
|
74
|
+
},
|
|
75
|
+
['capabilityKey', 'result']
|
|
76
|
+
),
|
|
77
|
+
WorkspaceStatusData: frozenObject(
|
|
78
|
+
{
|
|
79
|
+
local: schemaRef('SystemManifestData'),
|
|
80
|
+
remote: schemaRef('WorkspaceRemoteStatus')
|
|
81
|
+
},
|
|
82
|
+
['local', 'remote']
|
|
83
|
+
),
|
|
84
|
+
RepositoryStatusData: frozenObject(
|
|
85
|
+
{
|
|
86
|
+
capabilityKey: { type: 'string', enum: ['repository.status'] },
|
|
87
|
+
result: schemaRef('EnterpriseMcpToolOutput')
|
|
88
|
+
},
|
|
89
|
+
['capabilityKey', 'result']
|
|
90
|
+
),
|
|
91
|
+
HealthData: frozenObject({ status: { type: 'string', enum: ['ok'] } }, ['status']),
|
|
92
|
+
ReadyData: frozenObject(
|
|
93
|
+
{
|
|
94
|
+
status: { type: 'string', enum: ['ready'] },
|
|
95
|
+
dataplaneUrl: { type: ['string', 'null'], format: 'uri' }
|
|
96
|
+
},
|
|
97
|
+
['status']
|
|
98
|
+
)
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
module.exports = { OPENAPI_RESULT_SCHEMA_OVERFLOW };
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
'use strict';
|
|
10
10
|
|
|
11
11
|
const { frozenObject, schemaRef, stringArraySchema } = require('./openapi-schema-helpers');
|
|
12
|
+
const { OPENAPI_RESULT_SCHEMA_OVERFLOW } = require('./openapi-result-schemas-overflow');
|
|
12
13
|
|
|
13
14
|
/** @type {Record<string, Object>} */
|
|
14
15
|
const OPENAPI_RESULT_SCHEMAS = {
|
|
@@ -19,9 +20,9 @@ const OPENAPI_RESULT_SCHEMAS = {
|
|
|
19
20
|
title: { type: 'string' },
|
|
20
21
|
status: { type: 'integer', minimum: 100, maximum: 599 },
|
|
21
22
|
detail: { type: 'string' },
|
|
22
|
-
instance: { type: 'string' },
|
|
23
|
+
instance: { type: 'string', format: 'uri' },
|
|
23
24
|
correlationId: { type: 'string' },
|
|
24
|
-
errors: { type: 'array', items: schemaRef('
|
|
25
|
+
errors: { type: 'array', items: schemaRef('ValidationError') }
|
|
25
26
|
},
|
|
26
27
|
['type', 'title', 'status', 'detail', 'correlationId', 'instance', 'errors']
|
|
27
28
|
),
|
|
@@ -31,9 +32,15 @@ const OPENAPI_RESULT_SCHEMAS = {
|
|
|
31
32
|
title: 'Unauthorized',
|
|
32
33
|
status: 401,
|
|
33
34
|
detail: 'Missing or invalid Bearer token.',
|
|
34
|
-
instance: '/api/v1/builder/workspaces/me/systems',
|
|
35
|
+
instance: 'https://api.example.com/api/v1/builder/workspaces/me/systems',
|
|
35
36
|
correlationId: '00000000-0000-4000-8000-000000000003',
|
|
36
|
-
errors: [
|
|
37
|
+
errors: [
|
|
38
|
+
{
|
|
39
|
+
field: 'authorization',
|
|
40
|
+
message: 'Missing or invalid Bearer token.',
|
|
41
|
+
value: null
|
|
42
|
+
}
|
|
43
|
+
]
|
|
37
44
|
}
|
|
38
45
|
}
|
|
39
46
|
),
|
|
@@ -41,14 +48,27 @@ const OPENAPI_RESULT_SCHEMAS = {
|
|
|
41
48
|
ProblemDetails: {
|
|
42
49
|
allOf: [schemaRef('ProblemDetail')]
|
|
43
50
|
},
|
|
44
|
-
|
|
51
|
+
ValidationError: Object.assign(
|
|
52
|
+
frozenObject(
|
|
53
|
+
{
|
|
54
|
+
field: { type: 'string' },
|
|
55
|
+
message: { type: 'string' },
|
|
56
|
+
value: { type: ['string', 'null'] }
|
|
57
|
+
},
|
|
58
|
+
['field', 'message', 'value']
|
|
59
|
+
),
|
|
45
60
|
{
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
61
|
+
example: {
|
|
62
|
+
field: 'authorization',
|
|
63
|
+
message: 'Missing or invalid Bearer token.',
|
|
64
|
+
value: null
|
|
65
|
+
}
|
|
66
|
+
}
|
|
51
67
|
),
|
|
68
|
+
/** Legacy alias — published REST requires ValidationError (OAPI-249/608). */
|
|
69
|
+
ProblemValidationError: {
|
|
70
|
+
allOf: [schemaRef('ValidationError')]
|
|
71
|
+
},
|
|
52
72
|
LifecycleVerdict: {
|
|
53
73
|
type: 'string',
|
|
54
74
|
enum: ['VERIFIED', 'FAILED', 'NOT_VERIFIED', 'NOT_APPLICABLE']
|
|
@@ -109,6 +129,36 @@ const OPENAPI_RESULT_SCHEMAS = {
|
|
|
109
129
|
},
|
|
110
130
|
['systemKey', 'meta']
|
|
111
131
|
),
|
|
132
|
+
PersistSuppliedOpenApiAcceptedFile: frozenObject(
|
|
133
|
+
{
|
|
134
|
+
filename: { type: 'string' },
|
|
135
|
+
path: { type: 'string' },
|
|
136
|
+
digest: { type: 'string' }
|
|
137
|
+
},
|
|
138
|
+
['filename', 'path', 'digest']
|
|
139
|
+
),
|
|
140
|
+
PersistSuppliedOpenApiRejectedFile: frozenObject(
|
|
141
|
+
{
|
|
142
|
+
filename: { type: 'string' },
|
|
143
|
+
reason: { type: 'string' },
|
|
144
|
+
detail: { type: 'string' }
|
|
145
|
+
},
|
|
146
|
+
['filename', 'reason']
|
|
147
|
+
),
|
|
148
|
+
PersistSuppliedOpenApiData: frozenObject(
|
|
149
|
+
{
|
|
150
|
+
accepted: {
|
|
151
|
+
type: 'array',
|
|
152
|
+
items: schemaRef('PersistSuppliedOpenApiAcceptedFile')
|
|
153
|
+
},
|
|
154
|
+
rejected: {
|
|
155
|
+
type: 'array',
|
|
156
|
+
items: schemaRef('PersistSuppliedOpenApiRejectedFile')
|
|
157
|
+
},
|
|
158
|
+
workspaceRoot: { type: 'string' }
|
|
159
|
+
},
|
|
160
|
+
['accepted', 'rejected', 'workspaceRoot']
|
|
161
|
+
),
|
|
112
162
|
SystemManifestData: frozenObject(
|
|
113
163
|
{
|
|
114
164
|
systemKey: schemaRef('SystemKey'),
|
|
@@ -131,6 +181,21 @@ const OPENAPI_RESULT_SCHEMAS = {
|
|
|
131
181
|
},
|
|
132
182
|
['systemKey', 'status']
|
|
133
183
|
),
|
|
184
|
+
IntegrationDefinitionApplyData: frozenObject(
|
|
185
|
+
{
|
|
186
|
+
status: {
|
|
187
|
+
type: 'string',
|
|
188
|
+
enum: ['created', 'updated', 'idempotent', 'dryRun']
|
|
189
|
+
},
|
|
190
|
+
systemKey: schemaRef('SystemKey'),
|
|
191
|
+
outputDir: { type: 'string' },
|
|
192
|
+
definitionId: { type: 'string' },
|
|
193
|
+
definitionHash: { type: 'string' },
|
|
194
|
+
packageVersion: { type: 'string' },
|
|
195
|
+
files: stringArraySchema()
|
|
196
|
+
},
|
|
197
|
+
['status', 'systemKey']
|
|
198
|
+
),
|
|
134
199
|
RepairResultData: frozenObject(
|
|
135
200
|
{
|
|
136
201
|
updated: { type: 'boolean' },
|
|
@@ -397,95 +462,7 @@ const OPENAPI_RESULT_SCHEMAS = {
|
|
|
397
462
|
},
|
|
398
463
|
['command', 'systemKey', 'verdict', 'enforcementScenarios', 'datasourceRows']
|
|
399
464
|
),
|
|
400
|
-
|
|
401
|
-
{
|
|
402
|
-
pillar: { type: 'string' },
|
|
403
|
-
success: { type: 'boolean' },
|
|
404
|
-
error: { type: 'string' }
|
|
405
|
-
},
|
|
406
|
-
['pillar', 'success']
|
|
407
|
-
),
|
|
408
|
-
LifecycleRunReport: frozenObject(
|
|
409
|
-
{
|
|
410
|
-
systemKey: schemaRef('SystemKey'),
|
|
411
|
-
certification: schemaRef('CertificationSummary')
|
|
412
|
-
},
|
|
413
|
-
['systemKey']
|
|
414
|
-
),
|
|
415
|
-
CertifyLifecycleRunResultData: frozenObject(
|
|
416
|
-
{
|
|
417
|
-
report: schemaRef('LifecycleRunReport'),
|
|
418
|
-
stepsRun: { type: 'array', items: schemaRef('LifecycleRunStep') }
|
|
419
|
-
},
|
|
420
|
-
['report']
|
|
421
|
-
),
|
|
422
|
-
CertifyResultData: {
|
|
423
|
-
oneOf: [
|
|
424
|
-
schemaRef('CertifyOperationsResultData'),
|
|
425
|
-
schemaRef('CertifyTrustResultData'),
|
|
426
|
-
schemaRef('CertifyGovernanceResultData'),
|
|
427
|
-
schemaRef('CertifyLifecycleRunResultData')
|
|
428
|
-
]
|
|
429
|
-
},
|
|
430
|
-
LifecycleReportData: frozenObject(
|
|
431
|
-
{
|
|
432
|
-
systemKey: schemaRef('SystemKey'),
|
|
433
|
-
certification: schemaRef('CertificationSummary'),
|
|
434
|
-
operationalReadinessPercent: { type: 'number' },
|
|
435
|
-
summary: { type: 'boolean' },
|
|
436
|
-
details: { type: 'boolean' }
|
|
437
|
-
},
|
|
438
|
-
['systemKey']
|
|
439
|
-
),
|
|
440
|
-
EnterpriseMcpToolOutput: frozenObject({
|
|
441
|
-
success: { type: 'boolean' },
|
|
442
|
-
status: { type: 'string' },
|
|
443
|
-
message: { type: 'string' },
|
|
444
|
-
branch: { type: 'string' },
|
|
445
|
-
pullRequestUrl: { type: 'string', format: 'uri' },
|
|
446
|
-
syncDirection: schemaRef('RepositorySyncDirection'),
|
|
447
|
-
commitSha: { type: 'string' },
|
|
448
|
-
workflowRunId: { type: 'string' }
|
|
449
|
-
}),
|
|
450
|
-
WorkspaceRemoteUnavailable: frozenObject(
|
|
451
|
-
{
|
|
452
|
-
unavailable: { type: 'boolean', enum: [true] },
|
|
453
|
-
message: { type: 'string' }
|
|
454
|
-
},
|
|
455
|
-
['unavailable', 'message']
|
|
456
|
-
),
|
|
457
|
-
WorkspaceRemoteStatus: {
|
|
458
|
-
oneOf: [schemaRef('EnterpriseMcpToolOutput'), schemaRef('WorkspaceRemoteUnavailable'), { type: 'null' }]
|
|
459
|
-
},
|
|
460
|
-
EnterpriseMcpInvocationData: frozenObject(
|
|
461
|
-
{
|
|
462
|
-
capabilityKey: { type: 'string' },
|
|
463
|
-
result: schemaRef('EnterpriseMcpToolOutput')
|
|
464
|
-
},
|
|
465
|
-
['capabilityKey', 'result']
|
|
466
|
-
),
|
|
467
|
-
WorkspaceStatusData: frozenObject(
|
|
468
|
-
{
|
|
469
|
-
local: schemaRef('SystemManifestData'),
|
|
470
|
-
remote: schemaRef('WorkspaceRemoteStatus')
|
|
471
|
-
},
|
|
472
|
-
['local', 'remote']
|
|
473
|
-
),
|
|
474
|
-
RepositoryStatusData: frozenObject(
|
|
475
|
-
{
|
|
476
|
-
capabilityKey: { type: 'string', enum: ['repository.status'] },
|
|
477
|
-
result: schemaRef('EnterpriseMcpToolOutput')
|
|
478
|
-
},
|
|
479
|
-
['capabilityKey', 'result']
|
|
480
|
-
),
|
|
481
|
-
HealthData: frozenObject({ status: { type: 'string', enum: ['ok'] } }, ['status']),
|
|
482
|
-
ReadyData: frozenObject(
|
|
483
|
-
{
|
|
484
|
-
status: { type: 'string', enum: ['ready'] },
|
|
485
|
-
dataplaneUrl: { type: ['string', 'null'], format: 'uri' }
|
|
486
|
-
},
|
|
487
|
-
['status']
|
|
488
|
-
)
|
|
465
|
+
...OPENAPI_RESULT_SCHEMA_OVERFLOW
|
|
489
466
|
};
|
|
490
467
|
|
|
491
468
|
module.exports = {
|
|
@@ -28,18 +28,21 @@ const CORE_SCHEMA_DESCRIPTIONS = {
|
|
|
28
28
|
title: 'Short human-readable error title.',
|
|
29
29
|
status: 'HTTP status code echoed in the body.',
|
|
30
30
|
detail: 'Actionable error detail safe for operators and agents.',
|
|
31
|
-
instance: 'Request
|
|
31
|
+
instance: 'Request URL for this occurrence (URI).',
|
|
32
32
|
correlationId: 'Correlation id for log lookup across services.',
|
|
33
|
-
errors: 'Field-level validation errors when status is 400.'
|
|
33
|
+
errors: 'Field-level validation errors (non-empty when status is 400/422).'
|
|
34
34
|
},
|
|
35
35
|
ProblemDetails: {
|
|
36
36
|
_schema: 'Alias of ProblemDetail (allOf) for backward-compatible $refs.'
|
|
37
37
|
},
|
|
38
|
-
|
|
38
|
+
ValidationError: {
|
|
39
39
|
_schema: 'Single field validation error inside ProblemDetail.errors.',
|
|
40
40
|
field: 'JSON pointer or field name that failed validation.',
|
|
41
41
|
message: 'Validation failure message.',
|
|
42
|
-
value: 'Rejected value when safe to echo (
|
|
42
|
+
value: 'Rejected value when safe to echo (null when omitted for secrets).'
|
|
43
|
+
},
|
|
44
|
+
ProblemValidationError: {
|
|
45
|
+
_schema: 'Legacy alias of ValidationError (allOf) for older $refs.'
|
|
43
46
|
},
|
|
44
47
|
LifecycleVerdict: {
|
|
45
48
|
_schema: 'Lifecycle verification outcome: VERIFIED, FAILED, NOT_VERIFIED, or NOT_APPLICABLE.'
|
|
@@ -75,6 +78,24 @@ const CORE_SCHEMA_DESCRIPTIONS = {
|
|
|
75
78
|
_schema: 'Payload for listSystems: integration keys under the authenticated user.',
|
|
76
79
|
systems: 'Workspace summaries ordered by systemKey.'
|
|
77
80
|
},
|
|
81
|
+
PersistSuppliedOpenApiData: {
|
|
82
|
+
_schema: 'Findings for persistSuppliedOpenApi (accepted and rejected files).',
|
|
83
|
+
accepted: 'Successfully validated and written OpenAPI files.',
|
|
84
|
+
rejected: 'Documents that failed validation (no success claim).',
|
|
85
|
+
workspaceRoot: 'Absolute workspace integration root for this user.'
|
|
86
|
+
},
|
|
87
|
+
PersistSuppliedOpenApiAcceptedFile: {
|
|
88
|
+
_schema: 'One accepted OpenAPI file written under the workspace.',
|
|
89
|
+
filename: 'Basename written under openapi/.',
|
|
90
|
+
path: 'Workspace-relative path including integration/<systemKey>/openapi/.',
|
|
91
|
+
digest: 'sha256 digest of the serialized JSON body.'
|
|
92
|
+
},
|
|
93
|
+
PersistSuppliedOpenApiRejectedFile: {
|
|
94
|
+
_schema: 'One rejected OpenAPI document (not written).',
|
|
95
|
+
filename: 'Requested basename when available.',
|
|
96
|
+
reason: 'Stable rejection reason code (openapi.invalid, …).',
|
|
97
|
+
detail: 'Human-readable validation detail.'
|
|
98
|
+
},
|
|
78
99
|
CreateSystemData: {
|
|
79
100
|
_schema: 'Payload after createSystem: new workspace folder and metadata.',
|
|
80
101
|
systemKey: 'Created integration system key.',
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
const HELP_SCHEMA_DESCRIPTIONS = Object.freeze({
|
|
13
13
|
BuilderHelpTopic: {
|
|
14
14
|
_schema:
|
|
15
|
-
'Help topic enum
|
|
15
|
+
'Help topic enum including resourceTypeCatalog (taxonomy keys for BID datasources[].resourceType), overview, sections, schemaCatalog, platformRoles, dimensionsGuide, and related bootstrap topics.'
|
|
16
16
|
},
|
|
17
17
|
BuilderHelpData: {
|
|
18
18
|
_schema: 'Deterministic LLM help payload for one topic (read-only product documentation).',
|
|
@@ -35,6 +35,25 @@ const OPERATIONS_SCHEMA_DESCRIPTIONS = {
|
|
|
35
35
|
_schema: 'Request body to create an empty integration workspace folder.',
|
|
36
36
|
systemKey: 'Unique integration system key for the new workspace.'
|
|
37
37
|
},
|
|
38
|
+
PersistSuppliedOpenApiDocument: {
|
|
39
|
+
_schema: 'One Runtime-authorized OpenAPI document to persist.',
|
|
40
|
+
filename: 'Target basename under openapi/ (no path segments).',
|
|
41
|
+
name: 'Optional alias for filename.',
|
|
42
|
+
mediaType: 'Optional media type (application/json).',
|
|
43
|
+
digest: 'Optional sha256 digest of the serialized body for integrity check.',
|
|
44
|
+
body: 'OpenAPI document object or JSON string resolved by Runtime before CIP.'
|
|
45
|
+
},
|
|
46
|
+
PersistSuppliedOpenApiRequest: {
|
|
47
|
+
_schema: 'Request body for persistSuppliedOpenApi.',
|
|
48
|
+
documents: 'One or more authorized OpenAPI documents to validate and write.'
|
|
49
|
+
},
|
|
50
|
+
PersistSuppliedOpenApiResponse: {
|
|
51
|
+
_schema: '200 response envelope for persistSuppliedOpenApi.',
|
|
52
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
53
|
+
data: 'Typed payload; see PersistSuppliedOpenApiData.',
|
|
54
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
55
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
56
|
+
},
|
|
38
57
|
WizardConfigRequest: {
|
|
39
58
|
_schema: 'Headless wizard configuration to generate system and datasource JSON.',
|
|
40
59
|
appName: 'Integration app folder name under the user workspace.',
|
|
@@ -46,6 +65,30 @@ const OPERATIONS_SCHEMA_DESCRIPTIONS = {
|
|
|
46
65
|
preferences: 'Optional expose, RBAC, and sync generation flags.',
|
|
47
66
|
debug: 'When true, enable verbose wizard logging (also available as query param).'
|
|
48
67
|
},
|
|
68
|
+
IntegrationDefinitionApplyRequest: {
|
|
69
|
+
_schema: 'Apply a Builder Integration Definition (BID) into the workspace package.',
|
|
70
|
+
integrationDefinition: 'BID document (aifabrix.builder.integrationDefinition).',
|
|
71
|
+
bid: 'Alias for integrationDefinition.',
|
|
72
|
+
force: 'When true, rewrite package even if definitionHash matches stamp.',
|
|
73
|
+
dryRun: 'When true, return planned files without writing.'
|
|
74
|
+
},
|
|
75
|
+
IntegrationDefinitionApplyResponse: {
|
|
76
|
+
_schema: '200 response envelope for applyIntegrationDefinition.',
|
|
77
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
78
|
+
data: 'Typed payload; see IntegrationDefinitionApplyData.',
|
|
79
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
80
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
81
|
+
},
|
|
82
|
+
IntegrationDefinitionApplyData: {
|
|
83
|
+
_schema: 'Typed apply result payload.',
|
|
84
|
+
status: 'created, updated, unchanged, or dryRun.',
|
|
85
|
+
systemKey: 'Integration system key that was materialized.',
|
|
86
|
+
outputDir: 'Absolute workspace integration directory.',
|
|
87
|
+
definitionId: 'BID definitionId.',
|
|
88
|
+
definitionHash: 'Canonical definitionHash written to stamp.',
|
|
89
|
+
packageVersion: 'Package version from packageIdentity.',
|
|
90
|
+
files: 'Relative package file names written or planned.'
|
|
91
|
+
},
|
|
49
92
|
RepairRequest: {
|
|
50
93
|
_schema: 'Optional flags for workspace repair aligning manifest files with on-disk JSON.',
|
|
51
94
|
dryRun: 'Preview repair actions without writing files.',
|
|
@@ -41,14 +41,14 @@ function stringArraySchema() {
|
|
|
41
41
|
* @returns {Object}
|
|
42
42
|
*/
|
|
43
43
|
function buildSuccessEnvelopeSchema(dataSchemaName) {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
44
|
+
const { OPENAPI_ENVELOPE_DATA_EXAMPLES } = require('./openapi-envelope-examples');
|
|
45
|
+
const dataExample = OPENAPI_ENVELOPE_DATA_EXAMPLES[dataSchemaName];
|
|
46
|
+
if (dataExample === undefined) {
|
|
47
|
+
throw new Error(
|
|
48
|
+
`Missing OpenAPI envelope data example for ${dataSchemaName} (OAPI-136). ` +
|
|
49
|
+
'Add it to lib/programmatic/openapi-envelope-examples.js'
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
52
|
const schema = frozenObject(
|
|
53
53
|
{
|
|
54
54
|
success: { type: 'boolean', enum: [true] },
|
|
@@ -60,7 +60,7 @@ function buildSuccessEnvelopeSchema(dataSchemaName) {
|
|
|
60
60
|
);
|
|
61
61
|
schema.example = {
|
|
62
62
|
success: true,
|
|
63
|
-
data:
|
|
63
|
+
data: dataExample,
|
|
64
64
|
correlationId: '00000000-0000-4000-8000-000000000001',
|
|
65
65
|
requestId: '00000000-0000-4000-8000-000000000002'
|
|
66
66
|
};
|
|
@@ -73,7 +73,7 @@ function buildStandardErrorResponses() {
|
|
|
73
73
|
* @returns {boolean}
|
|
74
74
|
*/
|
|
75
75
|
function requiresBearerAuth(handlerId) {
|
|
76
|
-
return handlerId !== 'health' && handlerId !== 'ready';
|
|
76
|
+
return handlerId !== 'health' && handlerId !== 'ready' && handlerId !== 'getBuilderHelp';
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
/**
|
|
@@ -149,10 +149,20 @@ function buildOpenApiTags() {
|
|
|
149
149
|
{ name: 'template', description: 'Enterprise MCP template.materializeWorkspace and workspace reset.' },
|
|
150
150
|
{ name: 'repository', description: 'Enterprise MCP repository.sync, createReview, status, dispatchPipeline.' },
|
|
151
151
|
{ name: 'infra', description: 'Liveness and readiness probes (no authentication).' },
|
|
152
|
+
{
|
|
153
|
+
name: 'help',
|
|
154
|
+
description:
|
|
155
|
+
'Deterministic LLM help topics (resourceTypeCatalog, schemaCatalog, …). No authentication.'
|
|
156
|
+
},
|
|
152
157
|
{
|
|
153
158
|
name: 'evidence',
|
|
154
159
|
description:
|
|
155
160
|
'BTA-facing Evidence authoring: metadata, download, upload (validate+certify), and human-gated activate.'
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: 'channel',
|
|
164
|
+
description:
|
|
165
|
+
'Discovery-driven channel packaging (Copilot, ChatGPT, Slack, Teams): build, summary, ZIP, branding.'
|
|
156
166
|
}
|
|
157
167
|
];
|
|
158
168
|
}
|
|
@@ -71,6 +71,16 @@ const ORCHESTRATION_TAG_CATALOG = Object.freeze({
|
|
|
71
71
|
resourceType: 'role-evidence',
|
|
72
72
|
permissionClass: 'evidence',
|
|
73
73
|
displayName: 'Evidence'
|
|
74
|
+
},
|
|
75
|
+
channel: {
|
|
76
|
+
resourceType: 'channel',
|
|
77
|
+
permissionClass: 'channel',
|
|
78
|
+
displayName: 'Channel'
|
|
79
|
+
},
|
|
80
|
+
help: {
|
|
81
|
+
resourceType: 'document',
|
|
82
|
+
permissionClass: 'read',
|
|
83
|
+
displayName: 'Help'
|
|
74
84
|
}
|
|
75
85
|
});
|
|
76
86
|
|