@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.
Files changed (470) hide show
  1. package/README.md +8 -0
  2. package/bin/aifabrix.js +2 -2
  3. package/lib/agent-kit/apply-ops.js +82 -0
  4. package/lib/agent-kit/checksums.js +28 -0
  5. package/lib/agent-kit/classify.js +113 -0
  6. package/lib/agent-kit/claude-shim.js +61 -0
  7. package/lib/agent-kit/constants.js +55 -0
  8. package/lib/agent-kit/file-list.js +103 -0
  9. package/lib/agent-kit/host-approve.js +130 -0
  10. package/lib/agent-kit/hosting/github.js +63 -0
  11. package/lib/agent-kit/hosts.js +71 -0
  12. package/lib/agent-kit/init.js +319 -0
  13. package/lib/agent-kit/kit-root.js +17 -0
  14. package/lib/agent-kit/managed-section.js +79 -0
  15. package/lib/agent-kit/package-load.js +45 -0
  16. package/lib/agent-kit/plan-ops.js +69 -0
  17. package/lib/agent-kit/remote-prompts.js +239 -0
  18. package/lib/agent-kit/render-host-markdown.js +40 -0
  19. package/lib/agent-kit/repo-guard.js +47 -0
  20. package/lib/agent-kit/report.js +107 -0
  21. package/lib/agent-kit/run.js +82 -0
  22. package/lib/agent-kit/scm/git.js +122 -0
  23. package/lib/agent-kit/state-file.js +83 -0
  24. package/lib/agent-kit/status.js +50 -0
  25. package/lib/agent-kit/v1-detect.js +81 -0
  26. package/lib/agent-kit/validate-kit.js +87 -0
  27. package/lib/agent-kit/workspace-name.js +40 -0
  28. package/lib/agent-kit/workspace-skeleton.js +103 -0
  29. package/lib/api/assistants.api.js +8 -5
  30. package/lib/api/channel-identity.api.js +41 -0
  31. package/lib/api/evidence-authoring.api.js +5 -1
  32. package/lib/api/evidence.api.js +2 -0
  33. package/lib/api/role-assistant-test-pack.api.js +86 -0
  34. package/lib/api/types/evidence.types.js +2 -0
  35. package/lib/api/work-search.api.js +163 -0
  36. package/lib/api/work.api.js +19 -12
  37. package/lib/app/list-external-systems.js +2 -1
  38. package/lib/app/show-display.js +33 -6
  39. package/lib/app/show.js +25 -2
  40. package/lib/channels/add-channel.js +164 -126
  41. package/lib/channels/approval-guides/chatgpt.js +14 -18
  42. package/lib/channels/approval-guides/claude.js +29 -0
  43. package/lib/channels/approval-guides/index.js +88 -22
  44. package/lib/channels/approval-guides/mcp-client.js +27 -0
  45. package/lib/channels/approval-guides/microsoft-copilot.js +52 -3
  46. package/lib/channels/approval-guides/slack.js +10 -10
  47. package/lib/channels/approval-guides/teams-bot.js +8 -12
  48. package/lib/channels/channel-add-continuations.js +91 -0
  49. package/lib/channels/channel-add-ensure.js +124 -27
  50. package/lib/channels/channel-add-existing.js +160 -28
  51. package/lib/channels/channel-add-failure.js +61 -0
  52. package/lib/channels/channel-add-remaining.js +492 -0
  53. package/lib/channels/channel-add-tty.js +190 -0
  54. package/lib/channels/channel-add-wizard-config.js +138 -0
  55. package/lib/channels/channel-add-wizard.js +250 -0
  56. package/lib/channels/channel-artifact-generator.js +27 -13
  57. package/lib/channels/channel-cardinality.js +83 -0
  58. package/lib/channels/channel-catalog-icon.js +45 -0
  59. package/lib/channels/channel-cli-instructions.js +75 -0
  60. package/lib/channels/channel-configuration-map.js +213 -0
  61. package/lib/channels/channel-credential.js +11 -14
  62. package/lib/channels/channel-definition-project.js +101 -0
  63. package/lib/channels/channel-definition-registry.js +154 -0
  64. package/lib/channels/channel-definition-status.js +115 -0
  65. package/lib/channels/channel-description.js +60 -2
  66. package/lib/channels/channel-discovery.js +16 -2
  67. package/lib/channels/channel-external-system.js +86 -9
  68. package/lib/channels/channel-install-envelope-actions.js +88 -0
  69. package/lib/channels/channel-install-envelope-microsoft.js +155 -0
  70. package/lib/channels/channel-install-envelope.js +358 -0
  71. package/lib/channels/channel-install-help-md.js +172 -0
  72. package/lib/channels/channel-install-http-payload.js +62 -0
  73. package/lib/channels/channel-install-inventory.js +115 -0
  74. package/lib/channels/channel-install-profiles.js +90 -0
  75. package/lib/channels/channel-instance-collision.js +118 -0
  76. package/lib/channels/channel-instance-key.js +100 -0
  77. package/lib/channels/channel-instance-materialize.js +240 -0
  78. package/lib/channels/channel-integration-generator.js +18 -9
  79. package/lib/channels/channel-integration-template.js +101 -22
  80. package/lib/channels/channel-inventory-fetch.js +79 -0
  81. package/lib/channels/channel-oauth-preflight.js +104 -0
  82. package/lib/channels/channel-package-version.js +76 -0
  83. package/lib/channels/channel-predefined-client.js +154 -0
  84. package/lib/channels/channel-probe.js +7 -2
  85. package/lib/channels/channel-runtime-resolver.js +194 -72
  86. package/lib/channels/channel-status-display.js +86 -16
  87. package/lib/channels/channel-targets.js +132 -92
  88. package/lib/channels/chatgpt-callback.js +318 -0
  89. package/lib/channels/chatgpt-channel-add.js +229 -0
  90. package/lib/channels/chatgpt-preflight.js +396 -0
  91. package/lib/channels/chatgpt-runtime-contract.js +17 -0
  92. package/lib/channels/chatgpt-setup-values.js +124 -0
  93. package/lib/channels/claude-callback.js +67 -0
  94. package/lib/channels/claude-channel-add.js +254 -0
  95. package/lib/channels/claude-runtime-contract.js +40 -0
  96. package/lib/channels/claude-runtime.js +58 -0
  97. package/lib/channels/claude-setup-values.js +92 -0
  98. package/lib/channels/mcp-client/config-merge.js +148 -0
  99. package/lib/channels/mcp-client/ensure-client.js +231 -0
  100. package/lib/channels/mcp-client/paths.js +53 -0
  101. package/lib/channels/mcp-client/profiles.js +122 -0
  102. package/lib/channels/mcp-client/redirect-uris.js +99 -0
  103. package/lib/channels/mcp-client/runtime.js +59 -0
  104. package/lib/channels/mcp-client-channel-add.js +186 -0
  105. package/lib/channels/microsoft-copilot-channel-add.js +117 -7
  106. package/lib/channels/microsoft-copilot-entra-identifier-uris.js +187 -0
  107. package/lib/channels/microsoft-copilot-entra-sso-form.js +106 -18
  108. package/lib/channels/microsoft-copilot-entra-sso.js +31 -2
  109. package/lib/channels/microsoft-copilot-package-prior.js +107 -0
  110. package/lib/channels/microsoft-copilot-package.js +29 -28
  111. package/lib/channels/microsoft-provisioning/a365.js +80 -0
  112. package/lib/channels/microsoft-provisioning/auth-config.js +240 -0
  113. package/lib/channels/microsoft-provisioning/auth.js +179 -0
  114. package/lib/channels/microsoft-provisioning/cli.js +71 -0
  115. package/lib/channels/microsoft-provisioning/constants.js +75 -0
  116. package/lib/channels/microsoft-provisioning/errors.js +117 -0
  117. package/lib/channels/microsoft-provisioning/index.js +55 -0
  118. package/lib/channels/microsoft-provisioning/install-atk.js +158 -0
  119. package/lib/channels/microsoft-provisioning/install-teams.js +115 -0
  120. package/lib/channels/microsoft-provisioning/login-portal-device.js +236 -0
  121. package/lib/channels/microsoft-provisioning/login-portal-parse.js +71 -0
  122. package/lib/channels/microsoft-provisioning/login-portal-teams.js +193 -0
  123. package/lib/channels/microsoft-provisioning/login-portal.js +230 -0
  124. package/lib/channels/microsoft-provisioning/persist.js +110 -0
  125. package/lib/channels/microsoft-provisioning/teams-bot-args.js +119 -0
  126. package/lib/channels/microsoft-provisioning/teams-bot-controller.js +123 -0
  127. package/lib/channels/microsoft-provisioning/teams-bot-parse.js +134 -0
  128. package/lib/channels/microsoft-provisioning/teams-bot-persist.js +113 -0
  129. package/lib/channels/microsoft-provisioning/teams-bot-provision.js +234 -0
  130. package/lib/channels/microsoft-provisioning/teams-bot-secrets.js +45 -0
  131. package/lib/channels/microsoft-provisioning/teams-cli.js +82 -0
  132. package/lib/channels/runtime-tool-catalog.js +5 -2
  133. package/lib/channels/slack-channel-add-portal.js +130 -0
  134. package/lib/channels/slack-channel-add-tty-auth.js +95 -0
  135. package/lib/channels/slack-channel-add.js +311 -0
  136. package/lib/channels/slack-mcp-callback.js +51 -0
  137. package/lib/channels/slack-mcp-runtime.js +156 -0
  138. package/lib/channels/slack-provisioning/apps.js +181 -0
  139. package/lib/channels/slack-provisioning/auth-store.js +110 -0
  140. package/lib/channels/slack-provisioning/auth-ticket.js +185 -0
  141. package/lib/channels/slack-provisioning/auth.js +115 -0
  142. package/lib/channels/slack-provisioning/callbacks.js +41 -0
  143. package/lib/channels/slack-provisioning/cli.js +226 -0
  144. package/lib/channels/slack-provisioning/constants.js +37 -0
  145. package/lib/channels/slack-provisioning/credentials.js +169 -0
  146. package/lib/channels/slack-provisioning/curl-shim.js +132 -0
  147. package/lib/channels/slack-provisioning/developer-install.js +118 -0
  148. package/lib/channels/slack-provisioning/env-file.js +120 -0
  149. package/lib/channels/slack-provisioning/errors.js +47 -0
  150. package/lib/channels/slack-provisioning/go-ca-bundle.js +137 -0
  151. package/lib/channels/slack-provisioning/index.js +250 -0
  152. package/lib/channels/slack-provisioning/install-cli.js +335 -0
  153. package/lib/channels/slack-provisioning/manifest.js +89 -0
  154. package/lib/channels/slack-provisioning/oauth-lock.js +33 -0
  155. package/lib/channels/slack-provisioning/offer-cli.js +113 -0
  156. package/lib/channels/slack-provisioning/onboard-members.js +122 -0
  157. package/lib/channels/slack-provisioning/onboard.js +89 -0
  158. package/lib/channels/slack-provisioning/persist.js +95 -0
  159. package/lib/channels/slack-provisioning/remaining-urls.js +158 -0
  160. package/lib/channels/slack-provisioning/with-curl-on-path.js +53 -0
  161. package/lib/channels/teams-bot-channel-add.js +94 -0
  162. package/lib/channels/vendor-dataplane-url.js +249 -0
  163. package/lib/cli/index.js +4 -0
  164. package/lib/cli/setup-certification-commands.js +2 -2
  165. package/lib/cli/setup-certification.help.js +5 -1
  166. package/lib/cli/setup-external-system-help.js +2 -0
  167. package/lib/cli/setup-external-system.js +1 -1
  168. package/lib/commands/agent-kit-help.js +79 -0
  169. package/lib/commands/agent-kit.js +346 -0
  170. package/lib/commands/channel-add-help.js +366 -0
  171. package/lib/commands/channel-add-setup.js +162 -80
  172. package/lib/commands/channel-configure.js +118 -0
  173. package/lib/commands/channel.js +10 -1
  174. package/lib/commands/datasource-capability-relate-cli.js +5 -4
  175. package/lib/commands/governance-upload-external.js +6 -3
  176. package/lib/commands/lifecycle-command-action.js +2 -5
  177. package/lib/commands/lifecycle-external.js +93 -21
  178. package/lib/commands/repair-auth-apply.js +1 -1
  179. package/lib/commands/repair-datasource-key-skip.js +39 -0
  180. package/lib/commands/repair-datasource-keys.js +24 -12
  181. package/lib/commands/repair-datasource-test-payload.js +4 -2
  182. package/lib/commands/repair-datasource-webhooks-sync-bridge.js +23 -2
  183. package/lib/commands/repair-datasource.js +3 -0
  184. package/lib/commands/repair-external-run.js +59 -25
  185. package/lib/commands/repair-openapi-rest-runtime.js +127 -0
  186. package/lib/commands/repair-orchestration-tag-merge.js +339 -0
  187. package/lib/commands/repair-rbac-catalog-defaults.js +96 -0
  188. package/lib/commands/repair-rbac-platform-preset.js +26 -15
  189. package/lib/commands/repair-rbac-reader-roles.js +8 -21
  190. package/lib/commands/repair-rbac.js +26 -44
  191. package/lib/commands/repair-system-permissions.js +24 -22
  192. package/lib/commands/role-assistant-copy-output.js +61 -0
  193. package/lib/commands/role-assistant-copy.js +155 -0
  194. package/lib/commands/role-assistant-test-output.js +22 -9
  195. package/lib/commands/role-assistant-test-result-rows.js +42 -0
  196. package/lib/commands/role-assistant.js +150 -43
  197. package/lib/commands/search.js +143 -0
  198. package/lib/commands/test-e2e-external.js +148 -21
  199. package/lib/commands/test-trust-external.js +7 -5
  200. package/lib/commands/upload-credential-push-log.js +2 -1
  201. package/lib/commands/upload-publish-context.js +1 -1
  202. package/lib/commands/upload-role-assistant-shell.js +124 -0
  203. package/lib/commands/upload-sidecar-followups.js +10 -4
  204. package/lib/commands/upload.js +18 -3
  205. package/lib/commands/verify-operations-skip-e2e.js +131 -0
  206. package/lib/commands/verify-operations-step-plan.js +6 -33
  207. package/lib/commands/verify-operations-steps.js +3 -1
  208. package/lib/core/secrets-docker-env.js +4 -1
  209. package/lib/core/secrets-env-content.js +17 -3
  210. package/lib/datasource/capability/capability-manifest.js +0 -3
  211. package/lib/datasource/capability/copy-test-payload.js +3 -0
  212. package/lib/datasource/capability/relate-operations.js +28 -10
  213. package/lib/datasource/capability/run-capability-relate.js +48 -25
  214. package/lib/datasource/datasource-identifier.js +13 -5
  215. package/lib/deployment/deployer-poll-run.js +117 -35
  216. package/lib/external-system/deploy-dataplane-published.js +70 -0
  217. package/lib/external-system/deploy-helpers.js +26 -1
  218. package/lib/external-system/deploy.js +22 -8
  219. package/lib/external-system/download-helpers.js +29 -2
  220. package/lib/external-system/download-role-assistant.js +109 -4
  221. package/lib/external-system/download.js +46 -30
  222. package/lib/external-system/sync-deploy-manifest.js +3 -2
  223. package/lib/external-system/upload-identity.js +42 -0
  224. package/lib/generator/index.js +19 -15
  225. package/lib/generator/split.js +13 -2
  226. package/lib/generator/wizard-datasource-key.js +54 -0
  227. package/lib/generator/wizard.js +55 -54
  228. package/lib/integration-definition/apply-datasource-keys.js +75 -0
  229. package/lib/integration-definition/apply-relationships.js +195 -0
  230. package/lib/integration-definition/apply-static-enterprise.js +229 -0
  231. package/lib/integration-definition/apply-system-file.js +71 -0
  232. package/lib/integration-definition/apply-test-endpoint.js +89 -0
  233. package/lib/integration-definition/apply-viewpoint-defaults.js +157 -0
  234. package/lib/integration-definition/apply.js +78 -59
  235. package/lib/integration-definition/enrich-openapi-operations.js +36 -10
  236. package/lib/integration-definition/enrich-openapi-pick.js +87 -0
  237. package/lib/lifecycle/role-assistant-governance.js +181 -0
  238. package/lib/lifecycle/scenario-upload.js +181 -30
  239. package/lib/programmatic/builder-api-cors.js +143 -0
  240. package/lib/programmatic/builder-api-request.js +6 -0
  241. package/lib/programmatic/builder-api-route-dispatch.js +56 -42
  242. package/lib/programmatic/builder-api-server.js +8 -1
  243. package/lib/programmatic/capability-registry.js +55 -0
  244. package/lib/programmatic/channel-install-help-resolve.js +359 -0
  245. package/lib/programmatic/channel-install-session.js +218 -0
  246. package/lib/programmatic/help-content/channel-onboarding.md +2 -0
  247. package/lib/programmatic/help-content/cip-overview.md +3 -1
  248. package/lib/programmatic/http-raw-response.js +62 -0
  249. package/lib/programmatic/index.js +2 -0
  250. package/lib/programmatic/openapi-apply-result-schemas.js +8 -0
  251. package/lib/programmatic/openapi-channel-install-bindings.js +179 -0
  252. package/lib/programmatic/openapi-channel-install-schemas.js +289 -0
  253. package/lib/programmatic/openapi-component-schemas.js +19 -1
  254. package/lib/programmatic/openapi-description-enricher.js +3 -1
  255. package/lib/programmatic/openapi-descriptions.js +80 -3
  256. package/lib/programmatic/openapi-envelope-examples.js +124 -0
  257. package/lib/programmatic/openapi-operation-bindings.js +9 -1
  258. package/lib/programmatic/openapi-request-schemas.js +5 -0
  259. package/lib/programmatic/openapi-schema-descriptions-channel.js +319 -0
  260. package/lib/programmatic/openapi-schema-descriptions-operations.js +19 -0
  261. package/lib/programmatic/openapi-spec.js +13 -8
  262. package/lib/programmatic/platform-rbac-catalog.js +36 -18
  263. package/lib/programmatic/request-timeout.js +3 -0
  264. package/lib/programmatic/route-handler-map.js +58 -1
  265. package/lib/programmatic/route-handlers-context.js +2 -1
  266. package/lib/programmatic/run-auth-permissions.js +54 -0
  267. package/lib/programmatic/run-channel-catalog.js +238 -0
  268. package/lib/programmatic/run-channel-install-artifacts.js +137 -0
  269. package/lib/programmatic/run-channel-install-copilot.js +353 -0
  270. package/lib/programmatic/run-channel-install-options.js +236 -0
  271. package/lib/programmatic/run-channel-install-teams-bot.js +204 -0
  272. package/lib/programmatic/run-channel-install.js +346 -0
  273. package/lib/programmatic/run-channel-package.js +87 -7
  274. package/lib/programmatic/run-download.js +41 -0
  275. package/lib/programmatic/workspace-context.js +2 -0
  276. package/lib/protection/auth-context.js +3 -1
  277. package/lib/protection/protection-display.js +3 -2
  278. package/lib/protection/report-exit.js +50 -0
  279. package/lib/protection/run-commands.js +2 -0
  280. package/lib/role-assistant/evidence-sync.js +4 -2
  281. package/lib/role-assistant/evidence-validation-issues.js +51 -0
  282. package/lib/role-assistant/knowledge-sync.js +10 -4
  283. package/lib/role-assistant/package-validate.js +175 -0
  284. package/lib/role-assistant/settings.js +49 -2
  285. package/lib/role-assistant/test-case-assertion-row.js +36 -0
  286. package/lib/role-assistant/test-case-copy-bind.js +77 -0
  287. package/lib/role-assistant/test-case-copy-expected.js +127 -0
  288. package/lib/role-assistant/test-case-copy-from-work.js +90 -0
  289. package/lib/role-assistant/test-case-copy-interactions.js +67 -0
  290. package/lib/role-assistant/test-case-copy.js +119 -0
  291. package/lib/role-assistant/test-case-expected-catalog.js +135 -0
  292. package/lib/role-assistant/test-case-validate.js +88 -0
  293. package/lib/role-assistant/test-cases-bid.js +117 -4
  294. package/lib/role-assistant/test-cases-evaluate.js +159 -24
  295. package/lib/role-assistant/test-cases-evidence.js +175 -0
  296. package/lib/role-assistant/test-cases-honesty.js +155 -6
  297. package/lib/role-assistant/test-cases-lifecycle.js +291 -0
  298. package/lib/role-assistant/test-cases-search-graph.js +122 -0
  299. package/lib/role-assistant/test-cases-search.js +247 -0
  300. package/lib/role-assistant/test-cases.js +71 -172
  301. package/lib/role-assistant/test-pack-map.js +180 -0
  302. package/lib/role-assistant/test-pack-sync.js +187 -0
  303. package/lib/role-assistant/test-runner-debug.js +54 -0
  304. package/lib/role-assistant/test-runner-respond-body.js +36 -0
  305. package/lib/role-assistant/test-runner-search.js +164 -0
  306. package/lib/role-assistant/test-runner-start-payload.js +63 -10
  307. package/lib/role-assistant/test-runner-workhub-answers.js +45 -16
  308. package/lib/role-assistant/test-runner-workhub-helpers.js +40 -2
  309. package/lib/role-assistant/test-runner-workhub-soft.js +9 -3
  310. package/lib/role-assistant/test-runner-workhub.js +74 -32
  311. package/lib/role-assistant/test-runner.js +66 -11
  312. package/lib/schema/external-datasource.schema.json +146 -21
  313. package/lib/schema/external-system.schema.json +177 -2
  314. package/lib/schema/mcp-client-profile.schema.json +103 -0
  315. package/lib/schema/role-assistant-test-case.schema.json +408 -0
  316. package/lib/search/dataplane-context.js +23 -0
  317. package/lib/search/search-args.js +211 -0
  318. package/lib/search/search-display.js +238 -0
  319. package/lib/search/search-errors.js +50 -0
  320. package/lib/search/search-prompts.js +119 -0
  321. package/lib/search/search-roles.js +85 -0
  322. package/lib/search/search-run.js +241 -0
  323. package/lib/search/search-skills.js +198 -0
  324. package/lib/utils/app-path-resolve.js +4 -0
  325. package/lib/utils/authentication-env-template.js +44 -6
  326. package/lib/utils/authentication-slot-show.js +153 -0
  327. package/lib/utils/credential-display.js +43 -1
  328. package/lib/utils/credential-secrets-env.js +6 -1
  329. package/lib/utils/env-copy.js +19 -7
  330. package/lib/utils/external-env-template.js +20 -2
  331. package/lib/utils/external-system-readiness-compact-blocks.js +5 -1
  332. package/lib/utils/external-system-readiness-compact-display.js +30 -1
  333. package/lib/utils/external-system-validators.js +2 -1
  334. package/lib/utils/help-builder.js +3 -1
  335. package/lib/utils/paths.js +18 -1
  336. package/lib/utils/platform-shell-package.js +69 -0
  337. package/lib/utils/port-resolver.js +50 -1
  338. package/lib/utils/rewrite-name-flag.js +20 -0
  339. package/lib/utils/role-assistant-paths.js +13 -10
  340. package/lib/utils/schema-loader.js +37 -0
  341. package/lib/utils/schema-resolver.js +11 -1
  342. package/lib/utils/secrets-helpers.js +12 -21
  343. package/lib/utils/token-manager.js +10 -5
  344. package/lib/validation/validate-external-file.js +5 -1
  345. package/lib/validation/validate.js +41 -0
  346. package/package.json +1 -1
  347. package/templates/README.md +1 -1
  348. package/templates/agent-kit/adapters/claude/nested.CLAUDE.md +1 -0
  349. package/templates/agent-kit/adapters/claude/root.CLAUDE.md +5 -0
  350. package/templates/agent-kit/adapters/cursor/commands/cust-0-plan.md +5 -0
  351. package/templates/agent-kit/adapters/cursor/commands/cust-1-validate.md +5 -0
  352. package/templates/agent-kit/adapters/cursor/commands/cust-2-build.md +5 -0
  353. package/templates/agent-kit/adapters/cursor/commands/cust-3-push.md +5 -0
  354. package/templates/agent-kit/adapters/cursor/commands/cust-biz-1-validate.md +5 -0
  355. package/templates/agent-kit/adapters/cursor/commands/cust-biz-2-build.md +5 -0
  356. package/templates/agent-kit/adapters/cursor/commands/cust-biz-3-prove.md +5 -0
  357. package/templates/agent-kit/agent-kit.yaml +45 -0
  358. package/templates/agent-kit/instructions/AGENTKIT.md +83 -0
  359. package/templates/agent-kit/instructions/integration.AGENTS.md +25 -0
  360. package/templates/agent-kit/instructions/role-assistant.AGENTS.md +22 -0
  361. package/templates/agent-kit/instructions/root.AGENTS.md +37 -0
  362. package/templates/agent-kit/parity-inventory.yaml +188 -0
  363. package/templates/agent-kit/skills/aifabrix-connected-system/SKILL.md +58 -0
  364. package/templates/agent-kit/skills/aifabrix-connected-system/references/contract-checklist.md +40 -0
  365. package/templates/agent-kit/skills/aifabrix-connected-system/references/delivery-gates.md +54 -0
  366. package/templates/agent-kit/skills/aifabrix-connected-system/references/production-safety.md +35 -0
  367. package/templates/agent-kit/skills/aifabrix-connected-system/scripts/reserved-system-key.js +19 -0
  368. package/templates/agent-kit/skills/aifabrix-plan/SKILL.md +51 -0
  369. package/templates/agent-kit/skills/aifabrix-plan/references/challenge-checklist.md +108 -0
  370. package/templates/agent-kit/skills/aifabrix-plan/references/interaction.md +34 -0
  371. package/templates/agent-kit/skills/aifabrix-plan/references/plan-template.md +182 -0
  372. package/templates/agent-kit/skills/aifabrix-prove/SKILL.md +50 -0
  373. package/templates/agent-kit/skills/aifabrix-prove/references/demo-template.md +65 -0
  374. package/templates/agent-kit/skills/aifabrix-prove/references/evidence-lifecycle.md +68 -0
  375. package/templates/agent-kit/skills/aifabrix-prove/references/learning-template.md +66 -0
  376. package/templates/agent-kit/skills/aifabrix-role-assistant/SKILL.md +42 -0
  377. package/templates/agent-kit/skills/aifabrix-role-assistant/references/package-boundary.md +21 -0
  378. package/templates/agent-kit/skills/shared/hosts.md +78 -0
  379. package/templates/agent-kit/workspace/.cursor/plans/README.md +22 -0
  380. package/templates/agent-kit/workspace/LICENSE.mit +21 -0
  381. package/templates/agent-kit/workspace/README.md +89 -0
  382. package/templates/applications/builder-api/Dockerfile +3 -1
  383. package/templates/applications/builder-api/env.template +7 -0
  384. package/templates/applications/dataplane/application.yaml +6 -5
  385. package/templates/applications/dataplane/env.template +2 -2
  386. package/templates/applications/dataplane/rbac.yaml +35 -2
  387. package/templates/applications/keycloak/Dockerfile +30 -4
  388. package/templates/applications/keycloak/application.yaml +2 -2
  389. package/templates/applications/keycloak/cimd-lenient-parse/AbstractClientIdMetadataDocumentExecutor.java +896 -0
  390. package/templates/applications/keycloak/cimd-lenient-parse/SOURCE.md +19 -0
  391. package/templates/applications/keycloak/env.template +3 -0
  392. package/templates/applications/miso-controller/application.yaml +1 -2
  393. package/templates/applications/miso-controller/env.template +10 -9
  394. package/templates/channels/README.md +5 -5
  395. package/templates/channels/chatgpt/TROUBLESHOOTING.md +51 -0
  396. package/templates/channels/chatgpt/channel.json +59 -0
  397. package/templates/channels/chatgpt/icon.svg +1 -0
  398. package/templates/channels/chatgpt/install.template.md.hbs +20 -95
  399. package/templates/channels/chatgpt/integration/README.md +1 -1
  400. package/templates/channels/chatgpt/integration/application.json +2 -2
  401. package/templates/channels/chatgpt/integration/chatgpt-system.json +49 -4
  402. package/templates/channels/chatgpt/integration/env.template +2 -4
  403. package/templates/channels/chatgpt/integration/rbac.json +13 -0
  404. package/templates/channels/claude/TROUBLESHOOTING.md +44 -0
  405. package/templates/channels/claude/channel.json +59 -0
  406. package/templates/channels/claude/icon.svg +1 -0
  407. package/templates/channels/claude/install.template.md.hbs +22 -0
  408. package/templates/channels/claude/integration/README.md +14 -0
  409. package/templates/channels/claude/integration/application.json +15 -0
  410. package/templates/channels/claude/integration/claude-system.json +59 -0
  411. package/templates/channels/claude/integration/env.template +2 -0
  412. package/templates/channels/claude/integration/rbac.json +13 -0
  413. package/templates/channels/claude/manifest.template.json.hbs +40 -0
  414. package/templates/channels/mcp-client/channel.json +72 -0
  415. package/templates/channels/mcp-client/icon.svg +1 -0
  416. package/templates/channels/mcp-client/install.template.md.hbs +24 -0
  417. package/templates/channels/mcp-client/integration/README.md +13 -0
  418. package/templates/channels/mcp-client/integration/application.json +15 -0
  419. package/templates/channels/mcp-client/integration/env.template +2 -0
  420. package/templates/channels/mcp-client/integration/mcp-client-system.json +72 -0
  421. package/templates/channels/mcp-client/integration/rbac.json +13 -0
  422. package/templates/channels/mcp-client/manifest.template.json.hbs +41 -0
  423. package/templates/channels/mcp-client/profiles/cursor.json +26 -0
  424. package/templates/channels/mcp-client/profiles/github-copilot.json +29 -0
  425. package/templates/channels/mcp-client/profiles/vscode.json +29 -0
  426. package/templates/channels/microsoft-copilot/channel.json +73 -0
  427. package/templates/channels/microsoft-copilot/declarative-agent.template.json.hbs +8 -4
  428. package/templates/channels/microsoft-copilot/entra-sso-registration.template.md.hbs +65 -5
  429. package/templates/channels/microsoft-copilot/icon.svg +1 -0
  430. package/templates/channels/microsoft-copilot/install.template.md.hbs +9 -9
  431. package/templates/channels/microsoft-copilot/integration/README.md +1 -1
  432. package/templates/channels/microsoft-copilot/integration/application.json +2 -2
  433. package/templates/channels/microsoft-copilot/integration/env.template +3 -6
  434. package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +63 -4
  435. package/templates/channels/microsoft-copilot/integration/rbac.json +13 -0
  436. package/templates/channels/microsoft-copilot/oauth-plugin-vault-required.template.md.hbs +5 -5
  437. package/templates/channels/slack/channel.json +234 -0
  438. package/templates/channels/slack/icon.svg +1 -0
  439. package/templates/channels/slack/install.template.md.hbs +45 -28
  440. package/templates/channels/slack/integration/README.md +245 -22
  441. package/templates/channels/slack/integration/application.json +44 -7
  442. package/templates/channels/slack/integration/env.template +15 -6
  443. package/templates/channels/slack/integration/openapi/openapi.json +126 -0
  444. package/templates/channels/slack/integration/rbac.json +84 -0
  445. package/templates/channels/slack/integration/slack-datasource-commands.json +154 -0
  446. package/templates/channels/slack/integration/slack-datasource-conversations.json +28 -3
  447. package/templates/channels/slack/integration/slack-datasource-events.json +154 -0
  448. package/templates/channels/slack/integration/slack-datasource-interactive.json +154 -0
  449. package/templates/channels/slack/integration/slack-datasource-messages.json +40 -2
  450. package/templates/channels/slack/integration/slack-system.json +161 -72
  451. package/templates/channels/slack/manifest.template.json.hbs +10 -4
  452. package/templates/channels/teams-bot/channel.json +162 -0
  453. package/templates/channels/teams-bot/icon.svg +1 -0
  454. package/templates/channels/teams-bot/install.template.md.hbs +12 -13
  455. package/templates/channels/teams-bot/integration/README.md +5 -4
  456. package/templates/channels/teams-bot/integration/application.json +6 -4
  457. package/templates/channels/teams-bot/integration/env.template +5 -4
  458. package/templates/channels/teams-bot/integration/openapi/openapi.json +68 -0
  459. package/templates/channels/teams-bot/integration/rbac.json +21 -0
  460. package/templates/channels/teams-bot/integration/teams-bot-datasource-activities.json +154 -0
  461. package/templates/channels/teams-bot/integration/teams-bot-system.json +128 -23
  462. package/templates/channels/web-embed/channel.json +60 -0
  463. package/templates/channels/web-embed/install.template.md.hbs +1 -1
  464. package/templates/channels/web-embed/integration/README.md +2 -2
  465. package/templates/channels/web-embed/integration/application.json +2 -2
  466. package/templates/channels/web-embed/integration/env.template +1 -1
  467. package/templates/channels/web-embed/integration/rbac.json +13 -0
  468. package/templates/channels/web-embed/integration/web-embed-system.json +50 -4
  469. package/templates/python/docker-compose.hbs +14 -0
  470. package/templates/typescript/docker-compose.hbs +14 -0
