Skip to content

feat: route ERP via dataverse CLI across overview/query/data/connect#90

Open
athanipavan wants to merge 7 commits into
mainfrom
pathani/erpskill1
Open

feat: route ERP via dataverse CLI across overview/query/data/connect#90
athanipavan wants to merge 7 commits into
mainfrom
pathani/erpskill1

Conversation

@athanipavan

Copy link
Copy Markdown

Adds first-class ERP (F&O) routing to the Dataverse skills plugin without spawning erp-* sibling skills. ERP is treated as a target variant of the existing skills: dv-overview routes ERP traffic, dv-query and dv-data document the CLI-based ERP path, and dv-connect detects ERP linkage on UNO environments and surfaces ERP_URL in .env.

The approach is CLI-only: ERP work goes through dataverse --target erp, dataverse api invoke --target erp, dataverse erp batch ..., and dataverse mcp <fnoUrl>. No Python ErpClient is introduced; auth.py is unchanged. The DataverseCLI repo already provides full ERP coverage (CRUD with composite keys + --cross-company, F&O custom services, batch jobs, ERP MCP auto-routing), so the plugin's job is to teach the agent how to route to it correctly.

Highlights

  • dv-overview: ERP added to the trigger list; new Dataverse CLI row in the capability matrix; tool-priority paragraph notes the ERP tier (no Python SDK). Full detail in new references/erp-target.md.
  • dv-query: SDK-First Rule clarifies ERP is a separate path; new Querying ERP data section with CLI examples and a Dataverse-vs-ERP differences table (PascalCase entity sets, composite keys with dataAreaId, --cross-company, no FetchXML/SQL/``).
  • dv-data: new Writing ERP data section covering MCP / CLI / DMF tiers with a key-differences table.
  • dv-connect: Step 2 detects ERP via pac org who first, falls back to dataverse org who --environment <DATAVERSE_URL> --json (--environment passed explicitly because DV CLI keeps its own active profile separate from PAC). Step 3 writes ERP_URL to .env when present. Step 5 smoke-tests ERP with dataverse data query --target erp --table Currencies --top 1. Detail extracted to new references/erp-detection.md to stay close to the body-token budget.

Version

1.6.0 → 1.7.0 (MINOR — backward-compatible capability addition). All four version fields updated; version_bump_check.py passes.

Validation

  • python .github/evals/static_checks.py: every check passes except EVAL-BUDGET-02:
    • dv-overview body is 5395/5000 tokens. Pre-PR baseline on main is 5256; my additions account for ~139 tokens (Dataverse CLI matrix row and tool-priority qualifier) — trimmed down from an initial +244 by inlining links and folding prose into references/erp-target.md.
    • dv-connect body is 5017/5000 tokens. Pre-PR baseline on main is 4999 (already 1 below cap); the +17 is a single line linking to the new references/erp-detection.md plus surrounding prose. Reducible further only by removing the body pointer entirely, which would defeat the agent's ability to discover the reference.
    • Body-budget trim of the larger pre-existing dv-overview overrun is best treated as a follow-up.
  • CLI surface validation against the locally-built dataverse.exe: every flag and subcommand the skills prescribe (data query/get/create/update/delete/upsert --target erp, --cross-company, api invoke --target erp --service-group ... --service ..., erp batch list|cancel, mcp <fnoUrl>, org who --environment ... --json) matches the CLI's own --help output.
  • Live end-to-end smoke (dataverse data query --target erp --table Currencies --top 1 against the UNO env) blocked locally by DNS to the F&O host; the CLI built the correct URL and authenticated correctly.

Out of scope (deferred)

  • dv-admin gaining dataverse erp batch routing.
  • A dedicated DMF section (currently routed via api invoke).
  • Trimming the pre-existing dv-overview body overrun under 5000 tokens.
  • Python ERP code path (only add get_erp_url() to auth.py if a real bulk-Python need emerges).

Closes the abandoned attempt in #82.

Pavan Yaduraj Athani added 3 commits June 5, 2026 22:58
Treats Finance & Operations as an app on Dataverse, not a separate product. Adds ERP triggers (frontmatter, Plugin Covers note, Dataverse CLI row in capability matrix, routing pointers in PAC CLI row + tool priority). Detail lives in references/erp-target.md to keep the body close to Anthropic's Level 2 budget. Version 1.5.0 -> 1.5.1.

Known: body is 5387 tokens (cap 5000). main was already 5186 over; this PR adds ~200. Opening for internal review of the integration approach — body-trim is a separate pass.
Conflicts:
- plugin.json (x2): take main's expanded plugin description, keep 1.7.0 version
- dv-connect SKILL.md: combine main's Step 5 failure-list update with the ERP detection/smoke-test pointers (extracted to references/erp-detection.md to stay close to budget)

Budget status after merge:
- dv-connect 5017/5000 (+17): the single line linking to erp-detection.md.
  Pre-PR baseline was 4999/5000 on main.
- dv-overview 5395/5000 (+395): pre-existing 5256 overrun on main + 139
  for ERP capability matrix row and tool-priority qualifier. Trimmed from
  +244 to +139 by inlining links and removing redundant prose.
@athanipavan athanipavan requested a review from a team June 23, 2026 09:23
@athanipavan

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree company="Microsoft"

Pavan Yaduraj Athani added 2 commits June 23, 2026 15:04
# Conflicts:
#	.cursor-plugin/marketplace.json
#	.github/plugin/marketplace.json
#	.github/plugins/dataverse/.claude-plugin/plugin.json
#	.github/plugins/dataverse/.codex-plugin/plugin.json
#	.github/plugins/dataverse/.cursor-plugin/plugin.json
#	.github/plugins/dataverse/.github/plugin/plugin.json
These were inadvertently swept in by 'git add -A' during the earlier
merge conflict resolution. The plugin's real auth.py lives under
.github/plugins/dataverse/scripts/ and is unchanged in this PR.
Comment thread .github/plugins/dataverse/skills/dv-data/SKILL.md Outdated

@jeffandms jeffandms left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

We must remove all references to "Uno" before completing this PR.

Pavan Yaduraj Athani added 2 commits June 24, 2026 11:34
Per reviewer feedback on PR #90: UNO is an internal-only codename and
must not appear in externally published skill content. Substituted with
phrasing that describes the actual configuration (F&O linked to /
provisioned on top of the same Dataverse env).
Per reviewer follow-up on PR #90: pick one term and stick with it.
Standardized on 'ERP' as the lead term, with '(Finance and Operations)'
as the first-mention expansion in each skill / reference file.
Replaced all subsequent 'F&O' and 'Finance & Operations' occurrences
with 'ERP'. Single remaining 'F&O' is in a trigger-word list documenting
input variants users may type, not descriptive prose.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants