@memberjunction/ai-agents 5.45.0 → 5.46.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/dist/base-agent.d.ts.map +1 -1
- package/dist/base-agent.js +23 -0
- package/dist/base-agent.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/scoped-prompt-config-resolver.d.ts +50 -0
- package/dist/scoped-prompt-config-resolver.d.ts.map +1 -0
- package/dist/scoped-prompt-config-resolver.js +134 -0
- package/dist/scoped-prompt-config-resolver.js.map +1 -0
- package/package.json +18 -18
package/dist/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export * from './agent-types/loop-agent-response-type.js';
|
|
|
13
13
|
export * from './agent-types/loop-agent-prompt-params.js';
|
|
14
14
|
export * from './base-agent.js';
|
|
15
15
|
export * from './prompt-component-resolver.js';
|
|
16
|
+
export * from './scoped-prompt-config-resolver.js';
|
|
16
17
|
export * from './agent-run-watchdog.js';
|
|
17
18
|
export * from './agent-types/index.js';
|
|
18
19
|
export * from './AgentRunner.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AAKnD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACrI,cAAc,4CAA4C,CAAC;AAC3D,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,iCAAiC,CAAC;AAChD,cAAc,iDAAiD,CAAC;AAChE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AAGpD,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,0BAA0B,EAC1B,WAAW,GACZ,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AAKnD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACrI,cAAc,4CAA4C,CAAC;AAC3D,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,iCAAiC,CAAC;AAChD,cAAc,iDAAiD,CAAC;AAChE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AAGpD,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,0BAA0B,EAC1B,WAAW,GACZ,MAAM,6BAA6B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,7 @@ export * from './agent-types/loop-agent-response-type.js';
|
|
|
13
13
|
export * from './agent-types/loop-agent-prompt-params.js';
|
|
14
14
|
export * from './base-agent.js';
|
|
15
15
|
export * from './prompt-component-resolver.js';
|
|
16
|
+
export * from './scoped-prompt-config-resolver.js';
|
|
16
17
|
export * from './agent-run-watchdog.js';
|
|
17
18
|
export * from './agent-types/index.js';
|
|
18
19
|
export * from './AgentRunner.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,4FAA4F;AAC5F,8FAA8F;AAC9F,2FAA2F;AAC3F,8BAA8B;AAC9B,OAAO,EAAE,kBAAkB,EAAkE,MAAM,iCAAiC,CAAC;AACrI,cAAc,4CAA4C,CAAC;AAC3D,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,iCAAiC,CAAC;AAChD,cAAc,iDAAiD,CAAC;AAChE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AAEpD,wDAAwD;AACxD,OAAO,EACL,eAAe,EAEf,0BAA0B,EAG1B,WAAW,GACZ,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,4FAA4F;AAC5F,8FAA8F;AAC9F,2FAA2F;AAC3F,8BAA8B;AAC9B,OAAO,EAAE,kBAAkB,EAAkE,MAAM,iCAAiC,CAAC;AACrI,cAAc,4CAA4C,CAAC;AAC3D,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,iCAAiC,CAAC;AAChD,cAAc,iDAAiD,CAAC;AAChE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AAEpD,wDAAwD;AACxD,OAAO,EACL,eAAe,EAEf,0BAA0B,EAG1B,WAAW,GACZ,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { MJScopedPromptConfigEntity } from "@memberjunction/core-entities";
|
|
2
|
+
import { SecondaryScopeValue } from "@memberjunction/ai-core-plus";
|
|
3
|
+
import { PromptComponentScope } from "./prompt-component-resolver.js";
|
|
4
|
+
/**
|
|
5
|
+
* The subset of `AIPromptParams` fields a resolved config writes onto. Kept as a minimal
|
|
6
|
+
* structural shape (rather than importing `AIPromptParams`) so the apply step is unit-testable
|
|
7
|
+
* and free of a hard prompt-runtime dependency — `AIPromptParams` is structurally assignable to it.
|
|
8
|
+
*/
|
|
9
|
+
export interface ScopedPromptConfigTarget {
|
|
10
|
+
override?: {
|
|
11
|
+
modelId?: string;
|
|
12
|
+
vendorId?: string;
|
|
13
|
+
};
|
|
14
|
+
configurationId?: string;
|
|
15
|
+
effortLevel?: number;
|
|
16
|
+
additionalParameters?: Record<string, unknown>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* ScopedPromptConfigResolver — the run-settings sibling of {@link PromptComponentResolver}.
|
|
20
|
+
* Picks the single most-specific in-scope `MJ: Scoped Prompt Configs` row for a prompt (whole-row
|
|
21
|
+
* wins: SecondaryScopes match (+4) > PrimaryScopeRecord (+2) > global (+1), tie-broken by
|
|
22
|
+
* `Priority`), then overlays its non-null columns onto the prompt run's params.
|
|
23
|
+
*
|
|
24
|
+
* **Pluggable (ClassFactory).** Obtained via
|
|
25
|
+
* `MJGlobal.Instance.ClassFactory.CreateInstance(ScopedPromptConfigResolver)` — base by default, or
|
|
26
|
+
* a `@RegisterClass(ScopedPromptConfigResolver)` subclass. Protected hooks
|
|
27
|
+
* ({@link getCandidates}, {@link isInScope}, {@link score}) are the override points, mirroring
|
|
28
|
+
* the parts resolver.
|
|
29
|
+
*/
|
|
30
|
+
export declare class ScopedPromptConfigResolver {
|
|
31
|
+
/** Resolve the single winning config for `promptID` under `scope`, or null if none in scope. */
|
|
32
|
+
Resolve(promptID: string, scope: PromptComponentScope): MJScopedPromptConfigEntity | null;
|
|
33
|
+
/** Candidate configs for a prompt: same PromptID + resolvable Status. */
|
|
34
|
+
protected getCandidates(promptID: string): MJScopedPromptConfigEntity[];
|
|
35
|
+
/** Is this config compatible with the run scope? (cascading: it may only require dims the run has) */
|
|
36
|
+
protected isInScope(c: MJScopedPromptConfigEntity, scope: PromptComponentScope): boolean;
|
|
37
|
+
/** Specificity score: SecondaryScopes match (+4) > PrimaryScopeRecord (+2) > Global (+1). */
|
|
38
|
+
protected score(c: MJScopedPromptConfigEntity): number;
|
|
39
|
+
protected parseScopes(raw: string | null): Record<string, unknown>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Overlay a resolved `ScopedPromptConfig` onto a prompt run's params. Only sets values the caller
|
|
43
|
+
* has NOT already specified (runtime-explicit overrides win); null columns are skipped (inherit the
|
|
44
|
+
* prompt default). Model/vendor → `override.{modelId,vendorId}`; configuration → `configurationId`;
|
|
45
|
+
* effort → `effortLevel`; the sampling knobs → `additionalParameters` (existing keys win). Returns
|
|
46
|
+
* the applied config (for observability) or null when nothing resolved.
|
|
47
|
+
*/
|
|
48
|
+
export declare function ApplyScopedPromptConfig(resolver: ScopedPromptConfigResolver, promptID: string, scope: PromptComponentScope, params: ScopedPromptConfigTarget): MJScopedPromptConfigEntity | null;
|
|
49
|
+
export type { PromptComponentScope, SecondaryScopeValue };
|
|
50
|
+
//# sourceMappingURL=scoped-prompt-config-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoped-prompt-config-resolver.d.ts","sourceRoot":"","sources":["../src/scoped-prompt-config-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAKnE;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACrC,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClD;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,0BAA0B;IACnC,gGAAgG;IACzF,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,0BAA0B,GAAG,IAAI;IAShG,yEAAyE;IACzE,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,0BAA0B,EAAE;IAMvE,sGAAsG;IACtG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,0BAA0B,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO;IA0BxF,6FAA6F;IAC7F,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,GAAG,MAAM;IAOtD,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CASrE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,0BAA0B,EACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,oBAAoB,EAC3B,MAAM,EAAE,wBAAwB,GACjC,0BAA0B,GAAG,IAAI,CA8CnC;AAGD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { LogStatus } from "@memberjunction/core";
|
|
2
|
+
import { UUIDsEqual } from "@memberjunction/global";
|
|
3
|
+
import { AIEngine } from "@memberjunction/aiengine";
|
|
4
|
+
/** Statuses eligible for resolution. Archived configs are excluded. */
|
|
5
|
+
const RESOLVABLE_STATUSES = new Set(["Active", "Provisional"]);
|
|
6
|
+
/**
|
|
7
|
+
* ScopedPromptConfigResolver — the run-settings sibling of {@link PromptComponentResolver}.
|
|
8
|
+
* Picks the single most-specific in-scope `MJ: Scoped Prompt Configs` row for a prompt (whole-row
|
|
9
|
+
* wins: SecondaryScopes match (+4) > PrimaryScopeRecord (+2) > global (+1), tie-broken by
|
|
10
|
+
* `Priority`), then overlays its non-null columns onto the prompt run's params.
|
|
11
|
+
*
|
|
12
|
+
* **Pluggable (ClassFactory).** Obtained via
|
|
13
|
+
* `MJGlobal.Instance.ClassFactory.CreateInstance(ScopedPromptConfigResolver)` — base by default, or
|
|
14
|
+
* a `@RegisterClass(ScopedPromptConfigResolver)` subclass. Protected hooks
|
|
15
|
+
* ({@link getCandidates}, {@link isInScope}, {@link score}) are the override points, mirroring
|
|
16
|
+
* the parts resolver.
|
|
17
|
+
*/
|
|
18
|
+
export class ScopedPromptConfigResolver {
|
|
19
|
+
/** Resolve the single winning config for `promptID` under `scope`, or null if none in scope. */
|
|
20
|
+
Resolve(promptID, scope) {
|
|
21
|
+
const inScope = this.getCandidates(promptID).filter((c) => this.isInScope(c, scope));
|
|
22
|
+
if (inScope.length === 0)
|
|
23
|
+
return null;
|
|
24
|
+
inScope.sort((a, b) => this.score(b) - this.score(a) || b.Priority - a.Priority);
|
|
25
|
+
return inScope[0];
|
|
26
|
+
}
|
|
27
|
+
// ── Protected hooks (override points) ──────────────────────────────────────
|
|
28
|
+
/** Candidate configs for a prompt: same PromptID + resolvable Status. */
|
|
29
|
+
getCandidates(promptID) {
|
|
30
|
+
return AIEngine.Instance.ScopedPromptConfigs.filter((c) => UUIDsEqual(c.PromptID, promptID) && RESOLVABLE_STATUSES.has(c.Status));
|
|
31
|
+
}
|
|
32
|
+
/** Is this config compatible with the run scope? (cascading: it may only require dims the run has) */
|
|
33
|
+
isInScope(c, scope) {
|
|
34
|
+
if (c.PrimaryScopeRecordID) {
|
|
35
|
+
if (!scope.primaryScopeRecordId ||
|
|
36
|
+
c.PrimaryScopeRecordID.toLowerCase() !== scope.primaryScopeRecordId.toLowerCase()) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
if (c.PrimaryScopeEntityID &&
|
|
40
|
+
scope.primaryScopeEntityId &&
|
|
41
|
+
!UUIDsEqual(c.PrimaryScopeEntityID, scope.primaryScopeEntityId)) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const cfgScopes = this.parseScopes(c.SecondaryScopes);
|
|
46
|
+
for (const key of Object.keys(cfgScopes)) {
|
|
47
|
+
const runValue = scope.secondaryScopes?.[key];
|
|
48
|
+
if (runValue === undefined || String(runValue) !== String(cfgScopes[key])) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
/** Specificity score: SecondaryScopes match (+4) > PrimaryScopeRecord (+2) > Global (+1). */
|
|
55
|
+
score(c) {
|
|
56
|
+
let s = 1;
|
|
57
|
+
if (c.PrimaryScopeRecordID)
|
|
58
|
+
s += 2;
|
|
59
|
+
if (Object.keys(this.parseScopes(c.SecondaryScopes)).length > 0)
|
|
60
|
+
s += 4;
|
|
61
|
+
return s;
|
|
62
|
+
}
|
|
63
|
+
parseScopes(raw) {
|
|
64
|
+
if (!raw)
|
|
65
|
+
return {};
|
|
66
|
+
try {
|
|
67
|
+
const o = JSON.parse(raw);
|
|
68
|
+
return o && typeof o === "object" ? o : {};
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return {};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Overlay a resolved `ScopedPromptConfig` onto a prompt run's params. Only sets values the caller
|
|
77
|
+
* has NOT already specified (runtime-explicit overrides win); null columns are skipped (inherit the
|
|
78
|
+
* prompt default). Model/vendor → `override.{modelId,vendorId}`; configuration → `configurationId`;
|
|
79
|
+
* effort → `effortLevel`; the sampling knobs → `additionalParameters` (existing keys win). Returns
|
|
80
|
+
* the applied config (for observability) or null when nothing resolved.
|
|
81
|
+
*/
|
|
82
|
+
export function ApplyScopedPromptConfig(resolver, promptID, scope, params) {
|
|
83
|
+
const cfg = resolver.Resolve(promptID, scope);
|
|
84
|
+
if (!cfg)
|
|
85
|
+
return null;
|
|
86
|
+
if (cfg.ModelID && !params.override?.modelId) {
|
|
87
|
+
params.override = { ...(params.override ?? {}), modelId: cfg.ModelID };
|
|
88
|
+
if (cfg.VendorID && !params.override.vendorId) {
|
|
89
|
+
params.override.vendorId = cfg.VendorID;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (cfg.ConfigurationID && params.configurationId == null) {
|
|
93
|
+
params.configurationId = cfg.ConfigurationID;
|
|
94
|
+
}
|
|
95
|
+
if (cfg.EffortLevel != null && params.effortLevel == null) {
|
|
96
|
+
params.effortLevel = cfg.EffortLevel;
|
|
97
|
+
}
|
|
98
|
+
// Sampling knobs → additionalParameters (existing/runtime keys win).
|
|
99
|
+
const knobs = {};
|
|
100
|
+
if (cfg.Temperature != null)
|
|
101
|
+
knobs.temperature = cfg.Temperature;
|
|
102
|
+
if (cfg.TopP != null)
|
|
103
|
+
knobs.topP = cfg.TopP;
|
|
104
|
+
if (cfg.TopK != null)
|
|
105
|
+
knobs.topK = cfg.TopK;
|
|
106
|
+
if (cfg.MinP != null)
|
|
107
|
+
knobs.minP = cfg.MinP;
|
|
108
|
+
if (cfg.FrequencyPenalty != null)
|
|
109
|
+
knobs.frequencyPenalty = cfg.FrequencyPenalty;
|
|
110
|
+
if (cfg.PresencePenalty != null)
|
|
111
|
+
knobs.presencePenalty = cfg.PresencePenalty;
|
|
112
|
+
if (cfg.Seed != null)
|
|
113
|
+
knobs.seed = cfg.Seed;
|
|
114
|
+
// StopSequences is comma-delimited text (like the prompt default); the runner's additionalParameters
|
|
115
|
+
// contract expects a ready-made string[] (it assigns it as-is to ChatParams.stopSequences), so split
|
|
116
|
+
// + trim here rather than passing the raw string. NOTE: the additionalParameters path intentionally
|
|
117
|
+
// bypasses AIPromptRunner's shouldApplyStopSequences driver-support gate — a scope-level override is
|
|
118
|
+
// taken as an explicit caller instruction, same as any runtime-supplied additionalParameters.
|
|
119
|
+
if (cfg.StopSequences) {
|
|
120
|
+
const stops = cfg.StopSequences.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
|
|
121
|
+
if (stops.length > 0)
|
|
122
|
+
knobs.stopSequences = stops;
|
|
123
|
+
}
|
|
124
|
+
if (cfg.ResponseFormat)
|
|
125
|
+
knobs.responseFormat = cfg.ResponseFormat;
|
|
126
|
+
if (Object.keys(knobs).length > 0) {
|
|
127
|
+
params.additionalParameters = { ...knobs, ...(params.additionalParameters ?? {}) };
|
|
128
|
+
}
|
|
129
|
+
LogStatus(`ScopedPromptConfigResolver: applied config ${cfg.ID} for prompt ${promptID} ` +
|
|
130
|
+
`(scope record=${scope.primaryScopeRecordId ?? "global"}` +
|
|
131
|
+
`${cfg.ModelID ? `, model=${cfg.ModelID}` : ""})`);
|
|
132
|
+
return cfg;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=scoped-prompt-config-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoped-prompt-config-resolver.js","sourceRoot":"","sources":["../src/scoped-prompt-config-resolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ai-agents",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.46.0",
|
|
5
5
|
"description": "MemberJunction: AI Agent Execution and Management",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -17,23 +17,23 @@
|
|
|
17
17
|
"author": "MemberJunction.com",
|
|
18
18
|
"license": "ISC",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@memberjunction/actions": "5.
|
|
21
|
-
"@memberjunction/actions-base": "5.
|
|
22
|
-
"@memberjunction/ai": "5.
|
|
23
|
-
"@memberjunction/ai-core-plus": "5.
|
|
24
|
-
"@memberjunction/ai-engine-base": "5.
|
|
25
|
-
"@memberjunction/ai-prompts": "5.
|
|
26
|
-
"@memberjunction/ai-reranker": "5.
|
|
27
|
-
"@memberjunction/ai-vector-dupe": "5.
|
|
28
|
-
"@memberjunction/ai-vector-sync": "5.
|
|
29
|
-
"@memberjunction/aiengine": "5.
|
|
30
|
-
"@memberjunction/context-crush": "5.
|
|
31
|
-
"@memberjunction/core": "5.
|
|
32
|
-
"@memberjunction/core-entities": "5.
|
|
33
|
-
"@memberjunction/global": "5.
|
|
34
|
-
"@memberjunction/search-engine": "5.
|
|
35
|
-
"@memberjunction/storage": "5.
|
|
36
|
-
"@memberjunction/templates": "5.
|
|
20
|
+
"@memberjunction/actions": "5.46.0",
|
|
21
|
+
"@memberjunction/actions-base": "5.46.0",
|
|
22
|
+
"@memberjunction/ai": "5.46.0",
|
|
23
|
+
"@memberjunction/ai-core-plus": "5.46.0",
|
|
24
|
+
"@memberjunction/ai-engine-base": "5.46.0",
|
|
25
|
+
"@memberjunction/ai-prompts": "5.46.0",
|
|
26
|
+
"@memberjunction/ai-reranker": "5.46.0",
|
|
27
|
+
"@memberjunction/ai-vector-dupe": "5.46.0",
|
|
28
|
+
"@memberjunction/ai-vector-sync": "5.46.0",
|
|
29
|
+
"@memberjunction/aiengine": "5.46.0",
|
|
30
|
+
"@memberjunction/context-crush": "5.46.0",
|
|
31
|
+
"@memberjunction/core": "5.46.0",
|
|
32
|
+
"@memberjunction/core-entities": "5.46.0",
|
|
33
|
+
"@memberjunction/global": "5.46.0",
|
|
34
|
+
"@memberjunction/search-engine": "5.46.0",
|
|
35
|
+
"@memberjunction/storage": "5.46.0",
|
|
36
|
+
"@memberjunction/templates": "5.46.0",
|
|
37
37
|
"dotenv": "^17.2.4",
|
|
38
38
|
"exceljs": "^4.4.0",
|
|
39
39
|
"lodash": "^4.17.23",
|