@@ -24,21 +24,21 @@ dist/channels/microsoft-copilot/build/appPackage.{{environment}}.zip
24
24
  | **Teams Developer Portal app** | Package definition (`manifest.json.id`) and organisation publish request. | Teams app / manifest ID |
25
25
  | **Teams admin centre catalogue** | Approval, availability, policy, published state. | Catalogue entry after org publish |
26
26
 
27
- `--oauth-plugin-vault-reference-id` is the **Teams Entra SSO registration / auth-config ID** from Developer Portal Tools → Microsoft Entra SSO. It is **not** the Entra Client (application) ID and **not** a client secret.
27
+ `--oauth-plugin-vault-reference-id` is the **Microsoft auth-config ID** that Microsoft 365 Agents Toolkit (`atk` / `oauth/register`) writes into `OAuthPluginVault.reference_id`. It is **not** the Entra Client (application) ID and **not** a client secret. That CLI registration is stored in Microsoft’s token store; it often **does not** appear as a Teams Developer Portal “Entra SSO registration” you can browse. Teams Developer Portal is fallback, inspection, or recovery only.
28
28
 
29
29
  Do **not** configure AI Fabrix OAuth client secrets under Connected Systems → Authentication for this Entra SSO flow.
30
30
 
31
31
  ## Package prerequisites (before Import)
