Repository navigation
fix: make dv-connect work on npx and JetBrains-registry installs - #143
Merged
arorashivam96 merged 9 commits intoOct 5, 2026
Merged
Conversation
…MCP pre-warm note npx skills add and the AI Assistant registry install skill folders only, so auth.py and enable-mcp-client.py were missing. Step 4 now copies-or-fetches both from the canonical repo. Step 6 adds the pre-warm ordering that lets the stdio MCP proxy read the shared token cache silently on restart.
…nts) for JetBrains + any agent
…ion resolution (pre-merge)
Reconcile: combine #139 fail-open _plugin_version with manifest-version resolution (npx/registry installs report a real version, not 'unknown'). Move scripts block + MCP reliability note to references/ to stay under the 5000-token body cap. Bump plugin version to 1.14.2.
arorashivam96
enabled auto-merge (squash)
September 29, 2026 20:22
…ect-jetbrains-script-fetch # 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 # .github/plugins/dataverse/skills/dv-connect/SKILL.md
Saurabh Ravindra Badenkal (saurabhrb)
previously approved these changes
Oct 2, 2026
Suyash Kshirsagar (suyask-msft)
previously approved these changes
Oct 5, 2026
…ect-jetbrains-script-fetch
arorashivam96
dismissed stale reviews from Suyash Kshirsagar (suyask-msft) and Saurabh Ravindra Badenkal (saurabhrb)
via
October 5, 2026 18:47
7b2e07d
Suyash Kshirsagar (suyask-msft)
approved these changes
Oct 5, 2026
Saurabh Ravindra Badenkal (saurabhrb)
approved these changes
Oct 5, 2026
arorashivam96
deleted the
u/shivamarora/dv-connect-jetbrains-script-fetch
branch
October 5, 2026 19:15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Makes
dv-connectwork when the plugin is installed as skill folders only -- vianpx skills addor the JetBrains AI Assistant registry, the path PyCharm / Rider users take. Marketplace / native-plugin installs are unaffected.Context & design (JetBrains distribution)
The problem. A skill plugin can be installed two ways: as a native / marketplace plugin (ships everything, including helper scripts), or as skill folders only --
npx skills addor the JetBrains AI Assistant registry, which copy just theSKILL.md+references/trees. JetBrains PyCharm / Rider users take the skill-folder path. Our skills assumed the first model, so on the second they were missing the shared helper scripts and couldn't resolve their own version --dv-connectfailed and telemetry reportedunknown. This PR makes the skill-folder path a first-class, fully working install (internally: A1).Canonical source, resolved at runtime (not duplicated). The nine
dv-*skills and their two shared helpers (auth.py,enable-mcp-client.py) have one home:.github/plugins/dataverse/-- skills underskills/, helpers at the plugin rootscripts/(a single copy, shared by six skills). We deliberately did not duplicate the scripts into each skill or project a root-levelskills//scripts/tree. Insteaddv-connectcopies-or-fetches the helpers at connect time: use the local copy in a source clone, else fetch from the canonical raw GitHub URL onmain. One source of truth; the scripts (which carry telemetry attribution) always resolve to the current canonical version.Version resolution is fail-open. Attribution is
app=dataverse-skills/<version>;skill=<skill>;agent=<agent>.<version>comes fromDATAVERSE_PLUGIN_VERSION, whichdv-connectwrites to.env; on a bare skill-folder install that var is absent, soauth.pyfalls back to reading the canonicalplugin.json(local if present, else fetched once and cached). If every source fails it degrades tounknownrather than raising -- attribution must never block a data operation.MCP pre-warm before restart. The stdio MCP proxy authenticates by reading the shared MSAL token cache. Registering the server usually requires an editor restart, after which the proxy must authenticate with no UI. The new runbook warms the cache, allowlists the client, and validates the GA
/api/mcpendpoint before the restart, so the first post-restart call succeeds silently.One-command install.
npx skills add microsoft/Dataverse-skills -s "*"installs all nine skills and prompts for the target agent;-ginstalls globally across every project. This is the discoverable entry point for any agent, JetBrains included.Next step -- A2-lite (catalog listing). The forward step is to list
dv-*in the official JetBrains skills catalog (a curated, JetBrains-verified snapshot) for first-class discoverability, plus a best-efforthost=jetbrainstelemetry signal -- without building an IDE plugin. Design decision: contribute a full snapshot of all nine skills (flat top-level dirs, each withmetadata.sourceback to canonical), not a single "bootstrap" skill that pulls the rest at runtime. Rationale: routing between skills is by skill name, so flattening is safe and all nine must be present for routing to work the moment they land; the shared scripts still resolve viadv-connect's canonical fetch -- the same mechanism this PR adds. A single-bootstrap model would break first-run routing (the agent needsdv-overviewbefore the bootstrap could install it) and adds a runtime-clone failure mode.What changed
dv-connectcopies-or-fetchesauth.py+enable-mcp-client.pyfrom canonical when they aren't local, so npx / registry installs (which ship no scripts) work. Steps inreferences/helper-scripts.md.scripts/auth.pyresolves the telemetry version from the canonicalplugin.jsonwhenDATAVERSE_PLUGIN_VERSIONis unset/unknown-- fixesapp=dataverse-skills/unknown. Keeps fix: complete plugin telemetry attribution (dv-connect, notebook, CLI eval) #139's fail-open validation.references/mcp-configuration.mdadds the pre-warm-before-restart runbook.README.mddocuments the one-command install (npx skills add microsoft/Dataverse-skills -s "*",-gfor all projects).Validation
Static checks, 54 auth tests, and version-bump all pass. Verified end-to-end in PyCharm: Codex connected (device-code), both scripts fetched into
scripts/, records returned, attribution correct (agent=codex).Notes
Merged latest
main(#139 telemetry, #141 Gemini/Antigravity). Version bumped to 1.16.0 (all 9 fields). No change to the other eight skills or to marketplace installs.