@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,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Teams Bot channel-add provisioning hook.
|
|
3
|
+
*
|
|
4
|
+
* @fileoverview Keep add-channel.js free of Teams Developer CLI argv
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
const { provisionTeamsBot, TEAMS_CLI_MISSING_REMAINING } = require('./microsoft-provisioning/teams-bot-provision');
|
|
10
|
+
const { redactTeamsSecrets } = require('./microsoft-provisioning/errors');
|
|
11
|
+
|
|
12
|
+
const FAIL_CLOSED_CODES = new Set(['WRONG_TENANT', 'TEAMS_MANAGED', 'SECRET', 'SCAFFOLD']);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @param {Error} error
|
|
16
|
+
* @returns {string[]}
|
|
17
|
+
*/
|
|
18
|
+
function remainingFromError(error) {
|
|
19
|
+
const code = error && error.code;
|
|
20
|
+
if (code === 'TEAMS_CLI_MISSING') {
|
|
21
|
+
return TEAMS_CLI_MISSING_REMAINING;
|
|
22
|
+
}
|
|
23
|
+
if (code === 'MISSING_AZURE') {
|
|
24
|
+
return [
|
|
25
|
+
'Azure subscription and resource group were not found on the controller environment',
|
|
26
|
+
'Deploy the environment, then re-run aifabrix channel add teams-bot'
|
|
27
|
+
];
|
|
28
|
+
}
|
|
29
|
+
if (code === 'ENDPOINT') {
|
|
30
|
+
return ['Use a public HTTPS dataplane URL for the Teams Bot messaging endpoint'];
|
|
31
|
+
}
|
|
32
|
+
const detail = redactTeamsSecrets(
|
|
33
|
+
(error && error.message) || 'Teams Bot provisioning failed'
|
|
34
|
+
);
|
|
35
|
+
return [detail];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @param {Error} error
|
|
40
|
+
* @returns {boolean}
|
|
41
|
+
*/
|
|
42
|
+
function shouldFailClosed(error) {
|
|
43
|
+
return FAIL_CLOSED_CODES.has(error && error.code);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @param {Error} error
|
|
48
|
+
* @returns {Object}
|
|
49
|
+
*/
|
|
50
|
+
function recoveryFromError(error) {
|
|
51
|
+
return {
|
|
52
|
+
connected: false,
|
|
53
|
+
skipped: true,
|
|
54
|
+
remaining: remainingFromError(error)
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @param {Object} params
|
|
60
|
+
* @returns {Promise<Object|null>}
|
|
61
|
+
*/
|
|
62
|
+
async function maybeProvisionTeamsBotChannel(params) {
|
|
63
|
+
if (!params || params.channelTarget !== 'teams-bot') {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
if (params.options && params.options.dryRun === true) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
const ctx = params.ctx || {};
|
|
70
|
+
const options = params.options || {};
|
|
71
|
+
const deps = options.teamsBotProvisioningDeps || {};
|
|
72
|
+
try {
|
|
73
|
+
return await provisionTeamsBot(
|
|
74
|
+
{
|
|
75
|
+
projectRoot: options.projectRoot || process.cwd(),
|
|
76
|
+
runtimeValues: params.runtimeValues,
|
|
77
|
+
ctx,
|
|
78
|
+
environment: ctx.environment,
|
|
79
|
+
options
|
|
80
|
+
},
|
|
81
|
+
deps
|
|
82
|
+
);
|
|
83
|
+
} catch (error) {
|
|
84
|
+
if (shouldFailClosed(error)) {
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
return recoveryFromError(error);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
module.exports = {
|
|
92
|
+
maybeProvisionTeamsBotChannel,
|
|
93
|
+
remainingFromError
|
|
94
|
+
};
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vendor-facing dataplane and controller bases for channel webhooks and packages.
|
|
3
|
+
*
|
|
4
|
+
* @fileoverview Keep DATAPLANE_URL / MISO_CONTROLLER_URL internal for API calls
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @param {unknown} value
|
|
11
|
+
* @returns {string}
|
|
12
|
+
*/
|
|
13
|
+
function trimBase(value) {
|
|
14
|
+
return String(value || '').trim().replace(/\/$/, '');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @param {string} host
|
|
19
|
+
* @returns {boolean}
|
|
20
|
+
*/
|
|
21
|
+
function isLoopbackHost(host) {
|
|
22
|
+
const hostname = String(host || '').toLowerCase();
|
|
23
|
+
return hostname === 'localhost' || hostname === '127.0.0.1' || hostname === '::1';
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @param {unknown} value
|
|
28
|
+
* @returns {boolean}
|
|
29
|
+
*/
|
|
30
|
+
function isPublicHttpsUrl(value) {
|
|
31
|
+
const raw = trimBase(value);
|
|
32
|
+
if (!raw) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const parsed = new URL(raw);
|
|
37
|
+
if (parsed.protocol !== 'https:') {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
const host = parsed.hostname.toLowerCase();
|
|
41
|
+
return Boolean(host) && !isLoopbackHost(host) && host.includes('.');
|
|
42
|
+
} catch {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @param {string} internalUrl
|
|
49
|
+
* @returns {string}
|
|
50
|
+
*/
|
|
51
|
+
function pathVdir(internalUrl) {
|
|
52
|
+
try {
|
|
53
|
+
const pathName = new URL(internalUrl).pathname.replace(/\/$/, '');
|
|
54
|
+
return pathName && pathName !== '/' ? pathName : '';
|
|
55
|
+
} catch {
|
|
56
|
+
return '';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @param {string} origin
|
|
62
|
+
* @param {string} vdir
|
|
63
|
+
* @returns {string}
|
|
64
|
+
*/
|
|
65
|
+
function joinOriginAndVdir(origin, vdir) {
|
|
66
|
+
const base = trimBase(origin);
|
|
67
|
+
if (!base) {
|
|
68
|
+
return '';
|
|
69
|
+
}
|
|
70
|
+
if (!vdir) {
|
|
71
|
+
return base;
|
|
72
|
+
}
|
|
73
|
+
if (base.endsWith(vdir)) {
|
|
74
|
+
return base;
|
|
75
|
+
}
|
|
76
|
+
return `${base}${vdir.startsWith('/') ? vdir : `/${vdir}`}`;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Browser Origin / Referer that vendors can reach (portal host, not builder-api).
|
|
81
|
+
* @param {import('http').IncomingMessage|null|undefined} req
|
|
82
|
+
* @returns {string}
|
|
83
|
+
*/
|
|
84
|
+
function publicOriginFromRequest(req) {
|
|
85
|
+
const headers = (req && req.headers) || {};
|
|
86
|
+
const origin = trimBase(headers.origin);
|
|
87
|
+
if (isPublicHttpsUrl(origin)) {
|
|
88
|
+
return new URL(origin).origin;
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
const referer = new URL(String(headers.referer || ''));
|
|
92
|
+
if (isPublicHttpsUrl(referer.origin)) {
|
|
93
|
+
return referer.origin;
|
|
94
|
+
}
|
|
95
|
+
} catch {
|
|
96
|
+
// ignore invalid Referer
|
|
97
|
+
}
|
|
98
|
+
return '';
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* @param {NodeJS.ProcessEnv} [env]
|
|
103
|
+
* @returns {string}
|
|
104
|
+
*/
|
|
105
|
+
function publicOriginFromAllowlist(env = process.env) {
|
|
106
|
+
for (const raw of String(env.ALLOWED_ORIGINS || '').split(',')) {
|
|
107
|
+
const candidate = trimBase(raw);
|
|
108
|
+
if (!candidate || candidate.includes('*')) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
const parsed = new URL(candidate);
|
|
113
|
+
if (parsed.port && parsed.port !== '443') {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (isPublicHttpsUrl(candidate)) {
|
|
117
|
+
return parsed.origin;
|
|
118
|
+
}
|
|
119
|
+
} catch {
|
|
120
|
+
// skip malformed allowlist entries
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return '';
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* @param {string} [controllerUrl]
|
|
128
|
+
* @returns {string}
|
|
129
|
+
*/
|
|
130
|
+
function publicOriginFromController(controllerUrl) {
|
|
131
|
+
const raw = trimBase(controllerUrl);
|
|
132
|
+
if (!isPublicHttpsUrl(raw)) {
|
|
133
|
+
return '';
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
return new URL(raw).origin;
|
|
137
|
+
} catch {
|
|
138
|
+
return '';
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* @param {string} [internalUrl]
|
|
144
|
+
* @param {string} envKey
|
|
145
|
+
* @param {NodeJS.ProcessEnv} env
|
|
146
|
+
* @param {{ publicOrigin?: string, siblingPublicUrl?: string, defaultVdir?: string }} extras
|
|
147
|
+
* @returns {string}
|
|
148
|
+
*/
|
|
149
|
+
function resolveVendorFacingBase(internalUrl, envKey, env, extras = {}) {
|
|
150
|
+
const internal = trimBase(internalUrl);
|
|
151
|
+
if (isPublicHttpsUrl(internal)) {
|
|
152
|
+
return internal;
|
|
153
|
+
}
|
|
154
|
+
const envUrl = trimBase(env[envKey]);
|
|
155
|
+
if (isPublicHttpsUrl(envUrl)) {
|
|
156
|
+
return envUrl;
|
|
157
|
+
}
|
|
158
|
+
const vdir = pathVdir(internal) || extras.defaultVdir || '';
|
|
159
|
+
const fromOrigin = joinOriginAndVdir(extras.publicOrigin, vdir);
|
|
160
|
+
if (isPublicHttpsUrl(fromOrigin)) {
|
|
161
|
+
return fromOrigin;
|
|
162
|
+
}
|
|
163
|
+
const fromAllow = joinOriginAndVdir(publicOriginFromAllowlist(env), vdir);
|
|
164
|
+
if (isPublicHttpsUrl(fromAllow)) {
|
|
165
|
+
return fromAllow;
|
|
166
|
+
}
|
|
167
|
+
const siblingOrigin = publicOriginFromController(extras.siblingPublicUrl);
|
|
168
|
+
const fromSibling = joinOriginAndVdir(siblingOrigin, vdir);
|
|
169
|
+
if (isPublicHttpsUrl(fromSibling)) {
|
|
170
|
+
return fromSibling;
|
|
171
|
+
}
|
|
172
|
+
return internal;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* @param {NodeJS.ProcessEnv} env
|
|
177
|
+
* @param {string[]} keys
|
|
178
|
+
* @returns {string}
|
|
179
|
+
*/
|
|
180
|
+
function firstPublicEnvUrl(env, keys) {
|
|
181
|
+
for (const key of keys) {
|
|
182
|
+
const value = trimBase(env[key]);
|
|
183
|
+
if (isPublicHttpsUrl(value)) {
|
|
184
|
+
return value;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return '';
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* @param {string} [internalUrl]
|
|
192
|
+
* @param {{ publicOrigin?: string, env?: NodeJS.ProcessEnv, controllerUrl?: string }} [options]
|
|
193
|
+
* @returns {string}
|
|
194
|
+
*/
|
|
195
|
+
function resolveVendorFacingDataplaneUrl(internalUrl, options = {}) {
|
|
196
|
+
return resolveVendorFacingBase(internalUrl, 'DATAPLANE_PUBLIC_URL', options.env || process.env, {
|
|
197
|
+
publicOrigin: options.publicOrigin,
|
|
198
|
+
siblingPublicUrl: options.controllerUrl
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* @param {string} [internalUrl]
|
|
204
|
+
* @param {{ publicOrigin?: string, env?: NodeJS.ProcessEnv, dataplanePublicUrl?: string }} [options]
|
|
205
|
+
* @returns {string}
|
|
206
|
+
*/
|
|
207
|
+
function resolveVendorFacingControllerUrl(internalUrl, options = {}) {
|
|
208
|
+
const env = options.env || process.env;
|
|
209
|
+
const dedicated = firstPublicEnvUrl(env, [
|
|
210
|
+
'MISO_CONTROLLER_PUBLIC_URL',
|
|
211
|
+
'CONTROLLER_PUBLIC_URL'
|
|
212
|
+
]);
|
|
213
|
+
if (dedicated) {
|
|
214
|
+
return dedicated;
|
|
215
|
+
}
|
|
216
|
+
return resolveVendorFacingBase(internalUrl, 'MISO_CONTROLLER_PUBLIC_URL', env, {
|
|
217
|
+
publicOrigin: options.publicOrigin,
|
|
218
|
+
siblingPublicUrl: options.dataplanePublicUrl
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* @param {Object|null|undefined} ctx
|
|
224
|
+
* @param {NodeJS.ProcessEnv} [env]
|
|
225
|
+
* @returns {{ dataplaneBaseUrl: string, controllerUrl: string }}
|
|
226
|
+
*/
|
|
227
|
+
function vendorFacingUrlsFromCtx(ctx, env) {
|
|
228
|
+
const options = {
|
|
229
|
+
publicOrigin: ctx && ctx.publicOrigin,
|
|
230
|
+
controllerUrl: ctx && ctx.controllerUrl,
|
|
231
|
+
env: env || process.env
|
|
232
|
+
};
|
|
233
|
+
const dataplaneBaseUrl = resolveVendorFacingDataplaneUrl(ctx && ctx.dataplaneUrl, options);
|
|
234
|
+
const controllerUrl = resolveVendorFacingControllerUrl(ctx && ctx.controllerUrl, {
|
|
235
|
+
publicOrigin: options.publicOrigin,
|
|
236
|
+
env: options.env,
|
|
237
|
+
dataplanePublicUrl: dataplaneBaseUrl
|
|
238
|
+
});
|
|
239
|
+
return { dataplaneBaseUrl, controllerUrl };
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
module.exports = {
|
|
243
|
+
isPublicHttpsUrl,
|
|
244
|
+
publicOriginFromRequest,
|
|
245
|
+
publicOriginFromAllowlist,
|
|
246
|
+
resolveVendorFacingDataplaneUrl,
|
|
247
|
+
resolveVendorFacingControllerUrl,
|
|
248
|
+
vendorFacingUrlsFromCtx
|
|
249
|
+
};
|
package/lib/cli/index.js
CHANGED
|
@@ -25,9 +25,11 @@ const { setupDimensionCommands } = require('../commands/dimension');
|
|
|
25
25
|
const { setupResourceTypeCommands } = require('../commands/resource-type');
|
|
26
26
|
const { setupRoleCommands } = require('../commands/role');
|
|
27
27
|
const { setupRoleAssistantCommands } = require('../commands/role-assistant');
|
|
28
|
+
const { setupSearchCommands } = require('../commands/search');
|
|
28
29
|
const { setupEvidenceKindCommands } = require('../commands/evidence-kind');
|
|
29
30
|
const { setupEnterpriseKnowledgeCommands } = require('../commands/enterprise-knowledge');
|
|
30
31
|
const { setupIdentityCommands } = require('../commands/identity');
|
|
32
|
+
const { setupAgentKitCommands } = require('../commands/agent-kit');
|
|
31
33
|
const { setupProtectionCommands } = require('../commands/protection');
|
|
32
34
|
const { setupEvidenceCommands } = require('../commands/evidence');
|
|
33
35
|
const { setupCredentialDeploymentCommands } = require('./setup-credential-deployment');
|
|
@@ -80,9 +82,11 @@ function setupExtendedCliCommands(program) {
|
|
|
80
82
|
setupResourceTypeCommands(program);
|
|
81
83
|
setupRoleCommands(program);
|
|
82
84
|
setupRoleAssistantCommands(program);
|
|
85
|
+
setupSearchCommands(program);
|
|
83
86
|
setupEvidenceKindCommands(program);
|
|
84
87
|
setupEnterpriseKnowledgeCommands(program);
|
|
85
88
|
setupIdentityCommands(program);
|
|
89
|
+
setupAgentKitCommands(program);
|
|
86
90
|
setupProtectionCommands(program);
|
|
87
91
|
setupEvidenceCommands(program);
|
|
88
92
|
setupUtilityCommands(program);
|
|
@@ -20,7 +20,7 @@ function setupVerifyOperationsCommand(program) {
|
|
|
20
20
|
.option('-e, --env <env>', 'Environment: dev, tst, or pro', 'dev')
|
|
21
21
|
.option('-v, --verbose', 'Readiness breakdown and verification step checklist')
|
|
22
22
|
.option('-d, --debug', 'Write debug logs under integration/<systemKey>/logs/')
|
|
23
|
-
.option('--no-publish', 'Skip
|
|
23
|
+
.option('--no-publish', 'Skip uploading local files (verify-operations does not upload by default)')
|
|
24
24
|
.option(
|
|
25
25
|
'--force',
|
|
26
26
|
'With default sync, pass force to upload (same as aifabrix upload --force)'
|
|
@@ -39,7 +39,7 @@ function setupVerifyTrustCommand(program) {
|
|
|
39
39
|
.option('-e, --env <env>', 'Environment: dev, tst, or pro', 'dev')
|
|
40
40
|
.option('-v, --verbose', 'Per-datasource breakdown')
|
|
41
41
|
.option('-d, --debug', 'Write debug log under integration/<systemKey>/logs/')
|
|
42
|
-
.option('--no-publish', 'Skip
|
|
42
|
+
.option('--no-publish', 'Skip uploading local files (verify-trust does not upload by default)')
|
|
43
43
|
.option(
|
|
44
44
|
'--force',
|
|
45
45
|
'With default sync, pass force to upload (same as aifabrix upload --force)'
|
|
@@ -12,6 +12,8 @@ Examples:
|
|
|
12
12
|
|
|
13
13
|
Notes:
|
|
14
14
|
- Orchestrates validate → test → test-integration → test-e2e for the system.
|
|
15
|
+
- Does not upload. Upload is not publish; run aifabrix deploy to publish.
|
|
16
|
+
- Static custom packages (syncBridge disabled) skip live E2E (not FAILED).
|
|
15
17
|
- Default output shows Operational Readiness % and OPERATIONS VERIFIED/FAILED only.
|
|
16
18
|
- -v / --verbose adds readiness breakdown and verification step checklist at the end.
|
|
17
19
|
- -v does not enable upload sidecar logs or inner E2E poll spinners (use aifabrix upload -v for upload detail).
|
|
@@ -28,7 +30,7 @@ Examples:
|
|
|
28
30
|
Notes:
|
|
29
31
|
- For one datasource: aifabrix datasource verify-trust <datasourceKey>
|
|
30
32
|
- Does not call external vendor APIs (use verify-operations / test-e2e for connectivity).
|
|
31
|
-
-
|
|
33
|
+
- Does not upload. Upload is not publish; run aifabrix deploy to publish.
|
|
32
34
|
`;
|
|
33
35
|
|
|
34
36
|
const VERIFY_GOVERNANCE_HELP_AFTER = `
|
|
@@ -78,6 +80,8 @@ Examples:
|
|
|
78
80
|
|
|
79
81
|
Notes:
|
|
80
82
|
- Expert path: pushes integration/<systemKey>/scenarios/*.yaml to the dataplane.
|
|
83
|
+
- Each file is stored on the datasource named by the filename (scenarios/<datasourceKey>.yaml).
|
|
84
|
+
- Search datasourceKeys in the YAML are what verification searches; they may differ for views (carrier storage datasource).
|
|
81
85
|
- Packs must satisfy the 424.0 schema (spec.coverage, metadata.generationState). Use governance generate
|
|
82
86
|
or verify-governance for dataplane-first packs.
|
|
83
87
|
`;
|
|
@@ -29,6 +29,7 @@ Notes:
|
|
|
29
29
|
- --probe runs dataplane runtime checks after publish (slower).
|
|
30
30
|
- --timeout sets publish budget in ms (HTTP client and dataplane); default 300000.
|
|
31
31
|
- --env selects role-assistant.yaml section (dev|tst|pro) for digital workers; default dev.
|
|
32
|
+
- Role Assistant packages under role-assistant/ do not use application.yaml; upload applies settings and Evidence only.
|
|
32
33
|
- test-e2e and test-integration publish local files first by default; use --no-publish on those commands to skip.
|
|
33
34
|
- After dimension/FK edits on active datasources, use --force (or test-e2e / test-integration / datasource test-* with --sync --force).
|
|
34
35
|
- For one datasource only: aifabrix datasource upload <datasourceKey>
|
|
@@ -45,6 +46,7 @@ Examples:
|
|
|
45
46
|
|
|
46
47
|
Notes:
|
|
47
48
|
- Requires login and a system that already exists on the dataplane.
|
|
49
|
+
- Omit --format to use the developer default from aifabrix dev set-format (else yaml).
|
|
48
50
|
- Overwrite prompts apply when integration/<systemKey>/ already exists (--force for README).
|
|
49
51
|
`;
|
|
50
52
|
|
|
@@ -63,7 +63,7 @@ function setupDownloadCommand(program) {
|
|
|
63
63
|
program.command('download <systemKey>')
|
|
64
64
|
.description('Pull external system from dataplane into integration/<key>/')
|
|
65
65
|
.addHelpText('after', DOWNLOAD_HELP_AFTER)
|
|
66
|
-
.option('--format <format>', 'Output format: json | yaml (default:
|
|
66
|
+
.option('--format <format>', 'Output format: json | yaml (default: aifabrix dev set-format, else yaml)')
|
|
67
67
|
.option('--dry-run', 'Show what would be downloaded without actually downloading')
|
|
68
68
|
.option('--force', 'Overwrite existing README.md without prompting')
|
|
69
69
|
.option(
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Help text for `aifabrix agent-kit` leaves.
|
|
3
|
+
* @fileoverview Per-command examples so update -h is not install-centric
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
'use strict';
|
|
7
|
+
|
|
8
|
+
const GROUP_HELP = `
|
|
9
|
+
Examples:
|
|
10
|
+
$ aifabrix agent-kit init cust-demo --host all --approve-all --yes
|
|
11
|
+
$ aifabrix agent-kit install --host all --approve-all --yes
|
|
12
|
+
$ aifabrix agent-kit update --host all --approve-all --yes
|
|
13
|
+
$ aifabrix agent-kit status
|
|
14
|
+
$ aifabrix agent-kit validate
|
|
15
|
+
`;
|
|
16
|
+
|
|
17
|
+
const INSTALL_HELP = `
|
|
18
|
+
Examples:
|
|
19
|
+
$ aifabrix agent-kit install
|
|
20
|
+
$ aifabrix agent-kit install --host all --approve-all --yes
|
|
21
|
+
$ aifabrix agent-kit install --host claude --approve-all --yes
|
|
22
|
+
$ aifabrix agent-kit install --skip-approve-all
|
|
23
|
+
$ aifabrix agent-kit install --dry-run
|
|
24
|
+
|
|
25
|
+
TTY asks to auto-approve Claude Code and Codex permissions (default yes). Silent: --approve-all --yes. Skip: --skip-approve-all.
|
|
26
|
+
`;
|
|
27
|
+
|
|
28
|
+
const STATUS_HELP = `
|
|
29
|
+
Examples:
|
|
30
|
+
$ aifabrix agent-kit status
|
|
31
|
+
$ aifabrix agent-kit status --json
|
|
32
|
+
`;
|
|
33
|
+
|
|
34
|
+
const UPDATE_HELP = `
|
|
35
|
+
Examples:
|
|
36
|
+
$ aifabrix agent-kit update
|
|
37
|
+
$ aifabrix agent-kit update --host all --approve-all --yes
|
|
38
|
+
$ aifabrix agent-kit update --host claude --force
|
|
39
|
+
$ aifabrix agent-kit update --dry-run
|
|
40
|
+
|
|
41
|
+
Omit --host to keep the coding hosts already recorded. Pass --host when you add or switch Cursor, Claude Code, or Codex.
|
|
42
|
+
`;
|
|
43
|
+
|
|
44
|
+
const VALIDATE_HELP = `
|
|
45
|
+
Examples:
|
|
46
|
+
$ aifabrix agent-kit validate
|
|
47
|
+
$ aifabrix agent-kit validate --json
|
|
48
|
+
`;
|
|
49
|
+
|
|
50
|
+
const INIT_HELP = `
|
|
51
|
+
Examples:
|
|
52
|
+
$ aifabrix agent-kit init cust-demo
|
|
53
|
+
$ aifabrix agent-kit init cust-demo --host all --approve-all --yes
|
|
54
|
+
$ aifabrix agent-kit init cust-demo --host all --remote --org my-org --yes
|
|
55
|
+
$ aifabrix agent-kit init ./path/to/cust-demo --dry-run --json
|
|
56
|
+
|
|
57
|
+
Interactive (TTY): omit --host / --yes to be prompted.
|
|
58
|
+
Silent local: --host all --approve-all --yes
|
|
59
|
+
Silent remote: --host all --remote --org <owner> --yes
|
|
60
|
+
`;
|
|
61
|
+
|
|
62
|
+
const REMOTE_HELP = `
|
|
63
|
+
Examples:
|
|
64
|
+
$ cd cust-demo && aifabrix agent-kit remote create
|
|
65
|
+
$ aifabrix agent-kit remote create --org my-org --yes
|
|
66
|
+
$ aifabrix agent-kit remote create --org my-org --dry-run --json
|
|
67
|
+
|
|
68
|
+
Interactive (TTY): omit flags to be prompted. Silent: --org <owner> --yes
|
|
69
|
+
`;
|
|
70
|
+
|
|
71
|
+
module.exports = {
|
|
72
|
+
GROUP_HELP,
|
|
73
|
+
INSTALL_HELP,
|
|
74
|
+
STATUS_HELP,
|
|
75
|
+
UPDATE_HELP,
|
|
76
|
+
VALIDATE_HELP,
|
|
77
|
+
INIT_HELP,
|
|
78
|
+
REMOTE_HELP
|
|
79
|
+
};
|