32
32
 
33
- 1. Generate the channel package with `aifabrix channel add microsoft-copilot`.
34
- 2. Configure Microsoft Entra SSO: **Tools → Microsoft Entra SSO client ID registration** (see table below). Copy the generated registration / auth-config ID.
35
- 3. Re-run packaging so `ai-plugin.json` gets `auth.type = OAuthPluginVault` and `auth.reference_id = <auth-config-id>`:
33
+ 1. Run `aifabrix channel add microsoft-copilot` (or continue from the portal). Sign in with Microsoft when asked so Agents Toolkit can create or reuse the auth-config.
34
+ 2. Toolkit captures the auth-config ID and Application ID URI, then embeds `auth.type = OAuthPluginVault` and `auth.reference_id` in `ai-plugin.json`.
35
+ 3. Use `--oauth-plugin-vault-reference-id` only when Toolkit cannot create the id (fallback / recovery):
36
36
 
37
37
  ```bash
38
- aifabrix channel add microsoft-copilot --name "{{baseName}}" --oauth-plugin-vault-reference-id "<auth-config-id>"
38
+ aifabrix channel add microsoft-copilot --name "{{appName}}" --oauth-plugin-vault-reference-id "<auth-config-id>"
39
39
  ```
40
40
 
41
- Keep any `webApplicationInfo` the portal binds for Entra SSO — do not strip it on re-import.
41
+ Keep package `webApplicationInfo` aligned with the **Azure** Application ID URI (`api://{clientId}` / Trust audience). Do not replace it with the Teams portal display URI `api://auth-…` on re-import.
42
42
 
