@plurnk/plurnk-aliases 1.7.0 → 1.8.0

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/README.md CHANGED
@@ -1,14 +1,15 @@
1
1
  # @plurnk/plurnk-aliases
2
2
 
3
- Zero-dependency parser for the plurnk model-alias cascade. Vendor-agnostic, MIT.
3
+ Runtime-free parser for Plurnk model selectors and the optional alias cascade.
4
+ Vendor-agnostic, MIT.
4
5
 
5
6
  Resolves `PLURNK_MODEL_<alias>=<provider>/<model>` env vars (plus per-alias
6
7
  `PLURNK_BASEURL_<alias>` endpoint overrides) into structured `ProviderAlias`
7
- records. Extracted from `@plurnk/plurnk-providers` so a **thin client** can
8
- resolve aliases from its own always-fresh env and send the daemon a resolved
9
- `{ provider, model, baseUrl? }` without pulling the provider-instantiation or
10
- tokenizer machinery. `@plurnk/plurnk-providers` depends on this and re-exports
11
- the same surface, so it stays the single source of truth.
8
+ records. `PLURNK_MODEL` may select one of those aliases or an exact
9
+ `provider/model` route. `@plurnk/plurnk-providers` depends on this package and
10
+ re-exports the same surface, keeping environment parsing separate from provider
11
+ construction. Clients send selector strings; the daemon resolves them against
12
+ its own operator environment.
12
13
 
13
14
  ## Install
14
15
 
@@ -21,10 +22,11 @@ Node ≥26, ESM.
21
22
  ## API
22
23
 
23
24
  ```ts
24
- import { parseAliasesFromEnv, resolveActiveAlias, type ProviderAlias } from "@plurnk/plurnk-aliases";
25
+ import { parseAliasesFromEnv, resolveActiveRoute, resolveModelSelector, type ProviderAlias, type ProviderSpec } from "@plurnk/plurnk-aliases";
25
26
 
26
27
  parseAliasesFromEnv(env = process.env): ProviderAlias[] // every declared alias
27
- resolveActiveAlias(env = process.env): ProviderAlias | null // the PLURNK_MODEL-selected one, or null
28
+ resolveModelSelector(selector, aliases): ProviderSpec | null // alias or exact route
29
+ resolveActiveRoute(env = process.env): ProviderSpec | null // the PLURNK_MODEL-selected route, or null
28
30
  ```
29
31
 
30
32
  ```ts
@@ -36,10 +38,10 @@ interface ProviderAlias {
36
38
  }
37
39
  ```
38
40
 
39
- To resolve a named alias (e.g. from `loop.run({ alias })`), parse and find:
41
+ To resolve a selector from a client control:
40
42
 
41
43
  ```ts
42
- const alias = parseAliasesFromEnv().find((a) => a.alias === name.toLowerCase());
44
+ const route = resolveModelSelector(selector, parseAliasesFromEnv());
43
45
  ```
44
46
 
45
47
  ## Contract
@@ -47,4 +49,5 @@ const alias = parseAliasesFromEnv().find((a) => a.alias === name.toLowerCase());
47
49
  The provider segment is the **first** `/`-delimited field; the model id is the
48
50
  remainder (it may itself contain `/`). Aliases are case-folded. Fail-hard on a
49
51
  case-folding collision (two keys → one alias) and on a `PLURNK_BASEURL_*`
50
- override with no matching alias (a typo, never a silent no-op). See `SPEC.md`.
52
+ override with no matching alias (a typo, never a silent no-op). Exact routes do
53
+ not manufacture aliases or gain alias-scoped tuning. See `SPEC.md`.
package/SPEC.md CHANGED
@@ -1,18 +1,22 @@
1
1
  # @plurnk/plurnk-aliases — contract
2
2
 
3
- The canonical parser for the plurnk model-alias cascade. Zero runtime
3
+ The canonical runtime-free parser for Plurnk model selectors and the optional
4
+ model-alias cascade. Zero runtime
4
5
  dependencies. `@plurnk/plurnk-providers` depends on this package and re-exports
5
- its surface unchanged; thin clients depend on it directly to resolve aliases
6
- without the provider/tokenizer machinery.
6
+ its surface unchanged. Clients transmit selector strings and never resolve the
7
+ daemon's environment themselves; this package is the daemon/provider runtime's
8
+ single parsing authority.
7
9
 
8
10
  ## The cascade
9
11
 
10
12
  - **`PLURNK_MODEL_<alias>=<provider>/<model>`** declares an alias. The provider
11
13
  segment is the **first** `/`-delimited field; the model id is everything after
12
14
  that first `/` (it MAY contain further `/`, e.g. `openrouter/anthropic/claude-…`).
