@aifabrix/builder 2.53.1 → 2.55.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/README.md +8 -0
- package/bin/aifabrix.js +2 -2
- package/lib/agent-kit/apply-ops.js +82 -0
- package/lib/agent-kit/checksums.js +28 -0
- package/lib/agent-kit/classify.js +113 -0
- package/lib/agent-kit/claude-shim.js +61 -0
- package/lib/agent-kit/constants.js +55 -0
- package/lib/agent-kit/file-list.js +103 -0
- package/lib/agent-kit/host-approve.js +130 -0
- package/lib/agent-kit/hosting/github.js +63 -0
- package/lib/agent-kit/hosts.js +71 -0
- package/lib/agent-kit/init.js +319 -0
- package/lib/agent-kit/kit-root.js +17 -0
- package/lib/agent-kit/managed-section.js +79 -0
- package/lib/agent-kit/package-load.js +45 -0
- package/lib/agent-kit/plan-ops.js +69 -0
- package/lib/agent-kit/remote-prompts.js +239 -0
- package/lib/agent-kit/render-host-markdown.js +40 -0
- package/lib/agent-kit/repo-guard.js +47 -0
- package/lib/agent-kit/report.js +107 -0
- package/lib/agent-kit/run.js +82 -0
- package/lib/agent-kit/scm/git.js +122 -0
- package/lib/agent-kit/state-file.js +83 -0
- package/lib/agent-kit/status.js +50 -0
- package/lib/agent-kit/v1-detect.js +81 -0
- package/lib/agent-kit/validate-kit.js +87 -0
- package/lib/agent-kit/workspace-name.js +40 -0
- package/lib/agent-kit/workspace-skeleton.js +103 -0
- 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/role-assistant-test-pack.api.js +86 -0
- package/lib/api/types/evidence.types.js +2 -0
- package/lib/api/work-search.api.js +163 -0
- package/lib/api/work.api.js +19 -12
- package/lib/app/list-external-systems.js +2 -1
- package/lib/app/show-display.js +33 -6
- package/lib/app/show.js +25 -2
- package/lib/channels/add-channel.js +164 -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 +61 -0
- package/lib/channels/channel-add-remaining.js +492 -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-definition-status.js +115 -0
- package/lib/channels/channel-description.js +60 -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 +358 -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 +18 -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 +194 -72
- package/lib/channels/channel-status-display.js +86 -16
- package/lib/channels/channel-targets.js +132 -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 +92 -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 +311 -0
- package/lib/channels/slack-mcp-callback.js +51 -0
- package/lib/channels/slack-mcp-runtime.js +156 -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 +335 -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 +53 -0
- package/lib/channels/teams-bot-channel-add.js +94 -0
- package/lib/channels/vendor-dataplane-url.js +249 -0
- package/lib/cli/index.js +4 -0
- package/lib/cli/setup-certification-commands.js +2 -2
- package/lib/cli/setup-certification.help.js +5 -1
- package/lib/cli/setup-external-system-help.js +2 -0
- package/lib/cli/setup-external-system.js +1 -1
- package/lib/commands/agent-kit-help.js +79 -0
- package/lib/commands/agent-kit.js +346 -0
- 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/datasource-capability-relate-cli.js +5 -4
- 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-auth-apply.js +1 -1
- package/lib/commands/repair-datasource-key-skip.js +39 -0
- package/lib/commands/repair-datasource-keys.js +24 -12
- 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 +26 -44
- package/lib/commands/repair-system-permissions.js +24 -22
- package/lib/commands/role-assistant-copy-output.js +61 -0
- package/lib/commands/role-assistant-copy.js +155 -0
- package/lib/commands/role-assistant-test-output.js +22 -9
- package/lib/commands/role-assistant-test-result-rows.js +42 -0
- package/lib/commands/role-assistant.js +150 -43
- package/lib/commands/search.js +143 -0
- package/lib/commands/test-e2e-external.js +148 -21
- package/lib/commands/test-trust-external.js +7 -5
- 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 +10 -4
- package/lib/commands/upload.js +18 -3
- package/lib/commands/verify-operations-skip-e2e.js +131 -0
- package/lib/commands/verify-operations-step-plan.js +6 -33
- package/lib/commands/verify-operations-steps.js +3 -1
- 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/datasource/capability/relate-operations.js +28 -10
- package/lib/datasource/capability/run-capability-relate.js +48 -25
- package/lib/datasource/datasource-identifier.js +13 -5
- package/lib/deployment/deployer-poll-run.js +117 -35
- package/lib/external-system/deploy-dataplane-published.js +70 -0
- package/lib/external-system/deploy-helpers.js +26 -1
- package/lib/external-system/deploy.js +22 -8
- package/lib/external-system/download-helpers.js +29 -2
- package/lib/external-system/download-role-assistant.js +109 -4
- package/lib/external-system/download.js +46 -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/generator/wizard-datasource-key.js +54 -0
- package/lib/generator/wizard.js +55 -54
- package/lib/integration-definition/apply-datasource-keys.js +75 -0
- package/lib/integration-definition/apply-relationships.js +195 -0
- package/lib/integration-definition/apply-static-enterprise.js +229 -0
- package/lib/integration-definition/apply-system-file.js +71 -0
- package/lib/integration-definition/apply-test-endpoint.js +89 -0
- package/lib/integration-definition/apply-viewpoint-defaults.js +157 -0
- package/lib/integration-definition/apply.js +78 -59
- package/lib/integration-definition/enrich-openapi-operations.js +36 -10
- package/lib/integration-definition/enrich-openapi-pick.js +87 -0
- package/lib/lifecycle/role-assistant-governance.js +181 -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 +55 -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/index.js +2 -0
- package/lib/programmatic/openapi-apply-result-schemas.js +8 -0
- package/lib/programmatic/openapi-channel-install-bindings.js +179 -0
- package/lib/programmatic/openapi-channel-install-schemas.js +289 -0
- package/lib/programmatic/openapi-component-schemas.js +19 -1
- package/lib/programmatic/openapi-description-enricher.js +3 -1
- package/lib/programmatic/openapi-descriptions.js +80 -3
- package/lib/programmatic/openapi-envelope-examples.js +124 -0
- package/lib/programmatic/openapi-operation-bindings.js +9 -1
- package/lib/programmatic/openapi-request-schemas.js +5 -0
- package/lib/programmatic/openapi-schema-descriptions-channel.js +319 -0
- package/lib/programmatic/openapi-schema-descriptions-operations.js +19 -0
- package/lib/programmatic/openapi-spec.js +13 -8
- package/lib/programmatic/platform-rbac-catalog.js +36 -18
- package/lib/programmatic/request-timeout.js +3 -0
- package/lib/programmatic/route-handler-map.js +58 -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 +238 -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 +236 -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/run-download.js +41 -0
- package/lib/programmatic/workspace-context.js +2 -0
- package/lib/protection/auth-context.js +3 -1
- package/lib/protection/protection-display.js +3 -2
- package/lib/protection/report-exit.js +50 -0
- package/lib/protection/run-commands.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/package-validate.js +175 -0
- package/lib/role-assistant/settings.js +49 -2
- package/lib/role-assistant/test-case-assertion-row.js +36 -0
- package/lib/role-assistant/test-case-copy-bind.js +77 -0
- package/lib/role-assistant/test-case-copy-expected.js +127 -0
- package/lib/role-assistant/test-case-copy-from-work.js +90 -0
- package/lib/role-assistant/test-case-copy-interactions.js +67 -0
- package/lib/role-assistant/test-case-copy.js +119 -0
- package/lib/role-assistant/test-case-expected-catalog.js +135 -0
- package/lib/role-assistant/test-case-validate.js +88 -0
- package/lib/role-assistant/test-cases-bid.js +117 -4
- package/lib/role-assistant/test-cases-evaluate.js +159 -24
- package/lib/role-assistant/test-cases-evidence.js +175 -0
- package/lib/role-assistant/test-cases-honesty.js +155 -6
- package/lib/role-assistant/test-cases-lifecycle.js +291 -0
- package/lib/role-assistant/test-cases-search-graph.js +122 -0
- package/lib/role-assistant/test-cases-search.js +247 -0
- package/lib/role-assistant/test-cases.js +71 -172
- package/lib/role-assistant/test-pack-map.js +180 -0
- package/lib/role-assistant/test-pack-sync.js +187 -0
- package/lib/role-assistant/test-runner-debug.js +54 -0
- package/lib/role-assistant/test-runner-respond-body.js +36 -0
- package/lib/role-assistant/test-runner-search.js +164 -0
- package/lib/role-assistant/test-runner-start-payload.js +63 -10
- package/lib/role-assistant/test-runner-workhub-answers.js +45 -16
- 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 +74 -32
- package/lib/role-assistant/test-runner.js +66 -11
- package/lib/schema/external-datasource.schema.json +146 -21
- package/lib/schema/external-system.schema.json +177 -2
- package/lib/schema/mcp-client-profile.schema.json +103 -0
- package/lib/schema/role-assistant-test-case.schema.json +408 -0
- package/lib/search/dataplane-context.js +23 -0
- package/lib/search/search-args.js +211 -0
- package/lib/search/search-display.js +238 -0
- package/lib/search/search-errors.js +50 -0
- package/lib/search/search-prompts.js +119 -0
- package/lib/search/search-roles.js +85 -0
- package/lib/search/search-run.js +241 -0
- package/lib/search/search-skills.js +198 -0
- package/lib/utils/app-path-resolve.js +4 -0
- package/lib/utils/authentication-env-template.js +44 -6
- package/lib/utils/authentication-slot-show.js +153 -0
- package/lib/utils/credential-display.js +43 -1
- 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/external-system-readiness-compact-blocks.js +5 -1
- package/lib/utils/external-system-readiness-compact-display.js +30 -1
- package/lib/utils/external-system-validators.js +2 -1
- package/lib/utils/help-builder.js +3 -1
- 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-loader.js +37 -0
- 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-external-file.js +5 -1
- package/lib/validation/validate.js +41 -0
- package/package.json +1 -1
- package/templates/README.md +1 -1
- package/templates/agent-kit/adapters/claude/nested.CLAUDE.md +1 -0
- package/templates/agent-kit/adapters/claude/root.CLAUDE.md +5 -0
- package/templates/agent-kit/adapters/cursor/commands/cust-0-plan.md +5 -0
- package/templates/agent-kit/adapters/cursor/commands/cust-1-validate.md +5 -0
- package/templates/agent-kit/adapters/cursor/commands/cust-2-build.md +5 -0
- package/templates/agent-kit/adapters/cursor/commands/cust-3-push.md +5 -0
- package/templates/agent-kit/adapters/cursor/commands/cust-biz-1-validate.md +5 -0
- package/templates/agent-kit/adapters/cursor/commands/cust-biz-2-build.md +5 -0
- package/templates/agent-kit/adapters/cursor/commands/cust-biz-3-prove.md +5 -0
- package/templates/agent-kit/agent-kit.yaml +45 -0
- package/templates/agent-kit/instructions/AGENTKIT.md +83 -0
- package/templates/agent-kit/instructions/integration.AGENTS.md +25 -0
- package/templates/agent-kit/instructions/role-assistant.AGENTS.md +22 -0
- package/templates/agent-kit/instructions/root.AGENTS.md +37 -0
- package/templates/agent-kit/parity-inventory.yaml +188 -0
- package/templates/agent-kit/skills/aifabrix-connected-system/SKILL.md +58 -0
- package/templates/agent-kit/skills/aifabrix-connected-system/references/contract-checklist.md +40 -0
- package/templates/agent-kit/skills/aifabrix-connected-system/references/delivery-gates.md +54 -0
- package/templates/agent-kit/skills/aifabrix-connected-system/references/production-safety.md +35 -0
- package/templates/agent-kit/skills/aifabrix-connected-system/scripts/reserved-system-key.js +19 -0
- package/templates/agent-kit/skills/aifabrix-plan/SKILL.md +51 -0
- package/templates/agent-kit/skills/aifabrix-plan/references/challenge-checklist.md +108 -0
- package/templates/agent-kit/skills/aifabrix-plan/references/interaction.md +34 -0
- package/templates/agent-kit/skills/aifabrix-plan/references/plan-template.md +182 -0
- package/templates/agent-kit/skills/aifabrix-prove/SKILL.md +50 -0
- package/templates/agent-kit/skills/aifabrix-prove/references/demo-template.md +65 -0
- package/templates/agent-kit/skills/aifabrix-prove/references/evidence-lifecycle.md +68 -0
- package/templates/agent-kit/skills/aifabrix-prove/references/learning-template.md +66 -0
- package/templates/agent-kit/skills/aifabrix-role-assistant/SKILL.md +42 -0
- package/templates/agent-kit/skills/aifabrix-role-assistant/references/package-boundary.md +21 -0
- package/templates/agent-kit/skills/shared/hosts.md +78 -0
- package/templates/agent-kit/workspace/.cursor/plans/README.md +22 -0
- package/templates/agent-kit/workspace/LICENSE.mit +21 -0
- package/templates/agent-kit/workspace/README.md +89 -0
- package/templates/applications/builder-api/Dockerfile +3 -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 +35 -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 +10 -9
- 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 +44 -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 +22 -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 +234 -0
- package/templates/channels/slack/icon.svg +1 -0
- package/templates/channels/slack/install.template.md.hbs +45 -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 +161 -72
- package/templates/channels/slack/manifest.template.json.hbs +10 -4
- package/templates/channels/teams-bot/channel.json +162 -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
- package/templates/python/docker-compose.hbs +14 -0
- package/templates/typescript/docker-compose.hbs +14 -0
|
@@ -0,0 +1,319 @@
|
|
|
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
|
+
status: 'Catalog availability. Omit or visible: listed and installable. hide is omitted from this catalog. coming-soon: listed read-only; new install is refused.',
|
|
68
|
+
maxInstances: 'Optional cap on Connected System instances for this definition. Omit for unbounded.',
|
|
69
|
+
profiles: 'Optional generic install profiles (for example MCP client targets).'
|
|
70
|
+
},
|
|
71
|
+
ChannelTargetProfile: {
|
|
72
|
+
_schema: 'Optional install profile for a generic channel target.',
|
|
73
|
+
key: 'Profile key passed as profile on POST install.',
|
|
74
|
+
displayLabel: 'Human-readable profile name for catalog UI.'
|
|
75
|
+
},
|
|
76
|
+
ChannelTargetRow: {
|
|
77
|
+
_schema: 'One live channel target in the install catalog.',
|
|
78
|
+
key: 'Channel target key used as systemKey on install routes.',
|
|
79
|
+
displayLabel: 'Human-readable interface name.',
|
|
80
|
+
description: 'Short catalog blurb for the portal table. Not remaining-step copy.',
|
|
81
|
+
experimental: 'True when the target requires allowExperimental.',
|
|
82
|
+
status: 'visible: listed and installable. coming-soon: listed read-only. hide is omitted from the catalog.',
|
|
83
|
+
provisioning: 'How Builder provisions this channel (automatic, guided, or cli).',
|
|
84
|
+
runtimeTarget: 'Runtime or MCP Connected System. Not the channel instance key.',
|
|
85
|
+
installationSummary: 'Count and status rollup of Connected System instances for this definition.',
|
|
86
|
+
installations: 'Connected System instances for this definition. Empty array when none exist. Never includes a CS whose key equals the catalog key.',
|
|
87
|
+
profiles: 'Optional profiles when the target is generic. Omitted for vendor keys.',
|
|
88
|
+
configuration: 'Safe Connected System configuration[] plus propertyKey. Secret-shaped values omitted. Portal add form uses these entries.',
|
|
89
|
+
cliInstructions: 'Generated CLI command when provisioning.mode is cli.',
|
|
90
|
+
iconHref: 'Data URL for the definition icon.svg from the Builder channel template. Omitted when the template has no icon.',
|
|
91
|
+
maxInstances: 'Optional instance cap from the Channel Definition. Omitted when unbounded.',
|
|
92
|
+
installationCount: 'Number of Connected System instances currently projected for this definition.',
|
|
93
|
+
canInstall: 'False when coming-soon or when installationCount is already at maxInstances. Omitted meaning is canInstall true when unbounded.',
|
|
94
|
+
blockedReason: 'Present when canInstall is false. Explains why a new install is refused (coming soon or at cap).'
|
|
95
|
+
},
|
|
96
|
+
ListChannelTargetsData: {
|
|
97
|
+
_schema: 'Catalog of live channel / interface targets.',
|
|
98
|
+
channels: 'Live targets. hide is omitted. coming-soon is included read-only (canInstall false). Unimplemented keys are omitted.'
|
|
99
|
+
},
|
|
100
|
+
ListChannelTargetsResponse: {
|
|
101
|
+
_schema: '200 response envelope for listChannelTargets.',
|
|
102
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
103
|
+
data: 'Typed payload; see ListChannelTargetsData.',
|
|
104
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
105
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
106
|
+
},
|
|
107
|
+
ChannelDefinitionDetailData: {
|
|
108
|
+
_schema: 'Safe Channel Definition plus installation projection. Secrets stripped.',
|
|
109
|
+
key: 'Definition key (catalog identity).',
|
|
110
|
+
displayName: 'Human-readable definition name.',
|
|
111
|
+
description: 'Definition description.',
|
|
112
|
+
type: 'External System type.',
|
|
113
|
+
systemKind: 'Enterprise system classification.',
|
|
114
|
+
configuration: 'Safe configuration plus propertyKey. Secret-shaped values omitted.',
|
|
115
|
+
channel: 'Channel specialization (provisioning, runtimeTarget, profiles).',
|
|
116
|
+
cliInstructions: 'Generated CLI command when provisioning.mode is cli.',
|
|
117
|
+
iconHref: 'Data URL for the definition icon.svg from the Builder channel template.',
|
|
118
|
+
installations: 'Connected System instances for this definition. Empty array when none exist.',
|
|
119
|
+
maxInstances: 'Optional instance cap from the Channel Definition. Omitted when unbounded.',
|
|
120
|
+
installationCount: 'Number of Connected System instances currently projected for this definition.',
|
|
121
|
+
canInstall: 'False when coming-soon or when installationCount is already at maxInstances.',
|
|
122
|
+
blockedReason: 'Present when canInstall is false.',
|
|
123
|
+
status: 'visible or coming-soon. hide definitions return 404 instead of this payload.'
|
|
124
|
+
},
|
|
125
|
+
ChannelDefinitionDetailResponse: {
|
|
126
|
+
_schema: '200 response envelope for getChannelDefinitionDetail.',
|
|
127
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
128
|
+
data: 'Typed payload; see ChannelDefinitionDetailData.',
|
|
129
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
130
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
131
|
+
},
|
|
132
|
+
ChannelInstallationDetailData: {
|
|
133
|
+
_schema: 'One Channel installation projected from a Dataplane Connected System.',
|
|
134
|
+
definition: 'Catalog identity for this installation.',
|
|
135
|
+
installation: 'Projected instance fields from Dataplane. Builder does not persist lifecycle.'
|
|
136
|
+
},
|
|
137
|
+
ChannelInstallationDetailResponse: {
|
|
138
|
+
_schema: '200 response envelope for getChannelInstallation.',
|
|
139
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
140
|
+
data: 'Typed payload; see ChannelInstallationDetailData.',
|
|
141
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
142
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
143
|
+
},
|
|
144
|
+
ChannelUserAction: {
|
|
145
|
+
_schema: 'One generic wizard action. Secrets are stripped on the default HTTP JSON.',
|
|
146
|
+
id: 'Stable action id for resume and tests.',
|
|
147
|
+
kind: 'Generic action kind (openUrl, downloadArtifact, copyValue, submitInput, remainingVendorStep, retryLogin).',
|
|
148
|
+
label: 'Human label for the action.',
|
|
149
|
+
required: 'True when the server cannot finish without this action.',
|
|
150
|
+
resume: 'How to continue after the human acts (poll or submit).',
|
|
151
|
+
href: 'URL for openUrl or downloadArtifact.',
|
|
152
|
+
field: 'Continue-body field name for submitInput (for example token).',
|
|
153
|
+
artifactId: 'Artifact id for downloadArtifact.',
|
|
154
|
+
command: 'Optional command text. Secret-shaped values are omitted on HTTP.',
|
|
155
|
+
value: 'Copyable value. Secret-shaped values are omitted on HTTP.',
|
|
156
|
+
text: 'Remaining vendor step text.'
|
|
157
|
+
},
|
|
158
|
+
ChannelInstallVerdict: {
|
|
159
|
+
_schema: 'One install verdict (runtime, oauth, or vendor session).',
|
|
160
|
+
ok: 'True when this check passed.',
|
|
161
|
+
label: 'Short status label for help markdown.'
|
|
162
|
+
},
|
|
163
|
+
ChannelInstallVerdicts: {
|
|
164
|
+
_schema: 'Install readiness verdicts used to derive phase.',
|
|
165
|
+
runtime: 'Runtime Connected System availability.',
|
|
166
|
+
oauth: 'OAuth or Integration Client connection.',
|
|
167
|
+
vendorSession: 'Vendor session or workspace approval.'
|
|
168
|
+
},
|
|
169
|
+
ChannelInstallHelpData: {
|
|
170
|
+
_schema: 'Default HTTP install result: markdown help plus machine wizard fields.',
|
|
171
|
+
helpMarkdown: 'Markdown remaining-step document for the human. Generated on each GET/POST. No secrets.',
|
|
172
|
+
helpMarkdownContentType: 'Always text/markdown.',
|
|
173
|
+
refreshHintSeconds: 'Optional poll interval after the user follows a link in the document.',
|
|
174
|
+
phase: 'Wizard phase derived from verdicts and required userActions.',
|
|
175
|
+
userActions: 'Safe next actions for a generic wizard. Secrets stripped. No Slack-named fields.',
|
|
176
|
+
verdicts: 'Runtime, oauth, and vendor-session checks.',
|
|
177
|
+
definitionKey: 'Channel Definition catalog key (for example chatgpt).',
|
|
178
|
+
installationKey: 'Connected System instance key for this install (for example chatgpt-chatgpt2).',
|
|
179
|
+
systemKey: 'Same as installationKey. Path for GET install help for this instance.'
|
|
180
|
+
},
|
|
181
|
+
ChannelInstallHelpResponse: {
|
|
182
|
+
_schema: '200 response envelope for channel install help markdown.',
|
|
183
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
184
|
+
data: 'Typed payload; see ChannelInstallHelpData.',
|
|
185
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
186
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
187
|
+
},
|
|
188
|
+
ChannelArtifactRow: {
|
|
189
|
+
_schema: 'Downloadable install artifact linked from help markdown.',
|
|
190
|
+
id: 'Artifact id used in GET .../artifacts/{artifactId}.',
|
|
191
|
+
kind: 'Storage kind for machine clients (zip, json, markdown). Default HTTP does not require this.',
|
|
192
|
+
fileName: 'Suggested download file name.',
|
|
193
|
+
contentType: 'MIME type of the artifact bytes.',
|
|
194
|
+
href: 'Builder API path to download the artifact.'
|
|
195
|
+
},
|
|
196
|
+
ListChannelArtifactsData: {
|
|
197
|
+
_schema: 'Artifacts produced by the current install session.',
|
|
198
|
+
artifacts: 'Files linked from the help document (for example the Copilot ZIP).'
|
|
199
|
+
},
|
|
200
|
+
ListChannelArtifactsResponse: {
|
|
201
|
+
_schema: '200 response envelope for listChannelArtifacts.',
|
|
202
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
203
|
+
data: 'Typed payload; see ListChannelArtifactsData.',
|
|
204
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
205
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
206
|
+
},
|
|
207
|
+
ChannelArtifactBytesData: {
|
|
208
|
+
_schema: 'JSON metadata for an artifact when not streaming raw bytes.',
|
|
209
|
+
fileName: 'Download file name.',
|
|
210
|
+
contentType: 'MIME type of the bytes (application/zip for packages).',
|
|
211
|
+
byteLength: 'Size of the artifact in bytes.'
|
|
212
|
+
},
|
|
213
|
+
ChannelArtifactBytesResponse: {
|
|
214
|
+
_schema: '200 response envelope metadata for getChannelArtifact (bytes also sent as application/zip).',
|
|
215
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
216
|
+
data: 'Typed payload; see ChannelArtifactBytesData.',
|
|
217
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
218
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
219
|
+
},
|
|
220
|
+
ChannelPackageRequest: {
|
|
221
|
+
_schema: 'Optional body for building a vendor channel package. Does not publish a channel.',
|
|
222
|
+
name: 'Package display name override.',
|
|
223
|
+
description: 'Package description override.',
|
|
224
|
+
baseName: 'Base name used when generating artifact files.',
|
|
225
|
+
environment: 'Target environment label written into the package summary.',
|
|
226
|
+
dataplaneUrl: 'Dataplane base URL used for discovery while building the package.',
|
|
227
|
+
dryRun: 'When true, generate artifacts only.',
|
|
228
|
+
branding: 'Optional branding overrides stored in the workspace.'
|
|
229
|
+
},
|
|
230
|
+
ChannelPackageLinks: {
|
|
231
|
+
_schema: 'README and ZIP paths produced by a package build.',
|
|
232
|
+
readme: 'Path to the generated install README.',
|
|
233
|
+
zip: 'Path to the generated app-package ZIP, or null when not produced.'
|
|
234
|
+
},
|
|
235
|
+
ChannelPackageData: {
|
|
236
|
+
_schema: 'Result of building a vendor channel package. installReady is package-import readiness, not channel-installed.',
|
|
237
|
+
channelTarget: 'Channel target key that was packaged.',
|
|
238
|
+
installReady: 'True when the generated vendor package is ready to import. Not the same as a published channel.',
|
|
239
|
+
blocker: 'Discovery or packaging blocker, or null when none.',
|
|
240
|
+
artifactHash: 'Hash of the generated package artifact.',
|
|
241
|
+
links: 'README and ZIP links for the built package.'
|
|
242
|
+
},
|
|
243
|
+
ChannelPackageResponse: {
|
|
244
|
+
_schema: '200 response envelope for buildChannelPackage.',
|
|
245
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
246
|
+
data: 'Typed payload; see ChannelPackageData.',
|
|
247
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
248
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
249
|
+
},
|
|
250
|
+
ChannelPackageSummaryData: {
|
|
251
|
+
_schema: 'Last built channel package summary. installReady is package-import readiness, not channel-installed.',
|
|
252
|
+
channelTarget: 'Channel target key that was packaged.',
|
|
253
|
+
installReady: 'True when the generated vendor package is ready to import. Not the same as a published channel.',
|
|
254
|
+
blocker: 'Discovery or packaging blocker, or null when none.',
|
|
255
|
+
links: 'README and ZIP links for the last build.'
|
|
256
|
+
},
|
|
257
|
+
ChannelPackageSummaryResponse: {
|
|
258
|
+
_schema: '200 response envelope for getChannelPackageSummary.',
|
|
259
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
260
|
+
data: 'Typed payload; see ChannelPackageSummaryData.',
|
|
261
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
262
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
263
|
+
},
|
|
264
|
+
ChannelPackageZipData: {
|
|
265
|
+
_schema: 'Built app package ZIP returned as JSON metadata plus zipBase64.',
|
|
266
|
+
fileName: 'Download file name.',
|
|
267
|
+
contentType: 'MIME type of the ZIP bytes.',
|
|
268
|
+
byteLength: 'Size of the ZIP in bytes.',
|
|
269
|
+
zipBase64: 'ZIP bytes encoded as Base64.'
|
|
270
|
+
},
|
|
271
|
+
ChannelPackageZipResponse: {
|
|
272
|
+
_schema: '200 response envelope for getChannelPackageZip.',
|
|
273
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
274
|
+
data: 'Typed payload; see ChannelPackageZipData.',
|
|
275
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
276
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
277
|
+
},
|
|
278
|
+
ChannelBrandingFields: {
|
|
279
|
+
_schema: 'Optional workspace branding used when generating a vendor package.',
|
|
280
|
+
displayName: 'Customer-visible package display name.',
|
|
281
|
+
description: 'Customer-visible package description.',
|
|
282
|
+
iconColorPath: 'Workspace path to the color icon file.',
|
|
283
|
+
iconOutlinePath: 'Workspace path to the outline icon file.'
|
|
284
|
+
},
|
|
285
|
+
ChannelBrandingPatchRequest: {
|
|
286
|
+
_schema: 'Partial branding update stored in the workspace. Does not publish a channel.',
|
|
287
|
+
displayName: 'Customer-visible package display name.',
|
|
288
|
+
description: 'Customer-visible package description.',
|
|
289
|
+
iconColorPath: 'Workspace path to the color icon file.',
|
|
290
|
+
iconOutlinePath: 'Workspace path to the outline icon file.'
|
|
291
|
+
},
|
|
292
|
+
ChannelBrandingData: {
|
|
293
|
+
_schema: 'Workspace branding for a channel packaging target.',
|
|
294
|
+
systemKey: 'Channel target key whose branding was read or patched.',
|
|
295
|
+
branding: 'Stored branding fields for package generation.'
|
|
296
|
+
},
|
|
297
|
+
ChannelBrandingResponse: {
|
|
298
|
+
_schema: '200 response envelope for channel branding read and patch.',
|
|
299
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
300
|
+
data: 'Typed payload; see ChannelBrandingData.',
|
|
301
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
302
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
303
|
+
},
|
|
304
|
+
AuthPermissionsData: {
|
|
305
|
+
_schema: 'Thin forward of Miso current-user permissions. Not a Builder permission catalog.',
|
|
306
|
+
permissions: 'Permission slugs from GET /api/v1/auth/permissions (for example integration-client:read).'
|
|
307
|
+
},
|
|
308
|
+
AuthPermissionsResponse: {
|
|
309
|
+
_schema: '200 response envelope for getAuthPermissions.',
|
|
310
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
311
|
+
data: 'Typed payload; see AuthPermissionsData.',
|
|
312
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
313
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
module.exports = {
|
|
318
|
+
CHANNEL_INSTALL_SCHEMA_DESCRIPTIONS
|
|
319
|
+
};
|
|
@@ -124,6 +124,12 @@ const OPERATIONS_SCHEMA_DESCRIPTIONS = {
|
|
|
124
124
|
sync: 'When true, force full datasource data sync after deploy.',
|
|
125
125
|
verbose: 'When true, expand deploy summary output.'
|
|
126
126
|
},
|
|
127
|
+
DownloadRequest: {
|
|
128
|
+
_schema: 'Optional flags for workspace download (CLI aifabrix download parity).',
|
|
129
|
+
force: 'When true, overwrite existing local package files.',
|
|
130
|
+
dryRun: 'When true, preview files that would be written without mutating the workspace.',
|
|
131
|
+
format: 'Package file format when downloading a Connected System (json or yaml).'
|
|
132
|
+
},
|
|
127
133
|
ProtectionUploadRequest: {
|
|
128
134
|
_schema: 'Optional flags for protection upload (CLI protection upload parity).',
|
|
129
135
|
dryRun: 'When true, validate only; do not upload or sync.',
|
|
@@ -354,6 +360,19 @@ const OPERATIONS_SCHEMA_DESCRIPTIONS = {
|
|
|
354
360
|
correlationId: 'UUID correlating logs for this request.',
|
|
355
361
|
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
356
362
|
},
|
|
363
|
+
DownloadResultData: {
|
|
364
|
+
_schema: 'Workspace download outcome summary.',
|
|
365
|
+
downloaded: 'True when package files were written (false on dryRun).',
|
|
366
|
+
dryRun: 'True when validate-only dry run was requested.',
|
|
367
|
+
systemKey: 'Downloaded integration or Role Assistant system key.'
|
|
368
|
+
},
|
|
369
|
+
DownloadResultResponse: {
|
|
370
|
+
_schema: '200 response envelope for runDownload.',
|
|
371
|
+
success: 'Always true for successful builder-api JSON responses.',
|
|
372
|
+
data: 'Typed payload; see DownloadResultData.',
|
|
373
|
+
correlationId: 'UUID correlating logs for this request.',
|
|
374
|
+
requestId: 'Optional per-request UUID when emitted by the server.'
|
|
375
|
+
},
|
|
357
376
|
ProtectionUploadData: {
|
|
358
377
|
_schema: 'Protection upload outcome.',
|
|
359
378
|
datasourceKey: 'Datasource key whose protection manifest was uploaded.',
|
|
@@ -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
|
|
|
@@ -84,6 +88,7 @@ function applyOperationDurationHints(capability, operation) {
|
|
|
84
88
|
const durationByHandler = {
|
|
85
89
|
runUpload: Number(process.env.MAX_UPLOAD_TIMEOUT_MS || 300000),
|
|
86
90
|
runDeploySystem: Number(process.env.MAX_DEPLOY_TIMEOUT_MS || 300000),
|
|
91
|
+
runDownload: Number(process.env.MAX_DOWNLOAD_TIMEOUT_MS || 300000),
|
|
87
92
|
runTest: Number(process.env.MAX_TEST_E2E_TIMEOUT_MS || 120000),
|
|
88
93
|
runCertifyPillar: Number(process.env.MAX_CERTIFY_TIMEOUT_MS || 120000)
|
|
89
94
|
};
|
|
@@ -106,7 +111,7 @@ function buildOperationObject(capability) {
|
|
|
106
111
|
description: meta.description,
|
|
107
112
|
tags: meta.tags,
|
|
108
113
|
responses: {
|
|
109
|
-
200: successResponseContent(binding.successResponse),
|
|
114
|
+
200: successResponseContent(binding.successResponse, binding.extraSuccessContent),
|
|
110
115
|
...buildStandardErrorResponses()
|
|
111
116
|
}
|
|
112
117
|
};
|
|
@@ -162,7 +167,7 @@ function buildOpenApiTags() {
|
|
|
162
167
|
{
|
|
163
168
|
name: 'channel',
|
|
164
169
|
description:
|
|
165
|
-
'
|
|
170
|
+
'Channel install and packaging: catalog, help markdown, artifacts, Copilot/ChatGPT/Slack/Teams packages and branding.'
|
|
166
171
|
}
|
|
167
172
|
];
|
|
168
173
|
}
|
|
@@ -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,
|
|
@@ -19,6 +19,9 @@ function getTimeoutMsForHandler(handlerId) {
|
|
|
19
19
|
if (handlerId === 'runDeploySystem') {
|
|
20
20
|
return Number(process.env.MAX_DEPLOY_TIMEOUT_MS || 300000);
|
|
21
21
|
}
|
|
22
|
+
if (handlerId === 'runDownload') {
|
|
23
|
+
return Number(process.env.MAX_DOWNLOAD_TIMEOUT_MS || 300000);
|
|
24
|
+
}
|
|
22
25
|
if (handlerId === 'runTest') {
|
|
23
26
|
return Number(process.env.MAX_TEST_E2E_TIMEOUT_MS || 120000);
|
|
24
27
|
}
|
|
@@ -19,6 +19,7 @@ const { runRepair } = require('./run-repair');
|
|
|
19
19
|
const { runValidate } = require('./run-validate');
|
|
20
20
|
const { runPreviewUpload, runUpload } = require('./run-upload');
|
|
21
21
|
const { runDeploySystem } = require('./run-deploy');
|
|
22
|
+
const { runDownload } = require('./run-download');
|
|
22
23
|
const { runProtectionUpload, runProtectionCreate } = require('./run-protection');
|
|
23
24
|
const { runTest } = require('./run-test');
|
|
24
25
|
const { runCertifyPillar } = require('./run-certify');
|
|
@@ -53,6 +54,23 @@ const {
|
|
|
53
54
|
getChannelBranding
|
|
54
55
|
} = require('./run-channel-package');
|
|
55
56
|
const { handleGetBuilderHelp } = require('./builder-help');
|
|
57
|
+
const {
|
|
58
|
+
listChannelTargets,
|
|
59
|
+
runChannelInstall,
|
|
60
|
+
getChannelInstall,
|
|
61
|
+
getChannelInstallHelp,
|
|
62
|
+
continueChannelInstall
|
|
63
|
+
} = require('./run-channel-install');
|
|
64
|
+
const {
|
|
65
|
+
getChannelDefinitionDetail,
|
|
66
|
+
getChannelInstallation
|
|
67
|
+
} = require('./run-channel-catalog');
|
|
68
|
+
const {
|
|
69
|
+
listChannelArtifacts,
|
|
70
|
+
getChannelArtifact,
|
|
71
|
+
handleChannelCallback
|
|
72
|
+
} = require('./run-channel-install-artifacts');
|
|
73
|
+
const { getBuilderAuthPermissions } = require('./run-auth-permissions');
|
|
56
74
|
|
|
57
75
|
/** @type {Record<string, Function>} */
|
|
58
76
|
const HANDLER_MAP = {
|
|
@@ -147,6 +165,12 @@ const HANDLER_MAP = {
|
|
|
147
165
|
sync: body.sync === true,
|
|
148
166
|
verbose: body.verbose === true
|
|
149
167
|
}),
|
|
168
|
+
runDownload: (params, auth, body = {}) =>
|
|
169
|
+
runDownload(buildContext(auth, params.systemKey), {
|
|
170
|
+
force: body.force === true,
|
|
171
|
+
dryRun: body.dryRun === true,
|
|
172
|
+
format: body.format
|
|
173
|
+
}),
|
|
150
174
|
runProtectionUpload: (params, auth, body) =>
|
|
151
175
|
runProtectionUpload(buildContext(auth, params.systemKey), params.datasourceKey, {
|
|
152
176
|
dryRun: body.dryRun === true,
|
|
@@ -233,7 +257,40 @@ const HANDLER_MAP = {
|
|
|
233
257
|
getChannelBranding: (params, auth) =>
|
|
234
258
|
getChannelBranding(buildContext(auth, params.systemKey)),
|
|
235
259
|
patchChannelBranding: (params, auth, body) =>
|
|
236
|
-
patchChannelBranding(buildContext(auth, params.systemKey), body || {})
|
|
260
|
+
patchChannelBranding(buildContext(auth, params.systemKey), body || {}),
|
|
261
|
+
listChannelTargets: (_params, auth, _body, query) =>
|
|
262
|
+
listChannelTargets(query || {}, buildContext(auth, '_channels')),
|
|
263
|
+
getChannelDefinitionDetail: (params, auth) =>
|
|
264
|
+
getChannelDefinitionDetail(buildContext(auth, params.definitionKey), params.definitionKey),
|
|
265
|
+
getChannelInstallation: (params, auth) =>
|
|
266
|
+
getChannelInstallation(
|
|
267
|
+
buildContext(auth, params.definitionKey),
|
|
268
|
+
params.definitionKey,
|
|
269
|
+
params.systemKey
|
|
270
|
+
),
|
|
271
|
+
runChannelInstall: (params, auth, body) =>
|
|
272
|
+
runChannelInstall(buildContext(auth, params.systemKey), body || {}),
|
|
273
|
+
getChannelInstall: (params, auth, _body, query) =>
|
|
274
|
+
getChannelInstall(buildContext(auth, params.systemKey), query || {}),
|
|
275
|
+
getChannelInstallHelp: (params, auth) =>
|
|
276
|
+
getChannelInstallHelp(buildContext(auth, params.systemKey)),
|
|
277
|
+
continueChannelInstall: (params, auth, body) =>
|
|
278
|
+
continueChannelInstall(buildContext(auth, params.systemKey), body || {}),
|
|
279
|
+
listChannelArtifacts: (params, auth) =>
|
|
280
|
+
listChannelArtifacts(buildContext(auth, params.systemKey)),
|
|
281
|
+
getChannelArtifact: (params, auth) =>
|
|
282
|
+
getChannelArtifact(buildContext(auth, params.systemKey), params.artifactId),
|
|
283
|
+
getChannelCallback: (params, auth, _body, query) =>
|
|
284
|
+
handleChannelCallback(buildContext(auth, params.systemKey), params.provider, query || {}, {}),
|
|
285
|
+
postChannelCallback: (params, auth, body, query) =>
|
|
286
|
+
handleChannelCallback(
|
|
287
|
+
buildContext(auth, params.systemKey),
|
|
288
|
+
params.provider,
|
|
289
|
+
query || {},
|
|
290
|
+
body || {}
|
|
291
|
+
),
|
|
292
|
+
getAuthPermissions: (_params, auth) =>
|
|
293
|
+
getBuilderAuthPermissions(buildContext(auth, '_auth'))
|
|
237
294
|
};
|
|
238
295
|
|
|
239
296
|
/**
|
|
@@ -22,7 +22,8 @@ function buildContext(auth, systemKey) {
|
|
|
22
22
|
bearerToken: auth.bearerToken,
|
|
23
23
|
dataplaneUrl: process.env.DATAPLANE_URL,
|
|
24
24
|
controllerUrl: process.env.MISO_CONTROLLER_URL || process.env.CONTROLLER_URL,
|
|
25
|
-
environment: process.env.DEFAULT_ENVIRONMENT
|
|
25
|
+
environment: process.env.DEFAULT_ENVIRONMENT,
|
|
26
|
+
publicOrigin: auth.publicOrigin
|
|
26
27
|
});
|
|
27
28
|
}
|
|
28
29
|
|