43
43
  Upload **only** the ZIP package. Do not upload individual source files or `channel-microsoft-copilot.json`.
44
44
 
@@ -49,11 +49,11 @@ Upload **only** the ZIP package. Do not upload individual source files or `chann
49
49
  3. Developer Portal → selected app → **Publish to your org** → Distribute / submit.
50
50
  4. Teams admin approves in [Teams admin centre → Manage apps](https://admin.teams.microsoft.com/policies/manage-apps) (Manage apps → search → allow). Expect **Published** / **Unblocked** per organisation policy. Allow several minutes for propagation.
51
51
  5. Open **Teams** → **Apps** (**Built for your org**), click **{{appName}}**, **Add** the application, then choose **Open with Copilot**.
52
- 6. In Copilot, click **Show my role assistants** and run the command.
52
+ 6. In Copilot, click a starter titled like **vX.Y.Z — Role Assistants** (package version in the title) and run it.
53
53
  7. Confirm Runtime MCP and governed tools using this guide, then re-run with `--probe` after organisation publish:
54
54
 
55
55
  ```bash
56
- aifabrix channel add {{channelTarget}} --name "{{baseName}}" --oauth-plugin-vault-reference-id "{{{oauthPluginVaultReferenceId}}}" --probe
56
+ aifabrix channel add {{channelTarget}} --name "{{appName}}" --oauth-plugin-vault-reference-id "{{{oauthPluginVaultReferenceId}}}" --probe
57
57
  ```
58
58
 
59
59
  8. After the app is available under **Built for your org**, re-run:
@@ -119,7 +119,7 @@ Use this when replacing the app, cleaning a failed publish, or removing **{{appN
119
119
  2. Search for **{{appName}}**, open the app, open the action menu, choose **Delete**, and confirm.
120
120
  3. Open [Teams Developer Portal → Apps](https://dev.teams.microsoft.com/apps).
121
121
  4. Find the app in the list, open **…** (Actions) → **Delete**, and confirm by typing the app name.
122
- 5. Open [Microsoft Entra SSO client ID registration](https://dev.teams.microsoft.com/tools/entra-configuration).
122
+ 5. Open [Teams Developer Portal → Microsoft Entra SSO client ID registration](https://dev.teams.microsoft.com/tools/entra-configuration).
123
123
  6. Find the registration for this channel (same registration / auth-config used as `--oauth-plugin-vault-reference-id`), open **…** (Actions) → **Delete**, and confirm.
124
124
 
125
125
  After Microsoft cleanup, delete local package output if needed (`dist/channels/microsoft-copilot/`) and re-run `aifabrix channel add` with a **new** Entra SSO registration / auth-config ID. Do not reuse a deleted registration id.
@@ -1,4 +1,4 @@
1
- # Microsoft 365 Copilot package channel
1
+ # Microsoft Copilot
2
2
 
3
3
  Generated by `aifabrix channel scaffold microsoft-copilot`.
4
4
 
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "app": {
3
3
  "key": "microsoft-copilot",
4
- "displayName": "Microsoft Copilot package channel",
5
- "description": "Assistant communication channel — deploy then channel add",
4
+ "displayName": "Microsoft Copilot",
5
+ "description": "Publish a Microsoft Copilot package for Microsoft 365.",
6
6
  "type": "external"
7
7
  },
8
8
  "externalIntegration": {
@@ -1,6 +1,3 @@
1
- # Microsoft Copilot package channel credential references
2
- # aifabrix secret set microsoft-copilot/clientId "<value>" --shared
3
- # aifabrix secret set microsoft-copilot/clientSecret "<value>" --shared
4
-
5
- KV_MICROSOFT_COPILOT_CLIENTID=kv://microsoft-copilot/clientId
6
- KV_MICROSOFT_COPILOT_CLIENTSECRET=kv://microsoft-copilot/clientSecret
1
+ # Microsoft Copilot
2
+ # OAuth / Entra app secrets are not stored here (authType: system).
3
+ # Remaining Microsoft 365 publish uses the generated package and OAuth plugin vault.
@@ -1,14 +1,73 @@
1
1
  {
2
2
  "key": "microsoft-copilot",
3
- "displayName": "Microsoft Copilot package channel",
4
- "description": "Communication external system for Microsoft Copilot package onboarding",
3
+ "displayName": "Microsoft Copilot",
4
+ "description": "Publish a Microsoft Copilot package for Microsoft 365.",
5
5
  "type": "custom",
6
6
  "systemKind": "communication",
7
7
  "enabled": true,
8
8
  "authentication": {
9
9
  "authType": "system"
10
10
  },
11
- "configuration": [],
11
+ "configuration": [
12
+ {
13
+ "name": "CHANNEL_APP_DESCRIPTION",
14
+ "value": "Enterprise AI assistant for employees. Approved assistants, enterprise knowledge, workflows, and governed actions via AI Fabrix.",
15
+ "location": "variable",
16
+ "required": false,
17
+ "portalInput": {
18
+ "field": "textarea",
19
+ "label": "Description",
20
+ "placeholder": "Shown to people who connect this app",
21
+ "validation": {
22
+ "maxLength": 4000
23
+ }
24
+ }
25
+ },
26
+ {
27
+ "name": "CHANNEL_PACKAGE_VERSION",
28
+ "value": "1.0.0",
29
+ "location": "variable",
30
+ "required": false
31
+ },
32
+ {
33
+ "name": "CHANNEL_OAUTH_PLUGIN_VAULT_REFERENCE_ID",
34
+ "value": "",
35
+ "location": "variable",
36
+ "required": false
37
+ }
38
+ ],
12
39
  "dataSources": [],
13
- "endpointsActive": false
40
+ "endpointsActive": false,
41
+ "channel": {
42
+ "definitionKey": "microsoft-copilot",
43
+ "provisioning": {
44
+ "mode": "automatic"
45
+ },
46
+ "runtimeTarget": {
47
+ "defaultSystemKey": "runtime-orchestration",
48
+ "configurable": true
49
+ },
50
+ "experimental": false,
51
+ "profiles": [],
52
+ "packaging": {
53
+ "channelType": "microsoftCopilot",
54
+ "templateDir": "microsoft-copilot",
55
+ "artifactFileName": "channel-microsoft-copilot.json",
56
+ "artifactFormat": "json",
57
+ "credentialKey": "microsoft-copilot-channel",
58
+ "capabilities": [
59
+ "chat",
60
+ "notify",
61
+ "documentApproval",
62
+ "enterpriseActions"
63
+ ],
64
+ "displayLabel": "Microsoft Copilot",
65
+ "category": "employee-ai",
66
+ "wizardOrder": 10,
67
+ "remainingManualStep": "Publish the app in Microsoft 365.",
68
+ "docsAnchor": "microsoft-copilot",
69
+ "approvalRequired": true,
70
+ "vendorAuthRequired": true
71
+ }
72
+ }
14
73
  }
@@ -0,0 +1,13 @@
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
+ }
@@ -1,15 +1,15 @@
1
- microsoft-copilot packaging requires `--oauth-plugin-vault-reference-id` with the Teams Entra SSO **registration / auth-config ID**.
1
+ microsoft-copilot packaging needs a Microsoft **auth-config ID** in `OAuthPluginVault.reference_id`.
2
2
 
3
- That value is **not** the Entra Client (application) ID and **not** a client secret.
3
+ AI Fabrix provisions that value with **Microsoft 365 Agents Toolkit**. Sign in with Microsoft (`atk auth login m365`), then re-run `aifabrix channel add microsoft-copilot`. Do not paste an Entra Client (application) ID or a client secret.
4
4
 
5
- Register Entra SSO in the Teams Developer Portal **before** packaging (no ZIP needed first): paste the values below, Save, copy the registration id, then re-run.
5
+ Teams Developer Portal is fallback, inspection, restrictions, or recovery only — not the normal provisioning path.
6
6
 
7
7
  {{> entraSsoRegistration}}
8
8
 
9
- Then:
9
+ If Toolkit cannot create the id:
10
10
 
11
11
  ```bash
