@aifabrix/builder 2.53.0 → 2.54.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/bin/aifabrix.js +2 -2
- package/lib/api/assistants.api.js +8 -5
- package/lib/api/channel-identity.api.js +41 -0
- package/lib/api/evidence-authoring.api.js +5 -1
- package/lib/api/evidence.api.js +2 -0
- package/lib/api/types/evidence.types.js +2 -0
- package/lib/api/work-search.api.js +136 -0
- package/lib/channels/add-channel.js +163 -126
- package/lib/channels/approval-guides/chatgpt.js +14 -18
- package/lib/channels/approval-guides/claude.js +29 -0
- package/lib/channels/approval-guides/index.js +88 -22
- package/lib/channels/approval-guides/mcp-client.js +27 -0
- package/lib/channels/approval-guides/microsoft-copilot.js +52 -3
- package/lib/channels/approval-guides/slack.js +10 -10
- package/lib/channels/approval-guides/teams-bot.js +8 -12
- package/lib/channels/channel-add-continuations.js +91 -0
- package/lib/channels/channel-add-ensure.js +124 -27
- package/lib/channels/channel-add-existing.js +160 -28
- package/lib/channels/channel-add-failure.js +60 -0
- package/lib/channels/channel-add-remaining.js +486 -0
- package/lib/channels/channel-add-tty.js +190 -0
- package/lib/channels/channel-add-wizard-config.js +138 -0
- package/lib/channels/channel-add-wizard.js +250 -0
- package/lib/channels/channel-artifact-generator.js +27 -13
- package/lib/channels/channel-cardinality.js +83 -0
- package/lib/channels/channel-catalog-icon.js +45 -0
- package/lib/channels/channel-cli-instructions.js +75 -0
- package/lib/channels/channel-configuration-map.js +213 -0
- package/lib/channels/channel-credential.js +11 -14
- package/lib/channels/channel-definition-project.js +101 -0
- package/lib/channels/channel-definition-registry.js +154 -0
- package/lib/channels/channel-description.js +59 -2
- package/lib/channels/channel-discovery.js +16 -2
- package/lib/channels/channel-external-system.js +86 -9
- package/lib/channels/channel-install-envelope-actions.js +88 -0
- package/lib/channels/channel-install-envelope-microsoft.js +155 -0
- package/lib/channels/channel-install-envelope.js +356 -0
- package/lib/channels/channel-install-help-md.js +172 -0
- package/lib/channels/channel-install-http-payload.js +62 -0
- package/lib/channels/channel-install-inventory.js +115 -0
- package/lib/channels/channel-install-profiles.js +90 -0
- package/lib/channels/channel-instance-collision.js +118 -0
- package/lib/channels/channel-instance-key.js +100 -0
- package/lib/channels/channel-instance-materialize.js +240 -0
- package/lib/channels/channel-integration-generator.js +16 -9
- package/lib/channels/channel-integration-template.js +101 -22
- package/lib/channels/channel-inventory-fetch.js +79 -0
- package/lib/channels/channel-oauth-preflight.js +104 -0
- package/lib/channels/channel-package-version.js +76 -0
- package/lib/channels/channel-predefined-client.js +154 -0
- package/lib/channels/channel-probe.js +7 -2
- package/lib/channels/channel-runtime-resolver.js +180 -72
- package/lib/channels/channel-status-display.js +86 -16
- package/lib/channels/channel-targets.js +106 -92
- package/lib/channels/chatgpt-callback.js +318 -0
- package/lib/channels/chatgpt-channel-add.js +229 -0
- package/lib/channels/chatgpt-preflight.js +396 -0
- package/lib/channels/chatgpt-runtime-contract.js +17 -0
- package/lib/channels/chatgpt-setup-values.js +124 -0
- package/lib/channels/claude-callback.js +67 -0
- package/lib/channels/claude-channel-add.js +254 -0
- package/lib/channels/claude-runtime-contract.js +40 -0
- package/lib/channels/claude-runtime.js +58 -0
- package/lib/channels/claude-setup-values.js +89 -0
- package/lib/channels/mcp-client/config-merge.js +148 -0
- package/lib/channels/mcp-client/ensure-client.js +231 -0
- package/lib/channels/mcp-client/paths.js +53 -0
- package/lib/channels/mcp-client/profiles.js +122 -0
- package/lib/channels/mcp-client/redirect-uris.js +99 -0
- package/lib/channels/mcp-client/runtime.js +59 -0
- package/lib/channels/mcp-client-channel-add.js +186 -0
- package/lib/channels/microsoft-copilot-channel-add.js +117 -7
- package/lib/channels/microsoft-copilot-entra-identifier-uris.js +187 -0
- package/lib/channels/microsoft-copilot-entra-sso-form.js +106 -18
- package/lib/channels/microsoft-copilot-entra-sso.js +31 -2
- package/lib/channels/microsoft-copilot-package-prior.js +107 -0
- package/lib/channels/microsoft-copilot-package.js +29 -28
- package/lib/channels/microsoft-provisioning/a365.js +80 -0
- package/lib/channels/microsoft-provisioning/auth-config.js +240 -0
- package/lib/channels/microsoft-provisioning/auth.js +179 -0
- package/lib/channels/microsoft-provisioning/cli.js +71 -0
- package/lib/channels/microsoft-provisioning/constants.js +75 -0
- package/lib/channels/microsoft-provisioning/errors.js +117 -0
- package/lib/channels/microsoft-provisioning/index.js +55 -0
- package/lib/channels/microsoft-provisioning/install-atk.js +158 -0
- package/lib/channels/microsoft-provisioning/install-teams.js +115 -0
- package/lib/channels/microsoft-provisioning/login-portal-device.js +236 -0
- package/lib/channels/microsoft-provisioning/login-portal-parse.js +71 -0
- package/lib/channels/microsoft-provisioning/login-portal-teams.js +193 -0
- package/lib/channels/microsoft-provisioning/login-portal.js +230 -0
- package/lib/channels/microsoft-provisioning/persist.js +110 -0
- package/lib/channels/microsoft-provisioning/teams-bot-args.js +119 -0
- package/lib/channels/microsoft-provisioning/teams-bot-controller.js +123 -0
- package/lib/channels/microsoft-provisioning/teams-bot-parse.js +134 -0
- package/lib/channels/microsoft-provisioning/teams-bot-persist.js +113 -0
- package/lib/channels/microsoft-provisioning/teams-bot-provision.js +234 -0
- package/lib/channels/microsoft-provisioning/teams-bot-secrets.js +45 -0
- package/lib/channels/microsoft-provisioning/teams-cli.js +82 -0
- package/lib/channels/runtime-tool-catalog.js +5 -2
- package/lib/channels/slack-channel-add-portal.js +130 -0
- package/lib/channels/slack-channel-add-tty-auth.js +95 -0
- package/lib/channels/slack-channel-add.js +258 -0
- package/lib/channels/slack-provisioning/apps.js +181 -0
- package/lib/channels/slack-provisioning/auth-store.js +110 -0
- package/lib/channels/slack-provisioning/auth-ticket.js +185 -0
- package/lib/channels/slack-provisioning/auth.js +115 -0
- package/lib/channels/slack-provisioning/callbacks.js +41 -0
- package/lib/channels/slack-provisioning/cli.js +226 -0
- package/lib/channels/slack-provisioning/constants.js +37 -0
- package/lib/channels/slack-provisioning/credentials.js +169 -0
- package/lib/channels/slack-provisioning/curl-shim.js +132 -0
- package/lib/channels/slack-provisioning/developer-install.js +118 -0
- package/lib/channels/slack-provisioning/env-file.js +120 -0
- package/lib/channels/slack-provisioning/errors.js +47 -0
- package/lib/channels/slack-provisioning/go-ca-bundle.js +137 -0
- package/lib/channels/slack-provisioning/index.js +250 -0
- package/lib/channels/slack-provisioning/install-cli.js +323 -0
- package/lib/channels/slack-provisioning/manifest.js +89 -0
- package/lib/channels/slack-provisioning/oauth-lock.js +33 -0
- package/lib/channels/slack-provisioning/offer-cli.js +113 -0
- package/lib/channels/slack-provisioning/onboard-members.js +122 -0
- package/lib/channels/slack-provisioning/onboard.js +89 -0
- package/lib/channels/slack-provisioning/persist.js +95 -0
- package/lib/channels/slack-provisioning/remaining-urls.js +158 -0
- package/lib/channels/slack-provisioning/with-curl-on-path.js +48 -0
- package/lib/channels/teams-bot-channel-add.js +94 -0
- package/lib/channels/vendor-dataplane-url.js +249 -0
- package/lib/cli/setup-certification.help.js +2 -0
- package/lib/cli/setup-external-system-help.js +2 -0
- package/lib/cli/setup-external-system.js +1 -1
- package/lib/commands/channel-add-help.js +366 -0
- package/lib/commands/channel-add-setup.js +162 -80
- package/lib/commands/channel-configure.js +118 -0
- package/lib/commands/channel.js +10 -1
- package/lib/commands/governance-upload-external.js +6 -3
- package/lib/commands/lifecycle-command-action.js +2 -5
- package/lib/commands/lifecycle-external.js +93 -21
- package/lib/commands/repair-datasource-test-payload.js +4 -2
- package/lib/commands/repair-datasource-webhooks-sync-bridge.js +23 -2
- package/lib/commands/repair-datasource.js +3 -0
- package/lib/commands/repair-external-run.js +59 -25
- package/lib/commands/repair-openapi-rest-runtime.js +127 -0
- package/lib/commands/repair-orchestration-tag-merge.js +339 -0
- package/lib/commands/repair-rbac-catalog-defaults.js +96 -0
- package/lib/commands/repair-rbac-platform-preset.js +26 -15
- package/lib/commands/repair-rbac-reader-roles.js +8 -21
- package/lib/commands/repair-rbac.js +10 -34
- package/lib/commands/repair-system-permissions.js +24 -22
- package/lib/commands/role-assistant-test-output.js +14 -0
- package/lib/commands/role-assistant.js +59 -21
- package/lib/commands/test-e2e-external.js +148 -21
- package/lib/commands/upload-credential-push-log.js +2 -1
- package/lib/commands/upload-publish-context.js +1 -1
- package/lib/commands/upload-role-assistant-shell.js +124 -0
- package/lib/commands/upload-sidecar-followups.js +6 -3
- package/lib/commands/upload.js +18 -3
- package/lib/core/secrets-docker-env.js +4 -1
- package/lib/core/secrets-env-content.js +17 -3
- package/lib/datasource/capability/capability-manifest.js +0 -3
- package/lib/datasource/capability/copy-test-payload.js +3 -0
- package/lib/external-system/deploy-helpers.js +26 -1
- package/lib/external-system/deploy.js +10 -6
- package/lib/external-system/download-helpers.js +29 -2
- package/lib/external-system/download-role-assistant.js +83 -4
- package/lib/external-system/download.js +40 -30
- package/lib/external-system/sync-deploy-manifest.js +3 -2
- package/lib/external-system/upload-identity.js +42 -0
- package/lib/generator/index.js +19 -15
- package/lib/generator/split.js +13 -2
- package/lib/lifecycle/role-assistant-governance.js +146 -0
- package/lib/lifecycle/scenario-upload.js +181 -30
- package/lib/programmatic/builder-api-cors.js +143 -0
- package/lib/programmatic/builder-api-request.js +6 -0
- package/lib/programmatic/builder-api-route-dispatch.js +56 -42
- package/lib/programmatic/builder-api-server.js +8 -1
- package/lib/programmatic/capability-registry.js +54 -0
- package/lib/programmatic/channel-install-help-resolve.js +359 -0
- package/lib/programmatic/channel-install-session.js +218 -0
- package/lib/programmatic/help-content/channel-onboarding.md +2 -0
- package/lib/programmatic/help-content/cip-overview.md +3 -1
- package/lib/programmatic/http-raw-response.js +62 -0
- package/lib/programmatic/openapi-channel-install-bindings.js +179 -0
- package/lib/programmatic/openapi-channel-install-schemas.js +286 -0
- package/lib/programmatic/openapi-component-schemas.js +18 -1
- package/lib/programmatic/openapi-description-enricher.js +3 -1
- package/lib/programmatic/openapi-descriptions.js +74 -3
- package/lib/programmatic/openapi-envelope-examples.js +117 -0
- package/lib/programmatic/openapi-operation-bindings.js +4 -1
- package/lib/programmatic/openapi-schema-descriptions-channel.js +316 -0
- package/lib/programmatic/openapi-spec.js +12 -8
- package/lib/programmatic/platform-rbac-catalog.js +36 -18
- package/lib/programmatic/route-handler-map.js +51 -1
- package/lib/programmatic/route-handlers-context.js +2 -1
- package/lib/programmatic/run-auth-permissions.js +54 -0
- package/lib/programmatic/run-channel-catalog.js +196 -0
- package/lib/programmatic/run-channel-install-artifacts.js +137 -0
- package/lib/programmatic/run-channel-install-copilot.js +353 -0
- package/lib/programmatic/run-channel-install-options.js +232 -0
- package/lib/programmatic/run-channel-install-teams-bot.js +204 -0
- package/lib/programmatic/run-channel-install.js +346 -0
- package/lib/programmatic/run-channel-package.js +87 -7
- package/lib/programmatic/workspace-context.js +2 -0
- package/lib/role-assistant/evidence-sync.js +4 -2
- package/lib/role-assistant/evidence-validation-issues.js +51 -0
- package/lib/role-assistant/knowledge-sync.js +10 -4
- package/lib/role-assistant/settings.js +49 -2
- package/lib/role-assistant/test-cases-evaluate.js +30 -2
- package/lib/role-assistant/test-cases-evidence.js +175 -0
- package/lib/role-assistant/test-cases-search.js +229 -0
- package/lib/role-assistant/test-cases.js +37 -4
- package/lib/role-assistant/test-runner-search.js +149 -0
- package/lib/role-assistant/test-runner-workhub-helpers.js +40 -2
- package/lib/role-assistant/test-runner-workhub-soft.js +9 -3
- package/lib/role-assistant/test-runner-workhub.js +29 -11
- package/lib/role-assistant/test-runner.js +16 -1
- package/lib/schema/external-datasource.schema.json +119 -16
- package/lib/schema/external-system.schema.json +159 -2
- package/lib/schema/mcp-client-profile.schema.json +103 -0
- package/lib/utils/app-path-resolve.js +4 -0
- package/lib/utils/authentication-env-template.js +44 -6
- package/lib/utils/credential-secrets-env.js +6 -1
- package/lib/utils/env-copy.js +19 -7
- package/lib/utils/external-env-template.js +20 -2
- package/lib/utils/paths.js +18 -1
- package/lib/utils/platform-shell-package.js +69 -0
- package/lib/utils/port-resolver.js +50 -1
- package/lib/utils/rewrite-name-flag.js +20 -0
- package/lib/utils/role-assistant-paths.js +13 -10
- package/lib/utils/schema-resolver.js +11 -1
- package/lib/utils/secrets-helpers.js +12 -21
- package/lib/utils/token-manager.js +10 -5
- package/lib/validation/validate.js +40 -0
- package/package.json +1 -1
- package/templates/README.md +1 -1
- package/templates/applications/builder-api/Dockerfile +1 -1
- package/templates/applications/builder-api/env.template +7 -0
- package/templates/applications/dataplane/application.yaml +6 -5
- package/templates/applications/dataplane/env.template +2 -2
- package/templates/applications/dataplane/rbac.yaml +7 -2
- package/templates/applications/keycloak/Dockerfile +30 -4
- package/templates/applications/keycloak/application.yaml +2 -2
- package/templates/applications/keycloak/cimd-lenient-parse/AbstractClientIdMetadataDocumentExecutor.java +896 -0
- package/templates/applications/keycloak/cimd-lenient-parse/SOURCE.md +19 -0
- package/templates/applications/keycloak/env.template +3 -0
- package/templates/applications/miso-controller/application.yaml +1 -2
- package/templates/applications/miso-controller/env.template +2 -0
- package/templates/channels/README.md +5 -5
- package/templates/channels/chatgpt/TROUBLESHOOTING.md +51 -0
- package/templates/channels/chatgpt/channel.json +59 -0
- package/templates/channels/chatgpt/icon.svg +1 -0
- package/templates/channels/chatgpt/install.template.md.hbs +20 -95
- package/templates/channels/chatgpt/integration/README.md +1 -1
- package/templates/channels/chatgpt/integration/application.json +2 -2
- package/templates/channels/chatgpt/integration/chatgpt-system.json +49 -4
- package/templates/channels/chatgpt/integration/env.template +2 -4
- package/templates/channels/chatgpt/integration/rbac.json +13 -0
- package/templates/channels/claude/TROUBLESHOOTING.md +41 -0
- package/templates/channels/claude/channel.json +59 -0
- package/templates/channels/claude/icon.svg +1 -0
- package/templates/channels/claude/install.template.md.hbs +21 -0
- package/templates/channels/claude/integration/README.md +14 -0
- package/templates/channels/claude/integration/application.json +15 -0
- package/templates/channels/claude/integration/claude-system.json +59 -0
- package/templates/channels/claude/integration/env.template +2 -0
- package/templates/channels/claude/integration/rbac.json +13 -0
- package/templates/channels/claude/manifest.template.json.hbs +40 -0
- package/templates/channels/mcp-client/channel.json +72 -0
- package/templates/channels/mcp-client/icon.svg +1 -0
- package/templates/channels/mcp-client/install.template.md.hbs +24 -0
- package/templates/channels/mcp-client/integration/README.md +13 -0
- package/templates/channels/mcp-client/integration/application.json +15 -0
- package/templates/channels/mcp-client/integration/env.template +2 -0
- package/templates/channels/mcp-client/integration/mcp-client-system.json +72 -0
- package/templates/channels/mcp-client/integration/rbac.json +13 -0
- package/templates/channels/mcp-client/manifest.template.json.hbs +41 -0
- package/templates/channels/mcp-client/profiles/cursor.json +26 -0
- package/templates/channels/mcp-client/profiles/github-copilot.json +29 -0
- package/templates/channels/mcp-client/profiles/vscode.json +29 -0
- package/templates/channels/microsoft-copilot/channel.json +73 -0
- package/templates/channels/microsoft-copilot/declarative-agent.template.json.hbs +8 -4
- package/templates/channels/microsoft-copilot/entra-sso-registration.template.md.hbs +65 -5
- package/templates/channels/microsoft-copilot/icon.svg +1 -0
- package/templates/channels/microsoft-copilot/install.template.md.hbs +9 -9
- package/templates/channels/microsoft-copilot/integration/README.md +1 -1
- package/templates/channels/microsoft-copilot/integration/application.json +2 -2
- package/templates/channels/microsoft-copilot/integration/env.template +3 -6
- package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +63 -4
- package/templates/channels/microsoft-copilot/integration/rbac.json +13 -0
- package/templates/channels/microsoft-copilot/oauth-plugin-vault-required.template.md.hbs +5 -5
- package/templates/channels/slack/channel.json +223 -0
- package/templates/channels/slack/icon.svg +1 -0
- package/templates/channels/slack/install.template.md.hbs +36 -28
- package/templates/channels/slack/integration/README.md +245 -22
- package/templates/channels/slack/integration/application.json +44 -7
- package/templates/channels/slack/integration/env.template +15 -6
- package/templates/channels/slack/integration/openapi/openapi.json +126 -0
- package/templates/channels/slack/integration/rbac.json +84 -0
- package/templates/channels/slack/integration/slack-datasource-commands.json +154 -0
- package/templates/channels/slack/integration/slack-datasource-conversations.json +28 -3
- package/templates/channels/slack/integration/slack-datasource-events.json +154 -0
- package/templates/channels/slack/integration/slack-datasource-interactive.json +154 -0
- package/templates/channels/slack/integration/slack-datasource-messages.json +40 -2
- package/templates/channels/slack/integration/slack-system.json +155 -77
- package/templates/channels/slack/manifest.template.json.hbs +5 -2
- package/templates/channels/teams-bot/channel.json +161 -0
- package/templates/channels/teams-bot/icon.svg +1 -0
- package/templates/channels/teams-bot/install.template.md.hbs +12 -13
- package/templates/channels/teams-bot/integration/README.md +5 -4
- package/templates/channels/teams-bot/integration/application.json +6 -4
- package/templates/channels/teams-bot/integration/env.template +5 -4
- package/templates/channels/teams-bot/integration/openapi/openapi.json +68 -0
- package/templates/channels/teams-bot/integration/rbac.json +21 -0
- package/templates/channels/teams-bot/integration/teams-bot-datasource-activities.json +154 -0
- package/templates/channels/teams-bot/integration/teams-bot-system.json +128 -23
- package/templates/channels/web-embed/channel.json +60 -0
- package/templates/channels/web-embed/install.template.md.hbs +1 -1
- package/templates/channels/web-embed/integration/README.md +2 -2
- package/templates/channels/web-embed/integration/application.json +2 -2
- package/templates/channels/web-embed/integration/env.template +1 -1
- package/templates/channels/web-embed/integration/rbac.json +13 -0
- package/templates/channels/web-embed/integration/web-embed-system.json +50 -4
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
'use strict';
|
|
10
10
|
|
|
11
|
+
const { CHATGPT_APPS_CREATE_URL } = require('../channels/chatgpt-runtime-contract');
|
|
12
|
+
|
|
11
13
|
const SAMPLE_SYSTEM_KEY = 'hubspot-demo';
|
|
12
14
|
const SAMPLE_DATASOURCE_KEY = 'hubspot-demo-companies';
|
|
13
15
|
const SAMPLE_UUID = '00000000-0000-4000-8000-000000000010';
|
|
@@ -272,6 +274,121 @@ const OPENAPI_ENVELOPE_DATA_EXAMPLES = {
|
|
|
272
274
|
activated: [],
|
|
273
275
|
failed: [],
|
|
274
276
|
success: true
|
|
277
|
+
},
|
|
278
|
+
ListChannelTargetsData: {
|
|
279
|
+
channels: [
|
|
280
|
+
{
|
|
281
|
+
key: 'chatgpt',
|
|
282
|
+
displayLabel: 'ChatGPT',
|
|
283
|
+
description: 'ChatGPT channel',
|
|
284
|
+
experimental: false,
|
|
285
|
+
provisioning: { mode: 'guided' },
|
|
286
|
+
runtimeTarget: { defaultSystemKey: 'runtime-orchestration', configurable: true },
|
|
287
|
+
installationSummary: { count: 0, statusRollup: 'none' },
|
|
288
|
+
installations: [],
|
|
289
|
+
configuration: [
|
|
290
|
+
{
|
|
291
|
+
name: 'CHANNEL_APP_DESCRIPTION',
|
|
292
|
+
propertyKey: 'appDescription',
|
|
293
|
+
location: 'variable',
|
|
294
|
+
required: false,
|
|
295
|
+
portalInput: { field: 'text', label: 'Description' }
|
|
296
|
+
}
|
|
297
|
+
]
|
|
298
|
+
}
|
|
299
|
+
]
|
|
300
|
+
},
|
|
301
|
+
ChannelDefinitionDetailData: {
|
|
302
|
+
key: 'slack',
|
|
303
|
+
displayName: 'Slack communication channel',
|
|
304
|
+
description: 'Slack channel',
|
|
305
|
+
type: 'custom',
|
|
306
|
+
systemKind: 'communication',
|
|
307
|
+
configuration: [],
|
|
308
|
+
channel: {
|
|
309
|
+
definitionKey: 'slack',
|
|
310
|
+
provisioning: { mode: 'guided' },
|
|
311
|
+
runtimeTarget: { defaultSystemKey: 'runtime-orchestration', configurable: true },
|
|
312
|
+
experimental: false,
|
|
313
|
+
profiles: []
|
|
314
|
+
},
|
|
315
|
+
installations: []
|
|
316
|
+
},
|
|
317
|
+
ChannelInstallationDetailData: {
|
|
318
|
+
definition: {
|
|
319
|
+
key: 'slack',
|
|
320
|
+
displayName: 'Slack',
|
|
321
|
+
provisioning: { mode: 'guided' }
|
|
322
|
+
},
|
|
323
|
+
installation: {
|
|
324
|
+
key: 'slack-finance',
|
|
325
|
+
displayName: 'Finance',
|
|
326
|
+
version: '1.0.0',
|
|
327
|
+
lifecycle: 'published',
|
|
328
|
+
availability: 'available',
|
|
329
|
+
authenticationStatus: 'online',
|
|
330
|
+
connectedSystemKey: 'slack-finance',
|
|
331
|
+
runtimeTarget: { systemKey: 'runtime-orchestration' }
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
ChannelInstallHelpData: {
|
|
335
|
+
helpMarkdown: '# Onni — ChatGPT\n\nStatus: Ready\n',
|
|
336
|
+
helpMarkdownContentType: 'text/markdown',
|
|
337
|
+
phase: 'waitingForUser',
|
|
338
|
+
userActions: [
|
|
339
|
+
{
|
|
340
|
+
id: 'open-vendor',
|
|
341
|
+
kind: 'openUrl',
|
|
342
|
+
label: 'Open ChatGPT apps',
|
|
343
|
+
required: true,
|
|
344
|
+
href: CHATGPT_APPS_CREATE_URL
|
|
345
|
+
}
|
|
346
|
+
],
|
|
347
|
+
definitionKey: 'chatgpt',
|
|
348
|
+
installationKey: 'chatgpt-onni',
|
|
349
|
+
systemKey: 'chatgpt-onni'
|
|
350
|
+
},
|
|
351
|
+
AuthPermissionsData: {
|
|
352
|
+
permissions: ['integration-client:read', 'integration-client:create']
|
|
353
|
+
},
|
|
354
|
+
ListChannelArtifactsData: {
|
|
355
|
+
artifacts: [
|
|
356
|
+
{
|
|
357
|
+
id: 'appPackage',
|
|
358
|
+
kind: 'zip',
|
|
359
|
+
fileName: 'appPackage.dev.zip',
|
|
360
|
+
contentType: 'application/zip',
|
|
361
|
+
href: '/api/v1/builder/systems/microsoft-copilot/channels/artifacts/appPackage'
|
|
362
|
+
}
|
|
363
|
+
]
|
|
364
|
+
},
|
|
365
|
+
ChannelArtifactBytesData: {
|
|
366
|
+
fileName: 'appPackage.dev.zip',
|
|
367
|
+
contentType: 'application/zip',
|
|
368
|
+
byteLength: 128
|
|
369
|
+
},
|
|
370
|
+
ChannelPackageData: {
|
|
371
|
+
channelTarget: 'microsoft-copilot',
|
|
372
|
+
installReady: false,
|
|
373
|
+
blocker: 'discoveryUnavailable',
|
|
374
|
+
artifactHash: 'sha256:demo',
|
|
375
|
+
links: { readme: 'dist/channels/microsoft-copilot/INSTALL.md', zip: null }
|
|
376
|
+
},
|
|
377
|
+
ChannelPackageSummaryData: {
|
|
378
|
+
channelTarget: 'microsoft-copilot',
|
|
379
|
+
installReady: false,
|
|
380
|
+
blocker: 'discoveryUnavailable',
|
|
381
|
+
links: { readme: 'dist/channels/microsoft-copilot/INSTALL.md', zip: null }
|
|
382
|
+
},
|
|
383
|
+
ChannelPackageZipData: {
|
|
384
|
+
fileName: 'appPackage.dev.zip',
|
|
385
|
+
contentType: 'application/zip',
|
|
386
|
+
byteLength: 128,
|
|
387
|
+
zipBase64: 'UEsDBBQAAAA='
|
|
388
|
+
},
|
|
389
|
+
ChannelBrandingData: {
|
|
390
|
+
systemKey: 'microsoft-copilot',
|
|
391
|
+
branding: { displayName: 'Acme Copilot', description: 'Preview' }
|
|
275
392
|
}
|
|
276
393
|
};
|
|
277
394
|
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
'use strict';
|
|
10
10
|
|
|
11
|
+
const { CHANNEL_INSTALL_BINDINGS } = require('./openapi-channel-install-bindings');
|
|
12
|
+
|
|
11
13
|
const SYSTEM_KEY_PARAM = {
|
|
12
14
|
name: 'systemKey',
|
|
13
15
|
in: 'path',
|
|
@@ -400,7 +402,8 @@ const OPERATION_BINDINGS = Object.freeze({
|
|
|
400
402
|
parameters: [ROLE_KEY_PARAM],
|
|
401
403
|
requestBody: jsonRequestBody('EvidenceActivateRequest'),
|
|
402
404
|
successResponse: 'EvidenceActivateResponse'
|
|
403
|
-
}
|
|
405
|
+
},
|
|
406
|
+
...CHANNEL_INSTALL_BINDINGS
|
|
404
407
|
});
|
|
405
408
|
|
|
406
409
|
/**
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAPI schema descriptions for generic channel install models.
|
|
3
|
+
*
|
|
4
|
+
* @fileoverview `_schema` = component description; property values = field descriptions
|
|
5
|
+
* @author AI Fabrix Team
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
'use strict';
|
|
10
|
+
|
|
11
|
+
/** @type {Record<string, Object>} */
|
|
12
|
+
const CHANNEL_INSTALL_SCHEMA_DESCRIPTIONS = {
|
|
13
|
+
ChannelInstallRequest: {
|
|
14
|
+
_schema: 'Generic channel install body. Optional profile is required only for generic targets.',
|
|
15
|
+
name: 'Customer-visible channel name (same as CLI --name).',
|
|
16
|
+
systemKey: 'Optional Connected System instance key. When omitted, derived from the definition key and name.',
|
|
17
|
+
configuration: 'Generic map of definition propertyKeys (for example commandPrefix). Unknown keys are rejected.',
|
|
18
|
+
runtimeSystemKey: 'Optional approved runtime or MCP Connected System when runtimeTarget.configurable is true.',
|
|
19
|
+
force: 'When true, refresh generated files. Does not rotate stored credentials.',
|
|
20
|
+
probe: 'When true, validate callbacks and assistant catalog after install.',
|
|
21
|
+
dryRun: 'When true, generate artifacts only; do not upload or store credentials.',
|
|
22
|
+
allowExperimental: 'When true, allow experimental channel targets.',
|
|
23
|
+
onboardUsers: 'When true, match Slack profile email to platform users after install.',
|
|
24
|
+
profile: 'Installation profile for generic targets (for example cursor). Omit for live vendor keys.',
|
|
25
|
+
token:
|
|
26
|
+
'Short-lived vendor session token from the help document. Used once for this request; not stored.'
|
|
27
|
+
},
|
|
28
|
+
ChannelInstallContinueRequest: {
|
|
29
|
+
_schema:
|
|
30
|
+
'Generic continue body. Optional token from the help document. Empty object remains valid and does not restart Microsoft device-code login. retryLogin restarts vendor login and issues a new handshake.',
|
|
31
|
+
token:
|
|
32
|
+
'Short-lived vendor session token from the help document. Used once for this request; not stored.',
|
|
33
|
+
retryLogin: 'When true, restart vendor login and issue a new handshake. Omit this to continue after Microsoft sign-in.'
|
|
34
|
+
},
|
|
35
|
+
ChannelProvisioning: {
|
|
36
|
+
_schema: 'How Builder provisions a Channel Definition.',
|
|
37
|
+
mode: 'automatic: API completes with no remaining vendor step. guided: API runs install; leftovers use help.md. cli: return generated CLI instructions; do not run the adapter.'
|
|
38
|
+
},
|
|
39
|
+
ChannelRuntimeTarget: {
|
|
40
|
+
_schema: 'Runtime or MCP Connected System for a channel. Not the channel instance key.',
|
|
41
|
+
defaultSystemKey: 'Default runtime Connected System key (runtime-orchestration for live definitions).',
|
|
42
|
+
configurable: 'When true, install may choose an approved runtime or MCP Connected System.',
|
|
43
|
+
systemKey: 'Resolved runtime Connected System key on an installation row.'
|
|
44
|
+
},
|
|
45
|
+
ChannelInstallationSummary: {
|
|
46
|
+
_schema: 'Rollup of Connected System instances for one Channel Definition.',
|
|
47
|
+
count: 'Number of matching Connected System instances. Zero when none exist.',
|
|
48
|
+
statusRollup: 'Single lifecycle/availability value, mixed, or none.'
|
|
49
|
+
},
|
|
50
|
+
ChannelInstallationRow: {
|
|
51
|
+
_schema: 'One Channel installation projected from a Dataplane Connected System.',
|
|
52
|
+
key: 'Connected System instance key.',
|
|
53
|
+
displayName: 'Instance display name from Dataplane.',
|
|
54
|
+
version: 'Instance version when Dataplane provides it.',
|
|
55
|
+
lifecycle: 'Publication lifecycle from Dataplane, or null.',
|
|
56
|
+
availability: 'Availability from Dataplane, or null.',
|
|
57
|
+
authenticationStatus: 'Authentication status from Dataplane, or null.',
|
|
58
|
+
connectedSystemKey: 'Same as key; explicit Connected System identity for consumers.',
|
|
59
|
+
runtimeTarget: 'Runtime Connected System used by this instance (systemKey).'
|
|
60
|
+
},
|
|
61
|
+
ChannelDefinitionChannel: {
|
|
62
|
+
_schema: 'Channel specialization on a safe definition payload.',
|
|
63
|
+
definitionKey: 'Stable catalog identity. Equals key on a definition; preserved on instances.',
|
|
64
|
+
provisioning: 'Provisioning mode for this definition.',
|
|
65
|
+
runtimeTarget: 'Default runtime or MCP Connected System.',
|
|
66
|
+
experimental: 'True when install requires allowExperimental.',
|
|
67
|
+
maxInstances: 'Optional cap on Connected System instances for this definition. Omit for unbounded.',
|
|
68
|
+
profiles: 'Optional generic install profiles (for example MCP client targets).'
|
|
69
|
+
},
|
|
70
|
+
ChannelTargetProfile: {
|
|
71
|
+
_schema: 'Optional install profile for a generic channel target.',
|
|
72
|
+
key: 'Profile key passed as profile on POST install.',
|
|
73
|
+
displayLabel: 'Human-readable profile name for catalog UI.'
|
|
74
|
+
},
|
|
75
|
+
ChannelTargetRow: {
|
|
76
|
+
_schema: 'One live channel target in the install catalog.',
|
|
77
|
+
key: 'Channel target key used as systemKey on install routes.',
|
|
78
|
+
displayLabel: 'Human-readable interface name.',
|
|
79
|
+
description: 'Short catalog blurb for the portal table. Not remaining-step copy.',
|
|
80
|
+
experimental: 'True when the target requires allowExperimental.',
|
|
81
|
+
provisioning: 'How Builder provisions this channel (automatic, guided, or cli).',
|
|
82
|
+
runtimeTarget: 'Runtime or MCP Connected System. Not the channel instance key.',
|
|
83
|
+
installationSummary: 'Count and status rollup of Connected System instances for this definition.',
|
|
84
|
+
installations: 'Connected System instances for this definition. Empty array when none exist. Never includes a CS whose key equals the catalog key.',
|
|
85
|
+
profiles: 'Optional profiles when the target is generic. Omitted for vendor keys.',
|
|
86
|
+
configuration: 'Safe Connected System configuration[] plus propertyKey. Secret-shaped values omitted. Portal add form uses these entries.',
|
|
87
|
+
cliInstructions: 'Generated CLI command when provisioning.mode is cli.',
|
|
88
|
+
iconHref: 'Data URL for the definition icon.svg from the Builder channel template. Omitted when the template has no icon.',
|
|
89
|
+
maxInstances: 'Optional instance cap from the Channel Definition. Omitted when unbounded.',
|
|
90
|
+
installationCount: 'Number of Connected System instances currently projected for this definition.',
|
|
91
|
+
canInstall: 'False when installationCount is already at maxInstances. Omitted meaning is canInstall true when unbounded.',
|
|
92
|
+
blockedReason: 'Present when canInstall is false. Explains why a new install is refused.'
|
|
93
|
+
},
|
|
94
|
+
ListChannelTargetsData: {
|
|
95
|
+
_schema: 'Catalog of live channel / interface targets.',
|
|
96
|
+
channels: 'Live targets the caller may install. Unimplemented keys are omitted.'
|
|
97
|
+
},
|
|
98
|
+
ListChannelTargetsResponse: {
|
|
99
|
+
_schema: '200 response envelope for listChannelTargets.',
|
|
100
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
101
|
+
data: 'Typed payload; see ListChannelTargetsData.',
|
|
102
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
103
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
104
|
+
},
|
|
105
|
+
ChannelDefinitionDetailData: {
|
|
106
|
+
_schema: 'Safe Channel Definition plus installation projection. Secrets stripped.',
|
|
107
|
+
key: 'Definition key (catalog identity).',
|
|
108
|
+
displayName: 'Human-readable definition name.',
|
|
109
|
+
description: 'Definition description.',
|
|
110
|
+
type: 'External System type.',
|
|
111
|
+
systemKind: 'Enterprise system classification.',
|
|
112
|
+
configuration: 'Safe configuration plus propertyKey. Secret-shaped values omitted.',
|
|
113
|
+
channel: 'Channel specialization (provisioning, runtimeTarget, profiles).',
|
|
114
|
+
cliInstructions: 'Generated CLI command when provisioning.mode is cli.',
|
|
115
|
+
iconHref: 'Data URL for the definition icon.svg from the Builder channel template.',
|
|
116
|
+
installations: 'Connected System instances for this definition. Empty array when none exist.',
|
|
117
|
+
maxInstances: 'Optional instance cap from the Channel Definition. Omitted when unbounded.',
|
|
118
|
+
installationCount: 'Number of Connected System instances currently projected for this definition.',
|
|
119
|
+
canInstall: 'False when installationCount is already at maxInstances.',
|
|
120
|
+
blockedReason: 'Present when canInstall is false.'
|
|
121
|
+
},
|
|
122
|
+
ChannelDefinitionDetailResponse: {
|
|
123
|
+
_schema: '200 response envelope for getChannelDefinitionDetail.',
|
|
124
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
125
|
+
data: 'Typed payload; see ChannelDefinitionDetailData.',
|
|
126
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
127
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
128
|
+
},
|
|
129
|
+
ChannelInstallationDetailData: {
|
|
130
|
+
_schema: 'One Channel installation projected from a Dataplane Connected System.',
|
|
131
|
+
definition: 'Catalog identity for this installation.',
|
|
132
|
+
installation: 'Projected instance fields from Dataplane. Builder does not persist lifecycle.'
|
|
133
|
+
},
|
|
134
|
+
ChannelInstallationDetailResponse: {
|
|
135
|
+
_schema: '200 response envelope for getChannelInstallation.',
|
|
136
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
137
|
+
data: 'Typed payload; see ChannelInstallationDetailData.',
|
|
138
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
139
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
140
|
+
},
|
|
141
|
+
ChannelUserAction: {
|
|
142
|
+
_schema: 'One generic wizard action. Secrets are stripped on the default HTTP JSON.',
|
|
143
|
+
id: 'Stable action id for resume and tests.',
|
|
144
|
+
kind: 'Generic action kind (openUrl, downloadArtifact, copyValue, submitInput, remainingVendorStep, retryLogin).',
|
|
145
|
+
label: 'Human label for the action.',
|
|
146
|
+
required: 'True when the server cannot finish without this action.',
|
|
147
|
+
resume: 'How to continue after the human acts (poll or submit).',
|
|
148
|
+
href: 'URL for openUrl or downloadArtifact.',
|
|
149
|
+
field: 'Continue-body field name for submitInput (for example token).',
|
|
150
|
+
artifactId: 'Artifact id for downloadArtifact.',
|
|
151
|
+
command: 'Optional command text. Secret-shaped values are omitted on HTTP.',
|
|
152
|
+
value: 'Copyable value. Secret-shaped values are omitted on HTTP.',
|
|
153
|
+
text: 'Remaining vendor step text.'
|
|
154
|
+
},
|
|
155
|
+
ChannelInstallVerdict: {
|
|
156
|
+
_schema: 'One install verdict (runtime, oauth, or vendor session).',
|
|
157
|
+
ok: 'True when this check passed.',
|
|
158
|
+
label: 'Short status label for help markdown.'
|
|
159
|
+
},
|
|
160
|
+
ChannelInstallVerdicts: {
|
|
161
|
+
_schema: 'Install readiness verdicts used to derive phase.',
|
|
162
|
+
runtime: 'Runtime Connected System availability.',
|
|
163
|
+
oauth: 'OAuth or Integration Client connection.',
|
|
164
|
+
vendorSession: 'Vendor session or workspace approval.'
|
|
165
|
+
},
|
|
166
|
+
ChannelInstallHelpData: {
|
|
167
|
+
_schema: 'Default HTTP install result: markdown help plus machine wizard fields.',
|
|
168
|
+
helpMarkdown: 'Markdown remaining-step document for the human. Generated on each GET/POST. No secrets.',
|
|
169
|
+
helpMarkdownContentType: 'Always text/markdown.',
|
|
170
|
+
refreshHintSeconds: 'Optional poll interval after the user follows a link in the document.',
|
|
171
|
+
phase: 'Wizard phase derived from verdicts and required userActions.',
|
|
172
|
+
userActions: 'Safe next actions for a generic wizard. Secrets stripped. No Slack-named fields.',
|
|
173
|
+
verdicts: 'Runtime, oauth, and vendor-session checks.',
|
|
174
|
+
definitionKey: 'Channel Definition catalog key (for example chatgpt).',
|
|
175
|
+
installationKey: 'Connected System instance key for this install (for example chatgpt-chatgpt2).',
|
|
176
|
+
systemKey: 'Same as installationKey. Path for GET install help for this instance.'
|
|
177
|
+
},
|
|
178
|
+
ChannelInstallHelpResponse: {
|
|
179
|
+
_schema: '200 response envelope for channel install help markdown.',
|
|
180
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
181
|
+
data: 'Typed payload; see ChannelInstallHelpData.',
|
|
182
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
183
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
184
|
+
},
|
|
185
|
+
ChannelArtifactRow: {
|
|
186
|
+
_schema: 'Downloadable install artifact linked from help markdown.',
|
|
187
|
+
id: 'Artifact id used in GET .../artifacts/{artifactId}.',
|
|
188
|
+
kind: 'Storage kind for machine clients (zip, json, markdown). Default HTTP does not require this.',
|
|
189
|
+
fileName: 'Suggested download file name.',
|
|
190
|
+
contentType: 'MIME type of the artifact bytes.',
|
|
191
|
+
href: 'Builder API path to download the artifact.'
|
|
192
|
+
},
|
|
193
|
+
ListChannelArtifactsData: {
|
|
194
|
+
_schema: 'Artifacts produced by the current install session.',
|
|
195
|
+
artifacts: 'Files linked from the help document (for example the Copilot ZIP).'
|
|
196
|
+
},
|
|
197
|
+
ListChannelArtifactsResponse: {
|
|
198
|
+
_schema: '200 response envelope for listChannelArtifacts.',
|
|
199
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
200
|
+
data: 'Typed payload; see ListChannelArtifactsData.',
|
|
201
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
202
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
203
|
+
},
|
|
204
|
+
ChannelArtifactBytesData: {
|
|
205
|
+
_schema: 'JSON metadata for an artifact when not streaming raw bytes.',
|
|
206
|
+
fileName: 'Download file name.',
|
|
207
|
+
contentType: 'MIME type of the bytes (application/zip for packages).',
|
|
208
|
+
byteLength: 'Size of the artifact in bytes.'
|
|
209
|
+
},
|
|
210
|
+
ChannelArtifactBytesResponse: {
|
|
211
|
+
_schema: '200 response envelope metadata for getChannelArtifact (bytes also sent as application/zip).',
|
|
212
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
213
|
+
data: 'Typed payload; see ChannelArtifactBytesData.',
|
|
214
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
215
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
216
|
+
},
|
|
217
|
+
ChannelPackageRequest: {
|
|
218
|
+
_schema: 'Optional body for building a vendor channel package. Does not publish a channel.',
|
|
219
|
+
name: 'Package display name override.',
|
|
220
|
+
description: 'Package description override.',
|
|
221
|
+
baseName: 'Base name used when generating artifact files.',
|
|
222
|
+
environment: 'Target environment label written into the package summary.',
|
|
223
|
+
dataplaneUrl: 'Dataplane base URL used for discovery while building the package.',
|
|
224
|
+
dryRun: 'When true, generate artifacts only.',
|
|
225
|
+
branding: 'Optional branding overrides stored in the workspace.'
|
|
226
|
+
},
|
|
227
|
+
ChannelPackageLinks: {
|
|
228
|
+
_schema: 'README and ZIP paths produced by a package build.',
|
|
229
|
+
readme: 'Path to the generated install README.',
|
|
230
|
+
zip: 'Path to the generated app-package ZIP, or null when not produced.'
|
|
231
|
+
},
|
|
232
|
+
ChannelPackageData: {
|
|
233
|
+
_schema: 'Result of building a vendor channel package. installReady is package-import readiness, not channel-installed.',
|
|
234
|
+
channelTarget: 'Channel target key that was packaged.',
|
|
235
|
+
installReady: 'True when the generated vendor package is ready to import. Not the same as a published channel.',
|
|
236
|
+
blocker: 'Discovery or packaging blocker, or null when none.',
|
|
237
|
+
artifactHash: 'Hash of the generated package artifact.',
|
|
238
|
+
links: 'README and ZIP links for the built package.'
|
|
239
|
+
},
|
|
240
|
+
ChannelPackageResponse: {
|
|
241
|
+
_schema: '200 response envelope for buildChannelPackage.',
|
|
242
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
243
|
+
data: 'Typed payload; see ChannelPackageData.',
|
|
244
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
245
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
246
|
+
},
|
|
247
|
+
ChannelPackageSummaryData: {
|
|
248
|
+
_schema: 'Last built channel package summary. installReady is package-import readiness, not channel-installed.',
|
|
249
|
+
channelTarget: 'Channel target key that was packaged.',
|
|
250
|
+
installReady: 'True when the generated vendor package is ready to import. Not the same as a published channel.',
|
|
251
|
+
blocker: 'Discovery or packaging blocker, or null when none.',
|
|
252
|
+
links: 'README and ZIP links for the last build.'
|
|
253
|
+
},
|
|
254
|
+
ChannelPackageSummaryResponse: {
|
|
255
|
+
_schema: '200 response envelope for getChannelPackageSummary.',
|
|
256
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
257
|
+
data: 'Typed payload; see ChannelPackageSummaryData.',
|
|
258
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
259
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
260
|
+
},
|
|
261
|
+
ChannelPackageZipData: {
|
|
262
|
+
_schema: 'Built app package ZIP returned as JSON metadata plus zipBase64.',
|
|
263
|
+
fileName: 'Download file name.',
|
|
264
|
+
contentType: 'MIME type of the ZIP bytes.',
|
|
265
|
+
byteLength: 'Size of the ZIP in bytes.',
|
|
266
|
+
zipBase64: 'ZIP bytes encoded as Base64.'
|
|
267
|
+
},
|
|
268
|
+
ChannelPackageZipResponse: {
|
|
269
|
+
_schema: '200 response envelope for getChannelPackageZip.',
|
|
270
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
271
|
+
data: 'Typed payload; see ChannelPackageZipData.',
|
|
272
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
273
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
274
|
+
},
|
|
275
|
+
ChannelBrandingFields: {
|
|
276
|
+
_schema: 'Optional workspace branding used when generating a vendor package.',
|
|
277
|
+
displayName: 'Customer-visible package display name.',
|
|
278
|
+
description: 'Customer-visible package description.',
|
|
279
|
+
iconColorPath: 'Workspace path to the color icon file.',
|
|
280
|
+
iconOutlinePath: 'Workspace path to the outline icon file.'
|
|
281
|
+
},
|
|
282
|
+
ChannelBrandingPatchRequest: {
|
|
283
|
+
_schema: 'Partial branding update stored in the workspace. Does not publish a channel.',
|
|
284
|
+
displayName: 'Customer-visible package display name.',
|
|
285
|
+
description: 'Customer-visible package description.',
|
|
286
|
+
iconColorPath: 'Workspace path to the color icon file.',
|
|
287
|
+
iconOutlinePath: 'Workspace path to the outline icon file.'
|
|
288
|
+
},
|
|
289
|
+
ChannelBrandingData: {
|
|
290
|
+
_schema: 'Workspace branding for a channel packaging target.',
|
|
291
|
+
systemKey: 'Channel target key whose branding was read or patched.',
|
|
292
|
+
branding: 'Stored branding fields for package generation.'
|
|
293
|
+
},
|
|
294
|
+
ChannelBrandingResponse: {
|
|
295
|
+
_schema: '200 response envelope for channel branding read and patch.',
|
|
296
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
297
|
+
data: 'Typed payload; see ChannelBrandingData.',
|
|
298
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
299
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
300
|
+
},
|
|
301
|
+
AuthPermissionsData: {
|
|
302
|
+
_schema: 'Thin forward of Miso current-user permissions. Not a Builder permission catalog.',
|
|
303
|
+
permissions: 'Permission slugs from GET /api/v1/auth/permissions (for example integration-client:read).'
|
|
304
|
+
},
|
|
305
|
+
AuthPermissionsResponse: {
|
|
306
|
+
_schema: '200 response envelope for getAuthPermissions.',
|
|
307
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
308
|
+
data: 'Typed payload; see AuthPermissionsData.',
|
|
309
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
310
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
module.exports = {
|
|
315
|
+
CHANNEL_INSTALL_SCHEMA_DESCRIPTIONS
|
|
316
|
+
};
|
|
@@ -27,14 +27,18 @@ function toOpenApiPath(routePattern) {
|
|
|
27
27
|
* @param {string} responseSchemaName
|
|
28
28
|
* @returns {Object}
|
|
29
29
|
*/
|
|
30
|
-
function successResponseContent(responseSchemaName) {
|
|
30
|
+
function successResponseContent(responseSchemaName, extraContent) {
|
|
31
|
+
const content = {
|
|
32
|
+
'application/json': {
|
|
33
|
+
schema: { $ref: `#/components/schemas/${responseSchemaName}` }
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
if (extraContent && typeof extraContent === 'object') {
|
|
37
|
+
Object.assign(content, extraContent);
|
|
38
|
+
}
|
|
31
39
|
return {
|
|
32
40
|
description: 'Successful builder-api envelope (success, data, correlationId, requestId).',
|
|
33
|
-
content
|
|
34
|
-
'application/json': {
|
|
35
|
-
schema: { $ref: `#/components/schemas/${responseSchemaName}` }
|
|
36
|
-
}
|
|
37
|
-
}
|
|
41
|
+
content
|
|
38
42
|
};
|
|
39
43
|
}
|
|
40
44
|
|
|
@@ -106,7 +110,7 @@ function buildOperationObject(capability) {
|
|
|
106
110
|
description: meta.description,
|
|
107
111
|
tags: meta.tags,
|
|
108
112
|
responses: {
|
|
109
|
-
200: successResponseContent(binding.successResponse),
|
|
113
|
+
200: successResponseContent(binding.successResponse, binding.extraSuccessContent),
|
|
110
114
|
...buildStandardErrorResponses()
|
|
111
115
|
}
|
|
112
116
|
};
|
|
@@ -162,7 +166,7 @@ function buildOpenApiTags() {
|
|
|
162
166
|
{
|
|
163
167
|
name: 'channel',
|
|
164
168
|
description:
|
|
165
|
-
'
|
|
169
|
+
'Channel install and packaging: catalog, help markdown, artifacts, Copilot/ChatGPT/Slack/Teams packages and branding.'
|
|
166
170
|
}
|
|
167
171
|
];
|
|
168
172
|
}
|
|
@@ -1,60 +1,70 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Platform RBAC role catalog — mirrors dataplane builder/dataplane/rbac.yaml
|
|
2
|
+
* Platform RBAC role catalog — mirrors dataplane builder/dataplane/rbac.yaml
|
|
3
|
+
* role values and display names (without an "AI Fabrix" name prefix).
|
|
3
4
|
*
|
|
4
|
-
* @fileoverview SSOT for facade/orchestration integrations using platform roles
|
|
5
|
+
* @fileoverview SSOT for facade/orchestration integrations using platform roles
|
|
5
6
|
* @author AI Fabrix Team
|
|
6
7
|
* @version 1.0.0
|
|
7
8
|
*/
|
|
8
9
|
|
|
9
10
|
'use strict';
|
|
10
11
|
|
|
12
|
+
const ROLE_PLATFORM_ADMIN = 'aifabrix-platform-admin';
|
|
13
|
+
const ROLE_SECURITY_ADMIN = 'aifabrix-security-admin';
|
|
14
|
+
const ROLE_DEPLOYMENT_ADMIN = 'aifabrix-deployment-admin';
|
|
15
|
+
const ROLE_COMPLIANCE_ADMIN = 'aifabrix-compliance-admin';
|
|
16
|
+
const ROLE_DEVELOPER = 'aifabrix-developer';
|
|
17
|
+
const ROLE_OBSERVER = 'aifabrix-observer';
|
|
18
|
+
const ROLE_AI_TRUST_OPERATOR = 'aifabrix-ai-trust-operator';
|
|
19
|
+
const ROLE_EXTERNAL_SYSTEM_DISCOVERER = 'aifabrix-external-system-discoverer';
|
|
20
|
+
|
|
11
21
|
/** @type {ReadonlyArray<{ name: string, value: string, description: string, groups: string[] }>} */
|
|
12
22
|
const PLATFORM_ROLES = Object.freeze([
|
|
13
23
|
{
|
|
14
|
-
name: '
|
|
15
|
-
value:
|
|
24
|
+
name: 'Platform Admin',
|
|
25
|
+
value: ROLE_PLATFORM_ADMIN,
|
|
16
26
|
description: 'Full platform infrastructure management and enterprise controller access',
|
|
17
27
|
groups: ['AI-Fabrix-Platform-Admins']
|
|
18
28
|
},
|
|
19
29
|
{
|
|
20
|
-
name: '
|
|
21
|
-
value:
|
|
30
|
+
name: 'Security Admin',
|
|
31
|
+
value: ROLE_SECURITY_ADMIN,
|
|
22
32
|
description: 'Security and compliance management for enterprise controller',
|
|
23
33
|
groups: ['AI-Fabrix-Security-Admins']
|
|
24
34
|
},
|
|
25
35
|
{
|
|
26
|
-
name: '
|
|
27
|
-
value:
|
|
36
|
+
name: 'Deployment Admin',
|
|
37
|
+
value: ROLE_DEPLOYMENT_ADMIN,
|
|
28
38
|
description: 'Application deployment orchestration and environment management',
|
|
29
39
|
groups: ['AI-Fabrix-Deployment-Admins']
|
|
30
40
|
},
|
|
31
41
|
{
|
|
32
|
-
name: '
|
|
33
|
-
value:
|
|
42
|
+
name: 'Compliance Admin',
|
|
43
|
+
value: ROLE_COMPLIANCE_ADMIN,
|
|
34
44
|
description: 'ISO 27001 compliance monitoring and audit management',
|
|
35
45
|
groups: ['AI-Fabrix-Compliance-Admins']
|
|
36
46
|
},
|
|
37
47
|
{
|
|
38
|
-
name: '
|
|
39
|
-
value:
|
|
48
|
+
name: 'Developer',
|
|
49
|
+
value: ROLE_DEVELOPER,
|
|
40
50
|
description: 'Developer access to deploy applications via CI pipelines',
|
|
41
51
|
groups: ['AI-Fabrix-Developers']
|
|
42
52
|
},
|
|
43
53
|
{
|
|
44
|
-
name: '
|
|
45
|
-
value:
|
|
54
|
+
name: 'Observer',
|
|
55
|
+
value: ROLE_OBSERVER,
|
|
46
56
|
description: 'Read-only access to monitoring, logs, and compliance reports',
|
|
47
57
|
groups: ['AI-Fabrix-Observers']
|
|
48
58
|
},
|
|
49
59
|
{
|
|
50
|
-
name: 'AI
|
|
51
|
-
value:
|
|
60
|
+
name: 'AI Trust Operator',
|
|
61
|
+
value: ROLE_AI_TRUST_OPERATOR,
|
|
52
62
|
description: 'Run AI Trust access evaluation and explain visibility for governed users',
|
|
53
63
|
groups: ['AI-Fabrix-AI-Trust-Operators']
|
|
54
64
|
},
|
|
55
65
|
{
|
|
56
|
-
name: '
|
|
57
|
-
value:
|
|
66
|
+
name: 'External System Discoverer',
|
|
67
|
+
value: ROLE_EXTERNAL_SYSTEM_DISCOVERER,
|
|
58
68
|
description: 'Discover business context for external systems via REST and MCP',
|
|
59
69
|
groups: ['AI-Fabrix-External-System-Discoverers']
|
|
60
70
|
}
|
|
@@ -83,6 +93,14 @@ function isPlatformRoleValue(value) {
|
|
|
83
93
|
}
|
|
84
94
|
|
|
85
95
|
module.exports = {
|
|
96
|
+
ROLE_PLATFORM_ADMIN,
|
|
97
|
+
ROLE_SECURITY_ADMIN,
|
|
98
|
+
ROLE_DEPLOYMENT_ADMIN,
|
|
99
|
+
ROLE_COMPLIANCE_ADMIN,
|
|
100
|
+
ROLE_DEVELOPER,
|
|
101
|
+
ROLE_OBSERVER,
|
|
102
|
+
ROLE_AI_TRUST_OPERATOR,
|
|
103
|
+
ROLE_EXTERNAL_SYSTEM_DISCOVERER,
|
|
86
104
|
PLATFORM_ROLES,
|
|
87
105
|
PLATFORM_ROLE_VALUES,
|
|
88
106
|
listPlatformRoles,
|