13
- - **`PLURNK_MODEL=<alias>`** selects the active alias at boot.
14
- - §alias-child-selector-reserved **`PLURNK_MODEL_CHILD=<alias>` is reserved as
15
- the child-provider selector** and is never parsed as an alias declaration.
15
+ - **`PLURNK_MODEL=<selector>`** selects either a declared alias or an exact
16
+ `<provider>/<model>` route at boot.
17
+ - §alias-child-selector-reserved **`PLURNK_MODEL_CHILD=<selector>` is reserved as
18
+ the child-provider selector** and is never parsed as an alias declaration. It
19
+ accepts the same alias-or-route vocabulary.
16
20
  - **`PLURNK_BASEURL_<alias>`** attaches a per-alias endpoint override — the one
17
21
  thing a per-provider base-URL var can't express (two aliases on the same
18
22
  provider name pointing at different self-hosted boxes).
@@ -20,24 +24,34 @@ without the provider/tokenizer machinery.
20
24
  Alias keys are **case-folded** (the suffix after `PLURNK_MODEL_` / `PLURNK_BASEURL_`
21
25
  is downcased), so `PLURNK_MODEL_opus` and `PLURNK_MODEL_OPUS` name the same alias.
22
26
 
23
- ## `ProviderAlias`
27
+ ## Route types
24
28
 
25
29
  ```ts
26
- interface ProviderAlias {
27
- readonly alias: string;
30
+ interface ProviderSpec {
28
31
  readonly provider: string;
29
32
  readonly model: string;
30
- readonly baseUrl?: string; // present only when PLURNK_BASEURL_<alias> is set
33
+ readonly alias?: string;
34
+ readonly baseUrl?: string;
31
35
  }
36
+
37
+ type ProviderAlias = ProviderSpec & { readonly alias: string };
32
38
  ```
33
39
 
40
+ This daemon-private construction shape is distinct from the client-visible
41
+ `ModelRoute`, which contains only `provider`, `model`, and optional alias
42
+ provenance. An exact provider spec omits `alias` and `baseUrl`. A declared alias
43
+ carries both its provenance and any `PLURNK_BASEURL_<alias>` override;
44
+ alias-scoped tuning applies only when that real alias is present.
45
+
34
46
  ## Functions
35
47
 
36
48
  - **`parseAliasesFromEnv(env = process.env): ProviderAlias[]`** — every declared
37
49
  alias. Skips entries with an empty value or no `/` in the value.
38
- - **`resolveActiveAlias(env = process.env): ProviderAlias | null`** — the alias
39
- named by `PLURNK_MODEL` (case-insensitive), or `null` when `PLURNK_MODEL` is
40
- unset or names no declared alias.
50
+ - **`resolveModelSelector(selector, aliases): ProviderSpec | null`** — resolves a
51
+ case-insensitive declared alias or splits one exact route at its first `/`.
52
+ - **`resolveActiveRoute(env = process.env): ProviderSpec | null`** — resolves
53
+ `PLURNK_MODEL`, or returns `null` only when it is unset. An explicit unknown or
54
+ malformed selector fails instead of silently disabling the provider.
41
55
 
42
56
  ## Fail-hard rules
43
57
 