12
- aifabrix channel add microsoft-copilot --name "{{baseName}}" --oauth-plugin-vault-reference-id "<Teams-Entra-SSO-registration-id>"
12
+ aifabrix channel add microsoft-copilot --name "{{appName}}" --oauth-plugin-vault-reference-id "<auth-config-id>"
13
13
  ```
14
14
 
15
15
  Next: Developer Portal → Apps → Import app (`appPackage.<env>.zip`) → Publish to your org → Teams admin centre approval. Sideloading is optional and not the organisation path.
@@ -0,0 +1,234 @@
1
+ {
2
+ "key": "slack",
3
+ "displayName": "Slack",
4
+ "description": "Chat with Role Assistants, send notifications, and review documents in Slack.",
5
+ "type": "custom",
6
+ "enabled": true,
7
+ "authentication": {
8
+ "authType": "credential",
9
+ "credential": {
10
+ "credentialKey": "slack-app",
11
+ "displayName": "Slack App",
12
+ "method": "hmac",
13
+ "writeOnce": true,
14
+ "variables": {
15
+ "algorithm": "sha256",
16
+ "signatureHeader": "X-Slack-Signature",
17
+ "timestampHeader": "X-Slack-Request-Timestamp",
18
+ "signaturePrefix": "v0=",
19
+ "timestampMaxAge": "300",
20
+ "baseUrl": "https://slack.com",
21
+ "testEndpoint": "https://slack.com/api/auth.test"
22
+ },
23
+ "security": {
24
+ "signingSecret": "kv://slack/signingSecret",
25
+ "botToken": "kv://slack/botToken",
26
+ "clientSecret": "kv://slack/clientSecret"
27
+ },
28
+ "formFields": [
29
+ {
30
+ "name": "signingSecret",
31
+ "required": true,
32
+ "label": "Signing secret"
33
+ },
34
+ {
35
+ "name": "botToken",
36
+ "required": true,
37
+ "label": "Bot user OAuth token",
38
+ "placeholder": "xoxb-…"
39
+ },
40
+ {
41
+ "name": "clientSecret",
42
+ "required": false,
43
+ "label": "Client secret"
44
+ }
45
+ ]
46
+ }
47
+ },
48
+ "authentications": [
49
+ {
50
+ "key": "default",
51
+ "usage": "api",
52
+ "authType": "credential",
53
+ "credential": {
54
+ "credentialKey": "slack-app",
55
+ "displayName": "Slack App",
56
+ "method": "hmac",
57
+ "writeOnce": true,
58
+ "variables": {
59
+ "algorithm": "sha256",
60
+ "signatureHeader": "X-Slack-Signature",
61
+ "timestampHeader": "X-Slack-Request-Timestamp",
62
+ "signaturePrefix": "v0=",
63
+ "timestampMaxAge": "300",
64
+ "baseUrl": "https://slack.com",
65
+ "testEndpoint": "https://slack.com/api/auth.test"
66
+ },
67
+ "security": {
68
+ "signingSecret": "kv://slack/signingSecret",
69
+ "botToken": "kv://slack/botToken",
70
+ "clientSecret": "kv://slack/clientSecret"
71
+ },
72
+ "formFields": [
73
+ {
74
+ "name": "signingSecret",
75
+ "required": true,
76
+ "label": "Signing secret"
77
+ },
78
+ {
79
+ "name": "botToken",
80
+ "required": true,
81
+ "label": "Bot user OAuth token",
82
+ "placeholder": "xoxb-…"
83
+ },
84
+ {
85
+ "name": "clientSecret",
86
+ "required": false,
87
+ "label": "Client secret"
88
+ }
89
+ ]
90
+ }
91
+ },
92
+ {
93
+ "key": "webhookInbound",
94
+ "usage": "webhookInbound",
95
+ "authType": "credential",
96
+ "credential": {
97
+ "credentialKey": "slack-app",
98
+ "displayName": "Slack inbound webhook",
99
+ "method": "hmac",
100
+ "writeOnce": true,
101
+ "variables": {
102
+ "algorithm": "sha256",
103
+ "signatureHeader": "X-Slack-Signature",
104
+ "timestampHeader": "X-Slack-Request-Timestamp",
105
+ "signaturePrefix": "v0=",
106
+ "timestampMaxAge": "300"
107
+ },
108
+ "security": {
109
+ "signingSecret": "kv://slack/signingSecret"
110
+ },
111
+ "formFields": [
112
+ {
113
+ "name": "signingSecret",
114
+ "required": true,
115
+ "label": "Signing secret"
116
+ }
117
+ ]
118
+ }
119
+ }
120
+ ],
121
+ "configuration": [
122
+ {
123
+ "name": "CHANNEL_APP_DESCRIPTION",
124
+ "value": "Enterprise AI assistant for employees. Approved assistants, enterprise knowledge, workflows, and governed actions via AI Fabrix.",
125
+ "location": "variable",
126
+ "required": false,
127
+ "portalInput": {
128
+ "field": "textarea",
129
+ "label": "Description",
130
+ "placeholder": "Shown to people who connect this app",
131
+ "validation": {
132
+ "maxLength": 4000
133
+ }
134
+ }
135
+ },
136
+ {
137
+ "name": "CHANNEL_COMMAND_PREFIX",
138
+ "value": "af",
139
+ "location": "variable",
140
+ "required": false,
141
+ "portalInput": {
142
+ "field": "text",
143
+ "label": "Slash command prefix",
144
+ "placeholder": "Letters and numbers, for example af",
145
+ "validation": {
146
+ "pattern": "^[a-z][a-z0-9]{0,15}$"
147
+ }
148
+ }
149
+ },
150
+ {
151
+ "name": "ENABLE_MCP_SERVER",
152
+ "value": "false",
153
+ "location": "variable",
154
+ "required": false,
155
+ "portalInput": {
156
+ "field": "select",
157
+ "label": "MCP server",
158
+ "options": ["true", "false"]
159
+ }
160
+ },
161
+ {
162
+ "name": "ENABLE_PROACTIVE_MESSAGING",
163
+ "value": "true",
164
+ "location": "variable",
165
+ "required": false
166
+ },
167
+ {
168
+ "name": "ENABLE_CHANNEL_NOTIFICATIONS",
169
+ "value": "true",
170
+ "location": "variable",
171
+ "required": false
172
+ },
173
+ {
174
+ "name": "ENABLE_DIRECT_MESSAGES",
175
+ "value": "true",
176
+ "location": "variable",
177
+ "required": false
178
+ },
179
+ {
180
+ "name": "ENABLE_MODALS",
181
+ "value": "true",
182
+ "location": "variable",
183
+ "required": false
184
+ },
185
+ {
186
+ "name": "ENABLE_SHORTCUTS",
187
+ "value": "true",
188
+ "location": "variable",
189
+ "required": false
190
+ }
191
+ ],
192
+ "dataSources": [
193
+ "slack-interactive",
194
+ "slack-commands",
195
+ "slack-events",
196
+ "slack-conversations",
197
+ "slack-messages"
198
+ ],
199
+ "endpoints": [],
200
+ "endpointsActive": true,
201
+ "systemKind": "communication",
202
+ "channel": {
203
+ "definitionKey": "slack",
204
+ "provisioning": {
205
+ "mode": "automatic"
206
+ },
207
+ "runtimeTarget": {
208
+ "defaultSystemKey": "runtime-orchestration",
209
+ "configurable": true
210
+ },
211
+ "experimental": false,
212
+ "maxInstances": 1,
213
+ "profiles": [],
214
+ "packaging": {
215
+ "channelType": "slack",
216
+ "templateDir": "slack",
217
+ "artifactFileName": "channel-slack.json",
218
+ "artifactFormat": "json",
219
+ "credentialKey": "slack-app",
220
+ "capabilities": [
221
+ "chat",
222
+ "notify",
223
+ "documentApproval"
224
+ ],
225
+ "displayLabel": "Slack",
226
+ "category": "communication",
227
+ "wizardOrder": 40,
228
+ "remainingManualStep": "Workspace admin approval if Slack asks.",
229
+ "docsAnchor": "slack",
230
+ "approvalRequired": true,
231
+ "vendorAuthRequired": true
232
+ }
233
+ }
234
+ }
@@ -0,0 +1 @@
1
+ <svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Slack</title><path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"/></svg>
@@ -1,21 +1,61 @@
1
- # {{appName}} — Slack communication channel install
1
+ # {{appName}} — Slack install
2
2
 
3
3
  {{appDescription}}
4
4
 
5
- Environment: **{{environment}}** · Credential key: `{{credentialKey}}` · Command prefix: `{{commandPrefix}}`
5
+ Environment: **{{environment}}** · Credential key: `{{credentialKey}}` · Command prefix: `{{commandPrefix}}` · Package version: **{{packageVersion}}**
6
6
 
7
7
  One Slack app delivers **Role Assistant** chat, **Work hub** shortcuts, and **document approval**.
8
8
 
9
9
  **Chat with your assistant:** DM this app (no slash command for Q&A).
10
10
 
11
- ## Create the Slack app (workspace admin)
11
+ ## Automated install
12
+
13
+ ```bash
14
+ aifabrix channel add {{channelTarget}} --name "{{baseName}}"
15
+ ```
16
+
17
+ Sign in with Slack CLI (`slack login`) to the workspace that should own the app. Builder creates or **updates** the Slack app from the generated manifest (`dist/channels/slack/channel-slack.json`) and stores the bot token and signing secret in AI Fabrix Authentication. Re-run with the same name to apply new settings (slash prefix, URLs, description). Package version increases on each update (1.0.0 → 1.1.0). Approve the workspace install when Slack asks.
18
+
19
+ Complete remaining Slack steps in this order:
20
+
21
+ 1. Open the **Open Slack Apps** URL and upload your logo (**Basic Information**).
22
+ 2. Open the **Activate the application** URL (Slack **Install App**).
23
+ 3. Open **Approve for this workspace** in Slack Manage and approve.
24
+ 4. If Authentication still needs values, copy **Signing Secret** (Basic Information) and **Bot User OAuth Token** from the Slack app into [Authentication settings]({{{credentialPortalUrl}}}).
25
+
26
+ `aifabrix channel add` prints the filled URLs for your app. Do not paste client secrets into this file.
27
+
28
+ {{#if enableMcpServer}}
29
+ ## MCP server
30
+
31
+ This Slack app is also an MCP client of AI Fabrix Runtime. Connect the **AI Fabrix MCP server** in Slack, then sign in at **AI Fabrix** when Slack asks.
32
+
33
+ The Slack bot token and signing secret stay inbound Events and slash-command auth. They are not the MCP bearer. Do not paste an Integration Client secret into this file.
34
+
35
+ {{/if}}
36
+
37
+ The command may ask **Onboard users?** Yes matches Slack profile email to an existing platform user email and stores the mapping. Unmatched people still use **Link account**. Non-interactive: `--onboard-users` or `--no-onboard-users`. `--force` does not re-onboard unless you pass `--onboard-users` or answer yes again.
38
+
39
+ Optional validation:
40
+
41
+ ```bash
42
+ aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
43
+ ```
44
+
45
+ To use a different slash prefix (default `af`):
46
+
47
+ ```bash
48
+ aifabrix channel add {{channelTarget}} --name "{{baseName}}" --command-prefix <key>
49
+ ```
50
+
51
+ ## Recovery (only if automation cannot create the app)
12
52
 
13
53
  1. Open [Slack API — Your Apps](https://api.slack.com/apps) and sign in as a workspace admin.
14
54
  2. Click **Create New App** → **From an app manifest**.
15
55
  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
56
  4. Review callback URLs and OAuth scopes — they must match the values in **Platform callback URLs** below.
17
57
  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.
58
+ 6. Click **Create**, then open the **Activate the application** URL the command prints (Slack **Install App** / `install-on-team`) and approve.
19
59
  7. Copy **Bot User OAuth Token** and **Signing Secret** from the Slack app settings.
20
60
  8. Save **Bot User OAuth Token** and **Signing Secret** in AI Fabrix: [Authentication settings]({{{credentialPortalUrl}}})
21
61
 
@@ -32,11 +72,6 @@ Configure these in your Slack app if you edit settings manually. Do not embed se
32
72
  {{#if commandUrl}}
33
73
  - **Slash commands:** {{commandUrl}}
34
74
  {{/if}}
35
- {{#if oauthCallbackUrl}}
36
- - **OAuth Redirect URL:** {{oauthCallbackUrl}}
37
- {{/if}}
38
-
39
- Paste the **OAuth Redirect URL** into Slack app settings → **OAuth & Permissions** → **Redirect URLs** (required for Add to Slack / OAuth).
40
75
 
41
76
  Register these **V1** slash commands in the manifest (all use the same request URL):
42
77
 
@@ -51,7 +86,7 @@ Single-task and single-document detail, plus approve-in-Slack, are **not** regis
51
86
 
52
87
  Document review **block actions** use the **Interactivity** URL above.
53
88
 
54
- ## Validate after manifest import
89
+ ## Validate after install
55
90
 
56
91
  1. `/{{commandPrefix}}-help` — returns Block Kit help (proves command is registered and dataplane responds).
57
92
  2. `/{{commandPrefix}}-assistants` — Role Assistant status cards or activation offer.
@@ -64,21 +99,3 @@ Document review **block actions** use the **Interactivity** URL above.
64
99
  Runtime lists **assistants** available to each user from:
65
100
 
66
101
  {{assistantCatalogUrl}}
67
-
68
- ## After Slack install
69
-
70
- ```bash
71
- aifabrix channel add {{channelTarget}} --name "{{baseName}}"
72
- ```
73
-
74
- Optional validation:
75
-
76
- ```bash
77
- aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
78
- ```
79
-
80
- To use a different slash prefix (default `af`):
81
-
82
- ```bash
83
- aifabrix channel add {{channelTarget}} --name "{{baseName}}" --command-prefix <key>
84
- ```