@aifabrix/builder 2.51.0 → 2.52.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 (198) hide show
  1. package/jest.isolated-projects.js +77 -1
  2. package/jest.projects.js +5 -426
  3. package/lib/api/assistants.api.js +67 -0
  4. package/lib/api/datasources-extended.api.js +6 -6
  5. package/lib/api/evidence-authoring-helpers.js +267 -0
  6. package/lib/api/evidence-authoring.api.js +337 -0
  7. package/lib/api/evidence.api.js +57 -1
  8. package/lib/api/index.js +24 -7
  9. package/lib/api/pipeline.api.js +43 -3
  10. package/lib/api/records-bulk.api.js +28 -3
  11. package/lib/api/types/evidence.types.js +156 -8
  12. package/lib/api/work.api.js +283 -0
  13. package/lib/app/run-container-start.js +4 -0
  14. package/lib/app/run-deploy-job.js +216 -0
  15. package/lib/app/run-env-compose.js +32 -0
  16. package/lib/app/run-env-recovery.js +35 -0
  17. package/lib/app/run-helpers.js +15 -9
  18. package/lib/app/run.js +18 -2
  19. package/lib/channels/add-channel.js +54 -23
  20. package/lib/channels/approval-guides/chatgpt.js +13 -9
  21. package/lib/channels/approval-guides/microsoft-copilot.js +7 -8
  22. package/lib/channels/channel-artifact-generator.js +14 -2
  23. package/lib/channels/channel-credential.js +3 -1
  24. package/lib/channels/channel-probe-evidence.js +79 -0
  25. package/lib/channels/channel-probe.js +265 -13
  26. package/lib/channels/channel-runtime-resolver.js +120 -29
  27. package/lib/channels/channel-status-display.js +44 -0
  28. package/lib/channels/channel-targets.js +25 -1
  29. package/lib/channels/chatgpt-runtime-contract.js +29 -0
  30. package/lib/channels/microsoft-copilot-package.js +280 -0
  31. package/lib/channels/runtime-tool-catalog.js +165 -0
  32. package/lib/cli/index.js +2 -0
  33. package/lib/cli/infra-guided-footers.js +1 -1
  34. package/lib/cli/infra-guided-public-url-warn.js +55 -0
  35. package/lib/cli/infra-guided.js +65 -56
  36. package/lib/cli/setup-app.help.js +4 -0
  37. package/lib/cli/setup-app.js +4 -0
  38. package/lib/cli/setup-app.test-commands.js +59 -28
  39. package/lib/cli/setup-external-system-help.js +8 -2
  40. package/lib/cli/setup-external-system.js +62 -12
  41. package/lib/commands/app-test.js +2 -14
  42. package/lib/commands/channel-add-setup.js +8 -2
  43. package/lib/commands/channel.js +16 -5
  44. package/lib/commands/datasource-load-export-cli.js +6 -1
  45. package/lib/commands/deploy-gate-failure-details.js +19 -17
  46. package/lib/commands/deploy-gate-orchestrator.js +3 -2
  47. package/lib/commands/dev-down.js +2 -6
  48. package/lib/commands/evidence-kind.js +65 -15
  49. package/lib/commands/governance-generate-external.js +56 -21
  50. package/lib/commands/governance-verify-external.js +2 -5
  51. package/lib/commands/lifecycle-external.js +21 -8
  52. package/lib/commands/repair-datasource-apply.js +10 -1
  53. package/lib/commands/repair-datasource-run.js +4 -2
  54. package/lib/commands/repair-datasource-test-payload.js +80 -19
  55. package/lib/commands/repair-datasource-webhooks-sync-bridge.js +42 -3
  56. package/lib/commands/repair-internal.js +9 -1
  57. package/lib/commands/repair-openapi-sync.js +34 -17
  58. package/lib/commands/role-assistant.js +371 -0
  59. package/lib/commands/test-governance-external.js +2 -5
  60. package/lib/commands/up-miso.js +61 -24
  61. package/lib/commands/upload-data-sync-finalize.js +25 -7
  62. package/lib/commands/upload-sidecar-followups.js +144 -47
  63. package/lib/commands/upload.js +43 -6
  64. package/lib/commands/verify-governance-combined-external.js +73 -9
  65. package/lib/commands/verify-governance-db.js +80 -25
  66. package/lib/commands/verify-governance-external.js +31 -10
  67. package/lib/commands/verify-operations-external.js +2 -5
  68. package/lib/commands/verify-operations-step-plan.js +31 -0
  69. package/lib/commands/verify-trust-command-action.js +2 -5
  70. package/lib/commands/wizard-core-helpers.js +7 -3
  71. package/lib/commands/wizard-core.js +78 -9
  72. package/lib/datasource/bulk-loader-run-batches.js +4 -2
  73. package/lib/datasource/bulk-loader-service.js +5 -1
  74. package/lib/datasource/datasource-identifier.js +4 -3
  75. package/lib/datasource/datasource-validate-summary.js +2 -2
  76. package/lib/datasource/integration-context.js +3 -3
  77. package/lib/datasource/resolve-app.js +90 -8
  78. package/lib/datasource/test-e2e.js +2 -2
  79. package/lib/datasource/unified-validation-run-body.js +15 -1
  80. package/lib/datasource/unified-validation-run-resolve.js +2 -2
  81. package/lib/datasource/validate.js +13 -6
  82. package/lib/external-system/deploy-helpers.js +39 -1
  83. package/lib/external-system/deploy.js +25 -11
  84. package/lib/external-system/download-helpers.js +111 -2
  85. package/lib/external-system/download-role-assistant.js +55 -0
  86. package/lib/external-system/download.js +45 -26
  87. package/lib/external-system/test-helpers.js +1 -1
  88. package/lib/external-system/test-system-level.js +21 -3
  89. package/lib/external-system/test.js +43 -7
  90. package/lib/generator/builders.js +12 -15
  91. package/lib/generator/wizard.js +51 -4
  92. package/lib/lifecycle/access-control-abac.js +121 -0
  93. package/lib/lifecycle/lifecycle-governance-options.js +4 -1
  94. package/lib/lifecycle/product-model.js +3 -2
  95. package/lib/lifecycle/report-display.js +14 -2
  96. package/lib/programmatic/capability-registry.js +20 -1
  97. package/lib/programmatic/command-options.js +1 -0
  98. package/lib/programmatic/index.js +4 -0
  99. package/lib/programmatic/manifest-patch-section.js +48 -9
  100. package/lib/programmatic/manifest-section-registry-data.js +3 -2
  101. package/lib/programmatic/openapi-apply-result-schemas.js +44 -0
  102. package/lib/programmatic/openapi-component-schemas.js +16 -1
  103. package/lib/programmatic/openapi-description-enricher.js +3 -1
  104. package/lib/programmatic/openapi-descriptions.js +55 -5
  105. package/lib/programmatic/openapi-evidence-schemas.js +161 -0
  106. package/lib/programmatic/openapi-manifest-schemas.js +6 -2
  107. package/lib/programmatic/openapi-operation-bindings.js +99 -0
  108. package/lib/programmatic/openapi-request-schemas.js +36 -1
  109. package/lib/programmatic/openapi-result-schemas.js +1 -1
  110. package/lib/programmatic/openapi-schema-descriptions-certify.js +5 -1
  111. package/lib/programmatic/openapi-schema-descriptions-core.js +1 -1
  112. package/lib/programmatic/openapi-schema-descriptions-evidence.js +156 -0
  113. package/lib/programmatic/openapi-schema-descriptions-manifest.js +4 -3
  114. package/lib/programmatic/openapi-schema-descriptions-operations.js +70 -0
  115. package/lib/programmatic/openapi-spec.js +47 -28
  116. package/lib/programmatic/orchestration-openapi-meta.js +5 -0
  117. package/lib/programmatic/request-timeout.js +3 -0
  118. package/lib/programmatic/route-handler-map.js +89 -2
  119. package/lib/programmatic/run-certify.js +15 -2
  120. package/lib/programmatic/run-deploy.js +74 -0
  121. package/lib/programmatic/run-evidence-authoring.js +80 -0
  122. package/lib/programmatic/run-protection.js +124 -0
  123. package/lib/programmatic/run-template-workspace.js +28 -1
  124. package/lib/programmatic/workspace-context.js +6 -0
  125. package/lib/protection/auth-context.js +48 -6
  126. package/lib/protection/paths.js +22 -0
  127. package/lib/protection/run-protection-create-helpers.js +22 -1
  128. package/lib/protection/run-protection-create.js +1 -1
  129. package/lib/protection/sync-after-upload.js +1 -1
  130. package/lib/role-assistant/evidence-sync.js +450 -0
  131. package/lib/role-assistant/github-workflow.js +96 -0
  132. package/lib/role-assistant/knowledge-markdown-frontmatter.js +75 -0
  133. package/lib/role-assistant/knowledge-sync.js +485 -0
  134. package/lib/role-assistant/settings.js +126 -0
  135. package/lib/role-assistant/test-cases-evaluate.js +170 -0
  136. package/lib/role-assistant/test-cases-honesty.js +184 -0
  137. package/lib/role-assistant/test-cases.js +364 -0
  138. package/lib/role-assistant/test-runner-workhub-answers.js +221 -0
  139. package/lib/role-assistant/test-runner-workhub.js +399 -0
  140. package/lib/role-assistant/test-runner.js +500 -0
  141. package/lib/schema/application-schema.json +24 -28
  142. package/lib/schema/deployment-rules.yaml +1 -0
  143. package/lib/schema/external-datasource.schema.json +38 -4
  144. package/lib/schema/external-system.schema.json +4 -4
  145. package/lib/schema/role-assistant-settings.schema.json +108 -0
  146. package/lib/utils/api.js +52 -27
  147. package/lib/utils/app-path-resolve.js +72 -24
  148. package/lib/utils/authentication-shape.js +3 -1
  149. package/lib/utils/certify-external-workspace.js +40 -0
  150. package/lib/utils/deployment-validation.js +28 -3
  151. package/lib/utils/docker-run-ephemeral.js +115 -0
  152. package/lib/utils/enterprise-knowledge-paths.js +29 -12
  153. package/lib/utils/env-copy-keycloak.js +196 -0
  154. package/lib/utils/env-copy.js +34 -1
  155. package/lib/utils/external-system-readiness-compact-display.js +3 -0
  156. package/lib/utils/health-check-public-warn.js +31 -13
  157. package/lib/utils/health-check.js +11 -1
  158. package/lib/utils/help-builder.js +1 -0
  159. package/lib/utils/paths.js +80 -38
  160. package/lib/utils/pipeline-upload-auth-retry.js +15 -3
  161. package/lib/utils/role-assistant-paths.js +160 -0
  162. package/lib/utils/schema-loader.js +41 -0
  163. package/lib/utils/schema-resolver.js +36 -4
  164. package/lib/utils/token-manager.js +38 -29
  165. package/lib/utils/upload-sync-options.js +7 -4
  166. package/lib/utils/url-declarative-resolve-load-doc.js +38 -1
  167. package/lib/validation/external-manifest-validator.js +31 -8
  168. package/lib/validation/reserved-system-key-prefixes.js +56 -0
  169. package/lib/validation/validate-external-file.js +8 -1
  170. package/lib/validation/validate.js +54 -19
  171. package/package.json +2 -1
  172. package/scripts/export-builder-api-evidence.js +1 -1
  173. package/templates/applications/builder-api/application.yaml +3 -3
  174. package/templates/applications/dataplane/application.yaml +24 -17
  175. package/templates/applications/dataplane/env.template +2 -2
  176. package/templates/applications/dataplane/rbac.yaml +24 -10
  177. package/templates/applications/keycloak/application.yaml +2 -2
  178. package/templates/applications/keycloak/env.template +5 -2
  179. package/templates/applications/miso-controller/application.yaml +3 -3
  180. package/templates/applications/miso-controller/env.template +17 -2
  181. package/templates/channels/chatgpt/install.template.md.hbs +82 -26
  182. package/templates/channels/chatgpt/integration/README.md +11 -7
  183. package/templates/channels/chatgpt/integration/application.json +2 -2
  184. package/templates/channels/chatgpt/integration/chatgpt-system.json +3 -3
  185. package/templates/channels/chatgpt/integration/env.template +1 -1
  186. package/templates/channels/chatgpt/manifest.template.json.hbs +36 -5
  187. package/templates/channels/microsoft-copilot/ai-plugin.template.json.hbs +28 -0
  188. package/templates/channels/microsoft-copilot/declarative-agent.template.json.hbs +22 -0
  189. package/templates/channels/microsoft-copilot/install.template.md.hbs +32 -22
  190. package/templates/channels/microsoft-copilot/integration/README.md +9 -7
  191. package/templates/channels/microsoft-copilot/integration/application.json +2 -2
  192. package/templates/channels/microsoft-copilot/integration/env.template +1 -1
  193. package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +7 -6
  194. package/templates/channels/microsoft-copilot/manifest.template.json.hbs +34 -6
  195. package/templates/channels/slack/install.template.md.hbs +6 -1
  196. package/templates/python/docker-compose.hbs +10 -0
  197. package/templates/typescript/docker-compose.hbs +10 -0
  198. /package/.cursor/plans/{157.1-security-quality-violations-by-type.csv → Done/157.1-security-quality-violations-by-type.csv} +0 -0
