@mate-academy/llm-gateway 8.7.0 → 8.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 +21 -25
- package/dist/client/LLMClientEngine.d.ts +1 -0
- package/dist/client/LLMClientEngine.js +5 -4
- package/dist/client/LLMClientEngine.js.map +1 -1
- package/dist/client/agentRunner.d.ts +1 -0
- package/dist/client/agentRunner.js +30 -29
- package/dist/client/agentRunner.js.map +1 -1
- package/dist/client/codegen/fetchPromptRecords.js +0 -5
- package/dist/client/codegen/fetchPromptRecords.js.map +1 -1
- package/dist/client/codegen/index.d.ts +0 -1
- package/dist/client/codegen/index.js +0 -1
- package/dist/client/codegen/index.js.map +1 -1
- package/dist/client/codegen/renderSnapshot.constants.d.ts +0 -5
- package/dist/client/codegen/renderSnapshot.constants.js +1 -6
- package/dist/client/codegen/renderSnapshot.constants.js.map +1 -1
- package/dist/client/codegen/renderSnapshot.d.ts +4 -8
- package/dist/client/codegen/renderSnapshot.js +6 -81
- package/dist/client/codegen/renderSnapshot.js.map +1 -1
- package/dist/client/codegen/renderSnapshot.typedefs.d.ts +0 -1
- package/dist/client/createLLMClient.d.ts +5 -5
- package/dist/client/createLLMClient.js +4 -4
- package/dist/client/defineLLMPrompts.d.ts +6 -9
- package/dist/client/defineLLMPrompts.js.map +1 -1
- package/dist/client/llmClient.typedefs.d.ts +15 -14
- package/dist/client/promptRegistry.runtime.js +0 -6
- package/dist/client/promptRegistry.runtime.js.map +1 -1
- package/dist/client/promptSnapshot.typedefs.d.ts +3 -5
- package/dist/client/validationGate.d.ts +4 -8
- package/dist/client/validationGate.js +3 -25
- package/dist/client/validationGate.js.map +1 -1
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.typedefs.d.ts +1 -7
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.typedefs.js +0 -6
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.typedefs.js.map +1 -1
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.d.ts +2 -1
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js +13 -37
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js.map +1 -1
- package/dist/providers/LLMAPI/services/LLMAPIAssistance.service.js +6 -8
- package/dist/providers/LLMAPI/services/LLMAPIAssistance.service.js.map +1 -1
- package/dist/providers/OpenAI/services/OpenAIAssistance.service.d.ts +1 -0
- package/dist/providers/OpenAI/services/OpenAIAssistance.service.js +10 -14
- package/dist/providers/OpenAI/services/OpenAIAssistance.service.js.map +1 -1
- package/dist/services/LLMBaseService.abstract.d.ts +2 -2
- package/dist/services/LLMBaseService.abstract.js +3 -1
- package/dist/services/LLMBaseService.abstract.js.map +1 -1
- package/dist/services/agentRounds/LLMAgentRounds.d.ts +5 -8
- package/dist/services/agentRounds/LLMAgentRounds.js +21 -8
- package/dist/services/agentRounds/LLMAgentRounds.js.map +1 -1
- package/dist/services/agentRounds/agentRounds.typedefs.d.ts +18 -10
- package/dist/utilities/llmTracing/llmTracing.typedefs.d.ts +1 -0
- package/dist/utilities/llmTracing/noopLLMTracing.js +3 -0
- package/dist/utilities/llmTracing/noopLLMTracing.js.map +1 -1
- package/package.json +1 -1
- package/dist/client/codegen/extractVariables.d.ts +0 -7
- package/dist/client/codegen/extractVariables.js +0 -21
- package/dist/client/codegen/extractVariables.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderSnapshot.js","sourceRoot":"","sources":["../../../src/client/codegen/renderSnapshot.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"renderSnapshot.js","sourceRoot":"","sources":["../../../src/client/codegen/renderSnapshot.ts"],"names":[],"mappings":";;AA8BA,gDAQC;AAtCD,uCAOkB;AAClB,4DAAqE;AAKrE,wFAQmD;AAEnD;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAChC,OAA8B,EAC9B,UAAiC,EAAE;IAEnC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1F,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,YAAY,CACnB,MAA2B,EAC3B,OAA8B;IAE9B,MAAM,MAAM,GAAG,IAAA,mCAAsB,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEnD,IAAI,gDAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,MAAM,EAAE,CACd,oBAAoB,MAAM,CAAC,IAAI,sCAAsC;UACnE,+BAA+B,MAAM,KAAK,CAC7C,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,mBAAmB;IAGM;IAFZ,UAAU,CAAa;IAExC,YAA6B,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;QACzD,MAAM,OAAO,GAAG,IAAI,kBAAO,CAAC;YAC1B,qBAAqB,EAAE,IAAI;YAC3B,oBAAoB,EAAE;gBACpB,eAAe,EAAE,0BAAe,CAAC,SAAS;gBAC1C,SAAS,EAAE,oBAAS,CAAC,MAAM;gBAC3B,iBAAiB,EAAE,IAAI;aACxB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,8CAAmB,CAAC,CAAC;IAClE,CAAC;IAED,KAAK;QACH,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzE,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;YACnC,aAAa,EAAE,8CAAmB;YAClC,eAAe,EAAE,mDAAwB;YACzC,YAAY,EAAE;gBACZ,EAAE,IAAI,EAAE,6CAAkB,EAAE,UAAU,EAAE,IAAI,EAAE;aAC/C;SACF,CAAC,CAAC;IACL,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACtB,IAAI,EAAE,2CAAgB;YACtB,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACrC,IAAI,EAAE,IAAA,mCAAsB,EAAC,MAAM,CAAC,IAAI,CAAC;gBACzC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;aACzC,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;YACnC,eAAe,EAAE,kCAAuB,CAAC,KAAK;YAC9C,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,CAAC;oBACb,IAAI,EAAE,iDAAsB;oBAC5B,IAAI,EAAE,6CAAkB;oBACxB,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;iBAC3D,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,MAAuB;QAClD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEnB,OAAO;QACT,CAAC;QAED,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,IAAA,mCAAsB,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACnD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAE/D,MAAM,CAAC,SAAS,CAAC,IAAI,2CAAgB,IAAI,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,SAAS,eAAe,CAAC,MAA2B;IAClD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -2,9 +2,9 @@ import { type LLMPromptRegistry } from '../client/defineLLMPrompts';
|
|
|
2
2
|
import { type CreateLLMClientConfig, type LLMClient, type LLMPromptVariableMap } from '../client/llmClient.typedefs';
|
|
3
3
|
/**
|
|
4
4
|
* Builds the v2 gateway client once at the composition root. The client is
|
|
5
|
-
* generic over `typeof registry
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* generic over `typeof registry`, so call sites get code-owned variable types
|
|
6
|
+
* and typed returns from a single binding here. Feature code receives the
|
|
7
|
+
* client via DI and never touches credentials, the prompt client, or the
|
|
8
|
+
* reporter.
|
|
9
9
|
*/
|
|
10
|
-
export declare function createLLMClient<Registry extends LLMPromptRegistry, VariableMap extends Record<keyof Registry, string> = LLMPromptVariableMap<Registry>, ReporterContext extends Record<string, any> =
|
|
10
|
+
export declare function createLLMClient<Registry extends LLMPromptRegistry, VariableMap extends Record<keyof Registry, string> = LLMPromptVariableMap<Registry>, ReporterContext extends Record<string, any> = never>(config: CreateLLMClientConfig<Registry, ReporterContext>): LLMClient<Registry, VariableMap>;
|
|
@@ -6,10 +6,10 @@ const promptRegistry_runtime_1 = require("../client/promptRegistry.runtime");
|
|
|
6
6
|
const llmClient_typedefs_1 = require("../client/llmClient.typedefs");
|
|
7
7
|
/**
|
|
8
8
|
* Builds the v2 gateway client once at the composition root. The client is
|
|
9
|
-
* generic over `typeof registry
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* generic over `typeof registry`, so call sites get code-owned variable types
|
|
10
|
+
* and typed returns from a single binding here. Feature code receives the
|
|
11
|
+
* client via DI and never touches credentials, the prompt client, or the
|
|
12
|
+
* reporter.
|
|
13
13
|
*/
|
|
14
14
|
function createLLMClient(config) {
|
|
15
15
|
const mode = config.mode ?? 'production';
|
|
@@ -12,20 +12,17 @@ export type LLMCapabilityRequirement = keyof Pick<LLMModelCapabilities, 'vision'
|
|
|
12
12
|
* the `generate` return type; `toolSchemas` carry tool name+parameter shapes for
|
|
13
13
|
* typing/capability validation (executable tools are always passed per call);
|
|
14
14
|
* `requires` lists capabilities the resolved model must satisfy; `kind`
|
|
15
|
-
* distinguishes config-only audio prompts; `
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* code-declared source of "what variables code provides", independent of any
|
|
20
|
-
* live prompt (a generated `compile()` signature reflects the prompt's current
|
|
21
|
-
* vars, not the call site's).
|
|
15
|
+
* distinguishes config-only audio prompts; `variables` is the code-owned list
|
|
16
|
+
* of required input names for this prompt. The client derives each call site's
|
|
17
|
+
* `variables` type from this list, independently of the prompt body stored in
|
|
18
|
+
* Langfuse.
|
|
22
19
|
*/
|
|
23
20
|
export interface LLMPromptBinding<Schema extends LLMSchemaInterface = LLMSchemaInterface> {
|
|
24
21
|
schema?: Schema;
|
|
25
22
|
toolSchemas?: Record<string, LLMSchemaInterface>;
|
|
26
23
|
requires?: LLMCapabilityRequirement[];
|
|
27
24
|
kind?: LLMPromptKind | 'transcription' | 'speech';
|
|
28
|
-
|
|
25
|
+
variables?: readonly string[];
|
|
29
26
|
}
|
|
30
27
|
export type LLMPromptRegistry = Record<string, LLMPromptBinding>;
|
|
31
28
|
/**
|
|
@@ -34,4 +31,4 @@ export type LLMPromptRegistry = Record<string, LLMPromptBinding>;
|
|
|
34
31
|
* infer per-prompt variables and return types from `typeof registry` — bind the
|
|
35
32
|
* registry once at the composition root, never via module augmentation.
|
|
36
33
|
*/
|
|
37
|
-
export declare function defineLLMPrompts<Registry extends LLMPromptRegistry>(registry: Registry): Registry;
|
|
34
|
+
export declare function defineLLMPrompts<const Registry extends LLMPromptRegistry>(registry: Registry): Registry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineLLMPrompts.js","sourceRoot":"","sources":["../../src/client/defineLLMPrompts.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"defineLLMPrompts.js","sourceRoot":"","sources":["../../src/client/defineLLMPrompts.ts"],"names":[],"mappings":";;AAkDA,4CAIC;AAVD;;;;;GAKG;AACH,SAAgB,gBAAgB,CAC9B,QAAkB;IAElB,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -89,13 +89,11 @@ export interface LLMReportingConfig<Context extends Record<string, any> = Record
|
|
|
89
89
|
buildContext: (scope: LLMReporterContextScope) => Context;
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
|
-
* What building a provider service for one call needs: the prompt
|
|
93
|
-
*
|
|
94
|
-
* which decides whose credentials the provider is built with.
|
|
92
|
+
* What building a provider service for one call needs: the resolved prompt and
|
|
93
|
+
* the context that decides whose credentials the provider is built with.
|
|
95
94
|
*/
|
|
96
95
|
export interface LLMProviderServiceScope {
|
|
97
96
|
resolved: ResolvedPrompt;
|
|
98
|
-
promptName: string;
|
|
99
97
|
callContext: LLMClientCallContext | undefined;
|
|
100
98
|
}
|
|
101
99
|
/**
|
|
@@ -131,8 +129,9 @@ export type LLMDelegationGate = (args: Record<string, unknown>) => Promise<LLMTo
|
|
|
131
129
|
* so a mapper that drops or mistypes a DWH column fails the build instead of
|
|
132
130
|
* corrupting a dashboard. It is inferred from `reporting` when the call site
|
|
133
131
|
* passes no explicit type arguments; TypeScript has no partial inference, so a
|
|
134
|
-
* call site that spells out `Registry`/`VariableMap` must spell this out too
|
|
135
|
-
*
|
|
132
|
+
* call site that spells out `Registry`/`VariableMap` must spell this out too.
|
|
133
|
+
* The factory defaults it to `never`, so a partially explicit call cannot
|
|
134
|
+
* silently fall back to an unchecked reporter context.
|
|
136
135
|
*/
|
|
137
136
|
export interface CreateLLMClientConfig<Registry extends LLMPromptRegistry, ReporterContext extends Record<string, any> = Record<string, any>> {
|
|
138
137
|
gateway: LLMGateway;
|
|
@@ -161,9 +160,9 @@ export interface LLMClientEngineConfig<Registry extends LLMPromptRegistry> {
|
|
|
161
160
|
normalizeToolResult: LLMToolResultNormalizer | undefined;
|
|
162
161
|
}
|
|
163
162
|
/**
|
|
164
|
-
* The variables a prompt requires.
|
|
165
|
-
*
|
|
166
|
-
*
|
|
163
|
+
* The variables a prompt requires. Required keys come exclusively from the
|
|
164
|
+
* code-owned prompt registry. Extras remain tolerated so callers can migrate a
|
|
165
|
+
* variable in more than one deployment.
|
|
167
166
|
*/
|
|
168
167
|
export type LLMPromptVariables<RequiredKeys extends string> = Record<RequiredKeys, LLMVariableValue> & Record<string, LLMVariableValue>;
|
|
169
168
|
/**
|
|
@@ -229,14 +228,16 @@ export interface LLMPlainMessage {
|
|
|
229
228
|
text: string;
|
|
230
229
|
}
|
|
231
230
|
/**
|
|
232
|
-
* Maps each registry key to the union of variable names
|
|
233
|
-
*
|
|
234
|
-
*
|
|
231
|
+
* Maps each registry key to the union of variable names declared by code. The
|
|
232
|
+
* Langfuse prompt body and generated fallback snapshot do not participate in
|
|
233
|
+
* call-site typing.
|
|
235
234
|
*/
|
|
236
235
|
export type LLMPromptVariableMap<Registry extends LLMPromptRegistry> = {
|
|
237
|
-
[Key in keyof Registry]:
|
|
236
|
+
[Key in keyof Registry]: Registry[Key] extends {
|
|
237
|
+
variables: readonly (infer VariableName extends string)[];
|
|
238
|
+
} ? VariableName : never;
|
|
238
239
|
};
|
|
239
|
-
export interface LLMClient<Registry extends LLMPromptRegistry, VariableMap extends Record<keyof Registry, string>> {
|
|
240
|
+
export interface LLMClient<Registry extends LLMPromptRegistry, VariableMap extends Record<keyof Registry, string> = LLMPromptVariableMap<Registry>> {
|
|
240
241
|
generate<Key extends keyof Registry, Schema extends LLMSchemaInterface = never>(prompt: Key, options: LLMGenerateOptions<Record<VariableMap[Key], LLMVariableValue> & Record<string, LLMVariableValue>, Schema>): Promise<[
|
|
241
242
|
Schema
|
|
242
243
|
] extends [never] ? LLMGenerateResult<Registry[Key]> : InferSchema<Schema>>;
|
|
@@ -106,8 +106,6 @@ class PromptRegistryRuntime {
|
|
|
106
106
|
}
|
|
107
107
|
gateConfig(rawConfig, input) {
|
|
108
108
|
return (0, validationGate_1.runValidationGate)({
|
|
109
|
-
promptText: '',
|
|
110
|
-
providedVariables: [],
|
|
111
109
|
rawConfig,
|
|
112
110
|
requires: input.requires,
|
|
113
111
|
purpose: input.purpose,
|
|
@@ -120,8 +118,6 @@ class PromptRegistryRuntime {
|
|
|
120
118
|
}
|
|
121
119
|
const compiled = this.compileBody(input.kind, fetched.body, input.variables);
|
|
122
120
|
const gate = (0, validationGate_1.runValidationGate)({
|
|
123
|
-
promptText: compiled.text,
|
|
124
|
-
providedVariables: Object.keys(input.variables),
|
|
125
121
|
rawConfig: fetched.config,
|
|
126
122
|
requires: input.requires,
|
|
127
123
|
purpose: input.purpose,
|
|
@@ -148,8 +144,6 @@ class PromptRegistryRuntime {
|
|
|
148
144
|
}
|
|
149
145
|
const compiled = this.compileBody(input.kind, input.kind === 'chat' ? entry.fallbackMessages : entry.fallbackText, input.variables);
|
|
150
146
|
const gate = (0, validationGate_1.runValidationGate)({
|
|
151
|
-
promptText: compiled.text,
|
|
152
|
-
providedVariables: Object.keys(input.variables),
|
|
153
147
|
rawConfig: entry.config,
|
|
154
148
|
requires: input.requires,
|
|
155
149
|
purpose: input.purpose,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promptRegistry.runtime.js","sourceRoot":"","sources":["../../src/client/promptRegistry.runtime.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"promptRegistry.runtime.js","sourceRoot":"","sources":["../../src/client/promptRegistry.runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,10 +35,9 @@ export interface LLMPromptConfigSnapshot {
|
|
|
35
35
|
/**
|
|
36
36
|
* One prompt's build-time snapshot, emitted by `npm run langfuse:generate` into
|
|
37
37
|
* the gitignored `langfusePrompts.generated.ts`. It is the outage fallback: the
|
|
38
|
-
* runtime registry serves it whenever a live fetch or
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* check agrees with the typed `compile()` signature.
|
|
38
|
+
* runtime registry serves it whenever a live fetch or config validation fails.
|
|
39
|
+
* Prompt variables are intentionally absent because their contract is owned by
|
|
40
|
+
* application code.
|
|
42
41
|
*
|
|
43
42
|
* `fallbackText` is the body for a `text` prompt; `fallbackMessages` is the
|
|
44
43
|
* role-tagged message list for a `chat` prompt. Exactly one is meaningful per
|
|
@@ -49,7 +48,6 @@ export interface LLMPromptSnapshotEntry {
|
|
|
49
48
|
kind: LLMPromptKind;
|
|
50
49
|
version: number;
|
|
51
50
|
labels: string[];
|
|
52
|
-
requiredVariables: string[];
|
|
53
51
|
fallbackText: string;
|
|
54
52
|
fallbackMessages: LLMPromptMessage[];
|
|
55
53
|
config: LLMPromptConfigSnapshot;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { type LLMModel, type LLMProviders, type LLMPurposes } from '../LLMService.typedefs';
|
|
2
2
|
import { type LLMPromptConfig } from '../client/llmConfig.schema';
|
|
3
3
|
import { type LLMCapabilityRequirement } from '../client/defineLLMPrompts';
|
|
4
|
-
export type GateFailureReason = '
|
|
4
|
+
export type GateFailureReason = 'config-parse' | 'unknown-model' | 'unmet-capabilities';
|
|
5
5
|
export interface GateInput {
|
|
6
|
-
promptText: string;
|
|
7
|
-
providedVariables: string[];
|
|
8
6
|
rawConfig: unknown;
|
|
9
7
|
requires: LLMCapabilityRequirement[];
|
|
10
8
|
purpose: LLMPurposes;
|
|
@@ -19,10 +17,8 @@ export type GateResult = {
|
|
|
19
17
|
detail: string;
|
|
20
18
|
};
|
|
21
19
|
/**
|
|
22
|
-
* The
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* config parse fail fast before the model lookup, and capabilities are checked
|
|
26
|
-
* last because they need the resolved model.
|
|
20
|
+
* The runtime config gate, run on every prompt fetch (live or fallback). Prompt
|
|
21
|
+
* variables are a code-owned compile-time contract; this gate validates only
|
|
22
|
+
* routing configuration and model capabilities.
|
|
27
23
|
*/
|
|
28
24
|
export declare function runValidationGate(input: GateInput): GateResult;
|
|
@@ -3,23 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.runValidationGate = runValidationGate;
|
|
4
4
|
const LLMService_constants_1 = require("../LLMService.constants");
|
|
5
5
|
const llmConfig_schema_1 = require("../client/llmConfig.schema");
|
|
6
|
-
const TEMPLATE_VARIABLE_PATTERN = /{{\s*([\w.]+)\s*}}/g;
|
|
7
6
|
/**
|
|
8
|
-
* The
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* config parse fail fast before the model lookup, and capabilities are checked
|
|
12
|
-
* last because they need the resolved model.
|
|
7
|
+
* The runtime config gate, run on every prompt fetch (live or fallback). Prompt
|
|
8
|
+
* variables are a code-owned compile-time contract; this gate validates only
|
|
9
|
+
* routing configuration and model capabilities.
|
|
13
10
|
*/
|
|
14
11
|
function runValidationGate(input) {
|
|
15
|
-
const unresolved = findUnresolvedVariables(input.promptText, input.providedVariables);
|
|
16
|
-
if (unresolved.length > 0) {
|
|
17
|
-
return {
|
|
18
|
-
valid: false,
|
|
19
|
-
reason: 'unresolved-variables',
|
|
20
|
-
detail: `prompt references unprovided variables: ${unresolved.join(', ')}`,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
12
|
const parsed = llmConfig_schema_1.llmPromptConfigSchema.safeParse(input.rawConfig);
|
|
24
13
|
if (!parsed.success) {
|
|
25
14
|
return {
|
|
@@ -50,17 +39,6 @@ function runValidationGate(input) {
|
|
|
50
39
|
}
|
|
51
40
|
return { valid: true, config: parsed.data, model };
|
|
52
41
|
}
|
|
53
|
-
function findUnresolvedVariables(promptText, providedVariables) {
|
|
54
|
-
const provided = new Set(providedVariables);
|
|
55
|
-
const referenced = new Set();
|
|
56
|
-
for (const match of promptText.matchAll(TEMPLATE_VARIABLE_PATTERN)) {
|
|
57
|
-
const variableName = match[1];
|
|
58
|
-
if (!variableName.startsWith('#') && !variableName.startsWith('/')) {
|
|
59
|
-
referenced.add(variableName);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return [...referenced].filter((name) => !provided.has(name));
|
|
63
|
-
}
|
|
64
42
|
function resolveModel(config, purpose) {
|
|
65
43
|
const providerModels = LLMService_constants_1.LLM_SERVICE_MODELS[config.provider];
|
|
66
44
|
const purposeModels = providerModels[purpose];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validationGate.js","sourceRoot":"","sources":["../../src/client/validationGate.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"validationGate.js","sourceRoot":"","sources":["../../src/client/validationGate.ts"],"names":[],"mappings":";;AAyCA,8CAoCC;AAvED,iEAA4D;AAC5D,gEAGmC;AA0BnC;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,KAAgB;IAChD,MAAM,MAAM,GAAG,wCAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEhE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;iBACxB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;iBAC3D,IAAI,CAAC,IAAI,CAAC;SACd,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAEvD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,eAAe;YACvB,MAAM,EAAE,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,kCAAkC;kBACjE,aAAa,MAAM,CAAC,IAAI,CAAC,QAAQ,gBAAgB,KAAK,CAAC,OAAO,GAAG;SACtE,CAAC;IACJ,CAAC;IAED,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE3E,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,oBAAoB;YAC5B,MAAM,EAAE,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,iCAAiC;kBAChE,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;SACnC,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,YAAY,CACnB,MAAuB,EACvB,OAAoB;IAEpB,MAAM,cAAc,GAAG,yCAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAE/B,CAAC;IAEd,OAAO,aAAa,EAAE,CAAC,MAAM,CAAC,KAAmC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAA6B,EAC7B,QAAoC;IAEpC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAExC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -11,13 +11,7 @@ export declare enum GoogleGenerativeAIModelNames {
|
|
|
11
11
|
}
|
|
12
12
|
export declare enum GoogleGenerativeAIRoles {
|
|
13
13
|
User = "user",
|
|
14
|
-
Model = "model"
|
|
15
|
-
/**
|
|
16
|
-
* Not a role the chat history ever carries — the system instruction lives in
|
|
17
|
-
* the request config. Used only to label it when a traced round renders the
|
|
18
|
-
* conversation it was sent with.
|
|
19
|
-
*/
|
|
20
|
-
System = "system"
|
|
14
|
+
Model = "model"
|
|
21
15
|
}
|
|
22
16
|
export type GoogleGenerativeAIClient = GoogleGenAI;
|
|
23
17
|
export type GoogleGenerativeAIClientOptions = GoogleGenAIOptions;
|
|
@@ -16,11 +16,5 @@ var GoogleGenerativeAIRoles;
|
|
|
16
16
|
(function (GoogleGenerativeAIRoles) {
|
|
17
17
|
GoogleGenerativeAIRoles["User"] = "user";
|
|
18
18
|
GoogleGenerativeAIRoles["Model"] = "model";
|
|
19
|
-
/**
|
|
20
|
-
* Not a role the chat history ever carries — the system instruction lives in
|
|
21
|
-
* the request config. Used only to label it when a traced round renders the
|
|
22
|
-
* conversation it was sent with.
|
|
23
|
-
*/
|
|
24
|
-
GoogleGenerativeAIRoles["System"] = "system";
|
|
25
19
|
})(GoogleGenerativeAIRoles || (exports.GoogleGenerativeAIRoles = GoogleGenerativeAIRoles = {}));
|
|
26
20
|
//# sourceMappingURL=GoogleGenerativeAI.typedefs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoogleGenerativeAI.typedefs.js","sourceRoot":"","sources":["../../../src/providers/GoogleGenerativeAI/GoogleGenerativeAI.typedefs.ts"],"names":[],"mappings":";;;AAOA,IAAY,4BASX;AATD,WAAY,4BAA4B;IACtC,qEAAqC,CAAA;IACrC,+EAA+C,CAAA;IAC/C,iEAAiC,CAAA;IACjC,6FAA6D,CAAA;IAC7D,yFAAyD,CAAA;IACzD,iFAAiD,CAAA;IACjD,+FAA+D,CAAA;IAC/D,iFAAiD,CAAA;AACnD,CAAC,EATW,4BAA4B,4CAA5B,4BAA4B,QASvC;AAED,IAAY,
|
|
1
|
+
{"version":3,"file":"GoogleGenerativeAI.typedefs.js","sourceRoot":"","sources":["../../../src/providers/GoogleGenerativeAI/GoogleGenerativeAI.typedefs.ts"],"names":[],"mappings":";;;AAOA,IAAY,4BASX;AATD,WAAY,4BAA4B;IACtC,qEAAqC,CAAA;IACrC,+EAA+C,CAAA;IAC/C,iEAAiC,CAAA;IACjC,6FAA6D,CAAA;IAC7D,yFAAyD,CAAA;IACzD,iFAAiD,CAAA;IACjD,+FAA+D,CAAA;IAC/D,iFAAiD,CAAA;AACnD,CAAC,EATW,4BAA4B,4CAA5B,4BAA4B,QASvC;AAED,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,wCAAa,CAAA;IACb,0CAAe,CAAA;AACjB,CAAC,EAHW,uBAAuB,uCAAvB,uBAAuB,QAGlC"}
|
package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.d.ts
CHANGED
|
@@ -38,7 +38,8 @@ export declare class GoogleGenerativeAIAssistanceService<Reporter extends LLMRep
|
|
|
38
38
|
* so the per-round generations add up to the single metrics point the run
|
|
39
39
|
* still writes.
|
|
40
40
|
*/
|
|
41
|
-
private
|
|
41
|
+
private buildUsageMetrics;
|
|
42
|
+
private readonly buildRoundOutcome;
|
|
42
43
|
private extractUsageFromResponse;
|
|
43
44
|
private combineUsage;
|
|
44
45
|
private convertCustomToolsToGoogle;
|
|
@@ -297,10 +297,7 @@ class GoogleGenerativeAIAssistanceService extends services_1.LLMAssistanceServic
|
|
|
297
297
|
message: messageParts,
|
|
298
298
|
config: sendMessageConfig,
|
|
299
299
|
}),
|
|
300
|
-
describeOutcome:
|
|
301
|
-
output: response.candidates?.[0]?.content,
|
|
302
|
-
usage: this.buildRoundUsage(this.extractUsageFromResponse(response)),
|
|
303
|
-
}),
|
|
300
|
+
describeOutcome: this.buildRoundOutcome,
|
|
304
301
|
});
|
|
305
302
|
abortSignal?.throwIfAborted();
|
|
306
303
|
const toolLoopResult = await this.executeGoogleToolLoop({
|
|
@@ -318,15 +315,10 @@ class GoogleGenerativeAIAssistanceService extends services_1.LLMAssistanceServic
|
|
|
318
315
|
});
|
|
319
316
|
const responseText = toolLoopResult.response.text ?? '';
|
|
320
317
|
const { totalUsage } = toolLoopResult;
|
|
321
|
-
const regularInputTokens = totalUsage.promptTokens - totalUsage.cachedTokens;
|
|
322
318
|
await this.writeSuccessMetrics({
|
|
323
319
|
method,
|
|
324
320
|
model,
|
|
325
|
-
usage:
|
|
326
|
-
inputTextTokens: regularInputTokens,
|
|
327
|
-
inputCachedTextTokens: totalUsage.cachedTokens,
|
|
328
|
-
outputTextTokens: totalUsage.candidatesTokens,
|
|
329
|
-
},
|
|
321
|
+
usage: this.buildUsageMetrics(totalUsage),
|
|
330
322
|
writeMetrics,
|
|
331
323
|
});
|
|
332
324
|
return {
|
|
@@ -403,10 +395,7 @@ class GoogleGenerativeAIAssistanceService extends services_1.LLMAssistanceServic
|
|
|
403
395
|
message: messageParts,
|
|
404
396
|
config: sendMessageConfig,
|
|
405
397
|
}),
|
|
406
|
-
describeOutcome:
|
|
407
|
-
output: response.candidates?.[0]?.content,
|
|
408
|
-
usage: this.buildRoundUsage(this.extractUsageFromResponse(response)),
|
|
409
|
-
}),
|
|
398
|
+
describeOutcome: this.buildRoundOutcome,
|
|
410
399
|
});
|
|
411
400
|
abortSignal?.throwIfAborted();
|
|
412
401
|
const toolLoopResult = await this.executeGoogleToolLoop({
|
|
@@ -423,15 +412,10 @@ class GoogleGenerativeAIAssistanceService extends services_1.LLMAssistanceServic
|
|
|
423
412
|
onAssistantNarration: options.onAssistantNarration,
|
|
424
413
|
});
|
|
425
414
|
if (toolLoopResult.terminalTool) {
|
|
426
|
-
const { promptTokens, cachedTokens, candidatesTokens, } = toolLoopResult.totalUsage;
|
|
427
415
|
await this.writeSuccessMetrics({
|
|
428
416
|
method: this.getMethodName(this.assistInChatStructured),
|
|
429
417
|
model,
|
|
430
|
-
usage:
|
|
431
|
-
inputTextTokens: promptTokens - cachedTokens,
|
|
432
|
-
inputCachedTextTokens: cachedTokens,
|
|
433
|
-
outputTextTokens: candidatesTokens,
|
|
434
|
-
},
|
|
418
|
+
usage: this.buildUsageMetrics(toolLoopResult.totalUsage),
|
|
435
419
|
writeMetrics,
|
|
436
420
|
});
|
|
437
421
|
return {
|
|
@@ -467,16 +451,10 @@ class GoogleGenerativeAIAssistanceService extends services_1.LLMAssistanceServic
|
|
|
467
451
|
try {
|
|
468
452
|
const parsed = JSON.parse(finalResponseText);
|
|
469
453
|
const validation = schema._parse(parsed);
|
|
470
|
-
const regularInputTokens = totalUsage.promptTokens
|
|
471
|
-
- totalUsage.cachedTokens;
|
|
472
454
|
await this.writeSuccessMetrics({
|
|
473
455
|
method,
|
|
474
456
|
model,
|
|
475
|
-
usage:
|
|
476
|
-
inputTextTokens: regularInputTokens,
|
|
477
|
-
inputCachedTextTokens: totalUsage.cachedTokens,
|
|
478
|
-
outputTextTokens: totalUsage.candidatesTokens,
|
|
479
|
-
},
|
|
457
|
+
usage: this.buildUsageMetrics(totalUsage),
|
|
480
458
|
writeMetrics,
|
|
481
459
|
});
|
|
482
460
|
const structuredFollowUpRoundTrips = options.tools?.length ? 1 : 0;
|
|
@@ -593,10 +571,7 @@ class GoogleGenerativeAIAssistanceService extends services_1.LLMAssistanceServic
|
|
|
593
571
|
message: followUpParts,
|
|
594
572
|
config: structuredConfig,
|
|
595
573
|
}),
|
|
596
|
-
describeOutcome:
|
|
597
|
-
output: response.candidates?.[0]?.content,
|
|
598
|
-
usage: this.buildRoundUsage(this.extractUsageFromResponse(response)),
|
|
599
|
-
}),
|
|
574
|
+
describeOutcome: this.buildRoundOutcome,
|
|
600
575
|
});
|
|
601
576
|
return {
|
|
602
577
|
text: structuredResponse.text ?? '',
|
|
@@ -614,7 +589,7 @@ class GoogleGenerativeAIAssistanceService extends services_1.LLMAssistanceServic
|
|
|
614
589
|
return [
|
|
615
590
|
...(instructions
|
|
616
591
|
? [{
|
|
617
|
-
role:
|
|
592
|
+
role: 'system',
|
|
618
593
|
parts: [{ text: instructions }],
|
|
619
594
|
}]
|
|
620
595
|
: []),
|
|
@@ -630,13 +605,17 @@ class GoogleGenerativeAIAssistanceService extends services_1.LLMAssistanceServic
|
|
|
630
605
|
* so the per-round generations add up to the single metrics point the run
|
|
631
606
|
* still writes.
|
|
632
607
|
*/
|
|
633
|
-
|
|
608
|
+
buildUsageMetrics(usage) {
|
|
634
609
|
return {
|
|
635
610
|
inputTextTokens: usage.promptTokens - usage.cachedTokens,
|
|
636
611
|
inputCachedTextTokens: usage.cachedTokens,
|
|
637
612
|
outputTextTokens: usage.candidatesTokens,
|
|
638
613
|
};
|
|
639
614
|
}
|
|
615
|
+
buildRoundOutcome = (response) => ({
|
|
616
|
+
output: response.candidates?.[0]?.content,
|
|
617
|
+
usage: this.buildUsageMetrics(this.extractUsageFromResponse(response)),
|
|
618
|
+
});
|
|
640
619
|
extractUsageFromResponse(response) {
|
|
641
620
|
return {
|
|
642
621
|
promptTokens: response.usageMetadata
|
|
@@ -707,10 +686,7 @@ class GoogleGenerativeAIAssistanceService extends services_1.LLMAssistanceServic
|
|
|
707
686
|
message: functionResponseParts,
|
|
708
687
|
config,
|
|
709
688
|
}),
|
|
710
|
-
describeOutcome:
|
|
711
|
-
output: response.candidates?.[0]?.content,
|
|
712
|
-
usage: this.buildRoundUsage(this.extractUsageFromResponse(response)),
|
|
713
|
-
}),
|
|
689
|
+
describeOutcome: this.buildRoundOutcome,
|
|
714
690
|
});
|
|
715
691
|
toolIterationsUsed += 1;
|
|
716
692
|
const iterationUsage = this.extractUsageFromResponse(currentResponse);
|