@antseed/router-core 0.1.50 → 0.1.51

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.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { scoreCandidates, DEFAULT_WEIGHTS, type ScoringWeights, type ScoredCandidate, type TokenPricingUsdPerMillion, type PeerMetrics, } from './peer-scorer.js';
2
2
  export { PeerMetricsTracker, computeFailureCooldownMs, DEFAULT_MAX_FAILURES, DEFAULT_FAILURE_COOLDOWN_MS, MAX_COOLDOWN_DOUBLINGS, type PeerMetricsTrackerConfig, type FailureCooldownOptions, } from './peer-metrics.js';
3
- export { WELL_KNOWN_TOOL_HINTS, formatToolHints, type ToolHint, } from './tool-hints.js';
3
+ export { WELL_KNOWN_TOOL_HINTS, formatToolHints, toolHintBaseUrl, type ToolHint, } from './tool-hints.js';
4
4
  export { ModelRoutingClient, routingProtocolOfTarget, type ModelRoutingClientApi } from './model-routing-client.js';
5
5
  export { candidatePricing, findRoutingClientAdapter, InvalidRouterOptionsError, irpCandidateId, irpSuggestAdapter, RouterCannotRankError, routingClientAdapter, validateRouterOptions, type RankCandidate, type RouterOptionSpec, type RoutingClientAdapter, } from './routing-adapters/index.js';
6
6
  export { CacheObservations } from './cache-observations.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,GAC5B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,KAAK,QAAQ,GACd,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACnH,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,GAC5B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,KAAK,QAAQ,GACd,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACnH,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { scoreCandidates, DEFAULT_WEIGHTS, } from './peer-scorer.js';
2
2
  export { PeerMetricsTracker, computeFailureCooldownMs, DEFAULT_MAX_FAILURES, DEFAULT_FAILURE_COOLDOWN_MS, MAX_COOLDOWN_DOUBLINGS, } from './peer-metrics.js';
3
- export { WELL_KNOWN_TOOL_HINTS, formatToolHints, } from './tool-hints.js';
3
+ export { WELL_KNOWN_TOOL_HINTS, formatToolHints, toolHintBaseUrl, } from './tool-hints.js';
4
4
  export { ModelRoutingClient, routingProtocolOfTarget } from './model-routing-client.js';
5
5
  export { candidatePricing, findRoutingClientAdapter, InvalidRouterOptionsError, irpCandidateId, irpSuggestAdapter, RouterCannotRankError, routingClientAdapter, validateRouterOptions, } from './routing-adapters/index.js';
6
6
  export { CacheObservations } from './cache-observations.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,GAKhB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,GAGvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,qBAAqB,EACrB,eAAe,GAEhB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAA8B,MAAM,2BAA2B,CAAA;AACnH,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GAItB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,GAKhB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,GAGvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,GAEhB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAA8B,MAAM,2BAA2B,CAAA;AACnH,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GAItB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -3,5 +3,7 @@ export interface ToolHint {
3
3
  envVar: string;
4
4
  }
5
5
  export declare const WELL_KNOWN_TOOL_HINTS: ToolHint[];
6
+ /** The base URL a tool should be given for the env var it reads. */
7
+ export declare function toolHintBaseUrl(envVar: string, proxyUrl: string): string;
6
8
  export declare function formatToolHints(hints: ToolHint[], proxyUrl: string): string[];
7
9
  //# sourceMappingURL=tool-hints.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-hints.d.ts","sourceRoot":"","sources":["../src/tool-hints.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,eAAO,MAAM,qBAAqB,EAAE,QAAQ,EAK3C,CAAA;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7E"}
1
+ {"version":3,"file":"tool-hints.d.ts","sourceRoot":"","sources":["../src/tool-hints.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,eAAO,MAAM,qBAAqB,EAAE,QAAQ,EAK3C,CAAA;AAOD,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGxE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7E"}
@@ -4,7 +4,16 @@ export const WELL_KNOWN_TOOL_HINTS = [
4
4
  { name: 'Continue.dev', envVar: 'OPENAI_BASE_URL' },
5
5
  { name: 'Codex', envVar: 'OPENAI_BASE_URL' },
6
6
  ];
7
+ // OpenAI clients expect the base URL to end in /v1 and append /chat/completions
8
+ // themselves. Anthropic clients (and Claude Code) append /v1/messages, so their
9
+ // base URL is the proxy root.
10
+ const OPENAI_STYLE_ENV_VARS = new Set(['OPENAI_BASE_URL', 'OPENAI_API_BASE']);
11
+ /** The base URL a tool should be given for the env var it reads. */
12
+ export function toolHintBaseUrl(envVar, proxyUrl) {
13
+ const root = proxyUrl.replace(/\/+$/, '');
14
+ return OPENAI_STYLE_ENV_VARS.has(envVar) ? `${root}/v1` : root;
15
+ }
7
16
  export function formatToolHints(hints, proxyUrl) {
8
- return hints.map(hint => `export ${hint.envVar}=${proxyUrl} # ${hint.name}`);
17
+ return hints.map(hint => `export ${hint.envVar}=${toolHintBaseUrl(hint.envVar, proxyUrl)} # ${hint.name}`);
9
18
  }
10
19
  //# sourceMappingURL=tool-hints.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-hints.js","sourceRoot":"","sources":["../src/tool-hints.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,qBAAqB,GAAe;IAC/C,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,oBAAoB,EAAE;IACrD,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE;IAC5C,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE;IACnD,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE;CAC7C,CAAA;AAED,MAAM,UAAU,eAAe,CAAC,KAAiB,EAAE,QAAgB;IACjE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,CAAC,MAAM,IAAI,QAAQ,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;AAChF,CAAC"}
1
+ {"version":3,"file":"tool-hints.js","sourceRoot":"","sources":["../src/tool-hints.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,qBAAqB,GAAe;IAC/C,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,oBAAoB,EAAE;IACrD,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE;IAC5C,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE;IACnD,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE;CAC7C,CAAA;AAED,gFAAgF;AAChF,gFAAgF;AAChF,8BAA8B;AAC9B,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAA;AAE7E,oEAAoE;AACpE,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,QAAgB;IAC9D,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACzC,OAAO,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AAChE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAiB,EAAE,QAAgB;IACjE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;AAC9G,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antseed/router-core",
3
- "version": "0.1.50",
3
+ "version": "0.1.51",
4
4
  "description": "Shared router infrastructure for Antseed plugins",
5
5
  "type": "module",
6
6
  "files": [
@@ -14,7 +14,7 @@
14
14
  "devDependencies": {
15
15
  "typescript": "^5.5.0",
16
16
  "vitest": "^2.0.0",
17
- "@antseed/node": "0.2.143"
17
+ "@antseed/node": "0.2.172"
18
18
  },
19
19
  "scripts": {
20
20
  "prebuild": "node ../../scripts/remove-paths.mjs dist",