@@ -1,9 +1,40 @@
1
1
  {
2
+ "channelTarget": "{{channelTarget}}",
2
3
  "name": "{{appName}}",
4
+ "baseName": "{{baseName}}",
3
5
  "description": "{{appDescription}}",
4
- "credentialKey": "{{credentialKey}}",
5
- "openapiUrl": "{{openapiUrl}}",
6
- "mcpUrl": "{{mcpUrl}}",
7
- "actionsBaseUrl": "{{actionsBaseUrl}}",
8
- "assistantCatalogUrl": "{{assistantCatalogUrl}}"
6
+ "environment": "{{environment}}",
7
+ "runtime": {
8
+ "runtimeSystemKey": "{{runtimeSystemKey}}",
9
+ "remoteMcpUrl": "{{{mcpUrl}}}",
10
+ "transport": "{{runtimeTransport}}",
11
+ "assistantCatalogUrl": "{{{assistantCatalogUrl}}}",
12
+ "roleAssistantResolution": "dynamic-runtime",
13
+ "layerBToolNames": [
14
+ {{#each layerBToolNames}}
15
+ "{{this}}"{{#unless @last}},{{/unless}}
16
+ {{/each}}
17
+ ]
18
+ },
19
+ "authentication": {
20
+ "mode": "{{runtimeAuthMode}}",
21
+ "credentialKey": "{{credentialKey}}",
22
+ "credentialPortalUrl": "{{{credentialPortalUrl}}}",
23
+ "scopes": {{{scopesJson}}}
24
+ },
25
+ "boundaries": {
26
+ "oneConnectionSupportsManyRoleAssistants": true,
27
+ "topLevelEvidenceToolsExposed": false,
28
+ "runtimeOwnsWorkInterface": true,
29
+ "evidenceCapabilityPath": "ChatGPT -> runtime-orchestration -> Business Transformation Assistant -> internal evidence capabilities"
30
+ },
31
+ "lifecycle": {
32
+ "locallyValidated": true,
33
+ "runtimeValidated": false,
34
+ "requiresChatGptWorkspaceAdmin": true
35
+ },
36
+ "artifact": {
37
+ "format": "chatgpt-custom-mcp-app",
38
+ "version": "1.0.0"
39
+ }
9
40
  }
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/copilot/plugin/v2.4/schema.json",
3
+ "schema_version": "v2.4",
4
+ "name_for_human": "{{appName}}",
5
+ "name_for_model": "aifabrix_runtime_orchestration",
6
+ "description_for_human": "{{appDescription}}",
7
+ "description_for_model": "Runtime orchestration tools for governed enterprise work.",
8
+ "runtimes": [
9
+ {
10
+ "type": "RemoteMCPServer",
11
+ "spec": {
12
+ "url": "{{mcpUrl}}"
13
+ },
14
+ "auth": {
15
+ "type": "oauth",
16
+ "scopes": {{{scopesJson}}}
17
+ }
18
+ }
19
+ ],
20
+ "mcp_tool_description": {
21
+ "mode": "dynamic",
22
+ "layerBToolNames": [
23
+ {{#each layerBToolNames}}
24
+ "{{this}}"{{#unless @last}},{{/unless}}
25
+ {{/each}}
26
+ ]
27
+ }
28
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "id": "{{packageAppId}}-agent",
3
+ "name": "{{appName}}",
4
+ "description": "{{appDescription}}",
5
+ "instructions": "Use Runtime Layer B tools only. Resolve Role Assistants dynamically and keep business reasoning inside authorized Role Assistant boundaries.",
6
+ "conversation_starters": [
7
+ {
8
+ "title": "Show my role assistants",
9
+ "text": "List my available Role Assistants and what they can do."
10
+ },
11
+ {
12
+ "title": "Start guided work",
13
+ "text": "Help me start work for my current business objective."
14
+ }
15
+ ],
16
+ "actions": [
17
+ {
18
+ "id": "{{pluginId}}",
19
+ "file": "ai-plugin.json"
20
+ }
21
+ ]
22
+ }
@@ -1,29 +1,37 @@
1
- # {{appName}} — Microsoft Copilot assistant channel install
1
+ # {{appName}} — Microsoft 365 Copilot package setup
2
2
 
3
3
  {{appDescription}}
4
4
 
5
5
  Environment: **{{environment}}** · Credential key: `{{credentialKey}}`
6
6
 
7
- ## Publish the Copilot extension (M365 admin)
7
+ This channel output is a Microsoft 365 Copilot app package:
8
8
 
9
- 1. Sign in to [Microsoft 365 admin](https://admin.cloud.microsoft.com/) or **Copilot Studio** as a tenant admin.
10
- 2. Create or open a Copilot extensibility project (declarative agent or API plugin).
11
- 3. Import or configure using the generated manifest JSON from `dist/channels/microsoft-copilot/channel-microsoft-copilot.json`.
12
- 4. Point the **OpenAPI** and **action** endpoints to the URLs in **Platform endpoints** below.
13
- 5. Register OAuth client credentials for the API provider connection when the platform prompts for them.
14
- 6. Save the **OAuth client ID** and **client secret** in AI Fabrix: [Authentication settings]({{credentialPortalUrl}})
15
- 7. Submit for M365 admin approval and publish to your organization when review completes.
9
+ ```text
10
+ dist/channels/microsoft-copilot/source/manifest.json
11
+ dist/channels/microsoft-copilot/source/declarativeAgent.json
12
+ dist/channels/microsoft-copilot/source/ai-plugin.json
13
+ dist/channels/microsoft-copilot/build/appPackage.{{environment}}.zip
14
+ ```
15
+
16
+ ## Microsoft admin workflow (manual)
16
17
 
17
- ## Platform endpoints
18
+ 1. Sign in to [Microsoft 365 admin](https://admin.cloud.microsoft.com/) or Copilot Studio as a tenant admin.
19
+ 2. Upload or sideload `appPackage.{{environment}}.zip` to your organization app catalog.
20
+ 3. Review the declarative agent + Remote MCP plugin metadata and approve tenant distribution.
21
+ 4. Configure workspace authentication and consent according to your Entra/OAuth policy.
22
+ 5. Store credential references in AI Fabrix authentication settings: [Authentication settings]({{credentialPortalUrl}})
23
+ 6. Assign the app to users/groups and complete first-user sign-in.
18
24
 
19
- Configure these on the Copilot connector / API plugin. Do not embed secrets in generated files — use AI Fabrix credential storage only.
25
+ ## Runtime connection contract
20
26
 
21
- {{#if openapiUrl}}
22
- - **OpenAPI spec:** {{openapiUrl}}
23
- {{/if}}
24
- {{#if actionsBaseUrl}}
25
- - **Actions base:** {{actionsBaseUrl}}
26
- {{/if}}
27
+ - **Runtime system key:** `{{runtimeSystemKey}}`
28
+ - **Remote MCP URL:** `{{mcpUrl}}`
29
+ - **Transport:** `{{runtimeTransport}}`
30
+ - **Auth mode:** `{{runtimeAuthMode}}`
31
+ - **Layer B tools expected:**
32
+ {{#each layerBToolNames}}
33
+ - `{{this}}`
34
+ {{/each}}
27
35
 
28
36
  ## Assistant catalog
29
37
 
@@ -31,14 +39,16 @@ Runtime lists **assistants** available to each user from:
31
39
 
32
40
  {{assistantCatalogUrl}}
33
41
 
34
- ## After M365 admin approval
42
+ ## Probe truthfulness
35
43
 
36
- ```bash
37
- aifabrix channel add {{channelTarget}} --name "{{baseName}}"
38
- ```
44
+ - `builderValidated` means package files, ZIP, hashes, and secret checks passed.
45
+ - `runtimeValidated` means Runtime MCP is reachable and tool boundary checks pass.
46
+ - `requiresMicrosoftAdmin` remains true until tenant upload/approval/assignment is complete.
39
47
 
40
- Optional validation:
48
+ ## Validate after admin setup
41
49
 
42
50
  ```bash
43
51
  aifabrix channel add {{channelTarget}} --name "{{baseName}}" --probe
44
52
  ```
53
+
54
+ `--force` regenerates artifacts but does not rotate credentials.
@@ -1,11 +1,13 @@
1
- # Microsoft Copilot assistant channel (lab fixture)
1
+ # Microsoft 365 Copilot package channel
2
2
 
3
- SSOT for `aifabrix channel scaffold microsoft-copilot` templates (`make sync-json` → builder).
3
+ Generated by `aifabrix channel scaffold microsoft-copilot`.
4
+
5
+ Recommended flow:
4
6
 
5
7
  ```bash
6
- cd aifabrix-dataplane
7
- aifabrix validate microsoft-copilot
8
- aifabrix upload microsoft-copilot --probe
9
- aifabrix deploy microsoft-copilot
10
- aifabrix app add-channel microsoft-copilot --name "Your Assistant"
8
+ aifabrix upload microsoft-copilot --force
9
+ aifabrix channel add microsoft-copilot --name "Your Assistant" --probe
11
10
  ```
11
+
12
+ `channel add` generates package artifacts under
13
+ `dist/channels/microsoft-copilot/` for Microsoft 365 tenant admins.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "app": {
3
3
  "key": "microsoft-copilot",
4
- "displayName": "Microsoft Copilot assistant channel",
5
- "description": "Assistant communication channel — deploy then app add-channel",
4
+ "displayName": "Microsoft Copilot package channel",
5
+ "description": "Assistant communication channel — deploy then channel add",
6
6
  "type": "external"
7
7
  },
8
8
  "externalIntegration": {
@@ -1,4 +1,4 @@
1
- # Microsoft Copilot assistant channel — lab fixture secrets
1
+ # Microsoft Copilot package channel credential references
2
2
  # aifabrix secret set microsoft-copilot/clientId "<value>" --shared
3
3
  # aifabrix secret set microsoft-copilot/clientSecret "<value>" --shared
4
4
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "key": "microsoft-copilot",
3
- "displayName": "Microsoft Copilot assistant channel",
4
- "description": "Communication external system for Microsoft Copilot assistant channel install",
3
+ "displayName": "Microsoft Copilot package channel",
4
+ "description": "Communication external system for Microsoft Copilot package onboarding",
5
5
  "type": "custom",
6
6
  "systemKind": "communication",
7
7
  "enabled": true,
@@ -9,14 +9,15 @@
9
9
  "authType": "credential",
10
10
  "credential": {
11
11
  "credentialKey": "microsoft-copilot-channel",
12
- "displayName": "Microsoft Copilot assistant channel",
12
+ "displayName": "Microsoft Copilot package channel",
13
13
  "method": "oauth2",
14
14
  "writeOnce": true,
15
15
  "variables": {
16
+ "baseUrl": "https://login.microsoftonline.com",
17
+ "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
16
18
  "tokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token",
17
- "grantType": "client_credentials",
18
- "scope": "https://graph.microsoft.com/.default",
19
- "baseUrl": "https://graph.microsoft.com/v1.0"
19
+ "grantType": "authorization_code",
20
+ "scope": "openid profile offline_access"
20
21
  },
21
22
  "security": {
22
23
  "clientId": "kv://microsoft-copilot/clientId",
@@ -1,8 +1,36 @@
1
1
  {
2
- "name": "{{appName}}",
3
- "description": "{{appDescription}}",
4
- "credentialKey": "{{credentialKey}}",
5
- "openapiUrl": "{{openapiUrl}}",
6
- "actionsBaseUrl": "{{actionsBaseUrl}}",
7
- "assistantCatalogUrl": "{{assistantCatalogUrl}}"
2
+ "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.21/MicrosoftTeams.schema.json",
3
+ "manifestVersion": "1.21",
4
+ "version": "{{packageVersion}}",
5
+ "id": "{{packageAppId}}",
6
+ "name": {
7
+ "short": "{{baseName}}",
8
+ "full": "{{appName}}"
9
+ },
10
+ "description": {
11
+ "short": "{{appDescription}}",
12
+ "full": "{{appDescription}}"
13
+ },
14
+ "developer": {
15
+ "name": "AI Fabrix",
16
+ "websiteUrl": "{{dataplaneBaseUrl}}",
17
+ "privacyUrl": "{{dataplaneBaseUrl}}/privacy",
18
+ "termsOfUseUrl": "{{dataplaneBaseUrl}}/terms"
19
+ },
20
+ "icons": {
21
+ "color": "color.png",
22
+ "outline": "outline.png"
23
+ },
24
+ "accentColor": "#0F172A",
25
+ "copilotAgents": {
26
+ "declarativeAgents": [
27
+ {
28
+ "id": "{{packageAppId}}-agent",
29
+ "file": "declarativeAgent.json"
30
+ }
31
+ ]
32
+ },
33
+ "validDomains": [
34
+ "{{runtimeDomain}}"
35
+ ]
8
36
  }
@@ -17,7 +17,7 @@ One Slack app delivers **Role Assistant** chat, **Work hub** shortcuts, and **do
17
17
  5. Confirm **App Home → Messages tab** is **ON** in the manifest (required for bot DMs and proactive notifications; slash commands work without it).
18
18
  6. Click **Create**, then open **Install App** → **Install to Workspace** and approve.
19
19
  7. Copy **Bot User OAuth Token** and **Signing Secret** from the Slack app settings.
20
- 8. Save **Bot User OAuth Token** and **Signing Secret** in AI Fabrix: [Authentication settings]({{credentialPortalUrl}})
20
+ 8. Save **Bot User OAuth Token** and **Signing Secret** in AI Fabrix: [Authentication settings]({{{credentialPortalUrl}}})
21
21
 
22
22
  ## Platform callback URLs
23
23
 
@@ -32,6 +32,11 @@ Configure these in your Slack app if you edit settings manually. Do not embed se
32
32
  {{#if commandUrl}}
33
33
  - **Slash commands:** {{commandUrl}}
34
34
  {{/if}}
35
+ {{#if oauthCallbackUrl}}
36
+ - **OAuth Redirect URL:** {{oauthCallbackUrl}}
37
+ {{/if}}
38
+
39
+ Paste the **OAuth Redirect URL** into Slack app settings → **OAuth & Permissions** → **Redirect URLs** (required for Add to Slack / OAuth).
35
40
 
36
41
  Register these **V1** slash commands in the manifest (all use the same request URL):
37
42
 
@@ -53,6 +53,10 @@ services:
53
53
  {{/if}}
54
54
  env_file:
55
55
  - {{envFile}}
56
+ {{#if devMountPath}}
57
+ # Bind-mount replaces /app and hides image ENTRYPOINT scripts (e.g. docker-entrypoint.sh).
58
+ entrypoint: []
59
+ {{/if}}
56
60
  {{#if reloadStartCommand}}
57
61
  command: ["sh", "-c", "cd /app && {{{reloadStartCommand}}}"]
58
62
  {{/if}}
@@ -111,6 +115,9 @@ services:
111
115
  - LOCAL_MODE=false
112
116
  env_file:
113
117
  - {{envFile}}
118
+ {{#if devMountPath}}
119
+ entrypoint: []
120
+ {{/if}}
114
121
  command: ["sh", "-c", "cd /app && {{{workerSidecars.worker.command}}}"]
115
122
  networks:
116
123
  - {{networkName}}
@@ -136,6 +143,9 @@ services:
136
143
  - LOCAL_MODE=false
137
144
  env_file:
138
145
  - {{envFile}}
146
+ {{#if devMountPath}}
147
+ entrypoint: []
148
+ {{/if}}
139
149
  command: ["sh", "-c", "cd /app && {{{workerSidecars.beat.command}}}"]
140
150
  networks:
141
151
  - {{networkName}}
@@ -53,6 +53,10 @@ services:
53
53
  {{/if}}
54
54
  env_file:
55
55
  - {{envFile}}
56
+ {{#if devMountPath}}
57
+ # Bind-mount replaces /app and hides image ENTRYPOINT scripts (e.g. docker-entrypoint.sh).
58
+ entrypoint: []
59
+ {{/if}}
56
60
  {{#if reloadStartCommand}}
57
61
  command: ["sh", "-c", "cd /app && {{reloadStartCommand}}"]
58
62
  {{/if}}
@@ -111,6 +115,9 @@ services:
111
115
  - LOCAL_MODE=false
112
116
  env_file:
113
117
  - {{envFile}}
118
+ {{#if devMountPath}}
119
+ entrypoint: []
120
+ {{/if}}
114
121
  command: ["sh", "-c", "cd /app && {{{workerSidecars.worker.command}}}"]
115
122
  networks:
116
123
  - {{networkName}}
@@ -134,6 +141,9 @@ services:
134
141
  - LOCAL_MODE=false
135
142
  env_file:
136
143
  - {{envFile}}
144
+ {{#if devMountPath}}
145
+ entrypoint: []
146
+ {{/if}}
137
147
  command: ["sh", "-c", "cd /app && {{{workerSidecars.beat.command}}}"]
138
148
  networks:
139
149
  - {{networkName}}