@aifabrix/builder 2.49.2 → 2.50.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.
Files changed (409) hide show
  1. package/.cursor/rules/deploy-rules/docker-image-ip-policy.mdc +49 -0
  2. package/.cursor/rules/plan-rules/application-lifecycle.mdc +30 -0
  3. package/.cursor/rules/plan-rules/plan-frontmatter.mdc +35 -0
  4. package/.cursor/rules/plan-rules/plan-lifecycle.mdc +31 -0
  5. package/.cursor/rules/plan-rules/plan-validation-gate.mdc +34 -0
  6. package/.cursor/skills/README.md +1 -0
  7. package/.dockerignore +52 -0
  8. package/.eslintignore +22 -0
  9. package/README.md +2 -0
  10. package/bin/builder-api-cleanup.js +26 -0
  11. package/bin/builder-api-nest.js +10 -0
  12. package/bin/builder-api-spike.js +19 -0
  13. package/enterprise-knowledge/README.md +50 -0
  14. package/enterprise-knowledge/enterprise-integration-lifecycle/README.md +22 -0
  15. package/enterprise-knowledge/enterprise-integration-lifecycle/application.json +15 -0
  16. package/enterprise-knowledge/enterprise-integration-lifecycle/deploy.js +69 -0
  17. package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-deploy.json +52 -0
  18. package/enterprise-knowledge/enterprise-integration-lifecycle/enterprise-integration-lifecycle-system.json +29 -0
  19. package/enterprise-knowledge/enterprise-integration-lifecycle/env.template +2 -0
  20. package/integration/README.md +81 -0
  21. package/integration/github/README.md +53 -0
  22. package/integration/github/application.json +21 -0
  23. package/integration/github/deploy.js +72 -0
  24. package/integration/github/env.template +11 -0
  25. package/integration/github/github-datasource-issue-comments.json +239 -0
  26. package/integration/github/github-datasource-issues.json +399 -0
  27. package/integration/github/github-datasource-repository.json +354 -0
  28. package/integration/github/github-deploy.json +1202 -0
  29. package/integration/github/github-system.json +82 -0
  30. package/integration/hubspot-test/README.md +1 -1
  31. package/jest.isolated-projects.js +31 -1
  32. package/jest.projects.js +87 -1
  33. package/lib/api/dev-server-https.js +1 -1
  34. package/lib/api/enterprise-knowledge.api.js +63 -0
  35. package/lib/api/evidence.api.js +172 -0
  36. package/lib/api/external-systems.api.js +8 -2
  37. package/lib/api/resource-types.api.js +1 -0
  38. package/lib/api/types/enterprise-knowledge.types.js +46 -0
  39. package/lib/api/types/evidence.types.js +67 -0
  40. package/lib/api/types/resource-types.types.js +2 -0
  41. package/lib/app/controller-application-filter.js +36 -0
  42. package/lib/app/deploy.js +1 -1
  43. package/lib/app/list-external-systems.js +130 -0
  44. package/lib/app/list.js +20 -8
  45. package/lib/app/run.js +3 -1
  46. package/lib/app/show-display.js +8 -3
  47. package/lib/app/show-online.js +178 -0
  48. package/lib/app/show.js +37 -88
  49. package/lib/build/builder-api-docker-staging.js +47 -0
  50. package/lib/build/miso-controller-npm-sdk-guard.js +2 -2
  51. package/lib/build/standard-docker-build.js +2 -0
  52. package/lib/certification/post-unified-cert-sync.js +4 -31
  53. package/lib/certification/sync-after-external-command.js +0 -1
  54. package/lib/certification/sync-system-certification.js +0 -3
  55. package/lib/channels/add-channel.js +40 -34
  56. package/lib/channels/approval-guides/chatgpt.js +33 -0
  57. package/lib/channels/approval-guides/credential-portal.js +38 -0
  58. package/lib/channels/approval-guides/index.js +110 -0
  59. package/lib/channels/approval-guides/microsoft-copilot.js +34 -0
  60. package/lib/channels/approval-guides/slack.js +34 -0
  61. package/lib/channels/approval-guides/teams-bot.js +35 -0
  62. package/lib/channels/approval-guides/web-embed.js +32 -0
  63. package/lib/channels/channel-approval-guide.js +11 -0
  64. package/lib/channels/channel-artifact-generator.js +16 -4
  65. package/lib/channels/channel-audit.js +3 -0
  66. package/lib/channels/channel-auth-context.js +1 -1
  67. package/lib/channels/channel-description.js +59 -0
  68. package/lib/channels/channel-integration-generator.js +13 -230
  69. package/lib/channels/channel-integration-template.js +94 -0
  70. package/lib/channels/channel-runtime-resolver.js +43 -3
  71. package/lib/channels/channel-status-display.js +66 -26
  72. package/lib/channels/channel-targets.js +3 -3
  73. package/lib/cli/index.js +27 -3
  74. package/lib/cli/infra-guided.js +5 -1
  75. package/lib/cli/setup-app-external-create.js +111 -0
  76. package/lib/cli/setup-app.help.js +1 -1
  77. package/lib/cli/setup-app.js +38 -125
  78. package/lib/cli/setup-app.test-commands.js +26 -52
  79. package/lib/cli/setup-certification-commands.js +4 -4
  80. package/lib/cli/setup-certification.help.js +9 -9
  81. package/lib/cli/setup-dev.js +7 -2
  82. package/lib/cli/setup-external-system-help.js +4 -6
  83. package/lib/cli/setup-external-system.js +58 -52
  84. package/lib/cli/setup-infra-up-builder-api-action.js +64 -0
  85. package/lib/cli/setup-infra-up-platform-action.js +3 -1
  86. package/lib/cli/setup-infra.js +15 -0
  87. package/lib/cli/setup-list.js +43 -0
  88. package/lib/cli/setup-utility-repair.js +26 -7
  89. package/lib/cli/setup-utility.js +5 -3
  90. package/lib/commands/app.js +15 -43
  91. package/lib/commands/channel-add-setup.js +110 -0
  92. package/lib/commands/channel.js +42 -8
  93. package/lib/commands/datasource-sync-display.js +96 -0
  94. package/lib/commands/datasource-sync-policy.js +210 -0
  95. package/lib/commands/datasource-test-trust-cli.js +6 -6
  96. package/lib/commands/datasource-unified-test-cli.js +2 -1
  97. package/lib/commands/datasource-unified-test-cli.options.js +33 -23
  98. package/lib/commands/deploy-gate-failure-details.js +163 -0
  99. package/lib/commands/deploy-gate-orchestrator.js +322 -0
  100. package/lib/commands/dev-cli-handlers.js +1 -59
  101. package/lib/commands/dev-host-ops-params.js +91 -0
  102. package/lib/commands/dev-host-ops-poll.js +111 -0
  103. package/lib/commands/dev-host-ops.js +107 -94
  104. package/lib/commands/dev-init.js +3 -1
  105. package/lib/commands/enterprise-knowledge.js +284 -0
  106. package/lib/commands/evidence-cli-leaves.js +250 -0
  107. package/lib/commands/evidence.js +51 -0
  108. package/lib/commands/governance-cli-shared.js +2 -2
  109. package/lib/commands/governance-command-action.js +2 -2
  110. package/lib/commands/governance-fixture-subjects.js +85 -0
  111. package/lib/commands/governance.js +1 -1
  112. package/lib/commands/lifecycle-command-action.js +2 -2
  113. package/lib/commands/lifecycle-external.js +3 -3
  114. package/lib/commands/manifest-cli-auth.js +29 -0
  115. package/lib/commands/manifest-cli-commands.js +170 -0
  116. package/lib/commands/manifest-cli-integration-path.js +63 -0
  117. package/lib/commands/manifest.js +21 -0
  118. package/lib/commands/protection-cli-leaves.js +3 -3
  119. package/lib/commands/repair-auth-apply.js +15 -1
  120. package/lib/commands/repair-authentications-454.js +169 -0
  121. package/lib/commands/repair-capability-openapi-warnings.js +126 -0
  122. package/lib/commands/repair-datasource-apply.js +135 -0
  123. package/lib/commands/repair-datasource-auto-rbac.js +62 -1
  124. package/lib/commands/repair-datasource-http-service-contract.js +239 -0
  125. package/lib/commands/repair-datasource-operation-security.js +180 -0
  126. package/lib/commands/repair-datasource-run.js +7 -2
  127. package/lib/commands/repair-datasource-sync-operations.js +177 -0
  128. package/lib/commands/repair-datasource-webhooks-sync-bridge.js +133 -0
  129. package/lib/commands/repair-datasource.js +12 -68
  130. package/lib/commands/repair-env-template.js +11 -1
  131. package/lib/commands/repair-external-run.js +121 -31
  132. package/lib/commands/repair-internal.js +1 -1
  133. package/lib/commands/repair-openapi-export.js +156 -0
  134. package/lib/commands/repair-openapi-sync.js +19 -2
  135. package/lib/commands/repair-orchestration-datasource-split.js +259 -0
  136. package/lib/commands/repair-persist.js +22 -1
  137. package/lib/commands/repair-rbac-platform-preset.js +204 -0
  138. package/lib/commands/repair-rbac-reader-roles.js +191 -0
  139. package/lib/commands/repair-rbac.js +163 -86
  140. package/lib/commands/repair-steps.js +83 -18
  141. package/lib/commands/repair-system-permissions.js +1 -0
  142. package/lib/commands/repair.js +1 -1
  143. package/lib/commands/resource-type.js +65 -26
  144. package/lib/commands/run-post-publish-data-sync.js +68 -0
  145. package/lib/commands/setup-modes.js +1 -1
  146. package/lib/commands/test-e2e-external.js +21 -8
  147. package/lib/commands/test-governance-cli-options.js +2 -2
  148. package/lib/commands/test-trust-cli-options.js +2 -2
  149. package/lib/commands/up-builder-api-bootstrap.js +71 -0
  150. package/lib/commands/up-builder-api-provision.js +241 -0
  151. package/lib/commands/up-builder-api.js +88 -0
  152. package/lib/commands/up-common.js +25 -1
  153. package/lib/commands/upload-credential-push-log.js +117 -0
  154. package/lib/commands/upload-data-sync-finalize.js +60 -0
  155. package/lib/commands/upload-probe.js +66 -0
  156. package/lib/commands/upload-publish-context.js +4 -1
  157. package/lib/commands/upload-sidecar-followups.js +55 -27
  158. package/lib/commands/upload.js +116 -157
  159. package/lib/commands/verify-governance-combined-external.js +1 -1
  160. package/lib/commands/verify-governance-db.js +2 -2
  161. package/lib/commands/verify-operations-command-action.js +2 -2
  162. package/lib/commands/verify-operations-step-plan.js +2 -2
  163. package/lib/commands/verify-operations-steps.js +2 -2
  164. package/lib/commands/verify-trust-command-action.js +1 -1
  165. package/lib/commands/wizard-core.js +1 -1
  166. package/lib/commands/wizard-headless.js +2 -1
  167. package/lib/core/admin-secrets.js +2 -6
  168. package/lib/core/secrets-env-content.js +10 -4
  169. package/lib/core/secrets-env-write.js +2 -13
  170. package/lib/datasource/agent-trust-run.js +3 -3
  171. package/lib/datasource/deploy.js +3 -1
  172. package/lib/datasource/test-e2e.js +6 -1
  173. package/lib/datasource/unified-validation-run-body.js +4 -1
  174. package/lib/datasource/unified-validation-run.js +1 -1
  175. package/lib/deployment/deploy-poll-ui.js +73 -12
  176. package/lib/deployment/deployer-poll-run.js +113 -0
  177. package/lib/deployment/deployer.js +17 -87
  178. package/lib/evidence/dataplane-context.js +21 -0
  179. package/lib/evidence/evidence-display.js +78 -0
  180. package/lib/evidence/evidence-service.js +392 -0
  181. package/lib/external-system/deploy.js +290 -112
  182. package/lib/external-system/download.js +7 -3
  183. package/lib/external-system/test-execution.js +1 -1
  184. package/lib/external-system/test-system-level.js +8 -10
  185. package/lib/external-system/test.js +12 -6
  186. package/lib/generator/deploy-script.js +73 -0
  187. package/lib/generator/external.js +2 -1
  188. package/lib/generator/index.js +17 -2
  189. package/lib/generator/wizard.js +3 -36
  190. package/lib/internal/fs-real-sync.js +22 -1
  191. package/lib/internal/node-fs.js +2 -0
  192. package/lib/lifecycle/lifecycle-governance-options.js +1 -1
  193. package/lib/lifecycle/verify-step-progress.js +1 -1
  194. package/lib/programmatic/access-log.js +26 -0
  195. package/lib/programmatic/auth-config.js +44 -0
  196. package/lib/programmatic/bearer-auth.js +176 -0
  197. package/lib/programmatic/builder-api-request.js +175 -0
  198. package/lib/programmatic/builder-api-route-dispatch.js +82 -0
  199. package/lib/programmatic/builder-api-runtime-config.js +42 -0
  200. package/lib/programmatic/builder-api-server.js +230 -0
  201. package/lib/programmatic/builder-help-authentication-catalog.js +282 -0
  202. package/lib/programmatic/builder-help-connected-system-ui.js +266 -0
  203. package/lib/programmatic/builder-help-enterprise-sync-fabrix.js +60 -0
  204. package/lib/programmatic/builder-help-envelope.js +36 -0
  205. package/lib/programmatic/builder-help-fixtures.js +200 -0
  206. package/lib/programmatic/builder-help-governance.js +172 -0
  207. package/lib/programmatic/builder-help-schema-catalog.js +92 -0
  208. package/lib/programmatic/builder-help.js +361 -0
  209. package/lib/programmatic/capability-registry.js +77 -0
  210. package/lib/programmatic/command-options.js +32 -0
  211. package/lib/programmatic/enterprise-mcp-client.js +98 -0
  212. package/lib/programmatic/http-problem-details.js +99 -0
  213. package/lib/programmatic/http-route-match.js +40 -0
  214. package/lib/programmatic/idempotency-cache.js +69 -0
  215. package/lib/programmatic/index.js +53 -0
  216. package/lib/programmatic/integration-path-scope.js +39 -0
  217. package/lib/programmatic/log-redaction.js +66 -0
  218. package/lib/programmatic/manifest-get-section.js +146 -0
  219. package/lib/programmatic/manifest-patch-section.js +252 -0
  220. package/lib/programmatic/manifest-repair.js +122 -0
  221. package/lib/programmatic/manifest-section-dependency-graph.js +160 -0
  222. package/lib/programmatic/manifest-section-io.js +225 -0
  223. package/lib/programmatic/manifest-section-quality.js +171 -0
  224. package/lib/programmatic/manifest-section-registry-data.js +269 -0
  225. package/lib/programmatic/manifest-section-registry.js +205 -0
  226. package/lib/programmatic/nest-http-bridge.js +34 -0
  227. package/lib/programmatic/openapi-component-schemas.js +68 -0
  228. package/lib/programmatic/openapi-description-enricher.js +117 -0
  229. package/lib/programmatic/openapi-descriptions.js +190 -0
  230. package/lib/programmatic/openapi-docs-serving.js +123 -0
  231. package/lib/programmatic/openapi-help-schemas.js +63 -0
  232. package/lib/programmatic/openapi-manifest-schemas.js +141 -0
  233. package/lib/programmatic/openapi-operation-bindings.js +274 -0
  234. package/lib/programmatic/openapi-request-schemas.js +155 -0
  235. package/lib/programmatic/openapi-result-schemas.js +476 -0
  236. package/lib/programmatic/openapi-schema-descriptions-certify.js +139 -0
  237. package/lib/programmatic/openapi-schema-descriptions-core.js +159 -0
  238. package/lib/programmatic/openapi-schema-descriptions-help.js +40 -0
  239. package/lib/programmatic/openapi-schema-descriptions-manifest.js +143 -0
  240. package/lib/programmatic/openapi-schema-descriptions-mcp.js +118 -0
  241. package/lib/programmatic/openapi-schema-descriptions-operations.js +281 -0
  242. package/lib/programmatic/openapi-schema-helpers.js +93 -0
  243. package/lib/programmatic/openapi-spec.js +203 -0
  244. package/lib/programmatic/orchestration-openapi-meta.js +159 -0
  245. package/lib/programmatic/platform-rbac-catalog.js +90 -0
  246. package/lib/programmatic/request-timeout.js +53 -0
  247. package/lib/programmatic/route-handler-map.js +143 -0
  248. package/lib/programmatic/route-handlers-context.js +29 -0
  249. package/lib/programmatic/route-handlers.js +33 -0
  250. package/lib/programmatic/run-certify.js +57 -0
  251. package/lib/programmatic/run-enterprise-mcp.js +32 -0
  252. package/lib/programmatic/run-lifecycle.js +29 -0
  253. package/lib/programmatic/run-repair.js +41 -0
  254. package/lib/programmatic/run-repository-emcp.js +54 -0
  255. package/lib/programmatic/run-template-workspace.js +61 -0
  256. package/lib/programmatic/run-test.js +49 -0
  257. package/lib/programmatic/run-upload.js +63 -0
  258. package/lib/programmatic/run-validate.js +53 -0
  259. package/lib/programmatic/run-wizard.js +40 -0
  260. package/lib/programmatic/system-key.js +48 -0
  261. package/lib/programmatic/wizard-config-normalize.js +118 -0
  262. package/lib/programmatic/workspace-cleanup.js +128 -0
  263. package/lib/programmatic/workspace-context.js +145 -0
  264. package/lib/programmatic/workspace-lock.js +75 -0
  265. package/lib/programmatic/workspace-meta.js +64 -0
  266. package/lib/programmatic/workspace-ops.js +149 -0
  267. package/lib/protection/run-commands-upload-sync.js +35 -0
  268. package/lib/protection/run-commands.js +2 -20
  269. package/lib/protection/upload-batch.js +11 -7
  270. package/lib/resolvers/resource-type-file.js +22 -0
  271. package/lib/schema/external-datasource.schema.json +161 -1
  272. package/lib/schema/external-system.schema.json +244 -118
  273. package/lib/schema/flag-map-validation-run.json +3 -0
  274. package/lib/schema/type/credential-field-registry.json +2 -2
  275. package/lib/schema/type/document-storage.json +9 -0
  276. package/lib/utils/agent-trust-run-display.js +1 -1
  277. package/lib/utils/app-path-resolve.js +168 -0
  278. package/lib/utils/authentication-env-template.js +222 -0
  279. package/lib/utils/cli-sync-options.js +7 -11
  280. package/lib/utils/cli-utils.js +4 -0
  281. package/lib/utils/cli-workspace-options.js +29 -0
  282. package/lib/utils/compose-generate-docker-compose.js +102 -0
  283. package/lib/utils/configuration-env-resolver.js +203 -27
  284. package/lib/utils/datasource-test-run-certificate-tty.js +28 -2
  285. package/lib/utils/datasource-test-run-certification-debug.js +130 -0
  286. package/lib/utils/datasource-test-run-debug-display.js +2 -0
  287. package/lib/utils/datasource-test-run-debug-slice.js +7 -0
  288. package/lib/utils/datasource-test-run-display.js +2 -1
  289. package/lib/utils/dev-init-ssh-merge.js +165 -23
  290. package/lib/utils/dev-pin-share-instructions.js +110 -0
  291. package/lib/utils/dev-ssh-config-helper.js +177 -33
  292. package/lib/utils/enterprise-knowledge-paths.js +142 -0
  293. package/lib/utils/env-copy.js +2 -1
  294. package/lib/utils/env-dotenv-format.js +103 -0
  295. package/lib/utils/external-env-template.js +4 -1
  296. package/lib/utils/external-system-display.js +5 -1
  297. package/lib/utils/external-system-readiness-compact-blocks.js +221 -0
  298. package/lib/utils/external-system-readiness-compact-display.js +324 -0
  299. package/lib/utils/external-system-readiness-core.js +16 -0
  300. package/lib/utils/external-system-readiness-deploy-display.js +29 -11
  301. package/lib/utils/external-system-readiness-display-internals.js +3 -1
  302. package/lib/utils/external-system-readiness-display.js +20 -30
  303. package/lib/utils/external-system-system-test-tty-certification.js +135 -0
  304. package/lib/utils/external-system-system-test-tty.js +5 -41
  305. package/lib/utils/help-builder.js +6 -1
  306. package/lib/utils/host-ops-job-labels.js +236 -0
  307. package/lib/utils/host-ops-job-result.js +61 -0
  308. package/lib/utils/host-ops-poll-ui.js +163 -0
  309. package/lib/utils/integration-path-resolve.js +112 -0
  310. package/lib/utils/paths-reload-source.js +148 -0
  311. package/lib/utils/paths-system-builder-keys.js +25 -0
  312. package/lib/utils/paths.js +151 -26
  313. package/lib/utils/runtime-configuration-values.js +64 -2
  314. package/lib/utils/secrets-helpers.js +5 -1
  315. package/lib/utils/ssh-known-hosts.js +130 -0
  316. package/lib/utils/test-target-cli-options.js +75 -0
  317. package/lib/utils/upload-sync-options.js +4 -0
  318. package/lib/utils/validation-run-request.js +11 -2
  319. package/lib/validation/external-manifest-validator.js +11 -1
  320. package/lib/validation/openapi-contract-surface-validator.js +426 -0
  321. package/lib/validation/openapi-contract-vendor-validation.js +238 -0
  322. package/lib/validation/validate-external-file.js +160 -0
  323. package/lib/validation/validate.js +6 -117
  324. package/package.json +46 -29
  325. package/packages/builder-api/README.md +120 -0
  326. package/packages/builder-api/package.json +30 -0
  327. package/packages/builder-api/src/app.module.ts +7 -0
  328. package/packages/builder-api/src/auth/auth.module.ts +5 -0
  329. package/packages/builder-api/src/external-system/external-system.module.ts +5 -0
  330. package/packages/builder-api/src/main.ts +16 -0
  331. package/packages/builder-api/tsconfig.json +15 -0
  332. package/scripts/check-builder-api-architecture-grep.js +79 -0
  333. package/scripts/docker_image_content_gate.js +47 -0
  334. package/scripts/docker_image_content_gate.sh +5 -0
  335. package/scripts/export-builder-api-evidence.js +262 -0
  336. package/scripts/lib/builder-api-docker-staging-copy.js +60 -0
  337. package/scripts/lib/builder-api-docker-staging-core.js +183 -0
  338. package/scripts/lib/docker-image-content-gate-core.js +166 -0
  339. package/scripts/lib/plan-actor.js +109 -0
  340. package/scripts/lib/plan-config.js +20 -0
  341. package/scripts/lib/plan-gates.js +154 -0
  342. package/scripts/lib/plan-meta.js +104 -0
  343. package/scripts/lib/plan-parse.js +162 -0
  344. package/scripts/lib/plan-prevalidate-gates.js +326 -0
  345. package/scripts/lib/plan-run-core.js +125 -0
  346. package/scripts/lib/plan-run-report.js +108 -0
  347. package/scripts/plan-approve.js +24 -0
  348. package/scripts/plan-archive.js +49 -0
  349. package/scripts/plan-run.js +13 -0
  350. package/scripts/plan-set-actor.js +21 -0
  351. package/scripts/plan-validate.js +80 -0
  352. package/scripts/pnpm/af.mjs +110 -0
  353. package/scripts/pnpm/check-quiet.mjs +32 -0
  354. package/scripts/pnpm/dev-install.mjs +29 -0
  355. package/scripts/pnpm/dev-reload.mjs +18 -0
  356. package/scripts/pnpm/help.mjs +55 -0
  357. package/scripts/pnpm/lib/dev-reload-core.mjs +189 -0
  358. package/scripts/pnpm/lib/dev-reload-log-capture.mjs +67 -0
  359. package/scripts/pnpm/lib/dev-reload-log-utils.mjs +32 -0
  360. package/scripts/pnpm/lib/resolve-aifabrix-bin.mjs +124 -0
  361. package/scripts/pnpm/lib/resolve-app-url.mjs +183 -0
  362. package/scripts/pnpm/lib/spinner.mjs +42 -0
  363. package/scripts/stage_builder_api_for_docker.js +65 -0
  364. package/scripts/sync-builder-api-template.js +44 -0
  365. package/templates/README.md +3 -0
  366. package/templates/applications/builder-api/Dockerfile +38 -0
  367. package/templates/applications/builder-api/application.yaml +75 -0
  368. package/templates/applications/builder-api/env.template +48 -0
  369. package/templates/applications/dataplane/application.yaml +1 -1
  370. package/templates/applications/dataplane/env.template +10 -6
  371. package/templates/applications/dataplane/rbac.yaml +21 -1
  372. package/templates/applications/miso-controller/application.yaml +1 -1
  373. package/templates/applications/miso-controller/env.template +1 -3
  374. package/templates/channels/README.md +18 -0
  375. package/templates/channels/ai-fabrix-icon.jpg +0 -0
  376. package/templates/channels/chatgpt/install.template.md.hbs +21 -24
  377. package/templates/channels/chatgpt/integration/README.md +11 -0
  378. package/templates/channels/chatgpt/integration/application.json +15 -0
  379. package/templates/channels/chatgpt/integration/chatgpt-system.json +29 -0
  380. package/templates/channels/chatgpt/integration/env.template +4 -0
  381. package/templates/channels/microsoft-copilot/install.template.md.hbs +20 -25
  382. package/templates/channels/microsoft-copilot/integration/README.md +11 -0
  383. package/templates/channels/microsoft-copilot/integration/application.json +15 -0
  384. package/templates/channels/microsoft-copilot/integration/env.template +6 -0
  385. package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +34 -0
  386. package/templates/channels/slack/install.template.md.hbs +48 -18
  387. package/templates/channels/slack/integration/README.md +38 -0
  388. package/templates/channels/slack/integration/application.json +18 -0
  389. package/templates/channels/slack/integration/env.template +29 -0
  390. package/templates/channels/slack/integration/slack-datasource-conversations.json +226 -0
  391. package/templates/channels/slack/integration/slack-datasource-messages.json +269 -0
  392. package/templates/channels/slack/integration/slack-system.json +86 -0
  393. package/templates/channels/slack/manifest.template.json.hbs +20 -10
  394. package/templates/channels/teams-bot/install.template.md.hbs +31 -17
  395. package/templates/channels/teams-bot/integration/README.md +18 -0
  396. package/templates/channels/teams-bot/integration/application.json +17 -0
  397. package/templates/channels/teams-bot/integration/env.template +5 -0
  398. package/templates/channels/teams-bot/integration/teams-bot-system.json +55 -0
  399. package/templates/channels/teams-bot/manifest.template.json.hbs +27 -0
  400. package/templates/channels/web-embed/install.template.md.hbs +16 -26
  401. package/templates/channels/web-embed/integration/README.md +11 -0
  402. package/templates/channels/web-embed/integration/application.json +15 -0
  403. package/templates/channels/web-embed/integration/env.template +4 -0
  404. package/templates/channels/web-embed/integration/web-embed-system.json +29 -0
  405. package/templates/openapi/redoc_page.html +86 -0
  406. package/templates/python/docker-compose.hbs +11 -0
  407. package/templates/python/requirements.txt +1 -1
  408. package/templates/typescript/docker-compose.hbs +11 -0
  409. package/lib/certification/cli-cert-sync-skip.js +0 -21
