@aifabrix/builder 2.53.1 → 2.54.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/bin/aifabrix.js +2 -2
  2. package/lib/api/assistants.api.js +8 -5
  3. package/lib/api/channel-identity.api.js +41 -0
  4. package/lib/api/evidence-authoring.api.js +5 -1
  5. package/lib/api/evidence.api.js +2 -0
  6. package/lib/api/types/evidence.types.js +2 -0
  7. package/lib/api/work-search.api.js +136 -0
  8. package/lib/channels/add-channel.js +163 -126
  9. package/lib/channels/approval-guides/chatgpt.js +14 -18
  10. package/lib/channels/approval-guides/claude.js +29 -0
  11. package/lib/channels/approval-guides/index.js +88 -22
  12. package/lib/channels/approval-guides/mcp-client.js +27 -0
  13. package/lib/channels/approval-guides/microsoft-copilot.js +52 -3
  14. package/lib/channels/approval-guides/slack.js +10 -10
  15. package/lib/channels/approval-guides/teams-bot.js +8 -12
  16. package/lib/channels/channel-add-continuations.js +91 -0
  17. package/lib/channels/channel-add-ensure.js +124 -27
  18. package/lib/channels/channel-add-existing.js +160 -28
  19. package/lib/channels/channel-add-failure.js +60 -0
  20. package/lib/channels/channel-add-remaining.js +486 -0
  21. package/lib/channels/channel-add-tty.js +190 -0
  22. package/lib/channels/channel-add-wizard-config.js +138 -0
  23. package/lib/channels/channel-add-wizard.js +250 -0
  24. package/lib/channels/channel-artifact-generator.js +27 -13
  25. package/lib/channels/channel-cardinality.js +83 -0
  26. package/lib/channels/channel-catalog-icon.js +45 -0
  27. package/lib/channels/channel-cli-instructions.js +75 -0
  28. package/lib/channels/channel-configuration-map.js +213 -0
  29. package/lib/channels/channel-credential.js +11 -14
  30. package/lib/channels/channel-definition-project.js +101 -0
  31. package/lib/channels/channel-definition-registry.js +154 -0
  32. package/lib/channels/channel-description.js +59 -2
  33. package/lib/channels/channel-discovery.js +16 -2
  34. package/lib/channels/channel-external-system.js +86 -9
  35. package/lib/channels/channel-install-envelope-actions.js +88 -0
  36. package/lib/channels/channel-install-envelope-microsoft.js +155 -0
  37. package/lib/channels/channel-install-envelope.js +356 -0
  38. package/lib/channels/channel-install-help-md.js +172 -0
  39. package/lib/channels/channel-install-http-payload.js +62 -0
  40. package/lib/channels/channel-install-inventory.js +115 -0
  41. package/lib/channels/channel-install-profiles.js +90 -0
  42. package/lib/channels/channel-instance-collision.js +118 -0
  43. package/lib/channels/channel-instance-key.js +100 -0
  44. package/lib/channels/channel-instance-materialize.js +240 -0
  45. package/lib/channels/channel-integration-generator.js +16 -9
  46. package/lib/channels/channel-integration-template.js +101 -22
  47. package/lib/channels/channel-inventory-fetch.js +79 -0
  48. package/lib/channels/channel-oauth-preflight.js +104 -0
  49. package/lib/channels/channel-package-version.js +76 -0
  50. package/lib/channels/channel-predefined-client.js +154 -0
  51. package/lib/channels/channel-probe.js +7 -2
  52. package/lib/channels/channel-runtime-resolver.js +180 -72
  53. package/lib/channels/channel-status-display.js +86 -16
  54. package/lib/channels/channel-targets.js +106 -92
  55. package/lib/channels/chatgpt-callback.js +318 -0
  56. package/lib/channels/chatgpt-channel-add.js +229 -0
  57. package/lib/channels/chatgpt-preflight.js +396 -0
  58. package/lib/channels/chatgpt-runtime-contract.js +17 -0
  59. package/lib/channels/chatgpt-setup-values.js +124 -0
  60. package/lib/channels/claude-callback.js +67 -0
  61. package/lib/channels/claude-channel-add.js +254 -0
  62. package/lib/channels/claude-runtime-contract.js +40 -0
  63. package/lib/channels/claude-runtime.js +58 -0
  64. package/lib/channels/claude-setup-values.js +89 -0
  65. package/lib/channels/mcp-client/config-merge.js +148 -0
  66. package/lib/channels/mcp-client/ensure-client.js +231 -0
  67. package/lib/channels/mcp-client/paths.js +53 -0
  68. package/lib/channels/mcp-client/profiles.js +122 -0
  69. package/lib/channels/mcp-client/redirect-uris.js +99 -0
  70. package/lib/channels/mcp-client/runtime.js +59 -0
  71. package/lib/channels/mcp-client-channel-add.js +186 -0
  72. package/lib/channels/microsoft-copilot-channel-add.js +117 -7
  73. package/lib/channels/microsoft-copilot-entra-identifier-uris.js +187 -0
  74. package/lib/channels/microsoft-copilot-entra-sso-form.js +106 -18
  75. package/lib/channels/microsoft-copilot-entra-sso.js +31 -2
  76. package/lib/channels/microsoft-copilot-package-prior.js +107 -0
  77. package/lib/channels/microsoft-copilot-package.js +29 -28
  78. package/lib/channels/microsoft-provisioning/a365.js +80 -0
  79. package/lib/channels/microsoft-provisioning/auth-config.js +240 -0
  80. package/lib/channels/microsoft-provisioning/auth.js +179 -0
  81. package/lib/channels/microsoft-provisioning/cli.js +71 -0
  82. package/lib/channels/microsoft-provisioning/constants.js +75 -0
  83. package/lib/channels/microsoft-provisioning/errors.js +117 -0
  84. package/lib/channels/microsoft-provisioning/index.js +55 -0
  85. package/lib/channels/microsoft-provisioning/install-atk.js +158 -0
  86. package/lib/channels/microsoft-provisioning/install-teams.js +115 -0
  87. package/lib/channels/microsoft-provisioning/login-portal-device.js +236 -0
  88. package/lib/channels/microsoft-provisioning/login-portal-parse.js +71 -0
  89. package/lib/channels/microsoft-provisioning/login-portal-teams.js +193 -0
  90. package/lib/channels/microsoft-provisioning/login-portal.js +230 -0
  91. package/lib/channels/microsoft-provisioning/persist.js +110 -0
  92. package/lib/channels/microsoft-provisioning/teams-bot-args.js +119 -0
  93. package/lib/channels/microsoft-provisioning/teams-bot-controller.js +123 -0
  94. package/lib/channels/microsoft-provisioning/teams-bot-parse.js +134 -0
  95. package/lib/channels/microsoft-provisioning/teams-bot-persist.js +113 -0
  96. package/lib/channels/microsoft-provisioning/teams-bot-provision.js +234 -0
  97. package/lib/channels/microsoft-provisioning/teams-bot-secrets.js +45 -0
  98. package/lib/channels/microsoft-provisioning/teams-cli.js +82 -0
  99. package/lib/channels/runtime-tool-catalog.js +5 -2
  100. package/lib/channels/slack-channel-add-portal.js +130 -0
  101. package/lib/channels/slack-channel-add-tty-auth.js +95 -0
  102. package/lib/channels/slack-channel-add.js +258 -0
  103. package/lib/channels/slack-provisioning/apps.js +181 -0
  104. package/lib/channels/slack-provisioning/auth-store.js +110 -0
  105. package/lib/channels/slack-provisioning/auth-ticket.js +185 -0
  106. package/lib/channels/slack-provisioning/auth.js +115 -0
  107. package/lib/channels/slack-provisioning/callbacks.js +41 -0
  108. package/lib/channels/slack-provisioning/cli.js +226 -0
  109. package/lib/channels/slack-provisioning/constants.js +37 -0
  110. package/lib/channels/slack-provisioning/credentials.js +169 -0
  111. package/lib/channels/slack-provisioning/curl-shim.js +132 -0
  112. package/lib/channels/slack-provisioning/developer-install.js +118 -0
  113. package/lib/channels/slack-provisioning/env-file.js +120 -0
  114. package/lib/channels/slack-provisioning/errors.js +47 -0
  115. package/lib/channels/slack-provisioning/go-ca-bundle.js +137 -0
  116. package/lib/channels/slack-provisioning/index.js +250 -0
  117. package/lib/channels/slack-provisioning/install-cli.js +323 -0
  118. package/lib/channels/slack-provisioning/manifest.js +89 -0
  119. package/lib/channels/slack-provisioning/oauth-lock.js +33 -0
  120. package/lib/channels/slack-provisioning/offer-cli.js +113 -0
  121. package/lib/channels/slack-provisioning/onboard-members.js +122 -0
  122. package/lib/channels/slack-provisioning/onboard.js +89 -0
  123. package/lib/channels/slack-provisioning/persist.js +95 -0
  124. package/lib/channels/slack-provisioning/remaining-urls.js +158 -0
  125. package/lib/channels/slack-provisioning/with-curl-on-path.js +48 -0
  126. package/lib/channels/teams-bot-channel-add.js +94 -0
  127. package/lib/channels/vendor-dataplane-url.js +249 -0
  128. package/lib/cli/setup-certification.help.js +2 -0
  129. package/lib/cli/setup-external-system-help.js +2 -0
  130. package/lib/cli/setup-external-system.js +1 -1
  131. package/lib/commands/channel-add-help.js +366 -0
  132. package/lib/commands/channel-add-setup.js +162 -80
  133. package/lib/commands/channel-configure.js +118 -0
  134. package/lib/commands/channel.js +10 -1
  135. package/lib/commands/governance-upload-external.js +6 -3
  136. package/lib/commands/lifecycle-command-action.js +2 -5
  137. package/lib/commands/lifecycle-external.js +93 -21
  138. package/lib/commands/repair-datasource-test-payload.js +4 -2
  139. package/lib/commands/repair-datasource-webhooks-sync-bridge.js +23 -2
  140. package/lib/commands/repair-datasource.js +3 -0
  141. package/lib/commands/repair-external-run.js +59 -25
  142. package/lib/commands/repair-openapi-rest-runtime.js +127 -0
  143. package/lib/commands/repair-orchestration-tag-merge.js +339 -0
  144. package/lib/commands/repair-rbac-catalog-defaults.js +96 -0
  145. package/lib/commands/repair-rbac-platform-preset.js +26 -15
  146. package/lib/commands/repair-rbac-reader-roles.js +8 -21
  147. package/lib/commands/repair-rbac.js +10 -34
  148. package/lib/commands/repair-system-permissions.js +24 -22
  149. package/lib/commands/role-assistant-test-output.js +14 -0
  150. package/lib/commands/role-assistant.js +59 -21
  151. package/lib/commands/test-e2e-external.js +148 -21
  152. package/lib/commands/upload-credential-push-log.js +2 -1
  153. package/lib/commands/upload-publish-context.js +1 -1
  154. package/lib/commands/upload-role-assistant-shell.js +124 -0
  155. package/lib/commands/upload-sidecar-followups.js +6 -3
  156. package/lib/commands/upload.js +18 -3
  157. package/lib/core/secrets-docker-env.js +4 -1
  158. package/lib/core/secrets-env-content.js +17 -3
  159. package/lib/datasource/capability/capability-manifest.js +0 -3
  160. package/lib/datasource/capability/copy-test-payload.js +3 -0
  161. package/lib/external-system/deploy-helpers.js +26 -1
  162. package/lib/external-system/deploy.js +10 -6
  163. package/lib/external-system/download-helpers.js +29 -2
  164. package/lib/external-system/download-role-assistant.js +83 -4
  165. package/lib/external-system/download.js +40 -30
  166. package/lib/external-system/sync-deploy-manifest.js +3 -2
  167. package/lib/external-system/upload-identity.js +42 -0
  168. package/lib/generator/index.js +19 -15
  169. package/lib/generator/split.js +13 -2
  170. package/lib/lifecycle/role-assistant-governance.js +146 -0
  171. package/lib/lifecycle/scenario-upload.js +181 -30
  172. package/lib/programmatic/builder-api-cors.js +143 -0
  173. package/lib/programmatic/builder-api-request.js +6 -0
  174. package/lib/programmatic/builder-api-route-dispatch.js +56 -42
  175. package/lib/programmatic/builder-api-server.js +8 -1
  176. package/lib/programmatic/capability-registry.js +54 -0
  177. package/lib/programmatic/channel-install-help-resolve.js +359 -0
  178. package/lib/programmatic/channel-install-session.js +218 -0
  179. package/lib/programmatic/help-content/channel-onboarding.md +2 -0
  180. package/lib/programmatic/help-content/cip-overview.md +3 -1
  181. package/lib/programmatic/http-raw-response.js +62 -0
  182. package/lib/programmatic/openapi-channel-install-bindings.js +179 -0
  183. package/lib/programmatic/openapi-channel-install-schemas.js +286 -0
  184. package/lib/programmatic/openapi-component-schemas.js +18 -1
  185. package/lib/programmatic/openapi-description-enricher.js +3 -1
  186. package/lib/programmatic/openapi-descriptions.js +74 -3
  187. package/lib/programmatic/openapi-envelope-examples.js +117 -0
  188. package/lib/programmatic/openapi-operation-bindings.js +4 -1
  189. package/lib/programmatic/openapi-schema-descriptions-channel.js +316 -0
  190. package/lib/programmatic/openapi-spec.js +12 -8
  191. package/lib/programmatic/platform-rbac-catalog.js +36 -18
  192. package/lib/programmatic/route-handler-map.js +51 -1
  193. package/lib/programmatic/route-handlers-context.js +2 -1
  194. package/lib/programmatic/run-auth-permissions.js +54 -0
  195. package/lib/programmatic/run-channel-catalog.js +196 -0
  196. package/lib/programmatic/run-channel-install-artifacts.js +137 -0
  197. package/lib/programmatic/run-channel-install-copilot.js +353 -0
  198. package/lib/programmatic/run-channel-install-options.js +232 -0
  199. package/lib/programmatic/run-channel-install-teams-bot.js +204 -0
  200. package/lib/programmatic/run-channel-install.js +346 -0
  201. package/lib/programmatic/run-channel-package.js +87 -7
  202. package/lib/programmatic/workspace-context.js +2 -0
  203. package/lib/role-assistant/evidence-sync.js +4 -2
  204. package/lib/role-assistant/evidence-validation-issues.js +51 -0
  205. package/lib/role-assistant/knowledge-sync.js +10 -4
  206. package/lib/role-assistant/settings.js +49 -2
  207. package/lib/role-assistant/test-cases-evaluate.js +30 -2
  208. package/lib/role-assistant/test-cases-evidence.js +175 -0
  209. package/lib/role-assistant/test-cases-search.js +229 -0
  210. package/lib/role-assistant/test-cases.js +37 -4
  211. package/lib/role-assistant/test-runner-search.js +149 -0
  212. package/lib/role-assistant/test-runner-workhub-helpers.js +40 -2
  213. package/lib/role-assistant/test-runner-workhub-soft.js +9 -3
  214. package/lib/role-assistant/test-runner-workhub.js +29 -11
  215. package/lib/role-assistant/test-runner.js +16 -1
  216. package/lib/schema/external-datasource.schema.json +112 -18
  217. package/lib/schema/external-system.schema.json +159 -2
  218. package/lib/schema/mcp-client-profile.schema.json +103 -0
  219. package/lib/utils/app-path-resolve.js +4 -0
  220. package/lib/utils/authentication-env-template.js +44 -6
  221. package/lib/utils/credential-secrets-env.js +6 -1
  222. package/lib/utils/env-copy.js +19 -7
  223. package/lib/utils/external-env-template.js +20 -2
  224. package/lib/utils/paths.js +18 -1
  225. package/lib/utils/platform-shell-package.js +69 -0
  226. package/lib/utils/port-resolver.js +50 -1
  227. package/lib/utils/rewrite-name-flag.js +20 -0
  228. package/lib/utils/role-assistant-paths.js +13 -10
  229. package/lib/utils/schema-resolver.js +11 -1
  230. package/lib/utils/secrets-helpers.js +12 -21
  231. package/lib/utils/token-manager.js +10 -5
  232. package/lib/validation/validate.js +40 -0
  233. package/package.json +1 -1
  234. package/templates/README.md +1 -1
  235. package/templates/applications/builder-api/Dockerfile +1 -1
  236. package/templates/applications/builder-api/env.template +7 -0
  237. package/templates/applications/dataplane/application.yaml +6 -5
  238. package/templates/applications/dataplane/env.template +2 -2
  239. package/templates/applications/dataplane/rbac.yaml +7 -2
  240. package/templates/applications/keycloak/Dockerfile +30 -4
  241. package/templates/applications/keycloak/application.yaml +2 -2
  242. package/templates/applications/keycloak/cimd-lenient-parse/AbstractClientIdMetadataDocumentExecutor.java +896 -0
  243. package/templates/applications/keycloak/cimd-lenient-parse/SOURCE.md +19 -0
  244. package/templates/applications/keycloak/env.template +3 -0
  245. package/templates/applications/miso-controller/application.yaml +1 -2
  246. package/templates/applications/miso-controller/env.template +2 -0
  247. package/templates/channels/README.md +5 -5
  248. package/templates/channels/chatgpt/TROUBLESHOOTING.md +51 -0
  249. package/templates/channels/chatgpt/channel.json +59 -0
  250. package/templates/channels/chatgpt/icon.svg +1 -0
  251. package/templates/channels/chatgpt/install.template.md.hbs +20 -95
  252. package/templates/channels/chatgpt/integration/README.md +1 -1
  253. package/templates/channels/chatgpt/integration/application.json +2 -2
  254. package/templates/channels/chatgpt/integration/chatgpt-system.json +49 -4
  255. package/templates/channels/chatgpt/integration/env.template +2 -4
  256. package/templates/channels/chatgpt/integration/rbac.json +13 -0
  257. package/templates/channels/claude/TROUBLESHOOTING.md +41 -0
  258. package/templates/channels/claude/channel.json +59 -0
  259. package/templates/channels/claude/icon.svg +1 -0
  260. package/templates/channels/claude/install.template.md.hbs +21 -0
  261. package/templates/channels/claude/integration/README.md +14 -0
  262. package/templates/channels/claude/integration/application.json +15 -0
  263. package/templates/channels/claude/integration/claude-system.json +59 -0
  264. package/templates/channels/claude/integration/env.template +2 -0
  265. package/templates/channels/claude/integration/rbac.json +13 -0
  266. package/templates/channels/claude/manifest.template.json.hbs +40 -0
  267. package/templates/channels/mcp-client/channel.json +72 -0
  268. package/templates/channels/mcp-client/icon.svg +1 -0
  269. package/templates/channels/mcp-client/install.template.md.hbs +24 -0
  270. package/templates/channels/mcp-client/integration/README.md +13 -0
  271. package/templates/channels/mcp-client/integration/application.json +15 -0
  272. package/templates/channels/mcp-client/integration/env.template +2 -0
  273. package/templates/channels/mcp-client/integration/mcp-client-system.json +72 -0
  274. package/templates/channels/mcp-client/integration/rbac.json +13 -0
  275. package/templates/channels/mcp-client/manifest.template.json.hbs +41 -0
  276. package/templates/channels/mcp-client/profiles/cursor.json +26 -0
  277. package/templates/channels/mcp-client/profiles/github-copilot.json +29 -0
  278. package/templates/channels/mcp-client/profiles/vscode.json +29 -0
  279. package/templates/channels/microsoft-copilot/channel.json +73 -0
  280. package/templates/channels/microsoft-copilot/declarative-agent.template.json.hbs +8 -4
  281. package/templates/channels/microsoft-copilot/entra-sso-registration.template.md.hbs +65 -5
  282. package/templates/channels/microsoft-copilot/icon.svg +1 -0
  283. package/templates/channels/microsoft-copilot/install.template.md.hbs +9 -9
  284. package/templates/channels/microsoft-copilot/integration/README.md +1 -1
  285. package/templates/channels/microsoft-copilot/integration/application.json +2 -2
  286. package/templates/channels/microsoft-copilot/integration/env.template +3 -6
  287. package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +63 -4
  288. package/templates/channels/microsoft-copilot/integration/rbac.json +13 -0
  289. package/templates/channels/microsoft-copilot/oauth-plugin-vault-required.template.md.hbs +5 -5
  290. package/templates/channels/slack/channel.json +223 -0
  291. package/templates/channels/slack/icon.svg +1 -0
  292. package/templates/channels/slack/install.template.md.hbs +36 -28
  293. package/templates/channels/slack/integration/README.md +245 -22
  294. package/templates/channels/slack/integration/application.json +44 -7
  295. package/templates/channels/slack/integration/env.template +15 -6
  296. package/templates/channels/slack/integration/openapi/openapi.json +126 -0
  297. package/templates/channels/slack/integration/rbac.json +84 -0
  298. package/templates/channels/slack/integration/slack-datasource-commands.json +154 -0
  299. package/templates/channels/slack/integration/slack-datasource-conversations.json +28 -3
  300. package/templates/channels/slack/integration/slack-datasource-events.json +154 -0
  301. package/templates/channels/slack/integration/slack-datasource-interactive.json +154 -0
  302. package/templates/channels/slack/integration/slack-datasource-messages.json +40 -2
  303. package/templates/channels/slack/integration/slack-system.json +155 -77
  304. package/templates/channels/slack/manifest.template.json.hbs +5 -2
  305. package/templates/channels/teams-bot/channel.json +161 -0
  306. package/templates/channels/teams-bot/icon.svg +1 -0
  307. package/templates/channels/teams-bot/install.template.md.hbs +12 -13
  308. package/templates/channels/teams-bot/integration/README.md +5 -4
  309. package/templates/channels/teams-bot/integration/application.json +6 -4
  310. package/templates/channels/teams-bot/integration/env.template +5 -4
  311. package/templates/channels/teams-bot/integration/openapi/openapi.json +68 -0
  312. package/templates/channels/teams-bot/integration/rbac.json +21 -0
  313. package/templates/channels/teams-bot/integration/teams-bot-datasource-activities.json +154 -0
  314. package/templates/channels/teams-bot/integration/teams-bot-system.json +128 -23
  315. package/templates/channels/web-embed/channel.json +60 -0
  316. package/templates/channels/web-embed/install.template.md.hbs +1 -1
  317. package/templates/channels/web-embed/integration/README.md +2 -2
  318. package/templates/channels/web-embed/integration/application.json +2 -2
  319. package/templates/channels/web-embed/integration/env.template +1 -1
  320. package/templates/channels/web-embed/integration/rbac.json +13 -0
  321. package/templates/channels/web-embed/integration/web-embed-system.json +50 -4
