Skip to content

Add per-model token provider to useReplicatedModels#2459

Draft
Copilot wants to merge 2 commits intomainfrom
copilot/update-token-fetching-logic
Draft

Add per-model token provider to useReplicatedModels#2459
Copilot wants to merge 2 commits intomainfrom
copilot/update-token-fetching-logic

Conversation

Copy link

Copilot AI commented Mar 9, 2026

When a Vue.js client switches branches, the existing useReplicatedModels would attempt to connect with a stale token, receive a 403, and provide no opportunity for the caller to supply a fresh one. The token provider had no access to model parameters, making repository/branch-scoped tokens impossible.

Changes

useReplicatedModels — new getToken parameter

  • Added optional third parameter: getToken?: (params: ReplicatedModelParameters) => Promise<string | null>
  • First parameter client now also accepts a server URL string (in addition to ClientJS)
  • When client is a URL string and getToken is provided, a dedicated ClientJS is created per model via connectClient(url, () => getToken(params)) — each model gets its own token fetched before the connection is established
  • Because the effect re-runs on every models change, getToken is always called with the new params before reconnecting (e.g. on a branch switch)
  • Existing ClientJS usage is fully backwards compatible

Usage example

const { rootNodes } = useReplicatedModels(
  "https://my-model-server/v2",
  models,                          // reactive — changes trigger reconnect
  async (params) => fetchToken(params.repositoryId, params.branchId),
);

With multiple models, each receives an independent ClientJS instance and an independently fetched token, so concurrent connections to different repositories/branches with different credentials work correctly.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • artifacts.itemis.cloud
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.xml/javax.xml.namespace=ALL-UNNAMED -XX:MaxMetaspaceSize=2g -XX:&#43;HeapDumpOnOutOfMemoryError -Xms256m -Xmx1024m -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en (dns block)
    • Triggering command: /usr/bin/curl curl -s REDACTED (dns block)
    • Triggering command: /usr/bin/curl curl -s --max-time 5 REDACTED tem ]; then /usr/lib/php/sessionclean; fi --global ndor/bin/bash credential.usernbash (dns block)
  • https://api.github.com/repos/modelix/incremental/releases
    • Triggering command: /usr/bin/curl curl -s --max-time 10 REDACTED --local user.email nfig/composer/vendor/bin/bash (http block)
    • Triggering command: /usr/bin/curl curl -s --max-time 10 REDACTED --local odelix.core/build-logic/ /usr/bin/cut /gradle (http block)
  • https://api.github.com/repos/modelix/modelix.core/packages
    • Triggering command: /usr/bin/curl curl -s REDACTED cut -c1 (http block)
  • jitpack.io
    • Triggering command: /usr/bin/curl curl -s --max-time 10 REDACTED --local user.email sh (dns block)

If you need me to access, download, or install something from one of these locations, you can either:


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

…meters parameter

Co-authored-by: abstraktor <569215+abstraktor@users.noreply.github.com>
Copilot AI changed the title [WIP] Update token fetching logic for replicated models Add per-model token provider to useReplicatedModels Mar 9, 2026
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