@aifabrix/builder 2.51.0 → 2.51.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) 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-deploy-job.js +108 -0
  14. package/lib/app/run-helpers.js +10 -3
  15. package/lib/app/run.js +8 -0
  16. package/lib/channels/add-channel.js +54 -23
  17. package/lib/channels/approval-guides/chatgpt.js +8 -7
  18. package/lib/channels/approval-guides/microsoft-copilot.js +7 -8
  19. package/lib/channels/channel-artifact-generator.js +14 -2
  20. package/lib/channels/channel-credential.js +3 -1
  21. package/lib/channels/channel-probe-evidence.js +79 -0
  22. package/lib/channels/channel-probe.js +265 -13
  23. package/lib/channels/channel-runtime-resolver.js +120 -29
  24. package/lib/channels/channel-status-display.js +44 -0
  25. package/lib/channels/channel-targets.js +7 -0
  26. package/lib/channels/chatgpt-runtime-contract.js +29 -0
  27. package/lib/channels/microsoft-copilot-package.js +280 -0
  28. package/lib/channels/runtime-tool-catalog.js +165 -0
  29. package/lib/cli/index.js +2 -0
  30. package/lib/cli/setup-app.js +4 -0
  31. package/lib/cli/setup-external-system-help.js +8 -2
  32. package/lib/cli/setup-external-system.js +12 -0
  33. package/lib/commands/app-test.js +2 -14
  34. package/lib/commands/datasource-load-export-cli.js +6 -1
  35. package/lib/commands/deploy-gate-failure-details.js +19 -17
  36. package/lib/commands/dev-down.js +2 -6
  37. package/lib/commands/evidence-kind.js +65 -15
  38. package/lib/commands/governance-generate-external.js +56 -21
  39. package/lib/commands/lifecycle-external.js +10 -4
  40. package/lib/commands/repair-datasource-apply.js +10 -1
  41. package/lib/commands/repair-datasource-run.js +4 -2
  42. package/lib/commands/repair-datasource-test-payload.js +80 -19
  43. package/lib/commands/repair-datasource-webhooks-sync-bridge.js +42 -3
  44. package/lib/commands/repair-internal.js +9 -1
  45. package/lib/commands/repair-openapi-sync.js +34 -17
  46. package/lib/commands/role-assistant.js +313 -0
  47. package/lib/commands/upload-data-sync-finalize.js +5 -4
  48. package/lib/commands/upload-sidecar-followups.js +144 -47
  49. package/lib/commands/upload.js +43 -6
  50. package/lib/commands/verify-governance-combined-external.js +73 -9
  51. package/lib/commands/verify-governance-db.js +80 -25
  52. package/lib/commands/verify-governance-external.js +29 -5
  53. package/lib/commands/wizard-core-helpers.js +7 -3
  54. package/lib/commands/wizard-core.js +78 -9
  55. package/lib/datasource/bulk-loader-run-batches.js +4 -2
  56. package/lib/datasource/bulk-loader-service.js +5 -1
  57. package/lib/datasource/datasource-validate-summary.js +2 -2
  58. package/lib/datasource/validate.js +13 -6
  59. package/lib/external-system/deploy-helpers.js +35 -1
  60. package/lib/external-system/deploy.js +23 -10
  61. package/lib/external-system/download-helpers.js +111 -2
  62. package/lib/external-system/download-role-assistant.js +55 -0
  63. package/lib/external-system/download.js +45 -26
  64. package/lib/external-system/test-helpers.js +1 -1
  65. package/lib/external-system/test.js +39 -3
  66. package/lib/generator/builders.js +3 -0
  67. package/lib/generator/wizard.js +51 -4
  68. package/lib/lifecycle/access-control-abac.js +121 -0
  69. package/lib/lifecycle/lifecycle-governance-options.js +4 -1
  70. package/lib/lifecycle/product-model.js +3 -2
  71. package/lib/lifecycle/report-display.js +14 -2
  72. package/lib/programmatic/capability-registry.js +20 -1
  73. package/lib/programmatic/command-options.js +1 -0
  74. package/lib/programmatic/index.js +4 -0
  75. package/lib/programmatic/manifest-patch-section.js +48 -9
  76. package/lib/programmatic/manifest-section-registry-data.js +3 -2
  77. package/lib/programmatic/openapi-apply-result-schemas.js +44 -0
  78. package/lib/programmatic/openapi-component-schemas.js +16 -1
  79. package/lib/programmatic/openapi-description-enricher.js +3 -1
  80. package/lib/programmatic/openapi-descriptions.js +55 -5
  81. package/lib/programmatic/openapi-evidence-schemas.js +161 -0
  82. package/lib/programmatic/openapi-manifest-schemas.js +6 -2
  83. package/lib/programmatic/openapi-operation-bindings.js +99 -0
  84. package/lib/programmatic/openapi-request-schemas.js +36 -1
  85. package/lib/programmatic/openapi-result-schemas.js +1 -1
  86. package/lib/programmatic/openapi-schema-descriptions-certify.js +5 -1
  87. package/lib/programmatic/openapi-schema-descriptions-core.js +1 -1
  88. package/lib/programmatic/openapi-schema-descriptions-evidence.js +156 -0
  89. package/lib/programmatic/openapi-schema-descriptions-manifest.js +4 -3
  90. package/lib/programmatic/openapi-schema-descriptions-operations.js +70 -0
  91. package/lib/programmatic/openapi-spec.js +47 -28
  92. package/lib/programmatic/orchestration-openapi-meta.js +5 -0
  93. package/lib/programmatic/request-timeout.js +3 -0
  94. package/lib/programmatic/route-handler-map.js +89 -2
  95. package/lib/programmatic/run-certify.js +15 -2
  96. package/lib/programmatic/run-deploy.js +74 -0
  97. package/lib/programmatic/run-evidence-authoring.js +80 -0
  98. package/lib/programmatic/run-protection.js +124 -0
  99. package/lib/programmatic/run-template-workspace.js +28 -1
  100. package/lib/programmatic/workspace-context.js +6 -0
  101. package/lib/protection/auth-context.js +48 -6
  102. package/lib/protection/paths.js +22 -0
  103. package/lib/protection/run-protection-create-helpers.js +22 -1
  104. package/lib/protection/run-protection-create.js +1 -1
  105. package/lib/protection/sync-after-upload.js +1 -1
  106. package/lib/role-assistant/evidence-sync.js +450 -0
  107. package/lib/role-assistant/github-workflow.js +96 -0
  108. package/lib/role-assistant/knowledge-sync.js +465 -0
  109. package/lib/role-assistant/settings.js +126 -0
  110. package/lib/role-assistant/test-cases-evaluate.js +170 -0
  111. package/lib/role-assistant/test-cases-honesty.js +184 -0
  112. package/lib/role-assistant/test-cases.js +364 -0
  113. package/lib/role-assistant/test-runner-workhub-answers.js +203 -0
  114. package/lib/role-assistant/test-runner-workhub.js +385 -0
  115. package/lib/role-assistant/test-runner.js +500 -0
  116. package/lib/schema/application-schema.json +16 -2
  117. package/lib/schema/deployment-rules.yaml +1 -0
  118. package/lib/schema/external-datasource.schema.json +38 -4
  119. package/lib/schema/external-system.schema.json +4 -4
  120. package/lib/schema/infra.parameter.yaml +20 -0
  121. package/lib/schema/role-assistant-settings.schema.json +108 -0
  122. package/lib/utils/api.js +52 -27
  123. package/lib/utils/app-path-resolve.js +72 -24
  124. package/lib/utils/authentication-shape.js +3 -1
  125. package/lib/utils/deployment-validation.js +28 -3
  126. package/lib/utils/docker-run-ephemeral.js +55 -0
  127. package/lib/utils/enterprise-knowledge-paths.js +29 -12
  128. package/lib/utils/env-copy-keycloak.js +196 -0
  129. package/lib/utils/env-copy.js +34 -1
  130. package/lib/utils/external-system-readiness-compact-display.js +3 -0
  131. package/lib/utils/help-builder.js +1 -0
  132. package/lib/utils/paths.js +67 -23
  133. package/lib/utils/pipeline-upload-auth-retry.js +15 -3
  134. package/lib/utils/role-assistant-paths.js +98 -0
  135. package/lib/utils/schema-loader.js +41 -0
  136. package/lib/utils/schema-resolver.js +36 -4
  137. package/lib/utils/token-manager.js +38 -29
  138. package/lib/utils/url-declarative-resolve-load-doc.js +38 -1
  139. package/lib/validation/external-manifest-validator.js +31 -8
  140. package/lib/validation/validate-external-file.js +8 -1
  141. package/package.json +2 -1
  142. package/scripts/export-builder-api-evidence.js +1 -1
  143. package/templates/applications/dataplane/application.yaml +23 -15
  144. package/templates/applications/dataplane/env.template +1 -1
  145. package/templates/applications/dataplane/rbac.yaml +14 -0
  146. package/templates/applications/miso-controller/application.yaml +1 -1
  147. package/templates/applications/miso-controller/env.template +3 -1
  148. package/templates/channels/chatgpt/install.template.md.hbs +42 -24
  149. package/templates/channels/chatgpt/integration/README.md +10 -7
  150. package/templates/channels/chatgpt/integration/application.json +2 -2
  151. package/templates/channels/chatgpt/integration/chatgpt-system.json +3 -3
  152. package/templates/channels/chatgpt/integration/env.template +1 -1
  153. package/templates/channels/chatgpt/manifest.template.json.hbs +36 -5
  154. package/templates/channels/microsoft-copilot/ai-plugin.template.json.hbs +28 -0
  155. package/templates/channels/microsoft-copilot/declarative-agent.template.json.hbs +22 -0
  156. package/templates/channels/microsoft-copilot/install.template.md.hbs +32 -22
  157. package/templates/channels/microsoft-copilot/integration/README.md +9 -7
  158. package/templates/channels/microsoft-copilot/integration/application.json +2 -2
  159. package/templates/channels/microsoft-copilot/integration/env.template +1 -1
  160. package/templates/channels/microsoft-copilot/integration/microsoft-copilot-system.json +7 -6
  161. package/templates/channels/microsoft-copilot/manifest.template.json.hbs +34 -6
  162. /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
  }