@@ -45,5 +59,7 @@ interface ProviderAlias {
45
59
  same alias throw (`Duplicate provider alias "<alias>"`). No silent pick.
46
60
  - **Dangling override** — a `PLURNK_BASEURL_*` whose alias has no matching
47
61
  `PLURNK_MODEL_*` throws (a typo, not a silent no-op).
62
+ - **Unresolved active selector** — a non-empty `PLURNK_MODEL` that is neither a
63
+ declared alias nor a complete exact route throws.
48
64
 
49
65
  Both are contract violations surfaced loudly, never recovered.
package/dist/aliases.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import type { ProviderAlias } from "./types.ts";
1
+ import type { ProviderAlias, ProviderSpec } from "./types.ts";
2
2
  export declare const parseAliasesFromEnv: (env?: NodeJS.ProcessEnv) => ProviderAlias[];
3
- export declare const resolveActiveAlias: (env?: NodeJS.ProcessEnv) => ProviderAlias | null;
3
+ export declare const resolveModelSelector: (selector: string, aliases: readonly ProviderAlias[]) => ProviderSpec | null;
4
+ export declare const resolveActiveRoute: (env?: NodeJS.ProcessEnv) => ProviderSpec | null;
4
5
  //# sourceMappingURL=aliases.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aliases.d.ts","sourceRoot":"","sources":["../src/aliases.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAkBhD,eAAO,MAAM,mBAAmB,SAAS,MAAM,CAAC,UAAU,KAAiB,aAAa,EAwBvF,CAAC;AAEF,eAAO,MAAM,kBAAkB,SAAS,MAAM,CAAC,UAAU,KAAiB,aAAa,GAAG,IAKzF,CAAC"}
1
+ {"version":3,"file":"aliases.d.ts","sourceRoot":"","sources":["../src/aliases.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAkB9D,eAAO,MAAM,mBAAmB,SAAS,MAAM,CAAC,UAAU,KAAiB,aAAa,EAwBvF,CAAC;AAEF,eAAO,MAAM,oBAAoB,aACnB,MAAM,WACP,SAAS,aAAa,EAAE,KAClC,YAAY,GAAG,IAOjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,SAAS,MAAM,CAAC,UAAU,KAAiB,YAAY,GAAG,IAWxF,CAAC"}
package/dist/aliases.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // The plurnk model-alias cascade — pure env parsing, zero runtime deps.
2
2
  //
3
- // PLURNK_MODEL_<alias>=<provider>/<model> declares an alias; PLURNK_MODEL=<alias>
4
- // selects the active one at boot. The provider segment is the first "/"-delimited
3
+ // PLURNK_MODEL_<alias>=<provider>/<model> declares an alias; PLURNK_MODEL selects
4
+ // either one declared alias or one exact provider/model route at boot. The provider segment is the first "/"-delimited
5
5
  // field; the model id is the remainder (it may itself contain "/"). Aliases are
6
6
  // case-folded (the .env key suffix downcased). PLURNK_BASEURL_<alias> attaches a
7
7
  // per-alias endpoint override — the one thing a per-provider base-URL var can't
@@ -59,11 +59,24 @@ export const parseAliasesFromEnv = (env = process.env) => {
59
59
  throw new Error(`PLURNK_BASEURL_* override(s) with no matching PLURNK_MODEL_* alias: ${unmatched.join(", ")}. Declare the alias or remove the override.`);
60
60
  return out;
61
61
  };
62
- export const resolveActiveAlias = (env = process.env) => {
62
+ export const resolveModelSelector = (selector, aliases) => {
63
+ const slash = selector.indexOf("/");
64
+ if (slash > 0 && slash < selector.length - 1) {
65
+ return { provider: selector.slice(0, slash), model: selector.slice(slash + 1) };
66
+ }
67
+ if (slash !== -1)
68
+ return null;
69
+ return aliases.find((alias) => alias.alias === selector.toLowerCase()) ?? null;
70
+ };
71
+ export const resolveActiveRoute = (env = process.env) => {
63
72
  const selected = env.PLURNK_MODEL;
64
73
  if (selected === undefined || selected.length === 0)
65
74
  return null;
66
75
  const aliases = parseAliasesFromEnv(env);
67
- return aliases.find((a) => a.alias === selected.toLowerCase()) ?? null;
76
+ const route = resolveModelSelector(selected, aliases);
77
+ if (route === null) {
78
+ throw new Error(`PLURNK_MODEL '${selected}' is neither a declared alias nor a provider/model route.`);
79
+ }
80
+ return route;
68
81
  };
69
82
  //# sourceMappingURL=aliases.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aliases.js","sourceRoot":"","sources":["../src/aliases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aliases.js","sourceRoot":"","sources":["../src/aliases.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export type { ProviderAlias } from "./types.ts";
2
- export { parseAliasesFromEnv, resolveActiveAlias } from "./aliases.ts";
1
+ export type { ModelRoute, ProviderAlias, ProviderSpec } from "./types.ts";
2
+ export { parseAliasesFromEnv, resolveActiveRoute, resolveModelSelector } from "./aliases.ts";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { parseAliasesFromEnv, resolveActiveAlias } from "./aliases.js";
1
+ export { parseAliasesFromEnv, resolveActiveRoute, resolveModelSelector } from "./aliases.js";
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,7 +1,9 @@
1
- export interface ProviderAlias {
2
- readonly alias: string;
3
- readonly provider: string;
4
- readonly model: string;
1
+ import type { ModelRoute } from "@plurnk/plurnk-contracts";
2
+ export type ProviderSpec = ModelRoute & {
5
3
  readonly baseUrl?: string;
6
- }
4
+ };
5
+ export type ProviderAlias = ProviderSpec & {
6
+ readonly alias: string;
7
+ };
8
+ export type { ModelRoute } from "@plurnk/plurnk-contracts";
7
9
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAI3D,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACtE,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@plurnk/plurnk-aliases",
3
- "version": "1.7.0",
4
- "description": "Zero-dependency parser for the plurnk model-alias cascade (PLURNK_MODEL_<alias>=<provider>/<model>, PLURNK_BASEURL_<alias>). Shared by @plurnk/plurnk-providers and thin plurnk clients that resolve aliases without pulling the provider/tokenizer machinery.",
3
+ "version": "1.8.0",
4
+ "description": "Runtime-free parser for PLURNK model selectors and the model-alias cascade.",
5
5
  "keywords": [
6
6
  "plurnk",
7
7
  "alias",
@@ -48,5 +48,8 @@
48
48
  "build:dist": "tsc -p tsconfig.build.json",
49
49
  "build": "npm run build:clean && npm run build:dist",
50
50
  "prepack": "npm run build"
51
+ },
52
+ "dependencies": {
53
+ "@plurnk/plurnk-contracts": "1.8.0"
51
54
  }
52
55
  }