@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
@@ -0,0 +1,68 @@
1
+ # Evidence lifecycle (PoC)
2
+
3
+ ## Flow
4
+
5
+ ```text
6
+ Demo / workshop / prove observations
7
+ → learning.md (FACT | ASSUMPTION)
8
+ → evidence/candidates/ (drafts — not consumed)
9
+ → validate + certify path
10
+ → governed Evidence (consumable by Role Assistant)
11
+ ```
12
+
13
+ ## Directories
14
+
15
+ | Path | Role |
16
+ | --- | --- |
17
+ | `learning/learning.md` | Delivery log only |
18
+ | `evidence/candidates/` | Candidate drafts (English). **Do not** treat as production-like Evidence |
19
+ | `evidence/` (package root, non-candidates) | Only rows ready for the Evidence certification / consume path |
20
+ | `knowledge/` | Reusable **business understanding** from governed content — not operational decision rules |
21
+
22
+ If Builder upload processes every file under `evidence/`, keep candidates **out of** the upload consume set:
23
+
24
+ - Prefer `evidence/candidates/` and document in learning.md that upload must exclude candidates until certified, **or**
25
+ - Keep drafts only under `.temp/cust-biz-2-build/<roleKey>/evidence-candidates/` until promotion.
26
+
27
+ Default convention for this skill: **`evidence/candidates/`** + explicit prove/build note: do not promote; do not claim Runtime consumption.
28
+
29
+ ## Candidate draft shape (English)
30
+
31
+ One purpose per file or per row. Trace to scenario ID in `key` / filename / title.
32
+
33
+ Example filename: `FIN-010-cost-centre-authority.json` (array or single object matching platform Evidence row schema when known).
34
+
35
+ Minimum fields to author:
36
+
37
+ - `key` — includes scenario id slug
38
+ - `title` / `description`
39
+ - `when` — business condition
40
+ - `expectedBehavior` — ground in Reality; respect authority; refuse raw dump / cross-partition; safe-stop when insufficient
41
+ - Mark in learning.md: `ASSUMPTION` vs `FACT`-backed
42
+
43
+ ## Promotion gate
44
+
45
+ Promote candidate → governed Evidence only when:
46
+
47
+ 1. Business intent confirmed (FACT in learning.md)
48
+ 2. Happy + safe-stop tests observed for the scenario
49
+ 3. Contract validation + certification path for Evidence completed (public Evidence Fabrix / operate-first RA docs)
50
+ 4. learning.md records promotion date + commit
51
+
52
+ ## Tests
53
+
54
+ For each in-scope scenario ID:
55
+
56
+ | Case | Purpose |
57
+ | --- | --- |
58
+ | `*-happy.yaml` | Agreed business outcome under authority |
59
+ | `*-safestop.yaml` | Refusal / missing authority / insufficient information |
60
+
61
+ Prefer `role-assistant/ra-<roleKey>/tests/<suiteId>/` in this customer repo (package SSOT).
62
+
63
+ ## Forbidden
64
+
65
+ - Calling workshop acceptance alone “governed Evidence”
66
+ - Hiding process law in Knowledge
67
+ - Uploading candidates as if certified
68
+ - Skipping safe-stop coverage for authority scenarios
@@ -0,0 +1,66 @@
1
+ # learning.md template
2
+
3
+ **Path:** `role-assistant/ra-<roleKey>/learning/learning.md`
4
+
5
+ Delivery learning artifact only. Not Runtime Knowledge. Not governed Evidence.
6
+
7
+ ## Skeleton
8
+
9
+ ```md
10
+ # PoC learning log
11
+
12
+ ## Current PoC hypothesis
13
+ - Process:
14
+ - Role (responsibility / capabilities / safe boundaries):
15
+ - Expected decision / value:
16
+ - Connected System:
17
+ - Audience:
18
+
19
+ ## Confirmed facts
20
+ | Fact | Source | Date | Owner | Confidence |
21
+ | --- | --- | --- | --- | --- |
22
+ | … | … | … | … | high/med |
23
+
24
+ ## Assumptions
25
+ | Assumption | Why needed | Risk if wrong | Scenario IDs |
26
+ | --- | --- | --- | --- |
27
+ | … | … | … | FIN-010 |
28
+
29
+ ## Open questions and safe stops
30
+ - Missing authority / data / baseline / policy / capability:
31
+ - Scenario IDs affected:
32
+
33
+ ## Scenario map
34
+ | ID | Demo ask (short) | demo.md | Knowledge | Evidence candidate | Tests |
35
+ | --- | --- | --- | --- | --- | --- |
36
+ | FIN-010 | … | y/n | path or — | candidates/… | happy + safestop |
37
+
38
+ ## Observations from proof runs
39
+ | Date | Scenario | Commit | Env | Outcome | Gap class | Notes |
40
+ | --- | --- | --- | --- | --- | --- | --- |
41
+ | … | FIN-010 | abc123 | dev | pass/fail/safestop | none \| product-gap \| missing-customer-fact \| scope-decision | … |
42
+
43
+ ## Changes made
44
+ - YYYY-MM-DD — command — what changed and why
45
+
46
+ ## Decision for next iteration
47
+ - Build | Prove | Obtain customer decision | Stop
48
+ - Rationale:
49
+ ```
50
+
51
+ ## Mandatory updates by command
52
+
53
+ | Command | Sections to update |
54
+ | --- | --- |
55
+ | `/cust-biz-1-validate` | Hypothesis, facts, assumptions, open questions, baseline / prove-ready decision |
56
+ | `/cust-biz-2-build` | Changes made; scenario map (demo / Knowledge / candidates / tests) |
57
+ | `/cust-biz-3-prove` | Observations table; gap class; decision for next iteration |
58
+
59
+ ## Gap class (prove)
60
+
61
+ | Value | Meaning |
62
+ | --- | --- |
63
+ | `none` | Result matches intent |
64
+ | `product-gap` | Platform / capability / Evidence contract issue |
65
+ | `missing-customer-fact` | Need customer answer (baseline, policy, owner) |
66
+ | `scope-decision` | In/out of PoC scope — not a defect |
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: aifabrix-role-assistant
3
+ description: >
4
+ Download, author, validate, test, or upload a Role Assistant package under
5
+ role-assistant/ra-*. Use for catalog digital workers. Do not use to invent
6
+ Connected System operations or to edit platform product source.
7
+ ---
8
+
9
+ # aifabrix-role-assistant
10
+
11
+ See [package-boundary.md](references/package-boundary.md) and nested `role-assistant/AGENTS.md`.
12
+ Host runtimes (local vs SSH): [hosts.md](../shared/hosts.md).
13
+
14
+ ## Preconditions
15
+
16
+ ```bash
17
+ aifabrix auth status
18
+ aifabrix role list --page-size 1000
19
+ ```
20
+
21
+ Catalog Business Role and an active user binding are prerequisites.
22
+ Connected Systems this assistant needs must be dataplane **published** (deploy, not upload-only).
23
+
24
+ ## Workflow
25
+
26
+ 1. `aifabrix download <catalogRoleOrRaKey>` before editing an existing assistant.
27
+ 2. Author settings, Knowledge, Evidence, tests, and sidecars per current Builder contracts. Read `aifabrix role-assistant --help`.
28
+ 3. `aifabrix role-assistant test …` is allowed without local RA publish.
29
+ 4. Upload/deploy RA only when the user explicitly asks in this turn.
30
+ 5. Report results honestly.
31
+
32
+ ## Hard rules
33
+
34
+ - Package key `ra-<catalogRole>` from the catalog — never `ra-<systemKey>-reader`.
35
+ - Candidate Evidence cannot be reported as certified.
36
+ - Missing subscribed CS capability → fail in CS ownership; no RA-local workaround.
37
+ - No hidden authority, actor, or identity injection.
38
+ - Do not convert RA folders with `aifabrix convert`.
39
+
40
+ ## Trigger examples
41
+
42
+ - Create or update the Finance Controller Role Assistant
@@ -0,0 +1,21 @@
1
+ # Role Assistant package boundary
2
+
3
+ Public docs: https://docs.aifabrix.ai/docs/role-assistants
4
+
5
+ ```text
6
+ integration/<systemKey>/ Connected System
7
+ role-assistant/ra-<roleKey>/ Role Assistant
8
+ ```
9
+
10
+ Download writes `role-assistant.yaml` and keeps sidecars. It does not write CS files (`application.*`, `*-system.*`, `*-datasource-*`, `env.template`). Delete those leftovers if they reappear.
11
+
12
+ If download also writes `integration/ra-*`, move sidecars into `role-assistant/ra-*`.
13
+
14
+ Generated RA FKs target **CS** datasource keys. Missing RA FK → fix the CS, re-download.
15
+
16
+ Hand-edit leftover CS manifests under `role-assistant/` is forbidden.
17
+
18
+ Do not invent an API key for `authType: system`.
19
+ Do not treat passivated invent packages (`ra-<vendor>-*`) as catalog workers.
20
+
21
+ Operator **Make available** is separate from CS publish.
@@ -0,0 +1,78 @@
1
+ # Coding hosts — local vs SSH
2
+
3
+ Use this workspace from **Cursor**, **Claude Code**, and **Codex**. Skills live in `.agents/skills/`. Invoke `/aifabrix-*` in Cursor and Claude Code, and `$aifabrix-*` in Codex.
4
+
5
+ Install and sign-in steps are in `AGENTKIT.md`. This file is how to **run** each host on a local machine or over SSH.
6
+
7
+ Do not start Claude or Codex in your home directory. `cd` into this git workspace first.
8
+
9
+ ## Auto-approve (optional)
10
+
11
+ `aifabrix agent-kit install` can write gitignored host configs so Claude Code and Codex do not prompt for every tool:
12
+
13
+ - Claude Code: `.claude/settings.local.json` (`permissions.defaultMode` = `bypassPermissions`, `allow` = `Bash(aifabrix *)` and `Read(~/**)`)
14
+ - Codex: `.codex/config.toml` (`approval_policy = "never"`, `sandbox_mode = "workspace-write"`)
15
+
16
+ Those files stay in **this workspace**. Claude may **read** files under the developer home (`Read(~/**)`) and run the delivery CLI (`Bash(aifabrix *)`). They do not add sibling folders as extra workspaces, do not grant Write outside this repo, and do not allow every shell command. TTY asks (default yes). `--yes` or a non-TTY / `--json` run writes them. `--skip-approve-all` skips. `--force` overwrites existing local files. Builder never writes `~/.claude` or `~/.codex`.
17
+
18
+ ## Cursor
19
+
20
+ **Local.** Open this folder in Cursor. Skills appear as `/aifabrix-plan` and the other `/aifabrix-*` commands.
21
+
22
+ **SSH.** Use Cursor Remote SSH to the machine that holds the repo. The session is the Cursor window — no tmux required. Same `/aifabrix-*` skills.
23
+
24
+ ## Claude Code
25
+
26
+ **Local.**
27
+
28
+ ```bash
29
+ cd /path/to/this-workspace
30
+ claude
31
+ ```
32
+
33
+ Then `/aifabrix-plan` (or another `/aifabrix-*` skill). First run in a project asks you to trust the folder; accept only this workspace.
34
+
35
+ **SSH (keep the session after you disconnect).** tmux holds the process on the remote machine:
36
+
37
+ ```bash
38
+ tmux new -s claude -c /path/to/this-workspace
39
+ claude --remote-control
40
+ ```
41
+
42
+ Detach without killing Claude: `Ctrl-b` then `d`. Reattach: `tmux attach -t claude`.
43
+
44
+ **Phone and web.** `--remote-control` (or `claude remote-control` in server mode) publishes the same session to [claude.ai/code](https://claude.ai/code) and the Claude mobile app (**Code**). Press space in server mode for a QR code. In an interactive session, `/remote-control` or `/mobile`. Requires a Claude Pro/Max/Team login (`claude auth login`), not an API key.
45
+
46
+ Closing SSH does not stop a tmux session. Stopping tmux or the machine does.
47
+
48
+ ## Codex
49
+
50
+ **Local.**
51
+
52
+ ```bash
53
+ cd /path/to/this-workspace
54
+ codex
55
+ ```
56
+
57
+ Then `$aifabrix-plan` (and the other `$aifabrix-*` skills). Codex reads `AGENTS.md`.
58
+
59
+ **SSH (keep the session after you disconnect).**
60
+
61
+ ```bash
62
+ tmux new -s codex -c /path/to/this-workspace
63
+ codex
64
+ ```
65
+
66
+ Detach: `Ctrl-b` then `d`. Reattach: `tmux attach -t codex`. Codex has no Claude-style phone/web Remote Control; stay in tmux (or reattach later) to see the session.
67
+
68
+ ## tmux cheat sheet
69
+
70
+ | Action | Keys / command |
71
+ | --- | --- |
72
+ | New named session | `tmux new -s <name> -c /path/to/this-workspace` |
73
+ | Detach (leave it running) | `Ctrl-b`, then `d` |
74
+ | List sessions | `tmux ls` |
75
+ | Attach | `tmux attach -t <name>` |
76
+ | Kill session | `tmux kill-session -t <name>` |
77
+
78
+ Use separate session names (`claude` vs `codex`) if both run on the same host.
@@ -0,0 +1,22 @@
1
+ # Plans (customer workspace)
2
+
3
+ Delivery plans for Connected Systems in this workspace.
4
+ **Operational limits for a system live in `integration/<systemKey>/README.md`**, not in Agent Kit skills.
5
+
6
+ ## Active
7
+
8
+ | Plan | Focus |
9
+ | --- | --- |
10
+ | — | No active delivery plan yet |
11
+
12
+ ## Done
13
+
14
+ | Plan | Focus | Archived |
15
+ | --- | --- | --- |
16
+ | — | — | — |
17
+
18
+ ## Naming
19
+
20
+ - `{N}.{m}-{slug}.plan.md` under `.cursor/plans/`
21
+ - Archive completed plans under `done/` when finished
22
+ - New delivery work from a business specification starts with **`aifabrix-plan`**
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) {{year}} {{copyrightHolder}}
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,89 @@
1
+ # {{workspaceName}}
2
+
3
+ AI Fabrix **customer delivery workspace** for Connected Systems and Role Assistants.
4
+
5
+ This repository holds **customer packages and data** only. Do not edit platform product source from this workspace.
6
+
7
+ Vendor limits, credentials, designated test subjects, and PII live only in each system’s `integration/<systemKey>/README.md`.
8
+
9
+ ## How to start
10
+
11
+ 1. Open **this folder** in Cursor, Claude Code, or Codex. Host install and sign-in: **[AGENTKIT.md](./AGENTKIT.md)**.
12
+ 2. In a terminal here, run `aifabrix auth status`. If you are not authenticated, run `aifabrix login` (the agent cannot log in for you).
13
+ 3. In chat, either **invoke a skill** or **paste a prompt** from the tables below. Work in order. Wait for the gate (`PLAN_READY`, `READY`, `BUILT`, then `PASS` or `PASS_WITH_SKIPS`) before the next step.
14
+
15
+ ### How to use prompts
16
+
17
+ | Host | Invoke a skill | Or type a prompt |
18
+ | --- | --- | --- |
19
+ | Cursor | `/aifabrix-plan` (and the other `/aifabrix-*` names) | Paste the sentence from **What to ask** |
20
+ | Claude Code | same `/aifabrix-*` names | same sentences |
21
+ | Codex | `$aifabrix-plan` (and the other `$aifabrix-*` names) | same sentences |
22
+
23
+ You can combine them: invoke the skill, then add the system key or paste a spec. Attach or `@` the specification file when you have one. Replace `<systemKey>` and `<catalogRole>` with real keys. Do not invent `ra-` / `ek-` system keys or `*-reader` roles.
24
+
25
+ ### Connected System (integration)
26
+
27
+ | Step | Skill | What to ask (prompt) |
28
+ | --- | --- | --- |
29
+ | Plan | `/aifabrix-plan` | Turn this specification into a delivery plan for `<systemKey>` |
30
+ | Validate and build | `/aifabrix-connected-system` | Validate and build the `<systemKey>` integration |
31
+ | Test and publish | `/aifabrix-connected-system` | Publish and certify this Connected System |
32
+
33
+ Example — plan:
34
+
35
+ ```text
36
+ /aifabrix-plan
37
+ Turn this specification into a delivery plan for <systemKey>
38
+ ```
39
+
40
+ `aifabrix upload` is a **draft**. Publish is **`aifabrix deploy`**. Secrets stay in `kv://` — never paste values into chat or git.
41
+
42
+ ### Role Assistant
43
+
44
+ Do this after the Connected Systems the role needs are **published** (deploy, not upload-only).
45
+
46
+ | Step | Skill | What to ask (prompt) |
47
+ | --- | --- | --- |
48
+ | Author, test, or upload | `/aifabrix-role-assistant` | Create or update the `<catalogRole>` Role Assistant |
49
+ | Prove the business case | `/aifabrix-prove` | Prove this business case and update learning |
50
+
51
+ Example — Role Assistant:
52
+
53
+ ```text
54
+ /aifabrix-role-assistant
55
+ Create or update the <catalogRole> Role Assistant
56
+ ```
57
+
58
+ Use a **catalog** role key (`finance-controller`, `cfo`, …). Package folder: `role-assistant/ra-<catalogRole>/`.
59
+
60
+ ## Layout
61
+
62
+ ```text
63
+ integration/<systemKey>/ Connected System packages (Builder output)
64
+ integration/<systemKey>/data/ Fixtures / source exports
65
+ role-assistant/ra-<roleKey>/ Role Assistant packages
66
+ .agents/skills/ Agent Kit skills (Cursor, Codex, Claude)
67
+ .cursor/plans/ Delivery plans
68
+ ```
69
+
70
+ As you add packages, list system keys and catalog roles in this README. Keep operational limits in each `integration/<systemKey>/README.md`.
71
+
72
+ ## Agent Kit
73
+
74
+ Install, coding hosts, auto-approve, and CLI auth: **[AGENTKIT.md](./AGENTKIT.md)**.
75
+
76
+ ```bash
77
+ aifabrix agent-kit status
78
+ aifabrix agent-kit validate
79
+ aifabrix agent-kit update
80
+ ```
81
+
82
+ `aifabrix agent-kit update` refreshes `AGENTKIT.md`. If this README is missing, install/update creates it. An existing README is never overwritten.
83
+
84
+ ## Docs
85
+
86
+ - [Agent Kit](./AGENTKIT.md) — hosts, install, auto-approve, CLI auth
87
+ - [Build AI-ready systems](https://docs.aifabrix.ai/docs/build-ai-ready-systems)
88
+ - [CLI workflow](https://docs.aifabrix.ai/docs/build-ai-ready-systems-validate-test-cli-workflow)
89
+ - [llms.txt](https://docs.aifabrix.ai/llms.txt)
@@ -13,7 +13,7 @@ ENV NODE_ENV=production \
13
13
  WORKDIR /app
14
14
 
15
15
  RUN apt-get update \
16
- && apt-get install -y --no-install-recommends dumb-init \
16
+ && apt-get install -y --no-install-recommends dumb-init ca-certificates curl \
17
17
  && rm -rf /var/lib/apt/lists/*
18
18
 
19
19
  COPY package.json package-lock.json ./
@@ -23,6 +23,8 @@ COPY docker-builder-api-staging/lib ./lib
23
23
  COPY docker-builder-api-staging/bin/builder-api-spike.js ./bin/builder-api-spike.js
24
24
  COPY docker-builder-api-staging/bin/builder-api-cleanup.js ./bin/builder-api-cleanup.js
25
25
  COPY docker-builder-api-staging/templates ./templates
26
+ # BID resource-type catalog + help fixtures (staged docs/builder-help only)
27
+ COPY docker-builder-api-staging/docs ./docs
26
28
 
27
29
  RUN addgroup --system appgroup \
28
30
  && adduser --system --ingroup appgroup --home /app appuser \
@@ -29,12 +29,19 @@ MISO_CLIENTSECRET=kv://builder-api-client-secretKeyVault
29
29
 
30
30
  # Internal: controller API for token validation (supports all miso-controller auth modes)
31
31
  MISO_CONTROLLER_URL=url://miso-controller-internal
32
+ # Public: OAuth profile and remaining-step links shown to vendors (not Docker DNS)
33
+ MISO_CONTROLLER_PUBLIC_URL=url://miso-controller-public
32
34
 
33
35
  # Internal: server-to-dataplane API (MCP execute, upload, governance)
34
36
  DATAPLANE_URL=url://dataplane-internal
37
+ # Public: Slack/Teams/ChatGPT callbacks, packages, and portal remaining-step URLs
38
+ DATAPLANE_PUBLIC_URL=url://dataplane-public
35
39
 
36
40
  DEFAULT_ENVIRONMENT=dev
37
41
 
42
+ # Browser Origin allowlist for portal calls (CORS). url:// expands at resolve.
43
+ ALLOWED_ORIGINS=http://localhost:*,url://host-public,url://host-private,url://dataplane-host-public,url://dataplane-host-private
44
+
38
45
  # COM-generated Enterprise MCP owner system (normal MCP execute — no dataplane adapter)
39
46
  ENTERPRISE_MCP_SYSTEM_KEY=enterprise-integration-lifecycle
40
47
 
@@ -5,7 +5,7 @@ app:
5
5
  description: "AI Fabrix Dataplane is a secure, in-tenant integration and automation layer that supplies governed, normalized, and explainable enterprise data to AI agents. Using CIP as a declarative standard, it enforces RBAC and ABAC, executes integrations, and exposes trusted data via MCP and OpenAPI."
6
6
  type: webapp
7
7
  language: python # Explicitly specify Python language
8
- version: 2.0.31
8
+ version: 2.0.56
9
9
  # Image Configuration
10
10
  # Set tag to match your build (example: aifabrix build dataplane -t 1.0.0).
11
11
  # Registry is required so the controller can pull the image (avoids docker-not-found on the controller host).
@@ -71,14 +71,15 @@ build:
71
71
  envOutputPath: ../../.env # Copy to repo root for local dev
72
72
  language: python # Runtime language for template selection (typescript or python)
73
73
  # Dev reload: polling + watch /app/app only (avoids EMFILE on full repo bind-mount). See run_local.py, make af-reload.
74
- reloadStart: WATCHFILES_FORCE_POLLING=1 uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-3001} --reload --reload-dir /app/app
74
+ reloadStart: WATCHFILES_FORCE_POLLING=1 uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-3001} --reload --reload-dir /app/app --reload-exclude tests --reload-exclude .temp --reload-exclude app-ui --timeout-graceful-shutdown 15
75
75
  # Pulled-image local compose (no bind-mount): drives `command` in generated docker-compose. Override for non-standard images (e.g. stub ACR tags).
76
- imageRun: exec python -m uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-3001}
76
+ # Early ASGI (boot.api) binds PORT before heavy app.main import — Azure App Service warmup.
77
+ imageRun: exec python -m uvicorn boot.api:app --host 0.0.0.0 --port ${PORT:-3001}
77
78
  # Image policy (442.0): explicit Dockerfile COPY; worker/beat via python -m app.core.*
78
79
  # integration/ in image: only onboarding-catalog.json keys (+ deploy/application per key).
79
80
  worker: true
80
- imageRunWorker: exec python -m app.core.celery_worker_main
81
- imageRunBeat: exec python -m app.core.celery_beat_main
81
+ imageRunWorker: exec python -m boot.celery_worker
82
+ imageRunBeat: exec python -m boot.celery_beat
82
83
  # Optional one-shot before ANY long-running role (api/worker/beat). Run exactly once per
83
84
  # aifabrix run / Deployment — never once-per-container. Schema: application-schema build.deployJob.
84
85
  # Local: aifabrix run; remote: miso Deployment via miso-azure (not Docker on controller).
@@ -21,7 +21,7 @@ AIFABRIX_PLATFORM_LANGUAGE=en
21
21
  # Docker default (no volume): use LOG_FILE_PATH=/app/logs/app.log (directory created in image).
22
22
  # Production with persistent logs: use /mnt/data/logs/app.log and mount a volume at /mnt/data.
23
23
  LOG_FILE_PATH=/mnt/data/logs/app.log
24
- # If true, run without Redis/Celery (single process). Set false on API/worker/beat in production.
24
+ # If true, run without Celery (single process). Pair with build.worker: false so worker/beat are not started.
25
25
  LOCAL_MODE=false
26
26
 
27
27
  # Celery worker process tuning (dataplane-worker container; optional overrides)
@@ -44,7 +44,7 @@ API_KEY_BYPASS_ROLES=full-access
44
44
 
45
45
  # API Configuration
46
46
  API_V1_STR=/api/v1
47
- VERSION=2.0.31
47
+ VERSION=2.0.56
48
48
  # Minimum supported aifabrix-builder CLI semver (advertised on /health and /api/v1/health; empty = no gate)
49
49
  # MIN_BUILDER_CLI_VERSION=2.45.0
50
50
  MIN_BUILDER_CLI_VERSION=2.45.5
@@ -50,6 +50,11 @@ roles:
50
50
  description: "Discover business context for external systems via REST and MCP"
51
51
  groups: ["AI-Fabrix-External-System-Discoverers"]
52
52
 
53
+ - name: "Everyone"
54
+ value: "aifabrix-everyone"
55
+ description: "Authenticated-user consume access for Enterprise LLM and platform search (not a Role Assistant)"
56
+ groups: ["AI-Fabrix-Everyone"]
57
+
53
58
  permissions:
54
59
  # Credential management
55
60
  - name: "credential:create"
@@ -158,6 +163,34 @@ permissions:
158
163
  ]
159
164
  description: "Read the global Resource Type catalog (list/get)"
160
165
 
166
+ # Aspect catalog (read-only)
167
+ - name: "aspect:read"
168
+ roles:
169
+ [
170
+ "aifabrix-platform-admin",
171
+ "aifabrix-security-admin",
172
+ "aifabrix-deployment-admin",
173
+ "aifabrix-compliance-admin",
174
+ "aifabrix-developer",
175
+ "aifabrix-observer",
176
+ "aifabrix-ai-trust-operator",
177
+ ]
178
+ description: "Read the shared baseline Aspect catalog (list/get)"
179
+
180
+ # Knowledge Type catalog (read-only)
181
+ - name: "knowledge-type:read"
182
+ roles:
183
+ [
184
+ "aifabrix-platform-admin",
185
+ "aifabrix-security-admin",
186
+ "aifabrix-deployment-admin",
187
+ "aifabrix-compliance-admin",
188
+ "aifabrix-developer",
189
+ "aifabrix-observer",
190
+ "aifabrix-ai-trust-operator",
191
+ ]
192
+ description: "Read the Dataplane Knowledge Type catalog (list/get)"
193
+
161
194
  # Generic dataplane operations
162
195
  - name: "dataplane:read"
163
196
  roles: ["aifabrix-platform-admin", "aifabrix-security-admin", "aifabrix-deployment-admin", "aifabrix-compliance-admin", "aifabrix-developer", "aifabrix-observer"]
@@ -314,11 +347,11 @@ permissions:
314
347
 
315
348
  # Search operations
316
349
  - name: "document:search"
317
- roles: ["aifabrix-platform-admin", "aifabrix-security-admin", "aifabrix-deployment-admin", "aifabrix-compliance-admin", "aifabrix-developer", "aifabrix-observer"]
350
+ roles: ["aifabrix-everyone"]
318
351
  description: "Search documents"
319
352
 
320
353
  - name: "record:search"
321
- roles: ["aifabrix-platform-admin", "aifabrix-security-admin", "aifabrix-deployment-admin", "aifabrix-compliance-admin", "aifabrix-developer", "aifabrix-observer"]
354
+ roles: ["aifabrix-everyone"]
322
355
  description: "Search records"
323
356
 
324
357
  - name: "external-system:discover"
@@ -1,13 +1,39 @@
1
1
  # Keycloak Identity and Access Management with Custom Themes
2
- # This Dockerfile extends Keycloak 26.5.2 with custom themes
2
+ # Official 26.7.2 distro + experimental CIMD. Does not compile Keycloak from source.
3
+ # One class is recompiled against this image's jars:
4
+ # - PR 51235: CIMD parse ignores unknown JSON fields (ChatGPT client.json)
5
+ # - #50362: strip jwt-bearer (and other confidential-only grants) on public CIMD
6
+ # 26.7 advertises token_endpoint_auth_methods_supported "none" for Claude CIMD.
3
7
 
4
- FROM quay.io/keycloak/keycloak:26.5.2
8
+ FROM quay.io/keycloak/keycloak:26.7.2 AS keycloak-base
9
+
10
+ FROM eclipse-temurin:21-jdk-jammy AS cimd-patch
11
+ COPY --from=keycloak-base /opt/keycloak/lib/lib/main /opt/kc-jars/main
12
+ COPY --from=keycloak-base /opt/keycloak/lib/lib/boot /opt/kc-jars/boot
13
+ COPY cimd-lenient-parse/AbstractClientIdMetadataDocumentExecutor.java \
14
+ /tmp/src/org/keycloak/protocol/oauth2/cimd/clientpolicy/executor/AbstractClientIdMetadataDocumentExecutor.java
15
+ RUN mkdir -p /tmp/classes \
16
+ && find /opt/kc-jars -name '*.jar' | paste -sd: - > /tmp/cp.txt \
17
+ && { \
18
+ echo --release; echo 21; echo -cp; cat /tmp/cp.txt; echo -d; echo /tmp/classes; \
19
+ echo /tmp/src/org/keycloak/protocol/oauth2/cimd/clientpolicy/executor/AbstractClientIdMetadataDocumentExecutor.java; \
20
+ } > /tmp/javac.args \
21
+ && javac @/tmp/javac.args \
22
+ && SERVICES_JAR=$(ls /opt/kc-jars/main/org.keycloak.keycloak-services-*.jar) \
23
+ && cp "$SERVICES_JAR" /tmp/keycloak-services-patched.jar \
24
+ && jar uf /tmp/keycloak-services-patched.jar -C /tmp/classes .
25
+
26
+ FROM quay.io/keycloak/keycloak:26.7.2
5
27
 
6
28
  # Set working directory
7
29
  WORKDIR /opt/keycloak
8
30
 
9
31
  # Copy custom themes from share directory (only if themes/ folder exists)
10
32
  USER root
33
+ COPY --from=cimd-patch /tmp/keycloak-services-patched.jar /tmp/keycloak-services-patched.jar
34
+ RUN SERVICES_JAR=$(ls /opt/keycloak/lib/lib/main/org.keycloak.keycloak-services-*.jar) \
35
+ && cp /tmp/keycloak-services-patched.jar "$SERVICES_JAR" \
36
+ && rm /tmp/keycloak-services-patched.jar
11
37
  # Use a shell script approach: copy themes if it exists, otherwise skip
12
38
  # First, copy everything from build context to a staging area
13
39
  COPY . /tmp/build-context/
@@ -24,7 +50,7 @@ RUN if [ -d "/tmp/build-context/themes" ] && [ "$(ls -A /tmp/build-context/theme
24
50
  # Build Keycloak with health checks enabled (similar to Keycloak 24.0)
25
51
  # This enables the /health, /health/live, /health/ready, and /health/started endpoints
26
52
  # Expose health endpoints on main HTTP port (like 24.0) instead of management port
27
- RUN /opt/keycloak/bin/kc.sh build --health-enabled=true --http-management-health-enabled=false
53
+ RUN /opt/keycloak/bin/kc.sh build --health-enabled=true --http-management-health-enabled=false --features=cimd
28
54
 
29
55
  # Switch back to keycloak user
30
56
  USER keycloak
@@ -34,4 +60,4 @@ EXPOSE 8080
34
60
 
35
61
  # Default Keycloak command (can be overridden in docker-compose.yaml)
36
62
  # Health checks are enabled via the build step above
37
- CMD ["start-dev"]
63
+ CMD ["start-dev"]
@@ -4,7 +4,7 @@ app:
4
4
  displayName: 'AI Fabrix Keycloak'
5
5
  description: 'Identity and Access Management'
6
6
  type: webapp
7
- version: '26.5.2'
7
+ version: '26.7.2'
8
8
 
9
9
  # Image Configuration
10
10
  image:
@@ -48,7 +48,7 @@ authentication:
48
48
 
49
49
  # Build Configuration
50
50
  build:
51
- context: .. # Docker build context (relative to builder/)
51
+ context: . # Docker build context: this app dir (CLI copies it to applications-dev-*)
52
52
  dockerfile: builder/Dockerfile # Dockerfile name (empty = use template)
53
53
  containerPort: 8080 # Container port (different from local port)
54
54
  language: typescript # Runtime language for template selection