Skip to content

Add SAP Integration Suite Copilot agent - #6363

Merged
aaronpowell merged 9 commits into
github:mainfrom
rameshvaranganti:add-sap-integration-suite-copilot-agent
Nov 13, 2026
Merged

aaronpowell merged 9 commits into
github:mainfrom
rameshvaranganti:add-sap-integration-suite-copilot-agent

Conversation

@rameshvaranganti

@rameshvaranganti rameshvaranganti commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Pull Request Checklist

  • I have read and followed the CONTRIBUTING.md guidelines.
  • I have read and followed the Guidance for submissions involving paid services.
  • My contribution adds a new instruction, prompt, agent, skill, workflow, or canvas extension file in the correct directory.
  • The file follows the required naming convention.
  • The content is clearly structured and follows the example format.
  • I have tested my instructions, prompt, agent, skill, workflow, or canvas extension with GitHub Copilot.
  • I have run npm start and verified that README.md is up to date.
  • I am targeting the main branch for this pull request.

Description

Summary

Adds the sap-cloud-integration skill (SAP Cloud Integration / CPI runtime knowledge) and the SAP Integration Suite Copilot agent, which delegates CPI questions to it.

This reworks the submission after the feedback on #6364, which said the earlier version was "a short persona prompt and broad checklist" with no example of what it gets right that a capable model would miss. The new version is a skill with four reference files of CPI runtime behavior:

  • Groovy script API: streaming body access, MPL properties vs. custom header properties vs. gated attachments, SecureStoreService, ValueMappingApi
  • Header vs. exchange property scope: ProcessDirect, JMS (Transfer Exchange Properties, 4 MB limit), HTTP receiver Request Headers (none by default), Allowed Header(s), SAP_* / Camel* names the runtime reads
  • Exception Subprocess outcomes: End → Completed, Error End → Failed, Escalation End → Escalated; SAP_MessageProcessingLogCustomStatus; CamelExceptionCaught with AhcOperationFailedException / OsciException; JMS retry with SAPJMSRetries (Non-Exclusive queues)
  • MPL error → cause → check: SFTP, HTTP/OAuth/certificates (including SAP_DisableMonitoringHeaders for unexplained HTTP 400), Cloud Connector, IDoc, OData, SOAP, AS2

Every behavior claim is cross-checked against the SAP Help Portal source in SAP-docs/btp-integration-suite. references/sap-documentation-index.md links each topic to the SAP page it comes from. Author: SAP integration architect with 20+ years on SAP PI/PO and Integration Suite.

Evaluation: same model, with and without the skill

Environment: VS Code 1.145.3, GitHub Copilot Chat 0.33.1, Agent mode, model Copilot Fusion (auto-routed to gpt-6-luna). Each prompt ran in a new chat, first in an empty workspace (plain), then in a workspace containing only .github/skills/sap-cloud-integration (skill). Screenshots below.

# Prompt Without skill With skill
1 "In the Exception Subprocess I need the receiver's HTTP status and error body." ❌ Checks for org.apache.camel.component.http.HttpOperationFailedException with instanceof. CPI's HTTP receiver throws org.apache.camel.component.ahc.AhcOperationFailedException (SAP script example), so the script never matches and always throws. ✅ Reads CamelExceptionCaught, compares by class name to AhcOperationFailedException as SAP's example does, extracts getStatusCode(), getStatusText(), getResponseBody(), and notes the OData V2 difference. Copilot shows it read error-handling-reliability.md.
2 "Write a Groovy script that logs the full payload for every message to the MPL." ⚠️ Attaches the payload unconditionally to every message's MPL, with a general caution only. ✅ Same script, but the attachment is gated by a property fed from an externalized LOG_PAYLOAD flag, with a tenant test (flag off → no attachment) and storage/PII guidance.
3 "My Exception Subprocess … ends with an End event. Support says failed messages don't show up as failed. Why?" ⚠️ Correct main fix (Error End). ✅ Also: Escalation End for status Escalated, CamelHttpResponseCode so synchronous callers don't get HTTP 200, and SAP_MessageProcessingLogCustomStatus when the error is handled on purpose, so support can filter by Custom Status.

Where the skill did not add much: for "property lost over JMS", both answers proposed copying it into a header (the skill only added the Transfer Exchange Properties caution). For "IDoc status 56", the plain answer was already good. That test exposed an overly narrow line in the skill, which I corrected before this submission.

Screenshots: with and without the skill (click to expand)

Without skill — #1 HTTP status in Exception Subprocess

Screenshot 2026-11-11 215948

With skill — #1 HTTP status in Exception Subprocess

Screenshot 2026-11-11 221031

Without skill — #2 Payload logging

Screenshot 2026-11-11 215640

With skill — #2 Payload logging

Screenshot 2026-11-11 220835