@@ -1,36 +1,259 @@
1
- # Slack communication channel
1
+ # Slack
2
2
 
3
- Communication external system for **Role Assistants** (workforce transport) **and document approval** — one Slack app, dual surface (plan 455.2).
3
+ Chat with Role Assistants, send notifications, and review documents in Slack.
4
4
 
5
- ## What this integration is
5
+ ## At a glance
6
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)
7
+ | | |
8
+ | --- | --- |
9
+ | **System key** | `slack` |
10
+ | **Type** | `custom` |
11
+ | **Datasources** | 5 |
12
+
13
+ ## Files
14
+
15
+ | File | Purpose |
16
+ | --- | --- |
17
+ | `application.yaml` | App manifest and `externalIntegration` |
18
+ | `slack-system.yaml` | Auth, API definition, roles |
19
+ | `slack-datasource-interactive.yaml` | Datasource: Slack interactive inbound (**capabilities** here) |
20
+ | `slack-datasource-commands.yaml` | Datasource: Slack slash-command inbound (**capabilities** here) |
21
+ | `slack-datasource-events.yaml` | Datasource: Slack Events API inbound (**capabilities** here) |
22
+ | `slack-datasource-conversations.yaml` | Datasource: Slack Conversations (**capabilities** here) |
23
+ | `slack-datasource-messages.yaml` | Datasource: Slack Messages (**capabilities** here) |
24
+ | `env.template` | Secrets and env placeholders |
25
+ | `slack-deploy.json` | Deploy manifest (`aifabrix json slack`) |
26
+ | `deploy.js` | Deploy helper |
27
+ | `wizard.yaml` | Wizard input |
28
+ | `scenarios/*.yaml` | Governance scenario packs (optional; dataplane-first via `verify-governance` / `governance generate`; expert YAML via `governance download` / `upload`) |
29
+ | `rbac.yaml` | Roles and permissions |
30
+
31
+ ## Typical workflow
32
+
33
+ 1. **Login** — `aifabrix login` (controller URL set via `aifabrix auth config` if needed).
34
+ 2. **Change config** — edit JSON/YAML under `integration/slack/`, or extend with `aifabrix wizard --app slack`.
35
+ 3. **Adjust operations** — use `aifabrix datasource capability …` to copy, add, or remove **capabilities** (see below).
36
+ 4. **Check locally** — `aifabrix validate slack` and `aifabrix datasource validate` on files you touched.
37
+ 5. **Align manifest** — `aifabrix repair slack` after bigger edits.
38
+ 6. **Publish** — see [Publish and credentials](#publish-and-credentials) (`upload`, `deploy`, or `credential push`).
39
+ 7. **Certify** — run [Enterprise AI Certification](#enterprise-ai-certification) (`verify-operations` → `verify-trust` → `verify-governance` → `lifecycle`).
40
+ 8. **Protection** (optional) — dimension grants in `integration/.protection/` — see [Protection manifests](#protection-manifests).
41
+
42
+ Rollback an experiment: `datasource capability remove …` → validate → upload/deploy again.
43
+
44
+ ## Publish and credentials
45
+
46
+ | Command | What it does |
47
+ | --- | --- |
48
+ | `aifabrix upload slack` | Publishes local integration files to the dataplane (refreshes `slack-deploy.json` from sources) and pushes credential secrets from `integration/slack/.env` (when present). |
49
+ | `aifabrix upload slack --force` | Same publish path when the interface or datasource schema changed in ways **deploy cannot accept yet**; bypasses active-schema replacement guards. Read the CLI warning before use. |
50
+ | `aifabrix deploy slack` | Deploys via the controller pipeline. Does **not** replace a full upload for credential secrets — run `upload` or `credential push` when `.env` changed. |
51
+ | `aifabrix credential push slack` | Pushes `KV_*` values from `.env` only (no manifest publish). |
52
+
53
+ ```bash
54
+ aifabrix upload slack
55
+ # or secrets only:
56
+ aifabrix credential push slack
57
+
58
+ # Breaking schema / interface change — deploy blocked; publish for dev iteration
59
+ aifabrix validate slack
60
+ aifabrix upload slack --force
61
+ ```
62
+
63
+ ## Protection manifests
64
+
65
+ Protection rules live in **`integration/.protection/`** at the **repository root** (sibling to `integration/slack/`, not inside this app folder). One manifest per **datasource key** (`spec.datasourceKey`). Use YAML or JSON; store expressions only — no secrets in Git.
66
+
67
+ ```bash
68
+ # From repo root (where integration/ lives)
69
+ aifabrix protection create slack-interactive --type country-sales
70
+ aifabrix protection validate slack-interactive
71
+ aifabrix protection upload slack-interactive
72
+
73
+ # Batch (entire folder)
74
+ aifabrix validate .protection
75
+ aifabrix upload .protection
76
+ ```
77
+
78
+ See `aifabrix protection --help` for flags (`--no-sync` on upload skips datasource sync after upload only).
79
+
80
+ ## Capabilities (per datasource)
81
+
82
+ Each `*-datasource-*` file lists **capabilities**: named slices that tie together HTTP/API definitions and execution steps. Use the CLI to clone or drop them safely instead of editing huge JSON by hand.
83
+
84
+ **After any change:** run `aifabrix datasource validate <file-or-key>` (or `aifabrix validate slack` for the whole app).
85
+
86
+ | Command | What it does |
87
+ | --- | --- |
88
+ | `datasource capability copy` | Clone one capability to a new name (`--from` / `--as`). Supports `--dry-run`, `--overwrite`, backups. If `exposed.profiles.<from>` exists, it’s copied to `exposed.profiles.<as>`. |
89
+ | `datasource capability create` (or `add`) | New capability from `--from`, `--template`, or `--openapi-operation`. |
90
+ | `datasource capability remove` | Remove one capability (`--capability`; optional `--profile`). Use `--dry-run` first. |
91
+ | `datasource capability validate` | Schema check for the file or one `--capability`. |
92
+ | `datasource capability diff` | Compare two files for one capability. |
93
+ | `datasource capability edit` | Edit one capability’s API definition, runtime steps, or exposure profile in your editor (TTY). |
94
+ | `datasource capability relate` | Link this datasource to another (foreign-key style metadata). See `--help` for flags. |
95
+
96
+ Short alias (recommended): `af ds cap <command> …`
97
+ Full command: `aifabrix datasource capability <command> …`
98
+
99
+ Examples (use the first datasource from the Files table):
100
+
101
+ ```bash
102
+ # Preview cloning "create" to "createBasic" (no write)
103
+ af ds cap copy slack-interactive --from create --as createBasic --dry-run
104
+
105
+ # Apply the copy, then validate
106
+ af ds cap copy slack-interactive --from create --as createBasic
107
+ af ds validate slack-interactive
108
+
109
+ # Remove a capability you no longer need
110
+ af ds cap remove slack-interactive --capability createBasic --dry-run
111
+ ```
112
+
113
+ For flags, run `af ds cap <command> --help`.
114
+
115
+ ## Per-datasource debug ladder
116
+
117
+ Start with one datasource and iterate until it’s stable (architect / CI — use [Enterprise AI Certification](#enterprise-ai-certification) for the product path).
118
+
119
+ ```bash
120
+ af ds validate slack-interactive
121
+ af ds test slack-interactive --debug --sync
122
+ af ds test-integration slack-interactive --sync
123
+ af ds test-e2e slack-interactive --debug --sync
124
+ ```
125
+
126
+ ## Secrets
127
+
128
+ Store values the CLI expects (no secrets in Git):
129
+
130
+ ```bash
131
+ aifabrix secret set slack/signingSecret <your value> # KV_SLACK_SIGNINGSECRET
132
+ aifabrix secret set slack/botToken <your value> # KV_SLACK_BOTTOKEN
133
+ aifabrix secret set slack/clientSecret <your value> # KV_SLACK_CLIENTSECRET
134
+ ```
12
135
 
13
- ## What this integration is not
136
+ ## Repair
14
137
 
15
- - **Not** channel listing / user directory sync (`slack-channels`, `slack-users` are out of scope for this scaffold).
138
+ Keeps filenames, lists, and deploy manifest in sync after manual edits.
16
139
 
17
- ## Endpoints
140
+ ```bash
141
+ aifabrix repair slack
142
+ ```
143
+
144
+ Useful flags: `--dry-run`, `--auth <method>`, `--rbac`, `--expose`, `--sync`, `--test`.
18
145
 
19
- Registered at `/api/v1/external/systems/slack/`:
146
+ ## Enterprise AI Certification
20
147
 
21
- | Path | Purpose |
148
+ Product-facing commands that prove operational readiness, AI trust, governance enforcement, and an **Enterprise AI Certification** report. Run after [publish](#publish-and-credentials).
149
+
150
+ | Command | What it proves |
22
151
  | --- | --- |
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 |
152
+ | `aifabrix verify-operations slack` | Operational readiness — orchestrates validate, unit test, integration, and E2E for the whole system |
153
+ | `aifabrix verify-trust slack` | AI business context confidence (semantic agent metadata; not live vendor API calls) |
154
+ | `aifabrix verify-governance slack` | **Recommended** — publish (unless `--no-sync`), generate scenario packs on the dataplane, then verify ABAC visibility per subject |
155
+ | `aifabrix governance generate slack` | Granular: generate packs only (after protection + sync) |
156
+ | `aifabrix governance verify slack` | Granular: verify only (active packs on dataplane, or `--pack` for local YAML override) |
157
+ | `aifabrix lifecycle slack` | Certification report from persisted pillar results on the dataplane |
158
+
159
+ **Recommended order:** `upload` → `verify-operations` → `verify-trust` → `verify-governance` → `lifecycle`
160
+
161
+ Integration validation packs live under `integration/slack/scenarios/` (YAML per datasource). Prefer **`verify-governance`** (dataplane-first) after identity sync, protection upload, and `datasource load`. Granular: `governance generate` then `governance verify`. Expert YAML: `governance download` / `governance upload` (424.0 schema; pre-424 files fail with a hint to regenerate). **`governance download`** is read-only and does not publish this folder.
162
+
163
+ ```bash
164
+ aifabrix upload slack
165
+
166
+ aifabrix verify-operations slack
167
+ aifabrix verify-operations slack -v
168
+
169
+ aifabrix verify-trust slack -v
170
+ aifabrix verify-trust slack --no-sync --revalidate
171
+
172
+ # Governance pillar (replace <email> with a subject from your scenario pack)
173
+ aifabrix verify-governance slack --subject-email <email> -v
174
+ aifabrix verify-governance slack --subject-email <email> --no-sync
175
+
176
+ # Granular governance (debugging)
177
+ aifabrix governance generate slack --subject-email <email>
178
+ aifabrix governance verify slack -v
179
+
180
+ # Report only (GET persisted results)
181
+ aifabrix lifecycle slack
182
+ aifabrix lifecycle slack -v
183
+
184
+ # Run missing verify steps, publish local files, then print report
185
+ aifabrix lifecycle slack --run
186
+ aifabrix lifecycle slack --run --no-sync
187
+ ```
188
+
189
+ **Prerequisites:** `aifabrix login`, dataplane reachable, config published (`upload`). Governance also needs identity sync, protection upload, `datasource load` for fixture records, at least one `--subject-email` or `--subject-user-id`, and `governance:evaluate` on your token. Run `aifabrix verify-governance --help` for flags.
190
+
191
+ **Single-datasource trust** (same semantic check as system `verify-trust`, one key):
192
+
193
+ ```bash
194
+ aifabrix datasource verify-trust slack-interactive --app slack -v
195
+ ```
196
+
197
+ Common flags: `-v` / `--verbose`, `-d` / `--debug` (trust), `--no-sync` (skip pre-run upload), `--json` (machine-readable envelope).
198
+
199
+ ## Debug and low-level tests
29
200
 
30
- ## Workflow
201
+ Advanced commands for architects and CI. Prefer [Enterprise AI Certification](#enterprise-ai-certification) for integrator proof unless you need step-by-step debugging.
202
+
203
+ | Command | Network | Notes |
204
+ | --- | --- | --- |
205
+ | `aifabrix validate slack` | Off | Schemas and files only |
206
+ | `aifabrix test slack` | Off | Local checks |
207
+ | `aifabrix test-integration slack` | On | Needs login + dataplane |
208
+ | `aifabrix test-e2e slack` | On | E2E for every datasource; uploads local files first unless `--no-sync` |
209
+
210
+ System-level tests publish local integration files before the run (same path as `upload`). Use **`--no-sync`** to validate against config already on the dataplane.
211
+
212
+ ```bash
213
+ aifabrix test-e2e slack --no-sync -d
214
+ ```
215
+
216
+ Single datasource E2E:
217
+
218
+ ```bash
219
+ # Slack interactive inbound
220
+ aifabrix datasource test-e2e slack-interactive --app slack
221
+
222
+ # Slack slash-command inbound
223
+ aifabrix datasource test-e2e slack-commands --app slack
224
+
225
+ # Slack Events API inbound
226
+ aifabrix datasource test-e2e slack-events --app slack
227
+
228
+ # Slack Conversations
229
+ aifabrix datasource test-e2e slack-conversations --app slack
230
+
231
+ # Slack Messages
232
+ aifabrix datasource test-e2e slack-messages --app slack
233
+
234
+ ```
235
+
236
+ Common flags: `-v` / `--verbose`, `-d` / `--debug`, `--no-async` (datasource E2E only), `--no-sync` (skip pre-run upload on system `test-e2e`).
237
+
238
+ Debug logs (when using `--debug` on datasource commands) are written under `integration/slack/logs/` — use `aifabrix datasource log-test`, `log-integration`, `log-e2e`, or `log-trust` to inspect the latest file for each type.
239
+
240
+ ## Deploy
31
241
 
32
242
  ```bash
33
- aifabrix channel add slack --name "Your Assistant" --probe
243
+ aifabrix deploy slack
34
244
  ```
35
245
 
36
- Optional low-level: `channel scaffold` / `upload`. Publish template changes: `make sync-json` in dataplane → `aifabrix-builder/templates/channels/slack/integration/`.
246
+ ## Remove app
247
+
248
+ ```bash
249
+ aifabrix delete slack
250
+ ```
251
+
252
+ ## When something fails
253
+
254
+ - **Validation errors** — Fix JSON/schema issues; run `aifabrix validate slack` and `aifabrix datasource validate` on the file you changed.
255
+ - **Deploy blocked by schema changes** — When the interface changed and deploy rejects the update, validate locally then `aifabrix upload slack --force` to publish for dev iteration (see [Publish and credentials](#publish-and-credentials)).
256
+ - **Auth** — `aifabrix auth config` + `aifabrix login` before upload, deploy, remote tests, or certification.
257
+ - **Certification gaps** — Run pillars in order (`verify-operations` → `verify-trust` → `verify-governance`), then `aifabrix lifecycle slack -v` for per-datasource breakdown; use `lifecycle --run` to execute missing steps and refresh the report.
258
+ - **Governance upload rejected** — Local `scenarios/*.yaml` must meet the 424.0 pack schema; use `verify-governance` or `governance generate` instead of hand-editing old YAML.
259
+ - **Wrong folder** — Run CLI from the project root (where `integration/slack/` lives).
@@ -1,18 +1,55 @@
1
1
  {
2
2
  "app": {
3
3
  "key": "slack",
4
- "displayName": "slack assistant channel",
5
- "description": "Assistant communication channel — upload then channel add",
4
+ "displayName": "Slack",
5
+ "description": "Chat with Role Assistants, send notifications, and review documents in Slack.",
6
6
  "type": "external"
7
7
  },
8
8
  "externalIntegration": {
9
9
  "schemaBasePath": "./",
10
- "systems": ["slack-system.json"],
10
+ "systems": [
11
+ "slack-system.json"
12
+ ],
11
13
  "dataSources": [
12
- "slack-datasource-messages.json",
13
- "slack-datasource-conversations.json"
14
+ "slack-datasource-interactive.json",
15
+ "slack-datasource-commands.json",
16
+ "slack-datasource-events.json",
17
+ "slack-datasource-conversations.json",
18
+ "slack-datasource-messages.json"
14
19
  ],
15
20
  "autopublish": true,
16
21
  "version": "1.0.0"
17
- }
18
- }
22
+ },
23
+ "configuration": [
24
+ {
25
+ "name": "ENABLE_PROACTIVE_MESSAGING",
26
+ "value": "true",
27
+ "location": "variable",
28
+ "required": false
29
+ },
30
+ {
31
+ "name": "ENABLE_CHANNEL_NOTIFICATIONS",
32
+ "value": "true",
33
+ "location": "variable",
34
+ "required": false
35
+ },
36
+ {
37
+ "name": "ENABLE_DIRECT_MESSAGES",
38
+ "value": "true",
39
+ "location": "variable",
40
+ "required": false
41
+ },
42
+ {
43
+ "name": "ENABLE_MODALS",
44
+ "value": "true",
45
+ "location": "variable",
46
+ "required": false
47
+ },
48
+ {
49
+ "name": "ENABLE_SHORTCUTS",
50
+ "value": "true",
51
+ "location": "variable",
52
+ "required": false
53
+ }
54
+ ]
55
+ }
@@ -19,11 +19,20 @@
19
19
  # aifabrix secret set slack/botToken "xoxb-..." --shared
20
20
  # aifabrix secret set slack/clientSecret "<value>" --shared
21
21
 
22
- # Required — webhook signature verification (438.3 inbound)
23
- KV_SLACK_SIGNINGSECRET=kv://slack/signingSecret
22
+ # Signing secret, bot token, and client secret are written to this app's .env
23
+ # (`KV_SLACK_*` plain values) by channel add / portal install, then pushed to
24
+ # the dataplane secret store. Do not require them here: missing secrets must not
25
+ # block publishing the communication system or the Slack app manifest.
26
+ # KV_SLACK_SIGNINGSECRET=kv://slack/signingSecret
27
+ # KV_SLACK_BOTTOKEN=kv://slack/botToken
28
+ # KV_SLACK_CLIENTSECRET=kv://slack/clientSecret
29
+
30
+ # Lab defaults so `aifabrix upload slack` works without extra shell env.
31
+ ENABLE_PROACTIVE_MESSAGING=true
32
+ ENABLE_CHANNEL_NOTIFICATIONS=true
33
+ ENABLE_DIRECT_MESSAGES=true
34
+ ENABLE_MODALS=true
35
+ ENABLE_SHORTCUTS=true
36
+
24
37
 
25
- # Required — outbound Slack Web API (post message, etc.)
26
- KV_SLACK_BOTTOKEN=kv://slack/botToken
27
38
 
28
- # Optional — OAuth app client secret
29
- KV_SLACK_CLIENTSECRET=kv://slack/clientSecret
@@ -0,0 +1,126 @@
1
+ {
2
+ "openapi": "3.0.3",
3
+ "info": {
4
+ "title": "Slack inbound python CIP",
5
+ "version": "1.0.0",
6
+ "description": "Contract surface for Slack inbound python CIP. Vendor Request URLs are POST /api/v1/webhooks/slack/{datasourceKey}; these paths are CIP operation ids."
7
+ },
8
+ "paths": {
9
+ "/inbound/commands": {
10
+ "post": {
11
+ "operationId": "slackCommandsCreate",
12
+ "summary": "Accept an inbound Slack slash-command payload",
13
+ "x-aifabrix-capability": "create",
14
+ "requestBody": {
15
+ "required": true,
16
+ "content": {
17
+ "application/json": {
18
+ "schema": {
19
+ "$ref": "#/components/schemas/ChannelInboundCreateRequest"
20
+ }
21
+ }
22
+ }
23
+ },
24
+ "responses": {
25
+ "200": {
26
+ "description": "Inbound handler record",
27
+ "content": {
28
+ "application/json": {
29
+ "schema": {
30
+ "$ref": "#/components/schemas/ChannelInboundCreateResponse"
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
36
+ }
37
+ },
38
+ "/inbound/interactive": {
39
+ "post": {
40
+ "operationId": "slackInteractiveCreate",
41
+ "summary": "Accept an inbound Slack interactive payload",
42
+ "x-aifabrix-capability": "create",
43
+ "requestBody": {
44
+ "required": true,
45
+ "content": {
46
+ "application/json": {
47
+ "schema": {
48
+ "$ref": "#/components/schemas/ChannelInboundCreateRequest"
49
+ }
50
+ }
51
+ }
52
+ },
53
+ "responses": {
54
+ "200": {
55
+ "description": "Inbound handler record",
56
+ "content": {
57
+ "application/json": {
58
+ "schema": {
59
+ "$ref": "#/components/schemas/ChannelInboundCreateResponse"
60
+ }
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
66
+ },
67
+ "/inbound/events": {
68
+ "post": {
69
+ "operationId": "slackEventsCreate",
70
+ "summary": "Accept an inbound Slack Events API payload",
71
+ "x-aifabrix-capability": "create",
72
+ "requestBody": {
73
+ "required": true,
74
+ "content": {
75
+ "application/json": {
76
+ "schema": {
77
+ "$ref": "#/components/schemas/ChannelInboundCreateRequest"
78
+ }
79
+ }
80
+ }
81
+ },
82
+ "responses": {
83
+ "200": {
84
+ "description": "Inbound handler record",
85
+ "content": {
86
+ "application/json": {
87
+ "schema": {
88
+ "$ref": "#/components/schemas/ChannelInboundCreateResponse"
89
+ }
90
+ }
91
+ }
92
+ }
93
+ }
94
+ }
95
+ }
96
+ },
97
+ "components": {
98
+ "schemas": {
99
+ "ChannelInboundCreateRequest": {
100
+ "type": "object",
101
+ "description": "CIP create body. payload is the vendor webhook JSON after signature validation.",
102
+ "properties": {
103
+ "payload": {
104
+ "type": "object",
105
+ "additionalProperties": true
106
+ }
107
+ }
108
+ },
109
+ "ChannelInboundCreateResponse": {
110
+ "type": "object",
111
+ "description": "Normalized inbound handler record for fieldMappings.",
112
+ "required": ["channel", "action", "outcome"],
113
+ "properties": {
114
+ "channel": { "type": "string" },
115
+ "action": { "type": "string" },
116
+ "outcome": { "type": "string" },
117
+ "externalId": { "type": "string" },
118
+ "response": {
119
+ "type": "object",
120
+ "additionalProperties": true
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "roles": [
3
+ {
4
+ "name": "Everyone",
5
+ "value": "aifabrix-everyone",
6
+ "description": "Authenticated-user consume access for Enterprise LLM and platform search (not a Role Assistant)",
7
+ "groups": [
8
+ "AI-Fabrix-Everyone"
9
+ ]
10
+ }
11
+ ],
12
+ "permissions": [
13
+ {
14
+ "name": "message:list",
15
+ "roles": [
16
+ "aifabrix-everyone"
17
+ ],
18
+ "description": "Permission: message:list"
19
+ },
20
+ {
21
+ "name": "message:create",
22
+ "roles": [
23
+ "aifabrix-everyone"
24
+ ],
25
+ "description": "Permission: message:create"
26
+ },
27
+ {
28
+ "name": "message:update",
29
+ "roles": [
30
+ "aifabrix-everyone"
31
+ ],
32
+ "description": "Permission: message:update"
33
+ },
34
+ {
35
+ "name": "message:delete",
36
+ "roles": [
37
+ "aifabrix-everyone"
38
+ ],
39
+ "description": "Permission: message:delete"
40
+ },
41
+ {
42
+ "name": "slack-commands:create",
43
+ "roles": [
44
+ "aifabrix-everyone"
45
+ ],
46
+ "description": "Permission: slack-commands:create"
47
+ },
48
+ {
49
+ "name": "slack-interactive:create",
50
+ "roles": [
51
+ "aifabrix-everyone"
52
+ ],
53
+ "description": "Permission: slack-interactive:create"
54
+ },
55
+ {
56
+ "name": "slack-events:create",
57
+ "roles": [
58
+ "aifabrix-everyone"
59
+ ],
60
+ "description": "Permission: slack-events:create"
61
+ },
62
+ {
63
+ "name": "conversation:list",
64
+ "roles": [
65
+ "aifabrix-everyone"
66
+ ],
67
+ "description": "Permission: conversation:list"
68
+ },
69
+ {
70
+ "name": "conversation:get",
71
+ "roles": [
72
+ "aifabrix-everyone"
73
+ ],
74
+ "description": "Permission: conversation:get"
75
+ },
76
+ {
77
+ "name": "conversation:create",
78
+ "roles": [
79
+ "aifabrix-everyone"
80
+ ],
81
+ "description": "Permission: conversation:create"
82
+ }
83
+ ]
84
+ }