@@ -1,12 +1,27 @@
1
- # {{appName}} — assistant channel install
1
+ # {{appName}} — Slack communication channel install
2
2
 
3
3
  {{appDescription}}
4
4
 
5
- Environment: **{{environment}}** · Credential key: `{{credentialKey}}`
5
+ Environment: **{{environment}}** · Credential key: `{{credentialKey}}` · Command prefix: `{{commandPrefix}}`
6
+
7
+ One Slack app delivers **Role Assistant** chat, **Work hub** shortcuts, and **document approval**.
8
+
9
+ **Chat with your assistant:** DM this app (no slash command for Q&A).
10
+
11
+ ## Create the Slack app (workspace admin)
12
+
13
+ 1. Open [Slack API — Your Apps](https://api.slack.com/apps) and sign in as a workspace admin.
14
+ 2. Click **Create New App** → **From an app manifest**.
15
+ 3. Select your workspace, then paste or upload the generated manifest JSON from `dist/channels/slack/channel-slack.json` (same folder as this file).
16
+ 4. Review callback URLs and OAuth scopes — they must match the values in **Platform callback URLs** below.
17
+ 5. Confirm **App Home → Messages tab** is **ON** in the manifest (required for bot DMs and proactive notifications; slash commands work without it).
18
+ 6. Click **Create**, then open **Install App** → **Install to Workspace** and approve.
19
+ 7. Copy **Bot User OAuth Token** and **Signing Secret** from the Slack app settings.
20
+ 8. Save **Bot User OAuth Token** and **Signing Secret** in AI Fabrix: [Authentication settings]({{credentialPortalUrl}})
6
21
 
7
22
  ## Platform callback URLs
8
23
 
9
- Configure these in your Slack app, Teams bot registration, or platform admin console. Do not embed secrets in generated files — use AI Fabrix credential storage only.
24
+ Configure these in your Slack app if you edit settings manually. Do not embed secrets in generated files — use AI Fabrix credential storage only.
10
25
 
11
26
  {{#if eventsUrl}}
12
27
  - **Events:** {{eventsUrl}}
@@ -17,18 +32,27 @@ Configure these in your Slack app, Teams bot registration, or platform admin con
17
32
  {{#if commandUrl}}
18
33
  - **Slash commands:** {{commandUrl}}
19
34
  {{/if}}
20
- {{#if oauthCallbackUrl}}
21
- - **OAuth redirect:** {{oauthCallbackUrl}}
22
- {{/if}}
23
- {{#if messagesUrl}}
24
- - **Bot messages:** {{messagesUrl}}
25
- {{/if}}
26
- {{#if notificationsUrl}}
27
- - **Notifications:** {{notificationsUrl}}
28
- {{/if}}
29
- {{#if botConfigUrl}}
30
- - **Bot config:** {{botConfigUrl}}
31
- {{/if}}
35
+
36
+ Register these **V1** slash commands in the manifest (all use the same request URL):
37
+
38
+ | Command | Purpose |
39
+ | --- | --- |
40
+ | `/{{commandPrefix}}-help` | Command help and portal links |
41
+ | `/{{commandPrefix}}-assistants` | See your Role Assistants and chat in DM |
42
+ | `/{{commandPrefix}}-tasks` | Tasks waiting for you — View opens the Work hub |
43
+ | `/{{commandPrefix}}-documents [status] [count]` | Documents waiting for review — Open in portal |
44
+
45
+ Single-task and single-document detail, plus approve-in-Slack, are **not** registered in the manifest — use list **View** buttons or the portal for full review.
46
+
47
+ Document review **block actions** use the **Interactivity** URL above.
48
+
49
+ ## Validate after manifest import
50
+
51
+ 1. `/{{commandPrefix}}-help` — returns Block Kit help (proves command is registered and dataplane responds).
52
+ 2. `/{{commandPrefix}}-assistants` — Role Assistant status cards or activation offer.
53
+ 3. `/{{commandPrefix}}-tasks` — waiting-for-me work items (when Work hub is enabled).
54
+ 4. `/{{commandPrefix}}-documents` — document list with **Review in portal** links.
55
+ 5. DM the bot — assistant chat.
32
56
 
33
57
  ## Assistant catalog
34
58
 
@@ -36,14 +60,20 @@ Runtime lists **assistants** available to each user from:
36
60
 
37
61
  {{assistantCatalogUrl}}
38
62
 
39
- ## After admin approval
63
+ ## After Slack install
40
64
 
41
65
  ```bash
42
- aifabrix app add-channel {{channelTarget}} --name "{{baseName}}"
66
+ aifabrix channel add {{channelTarget}} --name "{{baseName}}"
43
67
  ```
44
68
 
45
69
  Optional validation:
46
70
 
47
71
  ```bash
48
- aifabrix app add-channel {{channelTarget}} --name "{{baseName}}" --probe
72
+ aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
73
+ ```
74
+
75
+ To use a different slash prefix (default `af`):
76
+
77
+ ```bash
78
+ aifabrix channel add {{channelTarget}} --name "{{baseName}}" --command-prefix <key>
49
79
  ```
@@ -0,0 +1,38 @@
1
+ # Slack communication channel
2
+
3
+ Communication external system for **Role Assistants** (workforce transport) **and document approval** — one Slack app, dual surface (plan 455.2).
4
+
5
+ ## What this integration is
6
+
7
+ - Slack app manifest install (`channel-slack.json` via `aifabrix channel add slack`)
8
+ - **Workforce:** slash commands (`/assistants`, `/tasks`, `/task`), Events API (DM chat), interactive components
9
+ - **Document approval:** slash commands (`/documents`, `/document`, `/approve`, `/help`), review card block actions, proactive notifications
10
+ - **Command SSOT:** `templates/slack/command_catalog.yaml` + Block Kit JSON under `templates/slack/`; optional install prefix (default `af`) registers `/af-*` aliases
11
+ - Outbound CIP: `slack-messages`, `slack-conversations` (workforce replies, DMs, and approval notifications)
12
+
13
+ ## What this integration is not
14
+
15
+ - **Not** channel listing / user directory sync (`slack-channels`, `slack-users` are out of scope for this scaffold).
16
+
17
+ ## Endpoints
18
+
19
+ Registered at `/api/v1/external/systems/slack/`:
20
+
21
+ | Path | Purpose |
22
+ | --- | --- |
23
+ | `/commands` | Slash commands (workforce + document approval) |
24
+ | `/events` | Events API |
25
+ | `/interactive` | Block actions (approve, reject, metadata) |
26
+ | `/notifications` | Proactive messages |
27
+ | `/documents` | Document review Block Kit payload |
28
+ | `/bot-config` | Bot configuration |
29
+
30
+ ## Workflow
31
+
32
+ ```bash
33
+ aifabrix channel scaffold slack # or use this folder as SSOT
34
+ aifabrix upload slack --force
35
+ aifabrix channel add slack --name "Your Assistant"
36
+ ```
37
+
38
+ Publish template changes: `make sync-json` in dataplane → `aifabrix-builder/templates/channels/slack/integration/`.
@@ -0,0 +1,18 @@
1
+ {
2
+ "app": {
3
+ "key": "slack",
4
+ "displayName": "slack assistant channel",
5
+ "description": "Assistant communication channel — upload then channel add",
6
+ "type": "external"
7
+ },
8
+ "externalIntegration": {
9
+ "schemaBasePath": "./",
10
+ "systems": ["slack-system.json"],
11
+ "dataSources": [
12
+ "slack-datasource-messages.json",
13
+ "slack-datasource-conversations.json"
14
+ ],
15
+ "autopublish": true,
16
+ "version": "1.0.0"
17
+ }
18
+ }
@@ -0,0 +1,29 @@
1
+ # Slack assistant channel (communication) — lab fixture secrets
2
+ # Copy to integration/slack/.env (or use aifabrix secret set --shared) before deploy/upload.
3
+ #
4
+ # Manifest: integration/slack/slack-system.json
5
+ # Credential key: slack-app (method hmac)
6
+ #
7
+ # Resolution order at deploy: dataplane secret store (POST /api/v1/credential/secret)
8
+ # then KV_* env fallback in the dataplane container.
9
+ #
10
+ # In .env set plain values (not kv:// literals), e.g.:
11
+ # KV_SLACK_SIGNINGSECRET=<Signing Secret from Slack app Basic Information>
12
+ # KV_SLACK_BOTTOKEN=xoxb-<Bot User OAuth Token from OAuth & Permissions>
13
+ # (NOT xapp- app-level tokens — bot tokens always start with xoxb-)
14
+ # Optional OAuth client secret (not required for webhook + bot outbound smoke):
15
+ # KV_SLACK_CLIENTSECRET=<Client Secret>
16
+ #
17
+ # Shared secrets (Builder CLI, keys without kv:// prefix):
18
+ # aifabrix secret set slack/signingSecret "<value>" --shared
19
+ # aifabrix secret set slack/botToken "xoxb-..." --shared
20
+ # aifabrix secret set slack/clientSecret "<value>" --shared
21
+
22
+ # Required — webhook signature verification (438.3 inbound)
23
+ KV_SLACK_SIGNINGSECRET=kv://slack/signingSecret
24
+
25
+ # Required — outbound Slack Web API (post message, etc.)
26
+ KV_SLACK_BOTTOKEN=kv://slack/botToken
27
+
28
+ # Optional — OAuth app client secret
29
+ KV_SLACK_CLIENTSECRET=kv://slack/clientSecret
@@ -0,0 +1,226 @@
1
+ {
2
+ "key": "slack-conversations",
3
+ "displayName": "Slack Conversations",
4
+ "description": "Slack conversations datasource for managing DM and channel conversations",
5
+ "enabled": true,
6
+ "systemKey": "slack",
7
+ "resourceType": "conversation",
8
+ "entityType": "messageService",
9
+ "version": "1.0.0",
10
+ "metadataSchema": {
11
+ "type": "object",
12
+ "properties": {
13
+ "id": {
14
+ "type": "string",
15
+ "description": "Conversation ID"
16
+ },
17
+ "name": {
18
+ "type": "string",
19
+ "description": "Conversation name"
20
+ },
21
+ "isPrivate": {
22
+ "type": "boolean",
23
+ "description": "Whether conversation is private"
24
+ },
25
+ "isIm": {
26
+ "type": "boolean",
27
+ "description": "Whether conversation is a direct message"
28
+ },
29
+ "user": {
30
+ "type": "string",
31
+ "description": "User ID (for DM conversations)"
32
+ },
33
+ "key": {
34
+ "type": "string",
35
+ "index": true
36
+ }
37
+ }
38
+ },
39
+ "fieldMappings": {
40
+ "attributes": {
41
+ "externalId": {
42
+ "expression": "{{raw.id}}"
43
+ },
44
+ "key": {
45
+ "expression": "{{raw.id}}"
46
+ },
47
+ "id": {
48
+ "expression": "{{raw.id}}"
49
+ },
50
+ "name": {
51
+ "expression": "{{raw.name}}"
52
+ },
53
+ "isPrivate": {
54
+ "expression": "{{raw.isPrivate}}"
55
+ },
56
+ "isIm": {
57
+ "expression": "{{raw.isIm}}"
58
+ },
59
+ "user": {
60
+ "expression": "{{raw.user}}"
61
+ }
62
+ }
63
+ },
64
+ "primaryKey": [
65
+ "key"
66
+ ],
67
+ "labelKey": [
68
+ "key"
69
+ ],
70
+ "exposed": {
71
+ "schema": {
72
+ "externalId": "metadata.externalId",
73
+ "key": "metadata.key",
74
+ "id": "metadata.id",
75
+ "name": "metadata.name",
76
+ "isPrivate": "metadata.isPrivate",
77
+ "isIm": "metadata.isIm",
78
+ "user": "metadata.user"
79
+ },
80
+ "profiles": {
81
+ "default": [
82
+ "externalId",
83
+ "key",
84
+ "id",
85
+ "name",
86
+ "isPrivate",
87
+ "isIm",
88
+ "user"
89
+ ]
90
+ }
91
+ },
92
+ "quality": {
93
+ "rejectIf": []
94
+ },
95
+ "execution": {
96
+ "engine": "cip",
97
+ "cip": {
98
+ "version": "1.0",
99
+ "inputType": "void",
100
+ "outputType": "records",
101
+ "operations": {
102
+ "create": {
103
+ "description": "Open a direct message conversation",
104
+ "enabled": true,
105
+ "steps": [
106
+ {
107
+ "fetch": {
108
+ "source": "http",
109
+ "method": "POST",
110
+ "path": "/api/conversations.open",
111
+ "headers": {
112
+ "Authorization": "Bearer {{credential.botToken}}",
113
+ "Content-Type": "application/json"
114
+ },
115
+ "bodyTemplate": {
116
+ "users": "{{parameters.users}}"
117
+ }
118
+ }
119
+ },
120
+ {
121
+ "map": {
122
+ "useFieldMappings": true,
123
+ "inputPath": "$.channel"
124
+ }
125
+ },
126
+ {
127
+ "output": {
128
+ "mode": "records"
129
+ }
130
+ }
131
+ ]
132
+ },
133
+ "list": {
134
+ "description": "List conversations",
135
+ "enabled": true,
136
+ "steps": [
137
+ {
138
+ "fetch": {
139
+ "source": "openapi",
140
+ "openapiRef": "list",
141
+ "query": {
142
+ "types": "{{parameters.types | default('public_channel,private_channel,im,mpim')}}",
143
+ "limit": "{{parameters.limit | default(100)}}"
144
+ }
145
+ }
146
+ },
147
+ {
148
+ "map": {
149
+ "useFieldMappings": true,
150
+ "inputPath": "$.channels[*]"
151
+ }
152
+ },
153
+ {
154
+ "output": {
155
+ "mode": "records"
156
+ }
157
+ }
158
+ ]
159
+ },
160
+ "get": {
161
+ "description": "Get conversation info",
162
+ "enabled": true,
163
+ "steps": [
164
+ {
165
+ "fetch": {
166
+ "source": "openapi",
167
+ "openapiRef": "get",
168
+ "query": {
169
+ "channel": "{{parameters.channel}}"
170
+ }
171
+ }
172
+ },
173
+ {
174
+ "map": {
175
+ "useFieldMappings": true,
176
+ "inputPath": "$.channel"
177
+ }
178
+ },
179
+ {
180
+ "output": {
181
+ "mode": "records"
182
+ }
183
+ }
184
+ ]
185
+ }
186
+ }
187
+ }
188
+ },
189
+ "capabilities": [
190
+ {
191
+ "key": "list",
192
+ "description": "List conversations",
193
+ "riskLevel": "low",
194
+ "approvalRequired": false
195
+ },
196
+ {
197
+ "key": "get",
198
+ "description": "Get conversation info",
199
+ "riskLevel": "low",
200
+ "approvalRequired": false
201
+ },
202
+ {
203
+ "key": "create",
204
+ "description": "Open a direct message conversation",
205
+ "riskLevel": "medium",
206
+ "approvalRequired": false
207
+ }
208
+ ],
209
+ "openapi": {
210
+ "operations": {
211
+ "list": {
212
+ "operationId": "get-api-conversations-list",
213
+ "method": "GET",
214
+ "path": "/api/conversations.list"
215
+ },
216
+ "get": {
217
+ "operationId": "get-api-conversations-info",
218
+ "method": "GET",
219
+ "path": "/api/conversations.info"
220
+ }
221
+ },
222
+ "enabled": true,
223
+ "documentKey": "slack-conversations",
224
+ "autoRbac": true
225
+ }
226
+ }
@@ -0,0 +1,269 @@
1
+ {
2
+ "key": "slack-messages",
3
+ "displayName": "Slack Messages",
4
+ "description": "Slack messages datasource for sending and managing messages via Slack Web API",
5
+ "enabled": true,
6
+ "systemKey": "slack",
7
+ "resourceType": "message",
8
+ "entityType": "messageService",
9
+ "version": "1.0.0",
10
+ "metadataSchema": {
11
+ "type": "object",
12
+ "properties": {
13
+ "channel": {
14
+ "type": "string",
15
+ "description": "Channel ID where message is sent"
16
+ },
17
+ "text": {
18
+ "type": "string",
19
+ "description": "Message text"
20
+ },
21
+ "blocks": {
22
+ "type": "array",
23
+ "description": "Message blocks (Slack Block Kit)",
24
+ "items": {
25
+ "type": "string"
26
+ }
27
+ },
28
+ "ts": {
29
+ "type": "string",
30
+ "description": "Message timestamp (used as message ID)"
31
+ },
32
+ "user": {
33
+ "type": "string",
34
+ "description": "User ID who sent the message"
35
+ },
36
+ "key": {
37
+ "type": "string",
38
+ "index": true
39
+ }
40
+ },
41
+ "required": [
42
+ "channel"
43
+ ]
44
+ },
45
+ "fieldMappings": {
46
+ "attributes": {
47
+ "externalId": {
48
+ "expression": "{{raw.ts}}"
49
+ },
50
+ "key": {
51
+ "expression": "{{raw.ts}}"
52
+ },
53
+ "channel": {
54
+ "expression": "{{raw.channel}}"
55
+ },
56
+ "text": {
57
+ "expression": "{{raw.text}}"
58
+ },
59
+ "blocks": {
60
+ "expression": "{{raw.blocks}}"
61
+ },
62
+ "ts": {
63
+ "expression": "{{raw.ts}}"
64
+ },
65
+ "user": {
66
+ "expression": "{{raw.user}}"
67
+ }
68
+ }
69
+ },
70
+ "primaryKey": [
71
+ "key"
72
+ ],
73
+ "labelKey": [
74
+ "key"
75
+ ],
76
+ "exposed": {
77
+ "schema": {
78
+ "externalId": "metadata.externalId",
79
+ "key": "metadata.key",
80
+ "channel": "metadata.channel",
81
+ "text": "metadata.text",
82
+ "blocks": "metadata.blocks",
83
+ "ts": "metadata.ts",
84
+ "user": "metadata.user"
85
+ },
86
+ "profiles": {
87
+ "default": [
88
+ "externalId",
89
+ "key",
90
+ "channel",
91
+ "text",
92
+ "blocks",
93
+ "ts",
94
+ "user"
95
+ ]
96
+ }
97
+ },
98
+ "quality": {
99
+ "rejectIf": []
100
+ },
101
+ "execution": {
102
+ "engine": "cip",
103
+ "cip": {
104
+ "version": "1.0",
105
+ "inputType": "void",
106
+ "outputType": "records",
107
+ "operations": {
108
+ "create": {
109
+ "description": "Send a message to Slack channel",
110
+ "enabled": true,
111
+ "steps": [
112
+ {
113
+ "fetch": {
114
+ "source": "http",
115
+ "method": "POST",
116
+ "path": "/api/chat.postMessage",
117
+ "headers": {
118
+ "Authorization": "Bearer {{credential.botToken}}",
119
+ "Content-Type": "application/json"
120
+ },
121
+ "bodyTemplate": {
122
+ "channel": "{{parameters.channel}}",
123
+ "text": "{{parameters.text}}",
124
+ "blocks": "{{parameters.blocks}}"
125
+ }
126
+ }
127
+ },
128
+ {
129
+ "map": {
130
+ "useFieldMappings": true,
131
+ "inputPath": "$"
132
+ }
133
+ },
134
+ {
135
+ "output": {
136
+ "mode": "records"
137
+ }
138
+ }
139
+ ]
140
+ },
141
+ "update": {
142
+ "description": "Update an existing Slack message",
143
+ "enabled": true,
144
+ "steps": [
145
+ {
146
+ "fetch": {
147
+ "source": "http",
148
+ "method": "POST",
149
+ "path": "/api/chat.update",
150
+ "headers": {
151
+ "Authorization": "Bearer {{credential.botToken}}",
152
+ "Content-Type": "application/json"
153
+ },
154
+ "bodyTemplate": {
155
+ "channel": "{{parameters.channel}}",
156
+ "ts": "{{parameters.ts}}",
157
+ "text": "{{parameters.text}}",
158
+ "blocks": "{{parameters.blocks}}"
159
+ }
160
+ }
161
+ },
162
+ {
163
+ "map": {
164
+ "useFieldMappings": true,
165
+ "inputPath": "$"
166
+ }
167
+ },
168
+ {
169
+ "output": {
170
+ "mode": "records"
171
+ }
172
+ }
173
+ ]
174
+ },
175
+ "delete": {
176
+ "description": "Delete a Slack message",
177
+ "enabled": true,
178
+ "steps": [
179
+ {
180
+ "fetch": {
181
+ "source": "http",
182
+ "method": "POST",
183
+ "path": "/api/chat.delete",
184
+ "headers": {
185
+ "Authorization": "Bearer {{credential.botToken}}",
186
+ "Content-Type": "application/json"
187
+ },
188
+ "bodyTemplate": {
189
+ "channel": "{{parameters.channel}}",
190
+ "ts": "{{parameters.ts}}"
191
+ }
192
+ }
193
+ },
194
+ {
195
+ "output": {
196
+ "mode": "records"
197
+ }
198
+ }
199
+ ]
200
+ },
201
+ "list": {
202
+ "description": "Get message history from Slack channel",
203
+ "enabled": true,
204
+ "steps": [
205
+ {
206
+ "fetch": {
207
+ "source": "openapi",
208
+ "openapiRef": "list",
209
+ "query": {
210
+ "channel": "{{parameters.channel}}",
211
+ "limit": "{{parameters.limit | default(100)}}"
212
+ }
213
+ }
214
+ },
215
+ {
216
+ "map": {
217
+ "useFieldMappings": true,
218
+ "inputPath": "$.messages[*]"
219
+ }
220
+ },
221
+ {
222
+ "output": {
223
+ "mode": "records"
224
+ }
225
+ }
226
+ ]
227
+ }
228
+ }
229
+ }
230
+ },
231
+ "capabilities": [
232
+ {
233
+ "key": "list",
234
+ "description": "Get message history from Slack channel",
235
+ "riskLevel": "low",
236
+ "approvalRequired": false
237
+ },
238
+ {
239
+ "key": "create",
240
+ "description": "Send a message to Slack channel",
241
+ "riskLevel": "medium",
242
+ "approvalRequired": false
243
+ },
244
+ {
245
+ "key": "update",
246
+ "description": "Update an existing Slack message",
247
+ "riskLevel": "medium",
248
+ "approvalRequired": false
249
+ },
250
+ {
251
+ "key": "delete",
252
+ "description": "Delete a Slack message",
253
+ "riskLevel": "high",
254
+ "approvalRequired": false
255
+ }
256
+ ],
257
+ "openapi": {
258
+ "operations": {
259
+ "list": {
260
+ "operationId": "get-api-conversations-history",
261
+ "method": "GET",
262
+ "path": "/api/conversations.history"
263
+ }
264
+ },
265
+ "enabled": true,
266
+ "documentKey": "slack-messages",
267
+ "autoRbac": true
268
+ }
269
+ }