@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,289 @@
1
+ /**
2
+ * OpenAPI request/result schemas for generic channel install.
3
+ *
4
+ * @fileoverview Default HTTP is help markdown plus phase and userActions
5
+ * @author AI Fabrix Team
6
+ * @version 1.0.0
7
+ */
8
+
9
+ 'use strict';
10
+
11
+ const { frozenObject, schemaRef } = require('./openapi-schema-helpers');
12
+
13
+ /** @type {Record<string, Object>} */
14
+ const OPENAPI_CHANNEL_INSTALL_REQUEST_SCHEMAS = {
15
+ ChannelInstallRequest: frozenObject(
16
+ {
17
+ name: { type: 'string', minLength: 1 },
18
+ systemKey: { type: 'string' },
19
+ configuration: { type: 'object', additionalProperties: { type: 'string' } },
20
+ runtimeSystemKey: { type: 'string' },
21
+ force: { type: 'boolean' },
22
+ probe: { type: 'boolean' },
23
+ dryRun: { type: 'boolean' },
24
+ allowExperimental: { type: 'boolean' },
25
+ onboardUsers: { type: 'boolean' },
26
+ profile: { type: 'string' },
27
+ token: { type: 'string', minLength: 1 }
28
+ },
29
+ ['name']
30
+ ),
31
+ ChannelInstallContinueRequest: frozenObject({
32
+ token: { type: 'string', minLength: 1 },
33
+ retryLogin: { type: 'string' }
34
+ }),
35
+ ChannelPackageRequest: frozenObject({
36
+ name: { type: 'string' },
37
+ description: { type: 'string' },
38
+ baseName: { type: 'string' },
39
+ environment: { type: 'string' },
40
+ dataplaneUrl: { type: 'string', format: 'uri' },
41
+ dryRun: { type: 'boolean' },
42
+ branding: schemaRef('ChannelBrandingFields')
43
+ }),
44
+ ChannelBrandingPatchRequest: frozenObject({
45
+ displayName: { type: 'string' },
46
+ description: { type: 'string' },
47
+ iconColorPath: { type: 'string' },
48
+ iconOutlinePath: { type: 'string' }
49
+ })
50
+ };
51
+
52
+ /** @type {Record<string, Object>} */
53
+ const OPENAPI_CHANNEL_INSTALL_RESULT_SCHEMAS = {
54
+ ChannelProvisioning: frozenObject(
55
+ {
56
+ mode: { type: 'string', enum: ['automatic', 'guided', 'cli'] }
57
+ },
58
+ ['mode']
59
+ ),
60
+ ChannelRuntimeTarget: frozenObject(
61
+ {
62
+ defaultSystemKey: { type: 'string' },
63
+ configurable: { type: 'boolean' },
64
+ systemKey: { type: 'string' }
65
+ },
66
+ ['defaultSystemKey']
67
+ ),
68
+ ChannelInstallationSummary: frozenObject(
69
+ {
70
+ count: { type: 'integer', minimum: 0 },
71
+ statusRollup: { type: 'string' }
72
+ },
73
+ ['count']
74
+ ),
75
+ ChannelInstallationRow: frozenObject(
76
+ {
77
+ key: { type: 'string' },
78
+ displayName: { type: 'string' },
79
+ version: { type: ['string', 'null'] },
80
+ lifecycle: { type: ['string', 'null'] },
81
+ availability: { type: ['string', 'null'] },
82
+ authenticationStatus: { type: ['string', 'null'] },
83
+ connectedSystemKey: { type: 'string' },
84
+ runtimeTarget: { type: 'object', additionalProperties: { type: 'string' } }
85
+ },
86
+ ['key', 'connectedSystemKey']
87
+ ),
88
+ ChannelDefinitionChannel: frozenObject({
89
+ definitionKey: { type: 'string' },
90
+ provisioning: schemaRef('ChannelProvisioning'),
91
+ runtimeTarget: schemaRef('ChannelRuntimeTarget'),
92
+ experimental: { type: 'boolean' },
93
+ status: { type: 'string', enum: ['visible', 'hide', 'coming-soon'] },
94
+ maxInstances: { type: 'integer', minimum: 1 },
95
+ profiles: { type: 'array', items: schemaRef('ChannelTargetProfile') }
96
+ }),
97
+ ChannelDefinitionDetailData: frozenObject(
98
+ {
99
+ key: { type: 'string' },
100
+ displayName: { type: 'string' },
101
+ description: { type: 'string' },
102
+ type: { type: 'string' },
103
+ systemKind: { type: 'string' },
104
+ configuration: { type: 'array', items: { type: 'object' } },
105
+ channel: schemaRef('ChannelDefinitionChannel'),
106
+ cliInstructions: { type: 'string' },
107
+ iconHref: { type: 'string' },
108
+ installations: { type: 'array', items: schemaRef('ChannelInstallationRow') },
109
+ maxInstances: { type: 'integer', minimum: 1 },
110
+ installationCount: { type: 'integer', minimum: 0 },
111
+ canInstall: { type: 'boolean' },
112
+ blockedReason: { type: 'string' },
113
+ status: { type: 'string', enum: ['visible', 'hide', 'coming-soon'] }
114
+ },
115
+ ['key', 'displayName', 'channel', 'installations']
116
+ ),
117
+ ChannelInstallationDetailData: frozenObject(
118
+ {
119
+ definition: {
120
+ type: 'object',
121
+ properties: {
122
+ key: { type: 'string' },
123
+ displayName: { type: 'string' },
124
+ provisioning: schemaRef('ChannelProvisioning')
125
+ },
126
+ additionalProperties: false
127
+ },
128
+ installation: schemaRef('ChannelInstallationRow')
129
+ },
130
+ ['definition', 'installation']
131
+ ),
132
+ ChannelTargetProfile: frozenObject(
133
+ {
134
+ key: { type: 'string' },
135
+ displayLabel: { type: 'string' }
136
+ },
137
+ ['key', 'displayLabel']
138
+ ),
139
+ ChannelTargetRow: frozenObject(
140
+ {
141
+ key: { type: 'string' },
142
+ displayLabel: { type: 'string' },
143
+ description: { type: 'string' },
144
+ experimental: { type: 'boolean' },
145
+ status: { type: 'string', enum: ['visible', 'hide', 'coming-soon'] },
146
+ provisioning: schemaRef('ChannelProvisioning'),
147
+ runtimeTarget: schemaRef('ChannelRuntimeTarget'),
148
+ installationSummary: schemaRef('ChannelInstallationSummary'),
149
+ installations: { type: 'array', items: schemaRef('ChannelInstallationRow') },
150
+ profiles: { type: 'array', items: schemaRef('ChannelTargetProfile') },
151
+ configuration: { type: 'array', items: { type: 'object' } },
152
+ cliInstructions: { type: 'string' },
153
+ iconHref: { type: 'string' },
154
+ maxInstances: { type: 'integer', minimum: 1 },
155
+ installationCount: { type: 'integer', minimum: 0 },
156
+ canInstall: { type: 'boolean' },
157
+ blockedReason: { type: 'string' }
158
+ },
159
+ ['key', 'displayLabel', 'description', 'experimental']
160
+ ),
161
+ ListChannelTargetsData: frozenObject(
162
+ {
163
+ channels: { type: 'array', items: schemaRef('ChannelTargetRow') }
164
+ },
165
+ ['channels']
166
+ ),
167
+ ChannelUserAction: frozenObject(
168
+ {
169
+ id: { type: 'string' },
170
+ kind: { type: 'string' },
171
+ label: { type: 'string' },
172
+ required: { type: 'boolean' },
173
+ resume: { type: 'string' },
174
+ href: { type: 'string' },
175
+ field: { type: 'string' },
176
+ artifactId: { type: 'string' },
177
+ command: { type: 'string' },
178
+ value: { type: 'string' },
179
+ text: { type: 'string' }
180
+ },
181
+ ['id', 'kind', 'label']
182
+ ),
183
+ ChannelInstallVerdict: frozenObject(
184
+ {
185
+ ok: { type: 'boolean' },
186
+ label: { type: 'string' }
187
+ },
188
+ ['ok']
189
+ ),
190
+ ChannelInstallVerdicts: frozenObject({
191
+ runtime: schemaRef('ChannelInstallVerdict'),
192
+ oauth: schemaRef('ChannelInstallVerdict'),
193
+ vendorSession: schemaRef('ChannelInstallVerdict')
194
+ }),
195
+ ChannelInstallHelpData: frozenObject(
196
+ {
197
+ helpMarkdown: { type: 'string' },
198
+ helpMarkdownContentType: { type: 'string', enum: ['text/markdown'] },
199
+ refreshHintSeconds: { type: 'integer', minimum: 1 },
200
+ phase: { type: 'string' },
201
+ userActions: { type: 'array', items: schemaRef('ChannelUserAction') },
202
+ verdicts: schemaRef('ChannelInstallVerdicts'),
203
+ definitionKey: { type: 'string' },
204
+ installationKey: { type: 'string' },
205
+ systemKey: { type: 'string' }
206
+ },
207
+ ['helpMarkdown', 'helpMarkdownContentType', 'phase']
208
+ ),
209
+ AuthPermissionsData: frozenObject(
210
+ {
211
+ permissions: { type: 'array', items: { type: 'string' } }
212
+ },
213
+ ['permissions']
214
+ ),
215
+ ChannelArtifactRow: frozenObject(
216
+ {
217
+ id: { type: 'string' },
218
+ kind: { type: 'string' },
219
+ fileName: { type: 'string' },
220
+ contentType: { type: 'string' },
221
+ href: { type: 'string' }
222
+ },
223
+ ['id', 'href']
224
+ ),
225
+ ListChannelArtifactsData: frozenObject(
226
+ {
227
+ artifacts: { type: 'array', items: schemaRef('ChannelArtifactRow') }
228
+ },
229
+ ['artifacts']
230
+ ),
231
+ ChannelArtifactBytesData: frozenObject(
232
+ {
233
+ fileName: { type: 'string' },
234
+ contentType: { type: 'string' },
235
+ byteLength: { type: 'integer', minimum: 0 }
236
+ },
237
+ ['fileName', 'contentType', 'byteLength']
238
+ ),
239
+ ChannelPackageLinks: frozenObject({
240
+ readme: { type: 'string' },
241
+ zip: { type: ['string', 'null'] }
242
+ }),
243
+ ChannelPackageData: frozenObject(
244
+ {
245
+ channelTarget: { type: 'string' },
246
+ installReady: { type: 'boolean' },
247
+ blocker: { type: ['string', 'null'] },
248
+ artifactHash: { type: 'string' },
249
+ links: schemaRef('ChannelPackageLinks')
250
+ },
251
+ ['channelTarget', 'installReady']
252
+ ),
253
+ ChannelPackageSummaryData: frozenObject(
254
+ {
255
+ channelTarget: { type: 'string' },
256
+ installReady: { type: 'boolean' },
257
+ blocker: { type: ['string', 'null'] },
258
+ links: schemaRef('ChannelPackageLinks')
259
+ },
260
+ ['channelTarget', 'installReady']
261
+ ),
262
+ ChannelPackageZipData: frozenObject(
263
+ {
264
+ fileName: { type: 'string' },
265
+ contentType: { type: 'string' },
266
+ byteLength: { type: 'integer', minimum: 0 },
267
+ zipBase64: { type: 'string' }
268
+ },
269
+ ['fileName', 'contentType', 'byteLength', 'zipBase64']
270
+ ),
271
+ ChannelBrandingFields: frozenObject({
272
+ displayName: { type: 'string' },
273
+ description: { type: 'string' },
274
+ iconColorPath: { type: 'string' },
275
+ iconOutlinePath: { type: 'string' }
276
+ }),
277
+ ChannelBrandingData: frozenObject(
278
+ {
279
+ systemKey: { type: 'string' },
280
+ branding: schemaRef('ChannelBrandingFields')
281
+ },
282
+ ['systemKey', 'branding']
283
+ )
284
+ };
285
+
286
+ module.exports = {
287
+ OPENAPI_CHANNEL_INSTALL_REQUEST_SCHEMAS,
288
+ OPENAPI_CHANNEL_INSTALL_RESULT_SCHEMAS
289
+ };
@@ -22,6 +22,10 @@ const {
22
22
  OPENAPI_EVIDENCE_RESULT_SCHEMAS
23
23
  } = require('./openapi-evidence-schemas');
