@fastpaca/cria 1.4.0 → 1.5.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 +25 -22
- package/dist/dsl/builder.d.ts +243 -0
- package/dist/dsl/builder.d.ts.map +1 -0
- package/dist/dsl/builder.js +458 -0
- package/dist/dsl/builder.js.map +1 -0
- package/dist/dsl/index.d.ts +71 -0
- package/dist/dsl/index.d.ts.map +1 -0
- package/dist/dsl/index.js +82 -0
- package/dist/dsl/index.js.map +1 -0
- package/dist/dsl/strategies.d.ts +29 -0
- package/dist/dsl/strategies.d.ts.map +1 -0
- package/dist/dsl/strategies.js +62 -0
- package/dist/dsl/strategies.js.map +1 -0
- package/dist/dsl/summary.d.ts +50 -0
- package/dist/dsl/summary.d.ts.map +1 -0
- package/dist/dsl/summary.js +56 -0
- package/dist/dsl/summary.js.map +1 -0
- package/dist/dsl/templating.d.ts +31 -0
- package/dist/dsl/templating.d.ts.map +1 -0
- package/dist/dsl/templating.js +83 -0
- package/dist/dsl/templating.js.map +1 -0
- package/dist/{components → dsl}/vector-search.d.ts +11 -34
- package/dist/dsl/vector-search.d.ts.map +1 -0
- package/dist/{components → dsl}/vector-search.js +12 -34
- package/dist/dsl/vector-search.js.map +1 -0
- package/dist/eval/index.d.ts +13 -2
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/judge.d.ts +6 -5
- package/dist/eval/judge.d.ts.map +1 -1
- package/dist/eval/judge.js +18 -5
- package/dist/eval/judge.js.map +1 -1
- package/dist/index.d.ts +5 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -6
- package/dist/index.js.map +1 -1
- package/dist/instrumentation/otel.js +5 -14
- package/dist/instrumentation/otel.js.map +1 -1
- package/dist/providers/ai-sdk.d.ts +29 -0
- package/dist/providers/ai-sdk.d.ts.map +1 -0
- package/dist/providers/ai-sdk.js +104 -0
- package/dist/providers/ai-sdk.js.map +1 -0
- package/dist/providers/anthropic.d.ts +30 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +160 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/openai.d.ts +37 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +164 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/render.d.ts +24 -22
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +191 -63
- package/dist/render.js.map +1 -1
- package/dist/testing/plaintext.d.ts +28 -0
- package/dist/testing/plaintext.d.ts.map +1 -0
- package/dist/testing/plaintext.js +71 -0
- package/dist/testing/plaintext.js.map +1 -0
- package/dist/types.d.ts +204 -163
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +37 -100
- package/dist/types.js.map +1 -1
- package/package.json +7 -33
- package/dist/components/index.d.ts +0 -147
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js +0 -181
- package/dist/components/index.js.map +0 -1
- package/dist/components/summary.d.ts +0 -89
- package/dist/components/summary.d.ts.map +0 -1
- package/dist/components/summary.js +0 -118
- package/dist/components/summary.js.map +0 -1
- package/dist/components/vector-search.d.ts.map +0 -1
- package/dist/components/vector-search.js.map +0 -1
- package/dist/dsl.d.ts +0 -233
- package/dist/dsl.d.ts.map +0 -1
- package/dist/dsl.js +0 -428
- package/dist/dsl.js.map +0 -1
- package/dist/integrations/ai-sdk.d.ts +0 -22
- package/dist/integrations/ai-sdk.d.ts.map +0 -1
- package/dist/integrations/ai-sdk.js +0 -172
- package/dist/integrations/ai-sdk.js.map +0 -1
- package/dist/integrations/anthropic.d.ts +0 -50
- package/dist/integrations/anthropic.d.ts.map +0 -1
- package/dist/integrations/anthropic.js +0 -220
- package/dist/integrations/anthropic.js.map +0 -1
- package/dist/integrations/openai.d.ts +0 -48
- package/dist/integrations/openai.d.ts.map +0 -1
- package/dist/integrations/openai.js +0 -265
- package/dist/integrations/openai.js.map +0 -1
- package/dist/jsx/index.d.ts +0 -6
- package/dist/jsx/index.d.ts.map +0 -1
- package/dist/jsx/index.js +0 -7
- package/dist/jsx/index.js.map +0 -1
- package/dist/jsx/jsx-dev-runtime.d.ts +0 -2
- package/dist/jsx/jsx-dev-runtime.d.ts.map +0 -1
- package/dist/jsx/jsx-dev-runtime.js +0 -3
- package/dist/jsx/jsx-dev-runtime.js.map +0 -1
- package/dist/jsx/jsx-runtime.d.ts +0 -40
- package/dist/jsx/jsx-runtime.d.ts.map +0 -1
- package/dist/jsx/jsx-runtime.js +0 -40
- package/dist/jsx/jsx-runtime.js.map +0 -1
- package/dist/renderers/markdown.d.ts +0 -3
- package/dist/renderers/markdown.d.ts.map +0 -1
- package/dist/renderers/markdown.js +0 -43
- package/dist/renderers/markdown.js.map +0 -1
- package/dist/renderers/shared.d.ts +0 -82
- package/dist/renderers/shared.d.ts.map +0 -1
- package/dist/renderers/shared.js +0 -156
- package/dist/renderers/shared.js.map +0 -1
- package/dist/snapshot.d.ts +0 -47
- package/dist/snapshot.d.ts.map +0 -1
- package/dist/snapshot.js +0 -144
- package/dist/snapshot.js.map +0 -1
- package/dist/tokenizers.d.ts +0 -14
- package/dist/tokenizers.d.ts.map +0 -1
- package/dist/tokenizers.js +0 -45
- package/dist/tokenizers.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategies.d.ts","sourceRoot":"","sources":["../../src/dsl/strategies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,QAAQ,EACT,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,SAAS,cAAc,EACxD,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D,WAAW,CAAC,OAAO,CAAC,CAStB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,SAAS,cAAc,EAC1D,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,EAClC,EAAE,CAAC,EAAE,MAAM,GACV,iBAAiB,CAAC,OAAO,CAAC,CAQ5B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,GAAG,KAAK,GACpB,QAAQ,CAsBV;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,QAAQ,CAE7C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAS,cAAc,EAC3D,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,SAAS,SAAS,GACjB,UAAU,CAAC,OAAO,CAAC,CAIrB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strategy factories and component helpers for the DSL module.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Create a scope node with optional priority, strategy, and id.
|
|
6
|
+
*/
|
|
7
|
+
export function createScope(children, opts) {
|
|
8
|
+
// Thin helper that preserves tool IO types without coercion.
|
|
9
|
+
return {
|
|
10
|
+
kind: "scope",
|
|
11
|
+
priority: opts?.priority ?? 0,
|
|
12
|
+
children,
|
|
13
|
+
...(opts?.strategy && { strategy: opts.strategy }),
|
|
14
|
+
...(opts?.id && { id: opts.id }),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a message node with role and children.
|
|
19
|
+
*/
|
|
20
|
+
export function createMessage(role, children, id) {
|
|
21
|
+
// Message nodes only carry already-normalized parts; no conversion happens here.
|
|
22
|
+
return {
|
|
23
|
+
kind: "message",
|
|
24
|
+
role,
|
|
25
|
+
children,
|
|
26
|
+
...(id && { id }),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a truncate strategy that removes children from one end.
|
|
31
|
+
*/
|
|
32
|
+
export function createTruncateStrategy(budget, from) {
|
|
33
|
+
return (input) => {
|
|
34
|
+
const { children: currentChildren } = input.target;
|
|
35
|
+
if (currentChildren.length === 0) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const dropCount = Math.max(1, Math.floor(input.totalTokens / budget));
|
|
39
|
+
const nextChildren = from === "start"
|
|
40
|
+
? currentChildren.slice(dropCount)
|
|
41
|
+
: currentChildren.slice(0, Math.max(0, currentChildren.length - dropCount));
|
|
42
|
+
if (nextChildren.length === 0) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return { ...input.target, children: nextChildren };
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create an omit strategy that removes the entire scope.
|
|
50
|
+
*/
|
|
51
|
+
export function createOmitStrategy() {
|
|
52
|
+
return () => null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Format examples into a text prompt part.
|
|
56
|
+
*/
|
|
57
|
+
export function formatExamples(title, items, separator = "\n\n") {
|
|
58
|
+
const body = items.length === 0 ? "" : items.join(separator);
|
|
59
|
+
const text = title ? `${title}\n${body}` : body;
|
|
60
|
+
return { type: "text", text };
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=strategies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategies.js","sourceRoot":"","sources":["../../src/dsl/strategies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,QAAgC,EAChC,IAA8D;IAE9D,6DAA6D;IAC7D,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,CAAC;QAC7B,QAAQ;QACR,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClD,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAgB,EAChB,QAAkC,EAClC,EAAW;IAEX,iFAAiF;IACjF,OAAO;QACL,IAAI,EAAE,SAAS;QACf,IAAI;QACJ,QAAQ;QACR,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAc,EACd,IAAqB;IAErB,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QACnD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC;QACtE,MAAM,YAAY,GAChB,IAAI,KAAK,OAAO;YACd,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC;YAClC,CAAC,CAAC,eAAe,CAAC,KAAK,CACnB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,CAChD,CAAC;QAER,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACrD,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,KAAwB,EACxB,SAAS,GAAG,MAAM;IAElB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Summary strategy for progressively summarizing conversation history.
|
|
3
|
+
*/
|
|
4
|
+
import type { KVMemory } from "../memory";
|
|
5
|
+
import type { MaybePromise, ModelProvider, PromptRole, PromptScope, ProviderToolIO, ScopeChildren } from "../types";
|
|
6
|
+
/**
|
|
7
|
+
* Stored summary data persisted across renders.
|
|
8
|
+
*/
|
|
9
|
+
export interface StoredSummary {
|
|
10
|
+
/** The summary text content */
|
|
11
|
+
content: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Context passed to the summarizer function.
|
|
15
|
+
*/
|
|
16
|
+
export interface SummarizerContext {
|
|
17
|
+
/** The subtree being summarized */
|
|
18
|
+
target: PromptScope<ProviderToolIO>;
|
|
19
|
+
/** Previous summary to build upon (null if first summary) */
|
|
20
|
+
existingSummary: string | null;
|
|
21
|
+
/** Provider in scope, if any */
|
|
22
|
+
provider?: ModelProvider<unknown, ProviderToolIO>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Function that generates summaries.
|
|
26
|
+
*/
|
|
27
|
+
export type Summarizer = (ctx: SummarizerContext) => MaybePromise<string>;
|
|
28
|
+
interface SummaryProps<TToolIO extends ProviderToolIO = ProviderToolIO> {
|
|
29
|
+
/** Unique identifier for this summary in the store */
|
|
30
|
+
id: string;
|
|
31
|
+
/** Storage adapter for persisting summaries */
|
|
32
|
+
store: KVMemory<StoredSummary>;
|
|
33
|
+
/**
|
|
34
|
+
* Function that generates summaries.
|
|
35
|
+
* If omitted, uses the ModelProvider from render options with a default prompt.
|
|
36
|
+
*/
|
|
37
|
+
summarize?: Summarizer;
|
|
38
|
+
/** Priority for this scope (higher number = reduced first). Default: 0 */
|
|
39
|
+
priority?: number;
|
|
40
|
+
/** Role for the summary message. Default: "system" */
|
|
41
|
+
role?: PromptRole;
|
|
42
|
+
/** Content to potentially summarize */
|
|
43
|
+
children?: ScopeChildren<TToolIO>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* A scope that summarizes its content when the prompt needs to shrink.
|
|
47
|
+
*/
|
|
48
|
+
export declare function Summary<TToolIO extends ProviderToolIO>({ id, store, summarize, priority, role, children, }: SummaryProps<TToolIO>): PromptScope<TToolIO>;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=summary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/dsl/summary.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EAEd,MAAM,UAAU,CAAC;AAIlB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,MAAM,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IACpC,6DAA6D;IAC7D,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gCAAgC;IAChC,QAAQ,CAAC,EAAE,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,iBAAiB,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;AAgC1E,UAAU,YAAY,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc;IACpE,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,SAAS,cAAc,EAAE,EACtD,EAAE,EACF,KAAK,EACL,SAAS,EACT,QAAY,EACZ,IAAe,EACf,QAAa,GACd,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAqC9C"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Summary strategy for progressively summarizing conversation history.
|
|
3
|
+
*/
|
|
4
|
+
import { render } from "../render";
|
|
5
|
+
import { PromptBuilder } from "./builder";
|
|
6
|
+
import { createScope } from "./strategies";
|
|
7
|
+
/**
|
|
8
|
+
* Default summarizer that uses a ModelProvider.
|
|
9
|
+
* This is used when no custom summarize function is provided.
|
|
10
|
+
*/
|
|
11
|
+
async function defaultSummarizer(ctx, provider) {
|
|
12
|
+
const summaryPrompt = await PromptBuilder.create()
|
|
13
|
+
.system("You are a conversation summarizer. Create a concise summary that captures the key points and context needed to continue the conversation. Be brief but preserve essential information.")
|
|
14
|
+
.when(ctx.existingSummary !== null, (p) => p.assistant(`Current summary:\n${ctx.existingSummary}`))
|
|
15
|
+
.merge(ctx.target.children)
|
|
16
|
+
.when(ctx.existingSummary !== null, (p) => p.user("Update the summary based on the previous summary and the conversation above."))
|
|
17
|
+
.when(ctx.existingSummary === null, (p) => p.user("Summarize the conversation above."))
|
|
18
|
+
.build();
|
|
19
|
+
const rendered = await render(summaryPrompt, { provider });
|
|
20
|
+
return provider.completion(rendered);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A scope that summarizes its content when the prompt needs to shrink.
|
|
24
|
+
*/
|
|
25
|
+
export function Summary({ id, store, summarize, priority = 0, role = "system", children = [], }) {
|
|
26
|
+
return createScope(children, {
|
|
27
|
+
priority,
|
|
28
|
+
strategy: async (input) => {
|
|
29
|
+
const { target, context } = input;
|
|
30
|
+
const existingEntry = await store.get(id);
|
|
31
|
+
const summarizerContext = {
|
|
32
|
+
target,
|
|
33
|
+
existingSummary: existingEntry?.data.content ?? null,
|
|
34
|
+
...(context.provider ? { provider: context.provider } : {}),
|
|
35
|
+
};
|
|
36
|
+
let newSummary;
|
|
37
|
+
if (summarize) {
|
|
38
|
+
newSummary = await summarize(summarizerContext);
|
|
39
|
+
}
|
|
40
|
+
else if (context.provider) {
|
|
41
|
+
newSummary = await defaultSummarizer(summarizerContext, context.provider);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
throw new Error(`Summary "${id}" requires either a 'summarize' function or a provider. Pass a provider to render(), bind one with cria.prompt(provider) or cria.prompt().provider(provider), or wrap the summary in cria.prompt().providerScope(provider, (p) => p.summary(...)).`);
|
|
45
|
+
}
|
|
46
|
+
await store.set(id, {
|
|
47
|
+
content: newSummary,
|
|
48
|
+
});
|
|
49
|
+
const tree = await PromptBuilder.create()
|
|
50
|
+
.message(role, newSummary)
|
|
51
|
+
.build();
|
|
52
|
+
return { ...tree, priority: target.priority };
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/dsl/summary.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAUnC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA2B3C;;;GAGG;AACH,KAAK,UAAU,iBAAiB,CAC9B,GAAsB,EACtB,QAAgD;IAEhD,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE;SAC/C,MAAM,CACL,wLAAwL,CACzL;SACA,IAAI,CAAC,GAAG,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CACxC,CAAC,CAAC,SAAS,CAAC,qBAAqB,GAAG,CAAC,eAAe,EAAE,CAAC,CACxD;SACA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;SAC1B,IAAI,CAAC,GAAG,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CACxC,CAAC,CAAC,IAAI,CACJ,8EAA8E,CAC/E,CACF;SACA,IAAI,CAAC,GAAG,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CACxC,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAC5C;SACA,KAAK,EAAE,CAAC;IAEX,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3D,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAoBD;;GAEG;AACH,MAAM,UAAU,OAAO,CAAiC,EACtD,EAAE,EACF,KAAK,EACL,SAAS,EACT,QAAQ,GAAG,CAAC,EACZ,IAAI,GAAG,QAAQ,EACf,QAAQ,GAAG,EAAE,GACS;IACtB,OAAO,WAAW,CAAC,QAAQ,EAAE;QAC3B,QAAQ;QACR,QAAQ,EAAE,KAAK,EAAE,KAAoB,EAAE,EAAE;YACvC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;YAClC,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAE1C,MAAM,iBAAiB,GAAsB;gBAC3C,MAAM;gBACN,eAAe,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;gBACpD,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5D,CAAC;YAEF,IAAI,UAAkB,CAAC;YACvB,IAAI,SAAS,EAAE,CAAC;gBACd,UAAU,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAClD,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC5B,UAAU,GAAG,MAAM,iBAAiB,CAClC,iBAAiB,EACjB,OAAO,CAAC,QAAQ,CACjB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,YAAY,EAAE,oPAAoP,CACnQ,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE;gBAClB,OAAO,EAAE,UAAU;aACpB,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE;iBACtC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC;iBACzB,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChD,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template literal utilities for building prompt content.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import type { PromptPart, ProviderToolIO } from "../types";
|
|
7
|
+
/**
|
|
8
|
+
* Text input types for message builders.
|
|
9
|
+
* These accept raw text and pre-built PromptParts, so tool parts can pass through
|
|
10
|
+
* without conversion while keeping provider-bound tool IO types intact.
|
|
11
|
+
*/
|
|
12
|
+
export type TextValue<TToolIO extends ProviderToolIO = ProviderToolIO> = PromptPart<TToolIO> | boolean | number | string | null | undefined;
|
|
13
|
+
export type TextInput<TToolIO extends ProviderToolIO = ProviderToolIO> = TextValue<TToolIO> | readonly TextInput<TToolIO>[];
|
|
14
|
+
/**
|
|
15
|
+
* Tagged template literal function for building prompt children with automatic indentation normalization.
|
|
16
|
+
*
|
|
17
|
+
* Interpolates values into template strings and normalizes indentation by stripping
|
|
18
|
+
* common leading whitespace. Useful for writing multi-line prompt content with clean formatting.
|
|
19
|
+
*
|
|
20
|
+
* @param strings - Template string segments
|
|
21
|
+
* @param values - Interpolated values (strings, numbers, booleans, PromptParts, arrays, etc.)
|
|
22
|
+
* @returns Array of message parts
|
|
23
|
+
*
|
|
24
|
+
* This function allows you to use prompt parts naturally inside template strings.
|
|
25
|
+
*/
|
|
26
|
+
export declare function c(strings: TemplateStringsArray, ...values: readonly TextInput[]): readonly PromptPart[];
|
|
27
|
+
export declare function c<TToolIO extends ProviderToolIO>(strings: TemplateStringsArray, ...values: readonly TextInput<TToolIO>[]): readonly PromptPart<TToolIO>[];
|
|
28
|
+
export declare function textPart<TToolIO extends ProviderToolIO = ProviderToolIO>(value: string): PromptPart<TToolIO>;
|
|
29
|
+
export declare function isPromptPart<TToolIO extends ProviderToolIO = ProviderToolIO>(value: unknown): value is PromptPart<TToolIO>;
|
|
30
|
+
export declare function normalizeTextInput<TToolIO extends ProviderToolIO>(content?: TextInput<TToolIO>): PromptPart<TToolIO>[];
|
|
31
|
+
//# sourceMappingURL=templating.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templating.d.ts","sourceRoot":"","sources":["../../src/dsl/templating.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE3D;;;;GAIG;AACH,MAAM,MAAM,SAAS,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,IACjE,UAAU,CAAC,OAAO,CAAC,GACnB,OAAO,GACP,MAAM,GACN,MAAM,GACN,IAAI,GACJ,SAAS,CAAC;AACd,MAAM,MAAM,SAAS,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,IACjE,SAAS,CAAC,OAAO,CAAC,GAClB,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;AAIlC;;;;;;;;;;;GAWG;AACH,wBAAgB,CAAC,CACf,OAAO,EAAE,oBAAoB,EAC7B,GAAG,MAAM,EAAE,SAAS,SAAS,EAAE,GAC9B,SAAS,UAAU,EAAE,CAAC;AACzB,wBAAgB,CAAC,CAAC,OAAO,SAAS,cAAc,EAC9C,OAAO,EAAE,oBAAoB,EAC7B,GAAG,MAAM,EAAE,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,GACvC,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;AAyBlC,wBAAgB,QAAQ,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,EACtE,KAAK,EAAE,MAAM,GACZ,UAAU,CAAC,OAAO,CAAC,CAErB;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC1E,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC,CAE9B;AAGD,wBAAgB,kBAAkB,CAAC,OAAO,SAAS,cAAc,EAC/D,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,GAC3B,UAAU,CAAC,OAAO,CAAC,EAAE,CA0BvB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template literal utilities for building prompt content.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
const TEMPLATE_INDENT_RE = /^[ \t]*/;
|
|
7
|
+
export function c(strings, ...values) {
|
|
8
|
+
const normalizedStrings = normalizeTemplateStrings(strings);
|
|
9
|
+
const children = [];
|
|
10
|
+
for (let index = 0; index < normalizedStrings.length; index += 1) {
|
|
11
|
+
const segment = normalizedStrings[index];
|
|
12
|
+
if (segment !== undefined && segment.length > 0) {
|
|
13
|
+
children.push({ type: "text", text: segment });
|
|
14
|
+
}
|
|
15
|
+
if (index < values.length) {
|
|
16
|
+
const normalized = normalizeTextInput(values[index]);
|
|
17
|
+
if (normalized.length > 0) {
|
|
18
|
+
children.push(...normalized);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return children;
|
|
23
|
+
}
|
|
24
|
+
export function textPart(value) {
|
|
25
|
+
return { type: "text", text: value };
|
|
26
|
+
}
|
|
27
|
+
export function isPromptPart(value) {
|
|
28
|
+
return typeof value === "object" && value !== null && "type" in value;
|
|
29
|
+
}
|
|
30
|
+
// Normalize text-like inputs into prompt parts while preserving existing parts.
|
|
31
|
+
export function normalizeTextInput(content) {
|
|
32
|
+
if (content === null || content === undefined) {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
if (Array.isArray(content)) {
|
|
36
|
+
const flattened = [];
|
|
37
|
+
for (const item of content) {
|
|
38
|
+
flattened.push(...normalizeTextInput(item));
|
|
39
|
+
}
|
|
40
|
+
return flattened;
|
|
41
|
+
}
|
|
42
|
+
if (typeof content === "string") {
|
|
43
|
+
return [textPart(content)];
|
|
44
|
+
}
|
|
45
|
+
if (typeof content === "number" || typeof content === "boolean") {
|
|
46
|
+
return [textPart(String(content))];
|
|
47
|
+
}
|
|
48
|
+
if (isPromptPart(content)) {
|
|
49
|
+
return [content];
|
|
50
|
+
}
|
|
51
|
+
throw new Error("Message content must be text or message parts.");
|
|
52
|
+
}
|
|
53
|
+
function normalizeTemplateStrings(strings) {
|
|
54
|
+
if (strings.length === 0) {
|
|
55
|
+
return strings;
|
|
56
|
+
}
|
|
57
|
+
const normalized = [...strings];
|
|
58
|
+
if (normalized[0]?.startsWith("\n")) {
|
|
59
|
+
normalized[0] = normalized[0].slice(1);
|
|
60
|
+
}
|
|
61
|
+
const lastIndex = normalized.length - 1;
|
|
62
|
+
if (normalized[lastIndex]?.endsWith("\n")) {
|
|
63
|
+
normalized[lastIndex] = normalized[lastIndex].slice(0, -1);
|
|
64
|
+
}
|
|
65
|
+
const lines = normalized.flatMap((segment) => segment.split("\n"));
|
|
66
|
+
const indents = lines
|
|
67
|
+
.filter((line) => line.trim().length > 0)
|
|
68
|
+
.map((line) => line.match(TEMPLATE_INDENT_RE)?.[0].length ?? 0);
|
|
69
|
+
const minIndent = indents.length > 0 ? Math.min(...indents) : 0;
|
|
70
|
+
if (minIndent === 0) {
|
|
71
|
+
return normalized;
|
|
72
|
+
}
|
|
73
|
+
return normalized.map((segment) => segment
|
|
74
|
+
.split("\n")
|
|
75
|
+
.map((line) => {
|
|
76
|
+
if (line.trim().length === 0) {
|
|
77
|
+
return "";
|
|
78
|
+
}
|
|
79
|
+
return line.slice(Math.min(minIndent, line.length));
|
|
80
|
+
})
|
|
81
|
+
.join("\n"));
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=templating.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templating.js","sourceRoot":"","sources":["../../src/dsl/templating.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VectorSearch async component for RAG-style retrieval.
|
|
3
|
+
*/
|
|
1
4
|
import type { VectorMemory, VectorSearchResult } from "../memory";
|
|
2
|
-
import type {
|
|
5
|
+
import type { PromptPart, PromptRole, PromptScope, ProviderToolIO } from "../types";
|
|
3
6
|
/** Simple message shape for query extraction. */
|
|
4
7
|
interface Message {
|
|
5
8
|
role: string;
|
|
@@ -12,7 +15,7 @@ interface Message {
|
|
|
12
15
|
*/
|
|
13
16
|
export type ResultFormatter<T = unknown> = (results: VectorSearchResult<T>[]) => string;
|
|
14
17
|
type QueryExtractor = (messages: Message[]) => string | null | undefined;
|
|
15
|
-
interface VectorSearchProps<T = unknown> {
|
|
18
|
+
interface VectorSearchProps<T = unknown, TToolIO extends ProviderToolIO = ProviderToolIO> {
|
|
16
19
|
/** Vector memory store to search */
|
|
17
20
|
store: VectorMemory<T>;
|
|
18
21
|
/**
|
|
@@ -32,44 +35,18 @@ interface VectorSearchProps<T = unknown> {
|
|
|
32
35
|
threshold?: number;
|
|
33
36
|
/** Custom formatter for search results. Default: numbered list format */
|
|
34
37
|
formatResults?: ResultFormatter<T>;
|
|
35
|
-
/** Priority for this
|
|
38
|
+
/** Priority for this scope (higher number = reduced first). Default: 0 */
|
|
36
39
|
priority?: number;
|
|
37
40
|
/** Stable identifier for caching/debugging */
|
|
38
41
|
id?: string;
|
|
42
|
+
/** Role for the emitted message. Default: "user" */
|
|
43
|
+
role?: PromptRole;
|
|
39
44
|
/** Query text provided as children (preferred over `query` when present). */
|
|
40
|
-
children?:
|
|
45
|
+
children?: readonly PromptPart<TToolIO>[];
|
|
41
46
|
}
|
|
42
47
|
/**
|
|
43
|
-
* Renders vector search results into
|
|
44
|
-
*
|
|
45
|
-
* The query is resolved at render time. No pre-fetching needed. Query sources, in
|
|
46
|
-
* order of precedence:
|
|
47
|
-
* 1) Children text: `<VectorSearch store={store}>find docs about RAG</VectorSearch>`
|
|
48
|
-
* 2) `query` prop: `<VectorSearch store={store} query="find docs about RAG" />`
|
|
49
|
-
* 3) Messages: `<VectorSearch store={store} messages={messages} />`
|
|
50
|
-
* - Defaults to the last user message, or use `extractQuery` to customize.
|
|
51
|
-
*
|
|
52
|
-
* @example
|
|
53
|
-
* ```tsx
|
|
54
|
-
* <VectorSearch store={store} limit={5}>
|
|
55
|
-
* my query: {topic}
|
|
56
|
-
* </VectorSearch>
|
|
57
|
-
* ```
|
|
58
|
-
*
|
|
59
|
-
* @example Using messages as the query source
|
|
60
|
-
* ```tsx
|
|
61
|
-
* <VectorSearch store={store} messages={messages} />
|
|
62
|
-
* ```
|
|
63
|
-
*
|
|
64
|
-
* @example Custom extractor
|
|
65
|
-
* ```tsx
|
|
66
|
-
* <VectorSearch
|
|
67
|
-
* store={store}
|
|
68
|
-
* messages={messages}
|
|
69
|
-
* extractQuery={(msgs) => msgs.at(-1)?.content}
|
|
70
|
-
* />
|
|
71
|
-
* ```
|
|
48
|
+
* Renders vector search results into a scoped message.
|
|
72
49
|
*/
|
|
73
|
-
export declare function VectorSearch<T = unknown>({ store, query, messages, extractQuery, limit, threshold, formatResults, priority, id, children, }: VectorSearchProps<T>): Promise<
|
|
50
|
+
export declare function VectorSearch<T = unknown, TToolIO extends ProviderToolIO = ProviderToolIO>({ store, query, messages, extractQuery, limit, threshold, formatResults, priority, id, role, children, }: VectorSearchProps<T, TToolIO>): Promise<PromptScope<TToolIO>>;
|
|
74
51
|
export {};
|
|
75
52
|
//# sourceMappingURL=vector-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector-search.d.ts","sourceRoot":"","sources":["../../src/dsl/vector-search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EAEZ,kBAAkB,EACnB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACf,MAAM,UAAU,CAAC;AAGlB,iDAAiD;AACjD,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,OAAO,IAAI,CACzC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,KAC7B,MAAM,CAAC;AAsBZ,KAAK,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAEzE,UAAU,iBAAiB,CACzB,CAAC,GAAG,OAAO,EACX,OAAO,SAAS,cAAc,GAAG,cAAc;IAE/C,oCAAoC;IACpC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,iFAAiF;IACjF,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACnC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C;AA4DD;;GAEG;AACH,wBAAsB,YAAY,CAChC,CAAC,GAAG,OAAO,EACX,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,EACA,KAAK,EACL,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,KAAS,EACT,SAAS,EACT,aAAgC,EAChC,QAAY,EACZ,EAAE,EACF,IAAa,EACb,QAAQ,GACT,EAAE,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CA8B/D"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VectorSearch async component for RAG-style retrieval.
|
|
3
|
+
*/
|
|
4
|
+
import { PromptBuilder } from "./builder";
|
|
1
5
|
/**
|
|
2
6
|
* Default formatter that renders results as a numbered list.
|
|
3
7
|
* Returns a placeholder string when no results are found so prompts can degrade gracefully.
|
|
@@ -21,10 +25,10 @@ function queryFromChildren(children) {
|
|
|
21
25
|
}
|
|
22
26
|
let buffer = "";
|
|
23
27
|
for (const child of children) {
|
|
24
|
-
if (
|
|
25
|
-
throw new Error("VectorSearch children must be
|
|
28
|
+
if (child.type !== "text") {
|
|
29
|
+
throw new Error("VectorSearch children must be text parts. Use a formatter to build complex queries.");
|
|
26
30
|
}
|
|
27
|
-
buffer += child;
|
|
31
|
+
buffer += child.text;
|
|
28
32
|
}
|
|
29
33
|
const trimmed = buffer.trim();
|
|
30
34
|
return trimmed === "" ? null : trimmed;
|
|
@@ -55,37 +59,9 @@ function deriveQuery(props) {
|
|
|
55
59
|
return null;
|
|
56
60
|
}
|
|
57
61
|
/**
|
|
58
|
-
* Renders vector search results into
|
|
59
|
-
*
|
|
60
|
-
* The query is resolved at render time. No pre-fetching needed. Query sources, in
|
|
61
|
-
* order of precedence:
|
|
62
|
-
* 1) Children text: `<VectorSearch store={store}>find docs about RAG</VectorSearch>`
|
|
63
|
-
* 2) `query` prop: `<VectorSearch store={store} query="find docs about RAG" />`
|
|
64
|
-
* 3) Messages: `<VectorSearch store={store} messages={messages} />`
|
|
65
|
-
* - Defaults to the last user message, or use `extractQuery` to customize.
|
|
66
|
-
*
|
|
67
|
-
* @example
|
|
68
|
-
* ```tsx
|
|
69
|
-
* <VectorSearch store={store} limit={5}>
|
|
70
|
-
* my query: {topic}
|
|
71
|
-
* </VectorSearch>
|
|
72
|
-
* ```
|
|
73
|
-
*
|
|
74
|
-
* @example Using messages as the query source
|
|
75
|
-
* ```tsx
|
|
76
|
-
* <VectorSearch store={store} messages={messages} />
|
|
77
|
-
* ```
|
|
78
|
-
*
|
|
79
|
-
* @example Custom extractor
|
|
80
|
-
* ```tsx
|
|
81
|
-
* <VectorSearch
|
|
82
|
-
* store={store}
|
|
83
|
-
* messages={messages}
|
|
84
|
-
* extractQuery={(msgs) => msgs.at(-1)?.content}
|
|
85
|
-
* />
|
|
86
|
-
* ```
|
|
62
|
+
* Renders vector search results into a scoped message.
|
|
87
63
|
*/
|
|
88
|
-
export async function VectorSearch({ store, query, messages, extractQuery, limit = 5, threshold, formatResults = defaultFormatter, priority = 0, id, children, }) {
|
|
64
|
+
export async function VectorSearch({ store, query, messages, extractQuery, limit = 5, threshold, formatResults = defaultFormatter, priority = 0, id, role = "user", children, }) {
|
|
89
65
|
const finalQuery = deriveQuery({
|
|
90
66
|
query,
|
|
91
67
|
messages,
|
|
@@ -101,9 +77,11 @@ export async function VectorSearch({ store, query, messages, extractQuery, limit
|
|
|
101
77
|
};
|
|
102
78
|
const results = await store.search(finalQuery, searchOptions);
|
|
103
79
|
const content = formatResults(results);
|
|
80
|
+
// Use the DSL to build the result scope
|
|
81
|
+
const tree = await PromptBuilder.create().message(role, content).build();
|
|
104
82
|
return {
|
|
83
|
+
...tree,
|
|
105
84
|
priority,
|
|
106
|
-
children: [content],
|
|
107
85
|
...(id && { id }),
|
|
108
86
|
};
|
|
109
87
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector-search.js","sourceRoot":"","sources":["../../src/dsl/vector-search.ts"],"names":[],"mappings":"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"}
|
package/dist/eval/index.d.ts
CHANGED
|
@@ -31,8 +31,19 @@ export type { EvalResult, Judge, JudgeConfig, Judgment } from "./judge";
|
|
|
31
31
|
export { createJudge } from "./judge";
|
|
32
32
|
export declare const cria: {
|
|
33
33
|
readonly judge: typeof createJudge;
|
|
34
|
-
readonly prompt:
|
|
34
|
+
readonly prompt: {
|
|
35
|
+
(): import("..").PromptBuilder<unknown>;
|
|
36
|
+
<TProvider extends import("..").ModelProvider<unknown, import("..").ProviderToolIO>>(provider: TProvider): import("..").PromptBuilder<TProvider>;
|
|
37
|
+
};
|
|
35
38
|
readonly c: typeof import("..").c;
|
|
36
|
-
readonly merge: (...builders: import("..").PromptBuilder[]) => import("..").PromptBuilder
|
|
39
|
+
readonly merge: (...builders: import("..").PromptBuilder[]) => import("..").PromptBuilder<unknown>;
|
|
40
|
+
readonly message: <TToolIO extends import("..").ProviderToolIO>(role: import("..").PromptRole, content: import("..").TextInput<TToolIO>) => import("..").PromptMessageNode<TToolIO>;
|
|
41
|
+
readonly scope: <TToolIO extends import("..").ProviderToolIO>(children: import("..").ScopeChildren<TToolIO>, opts?: {
|
|
42
|
+
priority?: number;
|
|
43
|
+
id?: string;
|
|
44
|
+
}) => import("..").PromptScope<TToolIO>;
|
|
45
|
+
readonly user: (content: import("..").TextInput) => import("..").PromptMessageNode<import("..").ProviderToolIO>;
|
|
46
|
+
readonly system: (content: import("..").TextInput) => import("..").PromptMessageNode<import("..").ProviderToolIO>;
|
|
47
|
+
readonly assistant: (content: import("..").TextInput) => import("..").PromptMessageNode<import("..").ProviderToolIO>;
|
|
37
48
|
};
|
|
38
49
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/eval/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eval/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,eAAO,MAAM,IAAI;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eval/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,eAAO,MAAM,IAAI;;;;;;;;;;gBACgZ,CAAC;UAAY,CAAC;;;;;CAD/W,CAAC"}
|
package/dist/eval/judge.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TextInput } from "../dsl";
|
|
2
|
+
import type { ModelProvider, PromptTree, ProviderToolIO } from "../types";
|
|
2
3
|
export declare const DEFAULT_THRESHOLD = 0.8;
|
|
3
4
|
export interface JudgeConfig {
|
|
4
|
-
target: ModelProvider<unknown>;
|
|
5
|
-
evaluator: ModelProvider<unknown>;
|
|
5
|
+
target: ModelProvider<unknown, ProviderToolIO>;
|
|
6
|
+
evaluator: ModelProvider<unknown, ProviderToolIO>;
|
|
6
7
|
threshold?: number;
|
|
7
8
|
}
|
|
8
9
|
export interface EvalResult {
|
|
@@ -12,8 +13,8 @@ export interface EvalResult {
|
|
|
12
13
|
response: string;
|
|
13
14
|
}
|
|
14
15
|
export interface Judgment {
|
|
15
|
-
toPass(criterion:
|
|
16
|
+
toPass(criterion: TextInput): Promise<void>;
|
|
16
17
|
}
|
|
17
|
-
export type Judge = (prompt:
|
|
18
|
+
export type Judge = (prompt: PromptTree) => Judgment;
|
|
18
19
|
export declare function createJudge(config: JudgeConfig): Judge;
|
|
19
20
|
//# sourceMappingURL=judge.d.ts.map
|
package/dist/eval/judge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../src/eval/judge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../src/eval/judge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAIxC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1E,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC/C,SAAS,EAAE,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED,MAAM,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,QAAQ,CAAC;AAmBrD,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CAgDtD"}
|
package/dist/eval/judge.js
CHANGED
|
@@ -1,28 +1,41 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { cria } from "../dsl";
|
|
3
|
+
import { normalizeTextInput } from "../dsl/templating";
|
|
3
4
|
import { render } from "../render";
|
|
4
5
|
export const DEFAULT_THRESHOLD = 0.8;
|
|
5
6
|
const EvalResultSchema = z.object({
|
|
6
7
|
score: z.number().min(0).max(1),
|
|
7
8
|
reasoning: z.string(),
|
|
8
9
|
});
|
|
10
|
+
const formatCriterion = (criterion) => {
|
|
11
|
+
const parts = normalizeTextInput(criterion);
|
|
12
|
+
let text = "";
|
|
13
|
+
for (const part of parts) {
|
|
14
|
+
if (part.type === "tool-call" || part.type === "tool-result") {
|
|
15
|
+
throw new Error("Judge criteria cannot include tool calls or results.");
|
|
16
|
+
}
|
|
17
|
+
text += part.text;
|
|
18
|
+
}
|
|
19
|
+
return text;
|
|
20
|
+
};
|
|
9
21
|
export function createJudge(config) {
|
|
10
22
|
const { target, evaluator, threshold = DEFAULT_THRESHOLD } = config;
|
|
11
23
|
return (prompt) => {
|
|
12
24
|
const evaluate = async (criterion) => {
|
|
13
|
-
const response = await target.completion(await render(prompt, {
|
|
25
|
+
const response = await target.completion(await render(prompt, { provider: target }));
|
|
26
|
+
const criteriaText = formatCriterion(criterion);
|
|
14
27
|
const evalPrompt = await cria
|
|
15
28
|
.prompt()
|
|
16
|
-
.system(
|
|
29
|
+
.system(`You are an evaluator.
|
|
17
30
|
Score the response from 0 to 1 based on ALL criteria below.
|
|
18
31
|
|
|
19
|
-
Criteria: ${
|
|
32
|
+
Criteria: ${criteriaText}
|
|
20
33
|
|
|
21
34
|
Return JSON: { "score": <0-1>, "reasoning": "<brief explanation>" }
|
|
22
35
|
`)
|
|
23
36
|
.user(response)
|
|
24
37
|
.build();
|
|
25
|
-
const result = await evaluator.object(await render(evalPrompt, {
|
|
38
|
+
const result = await evaluator.object(await render(evalPrompt, { provider: evaluator }), EvalResultSchema);
|
|
26
39
|
return {
|
|
27
40
|
response,
|
|
28
41
|
score: result.score,
|
package/dist/eval/judge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"judge.js","sourceRoot":"","sources":["../../src/eval/judge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"judge.js","sourceRoot":"","sources":["../../src/eval/judge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAqBrC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,SAAoB,EAAU,EAAE;IACvD,MAAM,KAAK,GAAG,kBAAkB,CAAiB,SAAS,CAAC,CAAC;IAC5D,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,iBAAiB,EAAE,GAAG,MAAM,CAAC;IAEpE,OAAO,CAAC,MAAkB,EAAY,EAAE;QACtC,MAAM,QAAQ,GAAG,KAAK,EAAE,SAAoB,EAAuB,EAAE;YACnE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CACtC,MAAM,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAC3C,CAAC;YACF,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,MAAM,IAAI;iBAC1B,MAAM,EAAE;iBACR,MAAM,CAAC;;;sBAGM,YAAY;;;SAGzB,CAAC;iBACD,IAAI,CAAC,QAAQ,CAAC;iBACd,KAAK,EAAE,CAAC;YAEX,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CACnC,MAAM,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EACjD,gBAAgB,CACjB,CAAC;YAEF,OAAO;gBACL,QAAQ;gBACR,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;aAClC,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO;YACL,KAAK,CAAC,MAAM,CAAC,SAAS;gBACpB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CACb,wCAAwC;wBACtC,UAAU,MAAM,CAAC,KAAK,gBAAgB,SAAS,KAAK;wBACpD,cAAc,MAAM,CAAC,SAAS,MAAM;wBACpC,cAAc,MAAM,CAAC,QAAQ,EAAE,CAClC,CAAC;gBACJ,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,26 +6,22 @@
|
|
|
6
6
|
* import { cria } from "@fastpaca/cria";
|
|
7
7
|
*
|
|
8
8
|
* const result = await cria
|
|
9
|
-
* .prompt()
|
|
9
|
+
* .prompt(provider)
|
|
10
10
|
* .system("You are a helpful assistant.")
|
|
11
11
|
* .truncate(conversationHistory, { budget: 20000, from: "start", priority: 2 })
|
|
12
12
|
* .omit(optionalContext, { priority: 3 })
|
|
13
|
-
* .render({
|
|
13
|
+
* .render({ budget: 128000 });
|
|
14
14
|
* ```
|
|
15
15
|
*
|
|
16
16
|
* @packageDocumentation
|
|
17
17
|
*/
|
|
18
|
-
export type { ResultFormatter, StoredSummary, Summarizer, SummarizerContext, } from "./
|
|
19
|
-
export { CodeBlock, Examples, Last, Message, Omit, Reasoning, Region, Separator, Summary, ToolCall, ToolResult, Truncate, VectorSearch, } from "./components";
|
|
20
|
-
export type { BuilderChild, Prompt, ScopeContent, TextInput } from "./dsl";
|
|
18
|
+
export type { BuilderChild, Prompt, ResultFormatter, ScopeContent, StoredSummary, Summarizer, SummarizerContext, TextInput, } from "./dsl";
|
|
21
19
|
export { BuilderBase, c, cria, MessageBuilder, merge, PromptBuilder, prompt, } from "./dsl";
|
|
22
20
|
export { createOtelRenderHooks } from "./instrumentation/otel";
|
|
23
21
|
export type { KVMemory, MemoryEntry, VectorMemory, VectorSearchOptions, VectorSearchResult, } from "./memory";
|
|
24
22
|
export { InMemoryStore } from "./memory";
|
|
25
23
|
export type { FitCompleteEvent, FitErrorEvent, FitIterationEvent, FitStartEvent, RenderHooks, RenderOptions, StrategyAppliedEvent, } from "./render";
|
|
26
24
|
export { render } from "./render";
|
|
27
|
-
export {
|
|
28
|
-
export {
|
|
29
|
-
export type { CriaContext, JsonValue, MaybePromise, ModelProvider, PromptChild, PromptChildren, PromptElement, PromptKind, PromptNodeKind, PromptRenderer, PromptRole, Strategy, StrategyInput, StrategyResult, Tokenizer, } from "./types";
|
|
30
|
-
export { FitError, JsonValueSchema, PromptChildrenSchema, PromptChildSchema, PromptElementSchema, PromptKindSchema, PromptRoleSchema, } from "./types";
|
|
25
|
+
export type { CriaContext, MaybePromise, MessageChildren, PromptLayout, PromptMessage, PromptMessageNode, PromptNode, PromptPart, PromptRole, PromptScope, PromptTree, ProviderToolIO, ReasoningPart, ScopeChildren, Strategy, StrategyInput, StrategyResult, TextPart, ToolCallPart, ToolIOForProvider, ToolResultPart, } from "./types";
|
|
26
|
+
export { FitError, ModelProvider, PromptRenderer } from "./types";
|
|
31
27
|
//# sourceMappingURL=index.d.ts.map
|