Without skill — #3 End event in Exception Subprocess

Screenshot 2026-11-11 215456

With skill — #3 End event in Exception Subprocess

Screenshot 2026-11-11 220637

Without skill — Property lost over JMS

Screenshot 2026-11-11 215541

With skill — Property lost over JMS

Screenshot 2026-11-11 220738

Without skill — IDoc status 56

Screenshot 2026-11-11 215841

With skill — IDoc status 56 (before the IDoc correction)

Screenshot 2026-11-11 220939

Changes since the first review

  • Agent prompt no longer contains an author line; generated code carries no attribution.
  • Status note requires a confirmed successful tenant test; deployment alone is not enough.
  • Agent reduced to a thin entry point; CPI knowledge moved into the skill.

@rameshvaranganti
rameshvaranganti requested review from a team as code owners November 11, 2026 04:29
Copilot AI dynamic review requested due to automatic review settings November 11, 2026 04:29
@github-actions github-actions Bot added agent PR touches agents new-submission PR adds at least one new contribution labels Nov 11, 2026
@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

🔍 Vally Lint Results

⚠️ Warnings or advisories found

Scope Checked
Skills 1
Agents 1
Total 2
Severity Count
❌ Errors 0
⚠️ Warnings 0
ℹ️ Advisories 1

Summary

Level Finding
ℹ️ Vally currently lints SKILL.md content. Agent files were detected but skipped:
Full linter output
### Linting skills/sap-cloud-integration
✅ sap-cloud-integration (2/2 checks passed)
    ✓ [spec-compliance] All 1 skill(s) are spec-compliant.
        ✓ spec-compliance: All spec checks passed.
    ✓ [valid-refs] All file references across 1 skill(s) are valid.
        ✓ valid-refs: All file references resolve to existing files within the skill directory.

1 skill(s) linted, 1 passed

### Agent files detected (not linted by vally)
ℹ️ Vally currently lints SKILL.md content. Agent files were detected but skipped:
agents/sap-integration-suite-copilot.agent.md

@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

🔒 PR Risk Scan Results

Scanned 8 changed file(s).

Severity Count
🔴 High 0
🟠 Medium 0
ℹ️ Info 0

✅ No matching risk patterns were detected in changed files.

This is an automated soft-gate report. Findings indicate review targets and do not block merge by themselves.

@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

🚦 Submission status: 👀 Ready for review

Risk tier: merge-risk:medium — New or substantially changed resource without privileged execution
Required to merge: passing submission-gate checks plus 1 approval from reviewers with write access.

Why this tier
  • Adds 8 file(s), e.g. agents/sap-integration-suite-copilot.agent.md
  • Changes 499 lines (low-risk limit is 40)

Automated checks

Check Status Details
Line endings ✅ Passed Passed · logs
Spelling ✅ Passed Passed · logs
Generated README consistency ✅ Passed Passed · logs
Skill validation ✅ Passed Passed · logs
Skill lint (vally) ✅ Passed Passed · logs
Risk scan ✅ Passed Passed · logs
Contributor reputation ✅ Passed Passed · logs
Duplicate resource scan ✅ Passed Passed · logs
PR quality signal ⏭️ Skipped Skipped by its workflow · logs

Review

  • Approvals: 0/1
  • Assigned reviewer: not assigned yet — comment /request-review to ask for one
  • Review target date: not set
  • Still needed: 1 more approval(s)
  • No staffed reviewer pool owns these files yet; any reviewer with write access counts as the domain reviewer.

Commands

Command Who What it does
/rerun-checks PR author, maintainers Re-runs failed or incomplete checks and re-evaluates this gate
/request-review PR author, maintainers Asks the review rotation to assign a reviewer (adds needs-reviewer)

Updated for e83c4b3 · gate run · This comment is maintained automatically — see submission gate docs.

@github-actions github-actions Bot added ready-for-review Submission passed intake validation and is ready for maintainer review and removed awaiting-automation labels Nov 11, 2026
@github-actions github-actions Bot added awaiting-automation and removed ready-for-review Submission passed intake validation and is ready for maintainer review labels Nov 11, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The agent requires generated scripts to credit its author and promote their website, creating misleading provenance in unrelated user code.

2 open issues
What changed in this PR

Adds an SAP Integration Suite agent to the repository’s Copilot agent collection, with guidance for integration development, review, and troubleshooting.

Changes:

  • Defines SAP-focused scope, working practices, accuracy rules, and handoffs for reviews and test generation.
  • Adds the agent to the catalog with VS Code and VS Code Insiders installation links.
File Description
docs/​README.agents.md Lists the new agent and installation links.
agents/​sap-integration-suite-copilot.agent.md Defines the SAP Integration Suite agent and its workflows.

Review effort: Balanced (auto)