24
24
  const { OPENAPI_HELP_RESULT_SCHEMAS } = require('./openapi-help-schemas');
25
+ const {
26
+ OPENAPI_CHANNEL_INSTALL_REQUEST_SCHEMAS,
27
+ OPENAPI_CHANNEL_INSTALL_RESULT_SCHEMAS
28
+ } = require('./openapi-channel-install-schemas');
25
29
 
26
30
  const RESPONSE_ENVELOPES = [
27
31
  ['ListSystemsResponse', 'ListSystemsData'],
@@ -36,6 +40,7 @@ const RESPONSE_ENVELOPES = [
36
40
  ['PreviewUploadResponse', 'PreviewUploadData'],
37
41
  ['UploadResultResponse', 'UploadResultData'],
38
42
  ['DeployResultResponse', 'DeployResultData'],
43
+ ['DownloadResultResponse', 'DownloadResultData'],
39
44
  ['ProtectionUploadResponse', 'ProtectionUploadData'],
40
45
  ['ProtectionCreateResponse', 'ProtectionCreateData'],
41
46
  ['TestResultResponse', 'TestResultData'],
@@ -55,7 +60,18 @@ const RESPONSE_ENVELOPES = [
55
60
  ['EvidenceDownloadResponse', 'EvidenceDownloadData'],
56
61
  ['EvidenceUploadResponse', 'EvidenceUploadData'],
57
62
  ['EvidenceActivateResponse', 'EvidenceActivateData'],
58
- ['BuilderHelpResponse', 'BuilderHelpData']
63
+ ['BuilderHelpResponse', 'BuilderHelpData'],
64
+ ['ListChannelTargetsResponse', 'ListChannelTargetsData'],
65
+ ['ChannelDefinitionDetailResponse', 'ChannelDefinitionDetailData'],
66
+ ['ChannelInstallationDetailResponse', 'ChannelInstallationDetailData'],
67
+ ['ChannelInstallHelpResponse', 'ChannelInstallHelpData'],
68
+ ['ListChannelArtifactsResponse', 'ListChannelArtifactsData'],
69
+ ['ChannelArtifactBytesResponse', 'ChannelArtifactBytesData'],
70
+ ['ChannelPackageResponse', 'ChannelPackageData'],
71
+ ['ChannelPackageSummaryResponse', 'ChannelPackageSummaryData'],
72
+ ['ChannelPackageZipResponse', 'ChannelPackageZipData'],
73
+ ['ChannelBrandingResponse', 'ChannelBrandingData'],
74
+ ['AuthPermissionsResponse', 'AuthPermissionsData']
59
75
  ];
60
76
 
61
77
  /**
@@ -70,11 +86,13 @@ function buildOpenApiComponentSchemas() {
70
86
  ...OPENAPI_REQUEST_SCHEMAS,
71
87
  ...OPENAPI_MANIFEST_REQUEST_SCHEMAS,
72
88
  ...OPENAPI_EVIDENCE_REQUEST_SCHEMAS,
89
+ ...OPENAPI_CHANNEL_INSTALL_REQUEST_SCHEMAS,
73
90
  ...OPENAPI_RESULT_SCHEMAS,
74
91
  ...OPENAPI_APPLY_RESULT_SCHEMAS,
75
92
  ...OPENAPI_MANIFEST_RESULT_SCHEMAS,
76
93
  ...OPENAPI_EVIDENCE_RESULT_SCHEMAS,
77
94
  ...OPENAPI_HELP_RESULT_SCHEMAS,
95
+ ...OPENAPI_CHANNEL_INSTALL_RESULT_SCHEMAS,
78
96
  EmptyResultData: { type: 'object', properties: {}, additionalProperties: false },
79
97
  ...envelopes
80
98
  });
@@ -15,6 +15,7 @@ const { MANIFEST_SCHEMA_DESCRIPTIONS } = require('./openapi-schema-descriptions-
15
15
  const { MCP_SCHEMA_DESCRIPTIONS } = require('./openapi-schema-descriptions-mcp');
16
16
  const { HELP_SCHEMA_DESCRIPTIONS } = require('./openapi-schema-descriptions-help');
17
17
  const { EVIDENCE_SCHEMA_DESCRIPTIONS } = require('./openapi-schema-descriptions-evidence');
18
+ const { CHANNEL_INSTALL_SCHEMA_DESCRIPTIONS } = require('./openapi-schema-descriptions-channel');
18
19
 
19
20
  /** @type {Record<string, Object>} */
20
21
  const MERGED_SCHEMA_DESCRIPTIONS = {
@@ -24,7 +25,8 @@ const MERGED_SCHEMA_DESCRIPTIONS = {
24
25
  ...MANIFEST_SCHEMA_DESCRIPTIONS,
25
26
  ...MCP_SCHEMA_DESCRIPTIONS,
26
27
  ...HELP_SCHEMA_DESCRIPTIONS,
27
- ...EVIDENCE_SCHEMA_DESCRIPTIONS
28
+ ...EVIDENCE_SCHEMA_DESCRIPTIONS,
29
+ ...CHANNEL_INSTALL_SCHEMA_DESCRIPTIONS
28
30
  };
29
31
 
30
32
  /**
@@ -140,6 +140,12 @@ const OPERATION_DESCRIPTIONS = Object.freeze({
140
140
  'Controller deploy for external systems (CLI aifabrix deploy parity). Optional body.gate matches CLI --gate (operations,trust,governance,full). Certificate seal is a platform side-effect of published Deploy — not a separate certificates issue call. Mutating; use Idempotency-Key.',
141
141
  tags: ['apply']
142
142
  },
143
+ runDownload: {
144
+ summary: 'Download system package into the workspace',
145
+ description:
146
+ 'Fetch the published system from Dataplane into the workspace (CLI aifabrix download parity). Role Assistant packages also pull Evidence, Knowledge, and tests. Mutating; use Idempotency-Key.',
147
+ tags: ['workspace']
148
+ },
143
149
  runProtectionUpload: {
144
150
  summary: 'Upload protection manifest for a datasource',
145
151
  description:
@@ -198,7 +204,8 @@ const OPERATION_DESCRIPTIONS = Object.freeze({
198
204
  },
199
205
  health: {
200
206
  summary: 'Liveness probe',
201
- description: 'Returns ok when the builder-api process is running. No authentication.',
207
+ description:
208
+ 'Returns ok when the builder-api process is running. Portal availability probe. Empty channel catalog is not a down signal. No authentication.',
202
209
  tags: ['infra']
203
210
  },
204
211
  ready: {
@@ -239,12 +246,13 @@ const OPERATION_DESCRIPTIONS = Object.freeze({
239
246
  buildChannelPackage: {
240
247
  summary: 'Build channel package',
241
248
  description:
242
- 'Build vendor channel package from External AI Discovery plus optional workspace branding. Returns summary, README/ZIP links, and installReady. Mutating.',
249
+ 'Build vendor channel package from External AI Discovery plus optional workspace branding. Returns summary, README/ZIP links, and installReady (package-import readiness, not channel-installed). Mutating.',
243
250
  tags: ['channel']
244
251
  },
245
252
  getChannelPackageSummary: {
246
253
  summary: 'Get channel package summary',
247
- description: 'Return last built channel package summary and README/ZIP links. Read-only.',
254
+ description:
255
+ 'Return last built channel package summary and README/ZIP links. installReady is package-import readiness, not channel-installed. Read-only.',
248
256
  tags: ['channel']
249
257
  },
250
258
  getChannelPackageZip: {
@@ -263,6 +271,75 @@ const OPERATION_DESCRIPTIONS = Object.freeze({
263
271
  description:
264
272
  'Update optional package branding overrides stored in the Builder API workspace. Mutating.',
265
273
  tags: ['channel']
274
+ },
275
+ listChannelTargets: {
276
+ summary: 'List live channel definitions',
277
+ description:
278
+ 'List live Channel Definitions. Each row has key, displayLabel, description, experimental, status, provisioning, runtimeTarget, installationSummary, installationCount, and canInstall. Optional maxInstances and blockedReason when capped or coming-soon. hide definitions are omitted. Catalog is information-only; publishing uses POST install. Read-only.',
279
+ tags: ['infra']
280
+ },
281
+ getChannelDefinitionDetail: {
282
+ summary: 'Get a Channel Definition',
283
+ description:
284
+ 'Return a safe Channel Definition (identity, configuration, provisioning, runtimeTarget, profiles, optional maxInstances, status) plus installations projected from Dataplane Connected Systems. Includes canInstall. Unknown or hide definition keys return 404. Known definitions with no instances return installations []. Read-only.',
285
+ tags: ['infra']
286
+ },
287
+ getChannelInstallation: {
288
+ summary: 'Get a Channel installation',
289
+ description:
290
+ 'Return one Channel installation projected from a Dataplane Connected System. 404 only when that instance does not exist for the definition. Read-only.',
291
+ tags: ['infra']
292
+ },
293
+ runChannelInstall: {
294
+ summary: 'Install a channel',
295
+ description:
296
+ 'Scaffold, upload, and configure a channel from a Channel Definition. Path systemKey is the definition key. Body name is required; optional systemKey is the Connected System instance key; configuration is a generic propertyKey map. hide and coming-soon definitions return 403; --force does not override. Returns help markdown plus phase, safe userActions, definitionKey, installationKey, and systemKey (the instance). Mutating.',
297
+ tags: ['infra']
298
+ },
299
+ getChannelInstall: {
300
+ summary: 'Get channel install help',
301
+ description:
302
+ 'Return install help markdown plus phase and safe userActions for this path systemKey. Help is generated from the current envelope on each GET. The definition key returns the last install session (continue). An instance key returns that installation’s help, from its session or generated from the instance package. verbose=true returns the full machine envelope. Read-only.',
303
+ tags: ['infra']
304
+ },
305
+ getChannelInstallHelp: {
306
+ summary: 'Download channel install help.md',
307
+ description: 'Return the current install help document as text/markdown. Human-only; no userActions. Read-only.',
308
+ tags: ['infra']
309
+ },
310
+ continueChannelInstall: {
311
+ summary: 'Continue channel install',
312
+ description:
313
+ 'Resume install after the human follows the help document. Path systemKey may be the catalog definition key or the Connected System instance key. Empty body is valid and continues Microsoft device-code login without issuing a new code. Optional token is used once and not stored. retryLogin=true restarts vendor login and issues a new handshake. Returns the same default HTTP as POST install (help markdown, phase, safe userActions). Mutating.',
314
+ tags: ['infra']
315
+ },
316
+ listChannelArtifacts: {
317
+ summary: 'List channel install artifacts',
318
+ description: 'List downloadable files linked from the install help document. Read-only.',
319
+ tags: ['infra']
320
+ },
321
+ getChannelArtifact: {
322
+ summary: 'Download a channel install artifact',
323
+ description: 'Return artifact bytes (ZIP as application/zip). Read-only.',
324
+ tags: ['infra']
325
+ },
326
+ getChannelCallback: {
327
+ summary: 'Resume channel install from vendor redirect',
328
+ description:
329
+ 'Vendor callback (GET). Stores access through existing credentials. Never echoes tokens. Mutating.',
330
+ tags: ['infra']
331
+ },
332
+ postChannelCallback: {
333
+ summary: 'Resume channel install from vendor POST',
334
+ description:
335
+ 'Vendor callback (POST). Stores access through existing credentials. Never echoes tokens. Mutating.',
336
+ tags: ['infra']
337
+ },
338
+ getAuthPermissions: {
339
+ summary: 'Read current-user permissions',
340
+ description:
341
+ 'Thin forward of the controller current-user permissions list. Used to preflight Integration Client installs. Read-only.',
342
+ tags: ['infra']
266
343
  }
267
344
  });
268
345
 
@@ -8,6 +8,8 @@
8
8
 
9
9
  'use strict';
10
10
 
11
+ const { CHATGPT_APPS_CREATE_URL } = require('../channels/chatgpt-runtime-contract');
12
+
11
13
  const SAMPLE_SYSTEM_KEY = 'hubspot-demo';
12
14
  const SAMPLE_DATASOURCE_KEY = 'hubspot-demo-companies';
13
15
  const SAMPLE_UUID = '00000000-0000-4000-8000-000000000010';
@@ -139,6 +141,11 @@ const OPENAPI_ENVELOPE_DATA_EXAMPLES = {
139
141
  environment: 'dev',
140
142
  systemKey: SAMPLE_SYSTEM_KEY
141
143
  },
144
+ DownloadResultData: {
145
+ downloaded: true,
146
+ dryRun: false,
147
+ systemKey: SAMPLE_SYSTEM_KEY
148
+ },
142
149
  ProtectionUploadData: {
143
150
  datasourceKey: SAMPLE_DATASOURCE_KEY,
144
151
  uploaded: true,
@@ -272,6 +279,123 @@ const OPENAPI_ENVELOPE_DATA_EXAMPLES = {
272
279
  activated: [],
273
280
  failed: [],
274
281
  success: true
282
+ },
283
+ ListChannelTargetsData: {
284
+ channels: [
285
+ {
286
+ key: 'chatgpt',
287
+ displayLabel: 'ChatGPT',
288
+ description: 'ChatGPT channel',
289
+ experimental: false,
290
+ status: 'visible',
291
+ provisioning: { mode: 'guided' },
292
+ runtimeTarget: { defaultSystemKey: 'runtime-orchestration', configurable: true },
293
+ installationSummary: { count: 0, statusRollup: 'none' },
294
+ installations: [],
295
+ configuration: [
296
+ {
297
+ name: 'CHANNEL_APP_DESCRIPTION',
298
+ propertyKey: 'appDescription',
299
+ location: 'variable',
300
+ required: false,
301
+ portalInput: { field: 'text', label: 'Description' }
302
+ }
303
+ ]
304
+ }
305
+ ]
306
+ },
307
+ ChannelDefinitionDetailData: {
308
+ key: 'slack',
309
+ displayName: 'Slack communication channel',
310
+ description: 'Slack channel',
311
+ type: 'custom',
312
+ systemKind: 'communication',
313
+ configuration: [],
314
+ channel: {
315
+ definitionKey: 'slack',
316
+ provisioning: { mode: 'guided' },
317
+ runtimeTarget: { defaultSystemKey: 'runtime-orchestration', configurable: true },
318
+ experimental: false,
319
+ status: 'visible',
320
+ profiles: []
321
+ },
322
+ installations: []
323
+ },
324
+ ChannelInstallationDetailData: {
325
+ definition: {
326
+ key: 'slack',
327
+ displayName: 'Slack',
328
+ provisioning: { mode: 'guided' }
329
+ },
330
+ installation: {
331
+ key: 'slack-finance',
332
+ displayName: 'Finance',
333
+ version: '1.0.0',
334
+ lifecycle: 'published',
335
+ availability: 'available',
336
+ authenticationStatus: 'online',
337
+ connectedSystemKey: 'slack-finance',
338
+ runtimeTarget: { systemKey: 'runtime-orchestration' }
339
+ }
340
+ },
341
+ ChannelInstallHelpData: {
342
+ helpMarkdown: '# Onni — ChatGPT\n\nStatus: Ready\n',
343
+ helpMarkdownContentType: 'text/markdown',
344
+ phase: 'waitingForUser',
345
+ userActions: [
346
+ {
347
+ id: 'open-vendor',
348
+ kind: 'openUrl',
349
+ label: 'Open ChatGPT apps',
350
+ required: true,
351
+ href: CHATGPT_APPS_CREATE_URL
352
+ }
353
+ ],
354
+ definitionKey: 'chatgpt',
355
+ installationKey: 'chatgpt-onni',
356
+ systemKey: 'chatgpt-onni'
357
+ },
358
+ AuthPermissionsData: {
359
+ permissions: ['integration-client:read', 'integration-client:create']
360
+ },
361
+ ListChannelArtifactsData: {
362
+ artifacts: [
363
+ {
364
+ id: 'appPackage',
365
+ kind: 'zip',
366
+ fileName: 'appPackage.dev.zip',
367
+ contentType: 'application/zip',
368
+ href: '/api/v1/builder/systems/microsoft-copilot/channels/artifacts/appPackage'
369
+ }
370
+ ]
371
+ },
372
+ ChannelArtifactBytesData: {
373
+ fileName: 'appPackage.dev.zip',
374
+ contentType: 'application/zip',
375
+ byteLength: 128
376
+ },
377
+ ChannelPackageData: {
378
+ channelTarget: 'microsoft-copilot',
379
+ installReady: false,
380
+ blocker: 'discoveryUnavailable',
381
+ artifactHash: 'sha256:demo',
382
+ links: { readme: 'dist/channels/microsoft-copilot/INSTALL.md', zip: null }
383
+ },
384
+ ChannelPackageSummaryData: {
385
+ channelTarget: 'microsoft-copilot',
386
+ installReady: false,
387
+ blocker: 'discoveryUnavailable',
388
+ links: { readme: 'dist/channels/microsoft-copilot/INSTALL.md', zip: null }
389
+ },
390
+ ChannelPackageZipData: {
391
+ fileName: 'appPackage.dev.zip',
392
+ contentType: 'application/zip',
393
+ byteLength: 128,
394
+ zipBase64: 'UEsDBBQAAAA='
395
+ },
396
+ ChannelBrandingData: {
397
+ systemKey: 'microsoft-copilot',
398
+ branding: { displayName: 'Acme Copilot', description: 'Preview' }
275
399
  }
276
400
  };
277
401
 
@@ -8,6 +8,8 @@
8
8
 
9
9
  'use strict';
10
10
 
11
+ const { CHANNEL_INSTALL_BINDINGS } = require('./openapi-channel-install-bindings');
12
+
11
13
  const SYSTEM_KEY_PARAM = {
12
14
  name: 'systemKey',
13
15
  in: 'path',
@@ -231,6 +233,11 @@ const OPERATION_BINDINGS = Object.freeze({
231
233
  requestBody: jsonRequestBody('DeployRequest'),
232
234
  successResponse: 'DeployResultResponse'
233
235
  },
236
+ runDownload: {
237
+ parameters: [SYSTEM_KEY_PARAM],
238
+ requestBody: jsonRequestBody('DownloadRequest'),
239
+ successResponse: 'DownloadResultResponse'
240
+ },
234
241
  runProtectionUpload: {
235
242
  parameters: [SYSTEM_KEY_PARAM, DATASOURCE_KEY_PARAM],
236
243
  requestBody: jsonRequestBody('ProtectionUploadRequest'),
@@ -400,7 +407,8 @@ const OPERATION_BINDINGS = Object.freeze({
400
407
  parameters: [ROLE_KEY_PARAM],
401
408
  requestBody: jsonRequestBody('EvidenceActivateRequest'),
402
409
  successResponse: 'EvidenceActivateResponse'
403
- }
410
+ },
411
+ ...CHANNEL_INSTALL_BINDINGS
404
412
  });
405
413
 
406
414
  /**
@@ -147,6 +147,11 @@ const OPENAPI_REQUEST_SCHEMAS = {
147
147
  sync: { type: 'boolean' },
148
148
  verbose: { type: 'boolean' }
149
149
  }),
150
+ DownloadRequest: frozenObject({
151
+ force: { type: 'boolean' },
152
+ dryRun: { type: 'boolean' },
153
+ format: { type: 'string', enum: ['json', 'yaml'] }
154
+ }),
150
155
  ProtectionUploadRequest: frozenObject({
151
156
  dryRun: { type: 'boolean' },
152
157
  sync: { type: 'boolean' },