@easynet/agent-model 1.0.64 → 1.0.65

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.
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  clearYamlFileCache,
3
3
  loadLlmConfig,
4
+ loadModelConfig,
4
5
  loadYamlFile,
5
6
  loadYamlFileSync,
6
7
  parseLlmYaml,
@@ -18,7 +19,9 @@ import {
18
19
  var config_exports = {};
19
20
  __export(config_exports, {
20
21
  clearYamlFileCache: () => clearYamlFileCache,
22
+ createModelConfig: () => createModelConfig,
21
23
  loadLlmConfig: () => loadLlmConfig,
24
+ loadModelRuntimeConfig: () => loadModelRuntimeConfig,
22
25
  loadYamlConfig: () => loadYamlConfig,
23
26
  loadYamlFile: () => loadYamlFile,
24
27
  loadYamlFileSync: () => loadYamlFileSync,
@@ -28,6 +31,8 @@ __export(config_exports, {
28
31
  parseYamlContent: () => parseYamlContent,
29
32
  substituteEnv: () => substituteEnv
30
33
  });
34
+ import { join } from "path";
35
+ import { deepMerge } from "@easynet/agent-common";
31
36
 
32
37
  // src/config/yaml.ts
33
38
  function loadYamlConfig(filePath) {
@@ -56,9 +61,23 @@ function normalizeAgentModelConfigRef(raw) {
56
61
  return {};
57
62
  }
58
63
 
64
+ // src/config/index.ts
65
+ function loadModelRuntimeConfig(options = {}) {
66
+ const configPath = options.configPath ?? join(process.cwd(), "model.yaml");
67
+ return loadModelConfig(configPath, options.loadOptions);
68
+ }
69
+ function createModelConfig(options = {}) {
70
+ const base = loadModelRuntimeConfig(options);
71
+ if (!base) return base;
72
+ if (!options.overrides) return base;
73
+ return deepMerge({}, base, options.overrides);
74
+ }
75
+
59
76
  export {
60
77
  loadYamlConfig,
61
78
  normalizeAgentModelConfigRef,
79
+ loadModelRuntimeConfig,
80
+ createModelConfig,
62
81
  config_exports
63
82
  };
64
- //# sourceMappingURL=chunk-CDSYI3VM.js.map
83
+ //# sourceMappingURL=chunk-5QOKZ2JF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/config/index.ts","../src/config/yaml.ts","../src/config/ref.ts"],"sourcesContent":["import { join } from \"node:path\";\nimport { deepMerge } from \"@easynet/agent-common\";\nimport { loadModelConfig, type LoadLlmConfigOptions, type ModelConfigResult } from \"./loader.js\";\n\nexport { parseLlmSection } from \"./parser.js\";\nexport { loadLlmConfig, parseLlmYaml, substituteEnv } from \"./loader.js\";\nexport { loadYamlConfig } from \"./yaml.js\";\nexport { normalizeAgentModelConfigRef } from \"./ref.js\";\nexport {\n loadYamlFile,\n loadYamlFileSync,\n parseYamlContent,\n clearYamlFileCache,\n type LoadYamlOptions,\n type YamlEnvOptions,\n} from \"./yaml-utils.js\";\nexport type { LoadLlmConfigOptions, ModelConfigResult } from \"./loader.js\";\nexport type { AgentModelConfigRef } from \"./ref.js\";\n\nexport interface LoadModelConfigOptions {\n configPath?: string;\n loadOptions?: LoadLlmConfigOptions;\n}\n\nexport interface CreateModelConfigOptions extends LoadModelConfigOptions {\n overrides?: Partial<ModelConfigResult>;\n}\n\nexport function loadModelRuntimeConfig(options: LoadModelConfigOptions = {}): ModelConfigResult | null {\n const configPath = options.configPath ?? join(process.cwd(), \"model.yaml\");\n return loadModelConfig(configPath, options.loadOptions);\n}\n\nexport function createModelConfig(options: CreateModelConfigOptions = {}): ModelConfigResult | null {\n const base = loadModelRuntimeConfig(options);\n if (!base) return base;\n if (!options.overrides) return base;\n return deepMerge({} as ModelConfigResult, base, options.overrides);\n}\n","/**\n * Generic YAML file loader utility.\n */\n\nimport { loadYamlFileSync } from \"./yaml-utils.js\";\n\n/**\n * Load and parse a YAML file into a typed object.\n * Returns empty object if file doesn't exist.\n */\nexport function loadYamlConfig<T = Record<string, unknown>>(filePath: string): T {\n try {\n const parsed = loadYamlFileSync<T>(filePath, {\n substituteEnv: true,\n missingEnv: \"keep\",\n cache: true,\n });\n return (parsed ?? ({} as T)) as T;\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new Error(`Failed to load YAML config from ${filePath}: ${msg}`, { cause: e });\n }\n}\n","/** Agent-level reference to models config file. */\nexport interface AgentModelConfigRef {\n ref?: string;\n}\n\nfunction asObject(input: unknown): Record<string, unknown> | undefined {\n return typeof input === \"object\" && input !== null ? (input as Record<string, unknown>) : undefined;\n}\n\n/** Normalize unknown value to AgentModelConfigRef. */\nexport function normalizeAgentModelConfigRef(raw: unknown): Partial<AgentModelConfigRef> {\n if (typeof raw === \"string\" && raw.trim().length > 0) return { ref: raw.trim() };\n const obj = asObject(raw);\n if (!obj) return {};\n if (typeof obj.ref === \"string\" && obj.ref.trim().length > 0) return { ref: obj.ref.trim() };\n return {};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,YAAY;AACrB,SAAS,iBAAiB;;;ACSnB,SAAS,eAA4C,UAAqB;AAC/E,MAAI;AACF,UAAM,SAAS,iBAAoB,UAAU;AAAA,MAC3C,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,OAAO;AAAA,IACT,CAAC;AACD,WAAQ,UAAW,CAAC;AAAA,EACtB,SAAS,GAAG;AACV,UAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,UAAM,IAAI,MAAM,mCAAmC,QAAQ,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC;AAAA,EACrF;AACF;;;ACjBA,SAAS,SAAS,OAAqD;AACrE,SAAO,OAAO,UAAU,YAAY,UAAU,OAAQ,QAAoC;AAC5F;AAGO,SAAS,6BAA6B,KAA4C;AACvF,MAAI,OAAO,QAAQ,YAAY,IAAI,KAAK,EAAE,SAAS,EAAG,QAAO,EAAE,KAAK,IAAI,KAAK,EAAE;AAC/E,QAAM,MAAM,SAAS,GAAG;AACxB,MAAI,CAAC,IAAK,QAAO,CAAC;AAClB,MAAI,OAAO,IAAI,QAAQ,YAAY,IAAI,IAAI,KAAK,EAAE,SAAS,EAAG,QAAO,EAAE,KAAK,IAAI,IAAI,KAAK,EAAE;AAC3F,SAAO,CAAC;AACV;;;AFYO,SAAS,uBAAuB,UAAkC,CAAC,GAA6B;AACrG,QAAM,aAAa,QAAQ,cAAc,KAAK,QAAQ,IAAI,GAAG,YAAY;AACzE,SAAO,gBAAgB,YAAY,QAAQ,WAAW;AACxD;AAEO,SAAS,kBAAkB,UAAoC,CAAC,GAA6B;AAClG,QAAM,OAAO,uBAAuB,OAAO;AAC3C,MAAI,CAAC,KAAM,QAAO;AAClB,MAAI,CAAC,QAAQ,UAAW,QAAO;AAC/B,SAAO,UAAU,CAAC,GAAwB,MAAM,QAAQ,SAAS;AACnE;","names":[]}
@@ -1,8 +1,18 @@
1
+ import { type LoadLlmConfigOptions, type ModelConfigResult } from "./loader.js";
1
2
  export { parseLlmSection } from "./parser.js";
2
3
  export { loadLlmConfig, parseLlmYaml, substituteEnv } from "./loader.js";
3
4
  export { loadYamlConfig } from "./yaml.js";
4
5
  export { normalizeAgentModelConfigRef } from "./ref.js";
5
6
  export { loadYamlFile, loadYamlFileSync, parseYamlContent, clearYamlFileCache, type LoadYamlOptions, type YamlEnvOptions, } from "./yaml-utils.js";
6
- export type { LoadLlmConfigOptions } from "./loader.js";
7
+ export type { LoadLlmConfigOptions, ModelConfigResult } from "./loader.js";
7
8
  export type { AgentModelConfigRef } from "./ref.js";
9
+ export interface LoadModelConfigOptions {
10
+ configPath?: string;
11
+ loadOptions?: LoadLlmConfigOptions;
12
+ }
13
+ export interface CreateModelConfigOptions extends LoadModelConfigOptions {
14
+ overrides?: Partial<ModelConfigResult>;
15
+ }
16
+ export declare function loadModelRuntimeConfig(options?: LoadModelConfigOptions): ModelConfigResult | null;
17
+ export declare function createModelConfig(options?: CreateModelConfigOptions): ModelConfigResult | null;
8
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEjG,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACxC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,sBAA2B,GAAG,iBAAiB,GAAG,IAAI,CAGrG;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,wBAA6B,GAAG,iBAAiB,GAAG,IAAI,CAKlG"}
@@ -1,7 +1,9 @@
1
1
  import {
2
+ createModelConfig,
3
+ loadModelRuntimeConfig,
2
4
  loadYamlConfig,
3
5
  normalizeAgentModelConfigRef
4
- } from "../chunk-CDSYI3VM.js";
6
+ } from "../chunk-5QOKZ2JF.js";
5
7
  import {
6
8
  clearYamlFileCache,
7
9
  loadLlmConfig,
@@ -17,7 +19,9 @@ import {
17
19
  import "../chunk-PZ5AY32C.js";
18
20
  export {
19
21
  clearYamlFileCache,
22
+ createModelConfig,
20
23
  loadLlmConfig,
24
+ loadModelRuntimeConfig,
21
25
  loadYamlConfig,
22
26
  loadYamlFile,
23
27
  loadYamlFileSync,
package/dist/index.d.ts CHANGED
@@ -11,7 +11,8 @@ export type { GetDefaultVlmConfigOptions } from "./api/get-default-vlm-config.js
11
11
  export { createEmbedFnFromModelsConfig } from "./api/create-embed-fn.js";
12
12
  export type { EmbedFn } from "./api/create-embed-fn.js";
13
13
  export type { AgentModelConfigRef } from "./config/index.js";
14
- export { normalizeAgentModelConfigRef } from "./config/index.js";
14
+ export { normalizeAgentModelConfigRef, loadModelRuntimeConfig, createModelConfig, } from "./config/index.js";
15
+ export type { LoadModelConfigOptions, CreateModelConfigOptions } from "./config/index.js";
15
16
  export { createChatModelFromLlmConfig } from "./langchain/index.js";
16
17
  export type { CreateChatModelOptions } from "./langchain/index.js";
17
18
  export { applyToolChoiceAuto } from "./langchain/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,YAAY,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,YAAY,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,YAAY,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,WAAW,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,aAAa,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,eAAe,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;CASX,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;CASd,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,YAAY,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,YAAY,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAG1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,YAAY,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,WAAW,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,aAAa,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,eAAe,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;CASX,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;CASd,CAAC"}
package/dist/index.js CHANGED
@@ -7,8 +7,10 @@ import {
7
7
  } from "./chunk-WMEFXWNS.js";
8
8
  import {
9
9
  config_exports,
10
+ createModelConfig,
11
+ loadModelRuntimeConfig,
10
12
  normalizeAgentModelConfigRef
11
- } from "./chunk-CDSYI3VM.js";
13
+ } from "./chunk-5QOKZ2JF.js";
12
14
  import {
13
15
  loadLlmConfig,
14
16
  loadModelConfig
@@ -124,9 +126,11 @@ export {
124
126
  createAgentLlm,
125
127
  createChatModelFromLlmConfig,
126
128
  createEmbedFnFromModelsConfig,
129
+ createModelConfig,
127
130
  getChatModelFactory,
128
131
  getDefaultLlmConfig,
129
132
  getDefaultVlmConfig,
133
+ loadModelRuntimeConfig,
130
134
  modelApi,
131
135
  normalizeAgentModelConfigRef,
132
136
  platformApi,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/get-default-llm-config.ts","../src/api/get-default-vlm-config.ts","../src/api/create-embed-fn.ts","../src/index.ts"],"sourcesContent":["/**\n * Load model.yaml, resolve npm providers, and return the default LLMConfig.\n * For use by CLIs (e.g. wallee-llm) that need config without creating a model.\n */\n\nimport { join } from \"node:path\";\nimport { loadLlmConfig } from \"../config/loader.js\";\nimport { parseLlmSection } from \"../config/parser.js\";\nimport { resolveLlmSectionWithNpm } from \"../extensions/npm-protocol.js\";\nimport type { LLMConfig } from \"../types.js\";\n\nexport interface GetDefaultLlmConfigOptions {\n /** Path to model.yaml. Default: process.cwd() + \"/model.yaml\" */\n configPath?: string;\n /** Install npm provider packages if missing. Default true. */\n installNpmIfMissing?: boolean;\n}\n\n/**\n * Returns the default LLM config from model.yaml (after resolving npm: providers), or null if no config file.\n */\nexport async function getDefaultLlmConfig(\n options: GetDefaultLlmConfigOptions = {}\n): Promise<LLMConfig | null> {\n const configPath = options.configPath ?? join(process.cwd(), \"model.yaml\");\n const llmSection = loadLlmConfig(configPath);\n if (llmSection == null) return null;\n\n const resolved = await resolveLlmSectionWithNpm(llmSection, {\n installNpmIfMissing: options.installNpmIfMissing !== false,\n cwd: process.cwd(),\n });\n\n const { defaultId, configs } = parseLlmSection(resolved);\n const defaultConfig = configs.find((c: LLMConfig) => c.id === defaultId) ?? configs[0] ?? null;\n return defaultConfig;\n}\n","/**\n * Load model.yaml, resolve npm providers, and return a default VLM (type=image) config.\n */\n\nimport { join } from \"node:path\";\nimport { loadModelConfig } from \"../config/loader.js\";\nimport { parseLlmSection } from \"../config/parser.js\";\nimport { resolveLlmSectionWithNpm } from \"../extensions/npm-protocol.js\";\nimport type { LLMConfig } from \"../types.js\";\n\nexport interface GetDefaultVlmConfigOptions {\n /** Path to model.yaml. Default: process.cwd() + \"/model.yaml\" */\n configPath?: string;\n /** Install npm provider packages if missing. Default true. */\n installNpmIfMissing?: boolean;\n}\n\n/**\n * Returns the default VLM config (type=image) from model.yaml, or null if not configured.\n */\nexport async function getDefaultVlmConfig(\n options: GetDefaultVlmConfigOptions = {},\n): Promise<LLMConfig | null> {\n const configPath = options.configPath ?? join(process.cwd(), \"model.yaml\");\n const modelConfig = loadModelConfig(configPath);\n if (modelConfig == null) return null;\n\n // Prefer top-level `vlm:`. Fallback to `llm:` section with type=image entries.\n const sourceSection = modelConfig.vlm ?? modelConfig.llm;\n if (sourceSection == null) return null;\n\n const resolved = await resolveLlmSectionWithNpm(sourceSection, {\n installNpmIfMissing: options.installNpmIfMissing !== false,\n cwd: process.cwd(),\n });\n\n const { defaultId, configs } = parseLlmSection(resolved);\n const imageConfigs = configs.filter((c: LLMConfig) => c.type === \"image\");\n if (imageConfigs.length === 0) return null;\n\n const defaultConfig =\n imageConfigs.find((c: LLMConfig) => c.id === defaultId) ??\n imageConfigs[0] ??\n null;\n return defaultConfig;\n}\n","/**\n * Create an EmbedFn from the embed section of model.yaml.\n */\nimport { createModelHub } from \"../model/hub.js\";\nimport { parseEmbedSection } from \"../model/embed-parser.js\";\nimport { loadModelConfig } from \"../config/loader.js\";\n\nexport type EmbedFn = (input: string | string[]) => Promise<number[][]>;\n\n/**\n * Load model.yaml and build an EmbedFn from the `embed:` section.\n * Returns undefined if no embed section is configured.\n *\n * @param configPath - Path to model.yaml\n * @param embedId - Which embed instance to use (defaults to the `default:` key)\n */\nexport function createEmbedFnFromModelsConfig(\n configPath: string,\n embedId?: string,\n): EmbedFn | undefined {\n const config = loadModelConfig(configPath);\n if (!config?.embed) return undefined;\n\n const parsed = parseEmbedSection(config.embed);\n if (parsed.configs.length === 0) return undefined;\n\n const id = embedId ?? parsed.defaultId;\n const embedConfig =\n parsed.configs.find((c) => c.id === id) ?? parsed.configs[0];\n if (!embedConfig) return undefined;\n\n const hub = createModelHub({\n embeddingBaseURL: embedConfig.baseURL,\n embeddingModel: embedConfig.model,\n embeddingApiKey: embedConfig.apiKey,\n });\n\n return async (input: string | string[]) => {\n const result = await hub.embed({ input });\n return result.vectors;\n };\n}\n","/**\n * Minimal public API for @easynet/agent-model.\n * Goal: create a chat model from `model.yaml` with the smallest possible surface.\n */\n\n// Main high-level APIs\nexport { createAgentLlm } from \"./api/create-agent-llm.js\";\nexport type { CreateAgentLlmOptions } from \"./api/create-agent-llm.js\";\nexport { getDefaultLlmConfig } from \"./api/get-default-llm-config.js\";\nexport type { GetDefaultLlmConfigOptions } from \"./api/get-default-llm-config.js\";\nexport { getDefaultVlmConfig } from \"./api/get-default-vlm-config.js\";\nexport type { GetDefaultVlmConfigOptions } from \"./api/get-default-vlm-config.js\";\nexport { createEmbedFnFromModelsConfig } from \"./api/create-embed-fn.js\";\nexport type { EmbedFn } from \"./api/create-embed-fn.js\";\nexport type { AgentModelConfigRef } from \"./config/index.js\";\nexport { normalizeAgentModelConfigRef } from \"./config/index.js\";\n\n// Common runtime helper (used by agent-runtime)\nexport { createChatModelFromLlmConfig } from \"./langchain/index.js\";\nexport type { CreateChatModelOptions } from \"./langchain/index.js\";\nexport { applyToolChoiceAuto } from \"./langchain/index.js\";\n\n// Provider extension registration\nexport { registerChatModelProvider, getChatModelFactory } from \"./registry/chat-model.js\";\nexport type { ChatModelFactory } from \"./registry/chat-model.js\";\n\nimport { createAgentLlm } from \"./api/create-agent-llm.js\";\nimport { getDefaultLlmConfig } from \"./api/get-default-llm-config.js\";\nimport { getDefaultVlmConfig } from \"./api/get-default-vlm-config.js\";\nimport { createEmbedFnFromModelsConfig } from \"./api/create-embed-fn.js\";\nimport { createChatModelFromLlmConfig, applyToolChoiceAuto } from \"./langchain/index.js\";\nimport { registerChatModelProvider, getChatModelFactory } from \"./registry/chat-model.js\";\nimport * as ConfigApi from \"./config/index.js\";\nimport * as LangChainApi from \"./langchain/index.js\";\nimport * as ModelApi from \"./model/index.js\";\nimport * as RegistryApi from \"./registry/index.js\";\nimport * as ExtensionsApi from \"./extensions/index.js\";\nimport * as ConnectivityApi from \"./connectivity/index.js\";\nimport * as NpmApi from \"./npm/index.js\";\nimport * as CliApi from \"./cli/index.js\";\n\n/**\n * Facade: high-frequency model APIs with a single import.\n */\nexport const modelApi = {\n createAgentLlm,\n getDefaultLlmConfig,\n getDefaultVlmConfig,\n createEmbedFnFromModelsConfig,\n createChatModelFromLlmConfig,\n applyToolChoiceAuto,\n registerChatModelProvider,\n getChatModelFactory,\n} as const;\n\n/**\n * Facade: grouped subpath modules (config/langchain/model/registry/extensions/connectivity/npm/cli).\n */\nexport const platformApi = {\n config: ConfigApi,\n langchain: LangChainApi,\n model: ModelApi,\n registry: RegistryApi,\n extensions: ExtensionsApi,\n connectivity: ConnectivityApi,\n npm: NpmApi,\n cli: CliApi,\n} as const;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,SAAS,YAAY;AAgBrB,eAAsB,oBACpB,UAAsC,CAAC,GACZ;AAC3B,QAAM,aAAa,QAAQ,cAAc,KAAK,QAAQ,IAAI,GAAG,YAAY;AACzE,QAAM,aAAa,cAAc,UAAU;AAC3C,MAAI,cAAc,KAAM,QAAO;AAE/B,QAAM,WAAW,MAAM,yBAAyB,YAAY;AAAA,IAC1D,qBAAqB,QAAQ,wBAAwB;AAAA,IACrD,KAAK,QAAQ,IAAI;AAAA,EACnB,CAAC;AAED,QAAM,EAAE,WAAW,QAAQ,IAAI,gBAAgB,QAAQ;AACvD,QAAM,gBAAgB,QAAQ,KAAK,CAAC,MAAiB,EAAE,OAAO,SAAS,KAAK,QAAQ,CAAC,KAAK;AAC1F,SAAO;AACT;;;AChCA,SAAS,QAAAA,aAAY;AAgBrB,eAAsB,oBACpB,UAAsC,CAAC,GACZ;AAC3B,QAAM,aAAa,QAAQ,cAAcC,MAAK,QAAQ,IAAI,GAAG,YAAY;AACzE,QAAM,cAAc,gBAAgB,UAAU;AAC9C,MAAI,eAAe,KAAM,QAAO;AAGhC,QAAM,gBAAgB,YAAY,OAAO,YAAY;AACrD,MAAI,iBAAiB,KAAM,QAAO;AAElC,QAAM,WAAW,MAAM,yBAAyB,eAAe;AAAA,IAC7D,qBAAqB,QAAQ,wBAAwB;AAAA,IACrD,KAAK,QAAQ,IAAI;AAAA,EACnB,CAAC;AAED,QAAM,EAAE,WAAW,QAAQ,IAAI,gBAAgB,QAAQ;AACvD,QAAM,eAAe,QAAQ,OAAO,CAAC,MAAiB,EAAE,SAAS,OAAO;AACxE,MAAI,aAAa,WAAW,EAAG,QAAO;AAEtC,QAAM,gBACJ,aAAa,KAAK,CAAC,MAAiB,EAAE,OAAO,SAAS,KACtD,aAAa,CAAC,KACd;AACF,SAAO;AACT;;;AC7BO,SAAS,8BACd,YACA,SACqB;AACrB,QAAM,SAAS,gBAAgB,UAAU;AACzC,MAAI,CAAC,QAAQ,MAAO,QAAO;AAE3B,QAAM,SAAS,kBAAkB,OAAO,KAAK;AAC7C,MAAI,OAAO,QAAQ,WAAW,EAAG,QAAO;AAExC,QAAM,KAAK,WAAW,OAAO;AAC7B,QAAM,cACJ,OAAO,QAAQ,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,QAAQ,CAAC;AAC7D,MAAI,CAAC,YAAa,QAAO;AAEzB,QAAM,MAAM,eAAe;AAAA,IACzB,kBAAkB,YAAY;AAAA,IAC9B,gBAAgB,YAAY;AAAA,IAC5B,iBAAiB,YAAY;AAAA,EAC/B,CAAC;AAED,SAAO,OAAO,UAA6B;AACzC,UAAM,SAAS,MAAM,IAAI,MAAM,EAAE,MAAM,CAAC;AACxC,WAAO,OAAO;AAAA,EAChB;AACF;;;ACGO,IAAM,WAAW;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKO,IAAM,cAAc;AAAA,EACzB,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,KAAK;AAAA,EACL,KAAK;AACP;","names":["join","join"]}
1
+ {"version":3,"sources":["../src/api/get-default-llm-config.ts","../src/api/get-default-vlm-config.ts","../src/api/create-embed-fn.ts","../src/index.ts"],"sourcesContent":["/**\n * Load model.yaml, resolve npm providers, and return the default LLMConfig.\n * For use by CLIs (e.g. wallee-llm) that need config without creating a model.\n */\n\nimport { join } from \"node:path\";\nimport { loadLlmConfig } from \"../config/loader.js\";\nimport { parseLlmSection } from \"../config/parser.js\";\nimport { resolveLlmSectionWithNpm } from \"../extensions/npm-protocol.js\";\nimport type { LLMConfig } from \"../types.js\";\n\nexport interface GetDefaultLlmConfigOptions {\n /** Path to model.yaml. Default: process.cwd() + \"/model.yaml\" */\n configPath?: string;\n /** Install npm provider packages if missing. Default true. */\n installNpmIfMissing?: boolean;\n}\n\n/**\n * Returns the default LLM config from model.yaml (after resolving npm: providers), or null if no config file.\n */\nexport async function getDefaultLlmConfig(\n options: GetDefaultLlmConfigOptions = {}\n): Promise<LLMConfig | null> {\n const configPath = options.configPath ?? join(process.cwd(), \"model.yaml\");\n const llmSection = loadLlmConfig(configPath);\n if (llmSection == null) return null;\n\n const resolved = await resolveLlmSectionWithNpm(llmSection, {\n installNpmIfMissing: options.installNpmIfMissing !== false,\n cwd: process.cwd(),\n });\n\n const { defaultId, configs } = parseLlmSection(resolved);\n const defaultConfig = configs.find((c: LLMConfig) => c.id === defaultId) ?? configs[0] ?? null;\n return defaultConfig;\n}\n","/**\n * Load model.yaml, resolve npm providers, and return a default VLM (type=image) config.\n */\n\nimport { join } from \"node:path\";\nimport { loadModelConfig } from \"../config/loader.js\";\nimport { parseLlmSection } from \"../config/parser.js\";\nimport { resolveLlmSectionWithNpm } from \"../extensions/npm-protocol.js\";\nimport type { LLMConfig } from \"../types.js\";\n\nexport interface GetDefaultVlmConfigOptions {\n /** Path to model.yaml. Default: process.cwd() + \"/model.yaml\" */\n configPath?: string;\n /** Install npm provider packages if missing. Default true. */\n installNpmIfMissing?: boolean;\n}\n\n/**\n * Returns the default VLM config (type=image) from model.yaml, or null if not configured.\n */\nexport async function getDefaultVlmConfig(\n options: GetDefaultVlmConfigOptions = {},\n): Promise<LLMConfig | null> {\n const configPath = options.configPath ?? join(process.cwd(), \"model.yaml\");\n const modelConfig = loadModelConfig(configPath);\n if (modelConfig == null) return null;\n\n // Prefer top-level `vlm:`. Fallback to `llm:` section with type=image entries.\n const sourceSection = modelConfig.vlm ?? modelConfig.llm;\n if (sourceSection == null) return null;\n\n const resolved = await resolveLlmSectionWithNpm(sourceSection, {\n installNpmIfMissing: options.installNpmIfMissing !== false,\n cwd: process.cwd(),\n });\n\n const { defaultId, configs } = parseLlmSection(resolved);\n const imageConfigs = configs.filter((c: LLMConfig) => c.type === \"image\");\n if (imageConfigs.length === 0) return null;\n\n const defaultConfig =\n imageConfigs.find((c: LLMConfig) => c.id === defaultId) ??\n imageConfigs[0] ??\n null;\n return defaultConfig;\n}\n","/**\n * Create an EmbedFn from the embed section of model.yaml.\n */\nimport { createModelHub } from \"../model/hub.js\";\nimport { parseEmbedSection } from \"../model/embed-parser.js\";\nimport { loadModelConfig } from \"../config/loader.js\";\n\nexport type EmbedFn = (input: string | string[]) => Promise<number[][]>;\n\n/**\n * Load model.yaml and build an EmbedFn from the `embed:` section.\n * Returns undefined if no embed section is configured.\n *\n * @param configPath - Path to model.yaml\n * @param embedId - Which embed instance to use (defaults to the `default:` key)\n */\nexport function createEmbedFnFromModelsConfig(\n configPath: string,\n embedId?: string,\n): EmbedFn | undefined {\n const config = loadModelConfig(configPath);\n if (!config?.embed) return undefined;\n\n const parsed = parseEmbedSection(config.embed);\n if (parsed.configs.length === 0) return undefined;\n\n const id = embedId ?? parsed.defaultId;\n const embedConfig =\n parsed.configs.find((c) => c.id === id) ?? parsed.configs[0];\n if (!embedConfig) return undefined;\n\n const hub = createModelHub({\n embeddingBaseURL: embedConfig.baseURL,\n embeddingModel: embedConfig.model,\n embeddingApiKey: embedConfig.apiKey,\n });\n\n return async (input: string | string[]) => {\n const result = await hub.embed({ input });\n return result.vectors;\n };\n}\n","/**\n * Minimal public API for @easynet/agent-model.\n * Goal: create a chat model from `model.yaml` with the smallest possible surface.\n */\n\n// Main high-level APIs\nexport { createAgentLlm } from \"./api/create-agent-llm.js\";\nexport type { CreateAgentLlmOptions } from \"./api/create-agent-llm.js\";\nexport { getDefaultLlmConfig } from \"./api/get-default-llm-config.js\";\nexport type { GetDefaultLlmConfigOptions } from \"./api/get-default-llm-config.js\";\nexport { getDefaultVlmConfig } from \"./api/get-default-vlm-config.js\";\nexport type { GetDefaultVlmConfigOptions } from \"./api/get-default-vlm-config.js\";\nexport { createEmbedFnFromModelsConfig } from \"./api/create-embed-fn.js\";\nexport type { EmbedFn } from \"./api/create-embed-fn.js\";\nexport type { AgentModelConfigRef } from \"./config/index.js\";\nexport {\n normalizeAgentModelConfigRef,\n loadModelRuntimeConfig,\n createModelConfig,\n} from \"./config/index.js\";\nexport type { LoadModelConfigOptions, CreateModelConfigOptions } from \"./config/index.js\";\n\n// Common runtime helper (used by agent-runtime)\nexport { createChatModelFromLlmConfig } from \"./langchain/index.js\";\nexport type { CreateChatModelOptions } from \"./langchain/index.js\";\nexport { applyToolChoiceAuto } from \"./langchain/index.js\";\n\n// Provider extension registration\nexport { registerChatModelProvider, getChatModelFactory } from \"./registry/chat-model.js\";\nexport type { ChatModelFactory } from \"./registry/chat-model.js\";\n\nimport { createAgentLlm } from \"./api/create-agent-llm.js\";\nimport { getDefaultLlmConfig } from \"./api/get-default-llm-config.js\";\nimport { getDefaultVlmConfig } from \"./api/get-default-vlm-config.js\";\nimport { createEmbedFnFromModelsConfig } from \"./api/create-embed-fn.js\";\nimport { createChatModelFromLlmConfig, applyToolChoiceAuto } from \"./langchain/index.js\";\nimport { registerChatModelProvider, getChatModelFactory } from \"./registry/chat-model.js\";\nimport * as ConfigApi from \"./config/index.js\";\nimport * as LangChainApi from \"./langchain/index.js\";\nimport * as ModelApi from \"./model/index.js\";\nimport * as RegistryApi from \"./registry/index.js\";\nimport * as ExtensionsApi from \"./extensions/index.js\";\nimport * as ConnectivityApi from \"./connectivity/index.js\";\nimport * as NpmApi from \"./npm/index.js\";\nimport * as CliApi from \"./cli/index.js\";\n\n/**\n * Facade: high-frequency model APIs with a single import.\n */\nexport const modelApi = {\n createAgentLlm,\n getDefaultLlmConfig,\n getDefaultVlmConfig,\n createEmbedFnFromModelsConfig,\n createChatModelFromLlmConfig,\n applyToolChoiceAuto,\n registerChatModelProvider,\n getChatModelFactory,\n} as const;\n\n/**\n * Facade: grouped subpath modules (config/langchain/model/registry/extensions/connectivity/npm/cli).\n */\nexport const platformApi = {\n config: ConfigApi,\n langchain: LangChainApi,\n model: ModelApi,\n registry: RegistryApi,\n extensions: ExtensionsApi,\n connectivity: ConnectivityApi,\n npm: NpmApi,\n cli: CliApi,\n} as const;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,SAAS,YAAY;AAgBrB,eAAsB,oBACpB,UAAsC,CAAC,GACZ;AAC3B,QAAM,aAAa,QAAQ,cAAc,KAAK,QAAQ,IAAI,GAAG,YAAY;AACzE,QAAM,aAAa,cAAc,UAAU;AAC3C,MAAI,cAAc,KAAM,QAAO;AAE/B,QAAM,WAAW,MAAM,yBAAyB,YAAY;AAAA,IAC1D,qBAAqB,QAAQ,wBAAwB;AAAA,IACrD,KAAK,QAAQ,IAAI;AAAA,EACnB,CAAC;AAED,QAAM,EAAE,WAAW,QAAQ,IAAI,gBAAgB,QAAQ;AACvD,QAAM,gBAAgB,QAAQ,KAAK,CAAC,MAAiB,EAAE,OAAO,SAAS,KAAK,QAAQ,CAAC,KAAK;AAC1F,SAAO;AACT;;;AChCA,SAAS,QAAAA,aAAY;AAgBrB,eAAsB,oBACpB,UAAsC,CAAC,GACZ;AAC3B,QAAM,aAAa,QAAQ,cAAcC,MAAK,QAAQ,IAAI,GAAG,YAAY;AACzE,QAAM,cAAc,gBAAgB,UAAU;AAC9C,MAAI,eAAe,KAAM,QAAO;AAGhC,QAAM,gBAAgB,YAAY,OAAO,YAAY;AACrD,MAAI,iBAAiB,KAAM,QAAO;AAElC,QAAM,WAAW,MAAM,yBAAyB,eAAe;AAAA,IAC7D,qBAAqB,QAAQ,wBAAwB;AAAA,IACrD,KAAK,QAAQ,IAAI;AAAA,EACnB,CAAC;AAED,QAAM,EAAE,WAAW,QAAQ,IAAI,gBAAgB,QAAQ;AACvD,QAAM,eAAe,QAAQ,OAAO,CAAC,MAAiB,EAAE,SAAS,OAAO;AACxE,MAAI,aAAa,WAAW,EAAG,QAAO;AAEtC,QAAM,gBACJ,aAAa,KAAK,CAAC,MAAiB,EAAE,OAAO,SAAS,KACtD,aAAa,CAAC,KACd;AACF,SAAO;AACT;;;AC7BO,SAAS,8BACd,YACA,SACqB;AACrB,QAAM,SAAS,gBAAgB,UAAU;AACzC,MAAI,CAAC,QAAQ,MAAO,QAAO;AAE3B,QAAM,SAAS,kBAAkB,OAAO,KAAK;AAC7C,MAAI,OAAO,QAAQ,WAAW,EAAG,QAAO;AAExC,QAAM,KAAK,WAAW,OAAO;AAC7B,QAAM,cACJ,OAAO,QAAQ,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,QAAQ,CAAC;AAC7D,MAAI,CAAC,YAAa,QAAO;AAEzB,QAAM,MAAM,eAAe;AAAA,IACzB,kBAAkB,YAAY;AAAA,IAC9B,gBAAgB,YAAY;AAAA,IAC5B,iBAAiB,YAAY;AAAA,EAC/B,CAAC;AAED,SAAO,OAAO,UAA6B;AACzC,UAAM,SAAS,MAAM,IAAI,MAAM,EAAE,MAAM,CAAC;AACxC,WAAO,OAAO;AAAA,EAChB;AACF;;;ACQO,IAAM,WAAW;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKO,IAAM,cAAc;AAAA,EACzB,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,KAAK;AAAA,EACL,KAAK;AACP;","names":["join","join"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easynet/agent-model",
3
- "version": "1.0.64",
3
+ "version": "1.0.65",
4
4
  "description": "Agent LLM: multi-provider, multi-model, simple chat/image API. Consumes agent.yaml llm section.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/config/index.ts","../src/config/yaml.ts","../src/config/ref.ts"],"sourcesContent":["export { parseLlmSection } from \"./parser.js\";\nexport { loadLlmConfig, parseLlmYaml, substituteEnv } from \"./loader.js\";\nexport { loadYamlConfig } from \"./yaml.js\";\nexport { normalizeAgentModelConfigRef } from \"./ref.js\";\nexport {\n loadYamlFile,\n loadYamlFileSync,\n parseYamlContent,\n clearYamlFileCache,\n type LoadYamlOptions,\n type YamlEnvOptions,\n} from \"./yaml-utils.js\";\nexport type { LoadLlmConfigOptions } from \"./loader.js\";\nexport type { AgentModelConfigRef } from \"./ref.js\";\n","/**\n * Generic YAML file loader utility.\n */\n\nimport { loadYamlFileSync } from \"./yaml-utils.js\";\n\n/**\n * Load and parse a YAML file into a typed object.\n * Returns empty object if file doesn't exist.\n */\nexport function loadYamlConfig<T = Record<string, unknown>>(filePath: string): T {\n try {\n const parsed = loadYamlFileSync<T>(filePath, {\n substituteEnv: true,\n missingEnv: \"keep\",\n cache: true,\n });\n return (parsed ?? ({} as T)) as T;\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new Error(`Failed to load YAML config from ${filePath}: ${msg}`, { cause: e });\n }\n}\n","/** Agent-level reference to models config file. */\nexport interface AgentModelConfigRef {\n ref?: string;\n}\n\nfunction asObject(input: unknown): Record<string, unknown> | undefined {\n return typeof input === \"object\" && input !== null ? (input as Record<string, unknown>) : undefined;\n}\n\n/** Normalize unknown value to AgentModelConfigRef. */\nexport function normalizeAgentModelConfigRef(raw: unknown): Partial<AgentModelConfigRef> {\n if (typeof raw === \"string\" && raw.trim().length > 0) return { ref: raw.trim() };\n const obj = asObject(raw);\n if (!obj) return {};\n if (typeof obj.ref === \"string\" && obj.ref.trim().length > 0) return { ref: obj.ref.trim() };\n return {};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACUO,SAAS,eAA4C,UAAqB;AAC/E,MAAI;AACF,UAAM,SAAS,iBAAoB,UAAU;AAAA,MAC3C,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,OAAO;AAAA,IACT,CAAC;AACD,WAAQ,UAAW,CAAC;AAAA,EACtB,SAAS,GAAG;AACV,UAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,UAAM,IAAI,MAAM,mCAAmC,QAAQ,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC;AAAA,EACrF;AACF;;;ACjBA,SAAS,SAAS,OAAqD;AACrE,SAAO,OAAO,UAAU,YAAY,UAAU,OAAQ,QAAoC;AAC5F;AAGO,SAAS,6BAA6B,KAA4C;AACvF,MAAI,OAAO,QAAQ,YAAY,IAAI,KAAK,EAAE,SAAS,EAAG,QAAO,EAAE,KAAK,IAAI,KAAK,EAAE;AAC/E,QAAM,MAAM,SAAS,GAAG;AACxB,MAAI,CAAC,IAAK,QAAO,CAAC;AAClB,MAAI,OAAO,IAAI,QAAQ,YAAY,IAAI,IAAI,KAAK,EAAE,SAAS,EAAG,QAAO,EAAE,KAAK,IAAI,IAAI,KAAK,EAAE;AAC3F,SAAO,CAAC;AACV;","names":[]}