@github-actions github-actions Bot added ready-for-review Submission passed intake validation and is ready for maintainer review and removed awaiting-automation labels Nov 11, 2026
Thanks, agreed. Generated code no longer includes author credit or URLs; existing authorship/license notices are preserved. Resource-level author credit (line 19) is unchanged.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI dynamic review requested due to automatic review settings November 11, 2026 04:36
@github-actions github-actions Bot added awaiting-automation and removed ready-for-review Submission passed intake validation and is ready for maintainer review labels Nov 11, 2026
@github-actions github-actions Bot added ready-for-review Submission passed intake validation and is ready for maintainer review and removed awaiting-automation labels Nov 11, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The agent’s SAP-specific guidance remains too limited, with generic capability lists and checklists needing replacement by a concrete CPI workflow, runtime constraints, and expected results.

No open issues 🎉

1 previously missed issue

In code that hasn't changed since last review

Low severity Replace the PR template with Copilot evaluation evidence

agents/​sap-integration-suite-copilot.agent.md:17

The PR description is still an unfilled template and provides no realistic usage scenario or evaluation results, so maintainers cannot assess whether this agent works in Copilot as intended. The repository's review criteria ask for validation evidence; please document a representative CPI request, the Copilot environment, and expected versus observed results, including the review and test-case handoffs. A manual evaluation is sufficient; tenant deployment is not required.

2 resolved since last review

Review effort: Balanced (auto)

@rameshvaranganti rameshvaranganti left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please review

Copilot AI dynamic review requested due to automatic review settings November 12, 2026 15:30
@rameshvaranganti

Copy link
Copy Markdown
Contributor Author

Certificate-trust guidance tightened: the TLS test’s presented chain is now treated as unauthenticated input. The skill requires obtaining CA certificates from an independent source and matching SHA-256 fingerprints before upload (including before using the TLS test’s Add to keystore), trusting CAs rather than leaf certificates, and never disabling certificate validation.

@github-actions github-actions Bot added awaiting-automation ready-for-review Submission passed intake validation and is ready for maintainer review and removed ready-for-review Submission passed intake validation and is ready for maintainer review awaiting-automation labels Nov 12, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Human assessment is needed because line-based processing and unbounded payload logging can allocate entire large payloads and exhaust worker memory.

No open issues 🎉

Review effort: Balanced (auto)

Copilot AI dynamic review requested due to automatic review settings November 12, 2026 15:41
@github-actions github-actions Bot added awaiting-automation and removed ready-for-review Submission passed intake validation and is ready for maintainer review labels Nov 12, 2026
@rameshvaranganti

Copy link
Copy Markdown
Contributor Author

Memory guidance tightened per SAP’s Script API docs: scripts now check message.getBodySize() before any getBody(String) (SAP warns String/byte[] conversion can cause OOM), payload attachments are both flag-gated and size-capped, the 1 GB/24 h MPL attachment limit is documented, and line-by-line reading is limited to line-delimited formats. Sources: [Read and Modify Message Header, Message Body, and Exchange Properties]

@github-actions github-actions Bot added ready-for-review Submission passed intake validation and is ready for maintainer review and removed awaiting-automation labels Nov 12, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The payload-size guard accepts getBodySize() values of -1, allowing unknown-size bodies to bypass the logging cap and potentially attach arbitrarily large payloads.

1 open issue

Review effort: Balanced (auto)

Copilot AI dynamic review requested due to automatic review settings November 12, 2026 15:51
@github-actions github-actions Bot added awaiting-automation and removed ready-for-review Submission passed intake validation and is ready for maintainer review labels Nov 12, 2026
@rameshvaranganti

Copy link
Copy Markdown
Contributor Author

resolved

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Human assessment is needed to evaluate the sensitive-data exposure risk from persisting raw payloads in log attachments without enforced redaction.

No open issues 🎉

1 resolved since last review

Review effort: Balanced (auto)

@rameshvaranganti rameshvaranganti left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please review

@github-actions github-actions Bot added ready-for-review Submission passed intake validation and is ready for maintainer review and removed awaiting-automation labels Nov 12, 2026

@aaronpowell aaronpowell left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for revising the SAP Integration Suite contribution. The updated status rule now distinguishes deployment from a confirmed tenant test, and the PR description documents three manual GitHub Copilot comparisons with observed results. The runtime guidance on Exception Subprocess status, AhcOperationFailedException, and JMS retry behavior is backed by linked SAP sources. Please continue to keep the tenant-testing status explicit when this agent generates answers.

@aaronpowell
aaronpowell merged commit 27ff73a into github:main Nov 13, 2026
27 of 28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent PR touches agents merge-risk:medium new-submission PR adds at least one new contribution ready-for-review Submission passed intake validation and is ready for maintainer review skills PR touches skills

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants