@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.
Files changed (116) hide show
  1. package/README.md +25 -22
  2. package/dist/dsl/builder.d.ts +243 -0
  3. package/dist/dsl/builder.d.ts.map +1 -0
  4. package/dist/dsl/builder.js +458 -0
  5. package/dist/dsl/builder.js.map +1 -0
  6. package/dist/dsl/index.d.ts +71 -0
  7. package/dist/dsl/index.d.ts.map +1 -0
  8. package/dist/dsl/index.js +82 -0
  9. package/dist/dsl/index.js.map +1 -0
  10. package/dist/dsl/strategies.d.ts +29 -0
  11. package/dist/dsl/strategies.d.ts.map +1 -0
  12. package/dist/dsl/strategies.js +62 -0
  13. package/dist/dsl/strategies.js.map +1 -0
  14. package/dist/dsl/summary.d.ts +50 -0
  15. package/dist/dsl/summary.d.ts.map +1 -0
  16. package/dist/dsl/summary.js +56 -0
  17. package/dist/dsl/summary.js.map +1 -0
  18. package/dist/dsl/templating.d.ts +31 -0
  19. package/dist/dsl/templating.d.ts.map +1 -0
  20. package/dist/dsl/templating.js +83 -0
  21. package/dist/dsl/templating.js.map +1 -0
  22. package/dist/{components → dsl}/vector-search.d.ts +11 -34
  23. package/dist/dsl/vector-search.d.ts.map +1 -0
  24. package/dist/{components → dsl}/vector-search.js +12 -34
  25. package/dist/dsl/vector-search.js.map +1 -0
  26. package/dist/eval/index.d.ts +13 -2
  27. package/dist/eval/index.d.ts.map +1 -1
  28. package/dist/eval/judge.d.ts +6 -5
  29. package/dist/eval/judge.d.ts.map +1 -1
  30. package/dist/eval/judge.js +18 -5
  31. package/dist/eval/judge.js.map +1 -1
  32. package/dist/index.d.ts +5 -9
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +3 -6
  35. package/dist/index.js.map +1 -1
  36. package/dist/instrumentation/otel.js +5 -14
  37. package/dist/instrumentation/otel.js.map +1 -1
  38. package/dist/providers/ai-sdk.d.ts +29 -0
  39. package/dist/providers/ai-sdk.d.ts.map +1 -0
  40. package/dist/providers/ai-sdk.js +104 -0
  41. package/dist/providers/ai-sdk.js.map +1 -0
  42. package/dist/providers/anthropic.d.ts +30 -0
  43. package/dist/providers/anthropic.d.ts.map +1 -0
  44. package/dist/providers/anthropic.js +160 -0
  45. package/dist/providers/anthropic.js.map +1 -0
  46. package/dist/providers/openai.d.ts +37 -0
  47. package/dist/providers/openai.d.ts.map +1 -0
  48. package/dist/providers/openai.js +164 -0
  49. package/dist/providers/openai.js.map +1 -0
  50. package/dist/render.d.ts +24 -22
  51. package/dist/render.d.ts.map +1 -1
  52. package/dist/render.js +191 -63
  53. package/dist/render.js.map +1 -1
  54. package/dist/testing/plaintext.d.ts +28 -0
  55. package/dist/testing/plaintext.d.ts.map +1 -0
  56. package/dist/testing/plaintext.js +71 -0
  57. package/dist/testing/plaintext.js.map +1 -0
  58. package/dist/types.d.ts +204 -163
  59. package/dist/types.d.ts.map +1 -1
  60. package/dist/types.js +37 -100
  61. package/dist/types.js.map +1 -1
  62. package/package.json +7 -33
  63. package/dist/components/index.d.ts +0 -147
  64. package/dist/components/index.d.ts.map +0 -1
  65. package/dist/components/index.js +0 -181
  66. package/dist/components/index.js.map +0 -1
  67. package/dist/components/summary.d.ts +0 -89
  68. package/dist/components/summary.d.ts.map +0 -1
  69. package/dist/components/summary.js +0 -118
  70. package/dist/components/summary.js.map +0 -1
  71. package/dist/components/vector-search.d.ts.map +0 -1
  72. package/dist/components/vector-search.js.map +0 -1
  73. package/dist/dsl.d.ts +0 -233
  74. package/dist/dsl.d.ts.map +0 -1
  75. package/dist/dsl.js +0 -428
  76. package/dist/dsl.js.map +0 -1
  77. package/dist/integrations/ai-sdk.d.ts +0 -22
  78. package/dist/integrations/ai-sdk.d.ts.map +0 -1
  79. package/dist/integrations/ai-sdk.js +0 -172
  80. package/dist/integrations/ai-sdk.js.map +0 -1
  81. package/dist/integrations/anthropic.d.ts +0 -50
  82. package/dist/integrations/anthropic.d.ts.map +0 -1
  83. package/dist/integrations/anthropic.js +0 -220
  84. package/dist/integrations/anthropic.js.map +0 -1
  85. package/dist/integrations/openai.d.ts +0 -48
  86. package/dist/integrations/openai.d.ts.map +0 -1
  87. package/dist/integrations/openai.js +0 -265
  88. package/dist/integrations/openai.js.map +0 -1
  89. package/dist/jsx/index.d.ts +0 -6
  90. package/dist/jsx/index.d.ts.map +0 -1
  91. package/dist/jsx/index.js +0 -7
  92. package/dist/jsx/index.js.map +0 -1
  93. package/dist/jsx/jsx-dev-runtime.d.ts +0 -2
  94. package/dist/jsx/jsx-dev-runtime.d.ts.map +0 -1
  95. package/dist/jsx/jsx-dev-runtime.js +0 -3
  96. package/dist/jsx/jsx-dev-runtime.js.map +0 -1
  97. package/dist/jsx/jsx-runtime.d.ts +0 -40
  98. package/dist/jsx/jsx-runtime.d.ts.map +0 -1
  99. package/dist/jsx/jsx-runtime.js +0 -40
  100. package/dist/jsx/jsx-runtime.js.map +0 -1
  101. package/dist/renderers/markdown.d.ts +0 -3
  102. package/dist/renderers/markdown.d.ts.map +0 -1
  103. package/dist/renderers/markdown.js +0 -43
  104. package/dist/renderers/markdown.js.map +0 -1
  105. package/dist/renderers/shared.d.ts +0 -82
  106. package/dist/renderers/shared.d.ts.map +0 -1
  107. package/dist/renderers/shared.js +0 -156
  108. package/dist/renderers/shared.js.map +0 -1
  109. package/dist/snapshot.d.ts +0 -47
  110. package/dist/snapshot.d.ts.map +0 -1
  111. package/dist/snapshot.js +0 -144
  112. package/dist/snapshot.js.map +0 -1
  113. package/dist/tokenizers.d.ts +0 -14
  114. package/dist/tokenizers.d.ts.map +0 -1
  115. package/dist/tokenizers.js +0 -45
  116. package/dist/tokenizers.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
package/dist/render.d.ts CHANGED
@@ -1,13 +1,18 @@
1
- import { FitError, type MaybePromise, type PromptElement, type PromptRenderer, type Tokenizer } from "./types";
2
- export interface RenderOptions {
3
- tokenizer?: Tokenizer;
4
- /** Token budget. Omit for unlimited. */
1
+ import { FitError, type MaybePromise, type ModelProvider, type PromptScope, type PromptTree, type ProviderToolIO } from "./types";
2
+ /**
3
+ * Render pipeline:
4
+ * - PromptTree carries provider-bound tool IO types.
5
+ * - layoutPrompt flattens the tree into a PromptLayout and enforces invariants.
6
+ * - The provider's renderer translates that layout into the provider payload.
7
+ * - Token counting is provider-owned and happens on rendered output.
8
+ */
9
+ export interface RenderOptions<TRendered = unknown, TToolIO extends ProviderToolIO = ProviderToolIO> {
10
+ provider: ModelProvider<TRendered, TToolIO>;
5
11
  budget?: number;
6
- renderer?: PromptRenderer<unknown>;
7
- hooks?: RenderHooks;
12
+ hooks?: RenderHooks<TToolIO>;
8
13
  }
9
- export interface FitStartEvent {
10
- element: PromptElement;
14
+ export interface FitStartEvent<TToolIO extends ProviderToolIO = ProviderToolIO> {
15
+ element: PromptTree<TToolIO>;
11
16
  budget: number;
12
17
  totalTokens: number;
13
18
  }
@@ -16,14 +21,14 @@ export interface FitIterationEvent {
16
21
  priority: number;
17
22
  totalTokens: number;
18
23
  }
19
- export interface StrategyAppliedEvent {
20
- target: PromptElement;
21
- result: PromptElement | null;
24
+ export interface StrategyAppliedEvent<TToolIO extends ProviderToolIO = ProviderToolIO> {
25
+ target: PromptScope<TToolIO>;
26
+ result: PromptScope<TToolIO> | null;
22
27
  priority: number;
23
28
  iteration: number;
24
29
  }
25
- export interface FitCompleteEvent {
26
- result: PromptElement | null;
30
+ export interface FitCompleteEvent<TToolIO extends ProviderToolIO = ProviderToolIO> {
31
+ result: PromptScope<TToolIO> | null;
27
32
  iterations: number;
28
33
  totalTokens: number;
29
34
  }
@@ -33,16 +38,13 @@ export interface FitErrorEvent {
33
38
  priority: number;
34
39
  totalTokens: number;
35
40
  }
36
- export interface RenderHooks {
37
- onFitStart?: (event: FitStartEvent) => MaybePromise<void>;
41
+ export interface RenderHooks<TToolIO extends ProviderToolIO = ProviderToolIO> {
42
+ onFitStart?: (event: FitStartEvent<TToolIO>) => MaybePromise<void>;
38
43
  onFitIteration?: (event: FitIterationEvent) => MaybePromise<void>;
39
- onStrategyApplied?: (event: StrategyAppliedEvent) => MaybePromise<void>;
40
- onFitComplete?: (event: FitCompleteEvent) => MaybePromise<void>;
44
+ onStrategyApplied?: (event: StrategyAppliedEvent<TToolIO>) => MaybePromise<void>;
45
+ onFitComplete?: (event: FitCompleteEvent<TToolIO>) => MaybePromise<void>;
41
46
  onFitError?: (event: FitErrorEvent) => MaybePromise<void>;
42
47
  }
43
- type RenderOutput<TOptions extends RenderOptions> = TOptions extends {
44
- renderer: PromptRenderer<infer TOutput>;
45
- } ? TOutput : string;
46
- export declare function render<TOptions extends RenderOptions>(element: MaybePromise<PromptElement>, { tokenizer, budget, renderer, hooks }: TOptions): Promise<RenderOutput<TOptions>>;
47
- export {};
48
+ export declare function render<TRendered, TToolIO extends ProviderToolIO>(element: MaybePromise<PromptTree<TToolIO>>, options: RenderOptions<TRendered, TToolIO>): Promise<TRendered>;
49
+ export declare function assertValidMessageScope<TToolIO extends ProviderToolIO = ProviderToolIO>(root: PromptTree<TToolIO>): void;
48
50
  //# sourceMappingURL=render.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,QAAQ,EACR,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,SAAS,EACf,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IACxE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IAChE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED,KAAK,YAAY,CAAC,QAAQ,SAAS,aAAa,IAAI,QAAQ,SAAS;IACnE,QAAQ,EAAE,cAAc,CAAC,MAAM,OAAO,CAAC,CAAC;CACzC,GACG,OAAO,GACP,MAAM,CAAC;AAEX,wBAAsB,MAAM,CAAC,QAAQ,SAAS,aAAa,EACzD,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,EACpC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,QAAQ,GAC/C,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CA4CjC"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,EACR,KAAK,YAAY,EACjB,KAAK,aAAa,EAKlB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EAIpB,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,MAAM,WAAW,aAAa,CAC5B,SAAS,GAAG,OAAO,EACnB,OAAO,SAAS,cAAc,GAAG,cAAc;IAG/C,QAAQ,EAAE,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAI5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa,CAC5B,OAAO,SAAS,cAAc,GAAG,cAAc;IAE/C,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB,CACnC,OAAO,SAAS,cAAc,GAAG,cAAc;IAE/C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB,CAC/B,OAAO,SAAS,cAAc,GAAG,cAAc;IAE/C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc;IAC1E,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IACnE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,iBAAiB,CAAC,EAAE,CAClB,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,KACjC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IACzE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED,wBAAsB,MAAM,CAAC,SAAS,EAAE,OAAO,SAAS,cAAc,EACpE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAC1C,OAAO,EAAE,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,GACzC,OAAO,CAAC,SAAS,CAAC,CA2BpB;AAsBD,wBAAgB,uBAAuB,CACrC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,CAGjC"}
package/dist/render.js CHANGED
@@ -1,30 +1,132 @@
1
- import { markdownRenderer } from "./renderers/markdown";
2
1
  import { FitError, } from "./types";
3
- export async function render(element, { tokenizer, budget, renderer, hooks }) {
2
+ export async function render(element, options) {
3
+ // Data flow: PromptTree -> PromptLayout (flatten) -> provider.renderer -> provider.countTokens.
4
+ // The fit loop just re-renders and re-counts until we land under budget.
4
5
  /*
5
- * Builders and the optional JSX runtime both return a PromptElement (or Promise).
6
- * render() awaits the root value and does not walk/normalize children here.
7
- * Non-Promise thenables are intentionally unsupported.
6
+ * Rendering is budget-agnostic; fitting owns the budget and simply calls
7
+ * rendering to get total tokens. Keep that separation explicit here.
8
8
  */
9
9
  const resolvedElement = element instanceof Promise ? await element : element;
10
- const resolvedRenderer = (renderer ?? markdownRenderer);
11
- // Skip fitting if no budget specified (unlimited)
12
- if (budget === undefined || budget === null) {
13
- return (await resolvedRenderer.render(resolvedElement));
10
+ const provider = resolveProvider(resolvedElement, options.provider);
11
+ if (options.budget === undefined || options.budget === null) {
12
+ return renderOutput(resolvedElement, provider);
14
13
  }
15
- if (budget <= 0) {
16
- return resolvedRenderer.empty();
14
+ const fitted = await fitToBudget(resolvedElement, options.budget, provider, options.hooks, { provider });
15
+ if (!fitted) {
16
+ return renderOutput({ kind: "scope", priority: 0, children: [] }, provider);
17
+ }
18
+ return renderOutput(fitted, provider);
19
+ }
20
+ function renderOutput(root, provider) {
21
+ // Prompt tree composition is resolved before rendering; renderers only see layout.
22
+ const layout = layoutPrompt(root);
23
+ return provider.renderer.render(layout);
24
+ }
25
+ function renderAndCount(root, provider) {
26
+ // Tree -> layout -> renderer output, then provider-owned token counting.
27
+ const layout = layoutPrompt(root);
28
+ const output = provider.renderer.render(layout);
29
+ const tokens = provider.countTokens(output);
30
+ return { output, tokens };
31
+ }
32
+ export function assertValidMessageScope(root) {
33
+ // Enforce layout invariants by reusing the layout pass.
34
+ layoutPrompt(root);
35
+ }
36
+ function layoutPrompt(root) {
37
+ // Flatten tree to a list of opinionated messages.
38
+ // Traversal order is depth-first, left-to-right so layout is deterministic.
39
+ // This is the only place we validate message/part structure.
40
+ const messages = [];
41
+ const walk = (node) => {
42
+ if (node.kind === "message") {
43
+ messages.push(buildMessage(node));
44
+ return;
45
+ }
46
+ for (const child of node.children) {
47
+ walk(child);
48
+ }
49
+ };
50
+ walk(root);
51
+ return messages;
52
+ }
53
+ function buildMessage(node) {
54
+ if (node.role === "tool") {
55
+ return buildToolMessage(node.children);
17
56
  }
18
- const tokenizerResolution = resolveTokenizer(resolvedElement, tokenizer);
19
- if (!tokenizerResolution) {
20
- throw new Error("Token budgeting requires a tokenizer. Provide one to render(), or wrap your prompt in a provider that supplies a tokenizer (e.g. <OpenAIProvider>, <AnthropicProvider>, or <AISDKProvider>). See docs/how-to/fit-and-compaction.md for details.");
57
+ if (node.role === "assistant") {
58
+ return buildAssistantMessage(node.children);
21
59
  }
22
- const tokenizerFn = tokenizerResolution.tokenizer;
23
- const fitted = await fitToBudget(resolvedElement, budget, tokenizerFn, resolvedRenderer.tokenString, hooks);
24
- if (!fitted) {
25
- return resolvedRenderer.empty();
60
+ return buildTextMessage(node.role, node.children);
61
+ }
62
+ function buildToolMessage(children) {
63
+ // Tool messages are a single tool result by construction.
64
+ if (children.length !== 1 || children[0]?.type !== "tool-result") {
65
+ throw new Error("Tool messages must contain exactly one tool result.");
66
+ }
67
+ const result = children[0];
68
+ return {
69
+ role: "tool",
70
+ toolCallId: result.toolCallId,
71
+ toolName: result.toolName,
72
+ output: result.output,
73
+ };
74
+ }
75
+ function buildAssistantMessage(children) {
76
+ const { text, reasoning, toolCalls } = collectAssistantParts(children);
77
+ const message = { role: "assistant", text };
78
+ if (reasoning.length > 0) {
79
+ message.reasoning = reasoning;
80
+ }
81
+ if (toolCalls.length > 0) {
82
+ message.toolCalls = toolCalls;
26
83
  }
27
- return (await resolvedRenderer.render(fitted));
84
+ return message;
85
+ }
86
+ function collectAssistantParts(children) {
87
+ let text = "";
88
+ let reasoning = "";
89
+ const toolCalls = [];
90
+ for (const part of children) {
91
+ if (part.type === "text") {
92
+ text += part.text;
93
+ continue;
94
+ }
95
+ if (part.type === "reasoning") {
96
+ reasoning += part.text;
97
+ continue;
98
+ }
99
+ if (part.type === "tool-call") {
100
+ toolCalls.push(part);
101
+ continue;
102
+ }
103
+ if (part.type === "tool-result") {
104
+ // Tool results must live in tool messages, not assistant messages.
105
+ throw new Error("Tool results must be inside a tool message.");
106
+ }
107
+ }
108
+ return { text, reasoning, toolCalls };
109
+ }
110
+ function buildTextMessage(role, children) {
111
+ // System/user messages are text-only; other parts are rejected here.
112
+ const text = collectTextParts(children);
113
+ if (role === "system") {
114
+ return { role: "system", text };
115
+ }
116
+ if (role === "user") {
117
+ return { role: "user", text };
118
+ }
119
+ throw new Error(`Unsupported message role: ${role}`);
120
+ }
121
+ function collectTextParts(children) {
122
+ let text = "";
123
+ for (const part of children) {
124
+ if (part.type !== "text") {
125
+ throw new Error("Only assistant messages may contain reasoning or tool calls.");
126
+ }
127
+ text += part.text;
128
+ }
129
+ return text;
28
130
  }
29
131
  async function safeInvoke(handler, event) {
30
132
  if (!handler) {
@@ -32,46 +134,59 @@ async function safeInvoke(handler, event) {
32
134
  }
33
135
  await handler(event);
34
136
  }
35
- function resolveTokenizer(element, override) {
137
+ function resolveProvider(element, override) {
138
+ // Provider may come from the tree (provider scopes) or from render options.
139
+ // Either way, it must be a single consistent provider for the entire tree.
140
+ const providers = collectProviders(element);
36
141
  if (override) {
37
- return { tokenizer: override, source: "options" };
142
+ if (providers.length > 0 && !providers.includes(override)) {
143
+ throw new Error("Render provider does not match provider in the tree.");
144
+ }
145
+ return override;
38
146
  }
39
- const providerResolution = findProviderTokenizer(element);
40
- if (providerResolution) {
41
- return { ...providerResolution, source: "provider" };
147
+ if (providers.length === 0) {
148
+ throw new Error("Rendering requires a provider with a renderer.");
42
149
  }
43
- return null;
44
- }
45
- function findProviderTokenizer(element) {
46
- const providerTokenizer = element.context?.provider?.tokenizer;
47
- if (providerTokenizer) {
48
- return {
49
- tokenizer: providerTokenizer,
50
- providerName: element.context?.provider?.name,
51
- };
150
+ if (providers.length > 1) {
151
+ throw new Error("Multiple providers found in one prompt tree.");
52
152
  }
53
- for (const child of element.children) {
54
- if (typeof child === "string") {
55
- continue;
153
+ const provider = providers[0];
154
+ if (!provider) {
155
+ throw new Error("Rendering requires a provider with a renderer.");
156
+ }
157
+ return provider;
158
+ }
159
+ function collectProviders(element) {
160
+ // Walk scopes and collect unique providers from context.
161
+ const found = [];
162
+ const visit = (node) => {
163
+ if (node.kind === "message") {
164
+ return;
56
165
  }
57
- const found = findProviderTokenizer(child);
58
- if (found) {
59
- return found;
166
+ const provider = node.context?.provider;
167
+ if (provider && !found.includes(provider)) {
168
+ found.push(provider);
60
169
  }
61
- }
62
- return null;
170
+ for (const child of node.children) {
171
+ visit(child);
172
+ }
173
+ };
174
+ visit(element);
175
+ return found;
63
176
  }
64
- async function fitToBudget(element, budget, tokenizer, tokenString, hooks) {
177
+ async function fitToBudget(element, budget, provider, hooks, baseContext) {
178
+ // Fit loop is render-driven: render+count, then apply the lowest-importance
179
+ // strategy, re-render, and repeat until we fit or cannot reduce further.
65
180
  let current = element;
66
181
  let iteration = 0;
67
- let totalTokens = tokenizer(tokenString(element));
182
+ let totalTokens = renderAndCount(element, provider).tokens;
68
183
  await safeInvoke(hooks?.onFitStart, {
69
184
  element,
70
185
  budget,
71
186
  totalTokens,
72
187
  });
73
188
  while (current && totalTokens > budget) {
74
- iteration++;
189
+ iteration += 1;
75
190
  const lowestImportancePriority = findLowestImportancePriority(current);
76
191
  if (lowestImportancePriority === null) {
77
192
  const error = new FitError({
@@ -95,16 +210,31 @@ async function fitToBudget(element, budget, tokenizer, tokenString, hooks) {
95
210
  totalTokens,
96
211
  });
97
212
  const baseCtx = {
98
- budget,
99
- tokenizer,
100
- tokenString,
101
213
  totalTokens,
102
214
  iteration,
103
215
  };
104
- const applied = await applyStrategiesAtPriority(current, lowestImportancePriority, baseCtx, {}, // Start with empty context at the root
105
- hooks, iteration);
216
+ const applied = await applyStrategiesAtPriority(current, lowestImportancePriority, baseCtx, baseContext, hooks, iteration);
217
+ if (!applied.applied) {
218
+ const error = new FitError({
219
+ overBudgetBy: totalTokens - budget,
220
+ priority: lowestImportancePriority,
221
+ iteration,
222
+ budget,
223
+ totalTokens,
224
+ });
225
+ await safeInvoke(hooks?.onFitError, {
226
+ error,
227
+ iteration,
228
+ priority: lowestImportancePriority,
229
+ totalTokens,
230
+ });
231
+ throw error;
232
+ }
233
+ if (applied.element && applied.element.kind !== "scope") {
234
+ throw new Error("Root scope was replaced by a message node.");
235
+ }
106
236
  current = applied.element;
107
- const nextTokens = current ? tokenizer(tokenString(current)) : 0;
237
+ const nextTokens = current ? renderAndCount(current, provider).tokens : 0;
108
238
  if (nextTokens >= totalTokens) {
109
239
  const error = new FitError({
110
240
  overBudgetBy: nextTokens - budget,
@@ -130,12 +260,12 @@ async function fitToBudget(element, budget, tokenizer, tokenString, hooks) {
130
260
  });
131
261
  return current;
132
262
  }
133
- function findLowestImportancePriority(element) {
134
- let maxPriority = element.strategy ? element.priority : null;
135
- for (const child of element.children) {
136
- if (typeof child === "string") {
137
- continue;
138
- }
263
+ function findLowestImportancePriority(node) {
264
+ if (node.kind === "message") {
265
+ return null;
266
+ }
267
+ let maxPriority = node.strategy ? node.priority : null;
268
+ for (const child of node.children) {
139
269
  const childMax = findLowestImportancePriority(child);
140
270
  maxPriority = maxNullable(maxPriority, childMax);
141
271
  }
@@ -151,19 +281,17 @@ function maxNullable(a, b) {
151
281
  return Math.max(a, b);
152
282
  }
153
283
  async function applyStrategiesAtPriority(element, priority, baseCtx, inheritedContext, hooks, iteration) {
154
- // Merge this element's context with inherited context
155
- // Element context overrides inherited context
284
+ if (element.kind === "message") {
285
+ return { element, applied: false };
286
+ }
287
+ // Bottom-up: rewrite children first so nested strategies get first crack.
288
+ // Element context overrides inherited context.
156
289
  const mergedContext = element.context
157
290
  ? { ...inheritedContext, ...element.context }
158
291
  : inheritedContext;
159
292
  let childrenChanged = false;
160
293
  const nextChildren = [];
161
294
  for (const child of element.children) {
162
- if (typeof child === "string") {
163
- nextChildren.push(child);
164
- continue;
165
- }
166
- // Pass merged context to children
167
295
  const applied = await applyStrategiesAtPriority(child, priority, baseCtx, mergedContext, hooks, iteration);
168
296
  if (applied.applied) {
169
297
  childrenChanged = true;
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAEL,QAAQ,GAMT,MAAM,SAAS,CAAC;AAwDjB,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAAoC,EACpC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAY;IAEhD;;;;OAIG;IACH,MAAM,eAAe,GAAG,OAAO,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAE7E,MAAM,gBAAgB,GAAG,CAAC,QAAQ,IAAI,gBAAgB,CAErD,CAAC;IAEF,kDAAkD;IAClD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,gBAAgB,CAAC,MAAM,CACnC,eAAe,CAChB,CAA2B,CAAC;IAC/B,CAAC;IAED,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAChB,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACzE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,iPAAiP,CAClP,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,SAAS,CAAC;IAElD,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,eAAe,EACf,MAAM,EACN,WAAW,EACX,gBAAgB,CAAC,WAAW,EAC5B,KAAK,CACN,CAAC;IACF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,MAAM,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAA2B,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,OAAuD,EACvD,KAAQ;IAER,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAQD,SAAS,gBAAgB,CACvB,OAAsB,EACtB,QAAoB;IAEpB,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,EAAE,GAAG,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAsB;IAEtB,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC/D,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO;YACL,SAAS,EAAE,iBAAiB;YAC5B,YAAY,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI;SAC9C,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,OAAsB,EACtB,MAAc,EACd,SAAoB,EACpB,WAA+C,EAC/C,KAA8B;IAE9B,IAAI,OAAO,GAAyB,OAAO,CAAC;IAC5C,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAElD,MAAM,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE;QAClC,OAAO;QACP,MAAM;QACN,WAAW;KACZ,CAAC,CAAC;IAEH,OAAO,OAAO,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;QACvC,SAAS,EAAE,CAAC;QAEZ,MAAM,wBAAwB,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,wBAAwB,KAAK,IAAI,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC;gBACzB,YAAY,EAAE,WAAW,GAAG,MAAM;gBAClC,QAAQ,EAAE,CAAC,CAAC;gBACZ,SAAS;gBACT,MAAM;gBACN,WAAW;aACZ,CAAC,CAAC;YACH,MAAM,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE;gBAClC,KAAK;gBACL,SAAS;gBACT,QAAQ,EAAE,CAAC,CAAC;gBACZ,WAAW;aACZ,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE;YACtC,SAAS;YACT,QAAQ,EAAE,wBAAwB;YAClC,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG;YACd,MAAM;YACN,SAAS;YACT,WAAW;YACX,WAAW;YACX,SAAS;SACV,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAC7C,OAAO,EACP,wBAAwB,EACxB,OAAO,EACP,EAAE,EAAE,uCAAuC;QAC3C,KAAK,EACL,SAAS,CACV,CAAC;QACF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE1B,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC;gBACzB,YAAY,EAAE,UAAU,GAAG,MAAM;gBACjC,QAAQ,EAAE,wBAAwB;gBAClC,SAAS;gBACT,MAAM;gBACN,WAAW,EAAE,UAAU;aACxB,CAAC,CAAC;YACH,MAAM,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE;gBAClC,KAAK;gBACL,SAAS;gBACT,QAAQ,EAAE,wBAAwB;gBAClC,WAAW,EAAE,UAAU;aACxB,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;QAED,WAAW,GAAG,UAAU,CAAC;IAC3B,CAAC;IAED,MAAM,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE;QACrC,MAAM,EAAE,OAAO;QACf,UAAU,EAAE,SAAS;QACrB,WAAW;KACZ,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,4BAA4B,CAAC,OAAsB;IAC1D,IAAI,WAAW,GAAkB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5E,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;QACrD,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,WAAW,CAAC,CAAgB,EAAE,CAAgB;IACrD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC;AAID,KAAK,UAAU,yBAAyB,CACtC,OAAsB,EACtB,QAAgB,EAChB,OAAoB,EACpB,gBAA6B,EAC7B,KAA8B,EAC9B,SAAiB;IAEjB,sDAAsD;IACtD,8CAA8C;IAC9C,MAAM,aAAa,GAAgB,OAAO,CAAC,OAAO;QAChD,CAAC,CAAC,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;QAC7C,CAAC,CAAC,gBAAgB,CAAC;IAErB,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,MAAM,YAAY,GAA4B,EAAE,CAAC;IAEjD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,kCAAkC;QAClC,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAC7C,KAAK,EACL,QAAQ,EACR,OAAO,EACP,aAAa,EACb,KAAK,EACL,SAAS,CACV,CAAC;QACF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,eAAe;QACjC,CAAC,CAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAoB;QAC3D,CAAC,CAAC,OAAO,CAAC;IAEZ,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC;YAC7C,GAAG,OAAO;YACV,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;QACH,MAAM,UAAU,CAAC,KAAK,EAAE,iBAAiB,EAAE;YACzC,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,WAAW;YACnB,QAAQ;YACR,SAAS;SACV,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { z } from "zod";
2
+ import type { PromptLayout } from "../types";
3
+ import { ModelProvider, PromptRenderer } from "../types";
4
+ export interface PlainTextRendererOptions {
5
+ joinMessagesWith?: string;
6
+ includeRolePrefix?: boolean;
7
+ }
8
+ interface PlainTextToolIO {
9
+ callInput: string;
10
+ resultOutput: string;
11
+ }
12
+ export declare class PlainTextRenderer extends PromptRenderer<string, PlainTextToolIO> {
13
+ private readonly joinMessagesWith;
14
+ private readonly includeRolePrefix;
15
+ constructor(options?: PlainTextRendererOptions);
16
+ render(layout: PromptLayout<PlainTextToolIO>): string;
17
+ }
18
+ export declare class PlainTextProvider extends ModelProvider<string, PlainTextToolIO> {
19
+ readonly renderer: PromptRenderer<string, PlainTextToolIO>;
20
+ constructor(renderer: PromptRenderer<string, PlainTextToolIO>);
21
+ countTokens(rendered: string): number;
22
+ completion(rendered: string): string;
23
+ object<T>(rendered: string, schema: z.ZodType<T>): T;
24
+ }
25
+ export declare function createPlainTextRenderer(options?: PlainTextRendererOptions): PromptRenderer<string, PlainTextToolIO>;
26
+ export declare function createTestProvider(options?: PlainTextRendererOptions): ModelProvider<string, PlainTextToolIO>;
27
+ export {};
28
+ //# sourceMappingURL=plaintext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plaintext.d.ts","sourceRoot":"","sources":["../../src/testing/plaintext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAKzD,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,iBAAkB,SAAQ,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC;IAC5E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;gBAEhC,OAAO,GAAE,wBAA6B;IAMzC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,eAAe,CAAC,GAAG,MAAM;CAO/D;AA6CD,qBAAa,iBAAkB,SAAQ,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC;IAC3E,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;gBAE/C,QAAQ,EAAE,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC;IAK7D,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIrC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIpC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;CAGrD;AAED,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,wBAA6B,GACrC,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAEzC;AAED,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,wBAA6B,GACrC,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,CAExC"}
@@ -0,0 +1,71 @@
1
+ import { getEncoding } from "js-tiktoken";
2
+ import { ModelProvider, PromptRenderer } from "../types";
3
+ const encoder = getEncoding("cl100k_base");
4
+ const countText = (text) => encoder.encode(text).length;
5
+ export class PlainTextRenderer extends PromptRenderer {
6
+ joinMessagesWith;
7
+ includeRolePrefix;
8
+ constructor(options = {}) {
9
+ super();
10
+ this.joinMessagesWith = options.joinMessagesWith ?? "";
11
+ this.includeRolePrefix = options.includeRolePrefix ?? false;
12
+ }
13
+ render(layout) {
14
+ const messages = layout.map((message) => formatPlaintextMessage(message, this.includeRolePrefix));
15
+ return messages.join(this.joinMessagesWith);
16
+ }
17
+ }
18
+ function formatPlaintextMessage(message, includeRolePrefix) {
19
+ const content = renderPlaintextContent(message);
20
+ if (includeRolePrefix) {
21
+ return `${message.role}: ${content}`;
22
+ }
23
+ return content;
24
+ }
25
+ function renderPlaintextContent(message) {
26
+ if (message.role === "tool") {
27
+ return `[tool-result:${message.toolName}]${message.output}`;
28
+ }
29
+ if (message.role === "assistant") {
30
+ return renderAssistantContent(message);
31
+ }
32
+ return message.text;
33
+ }
34
+ function renderAssistantContent(message) {
35
+ let content = "";
36
+ if (message.text) {
37
+ content += message.text;
38
+ }
39
+ if (message.reasoning) {
40
+ content += message.reasoning;
41
+ }
42
+ if (message.toolCalls) {
43
+ for (const call of message.toolCalls) {
44
+ content += `[tool-call:${call.toolName}]${call.input}`;
45
+ }
46
+ }
47
+ return content;
48
+ }
49
+ export class PlainTextProvider extends ModelProvider {
50
+ renderer;
51
+ constructor(renderer) {
52
+ super();
53
+ this.renderer = renderer;
54
+ }
55
+ countTokens(rendered) {
56
+ return countText(rendered);
57
+ }
58
+ completion(rendered) {
59
+ return rendered;
60
+ }
61
+ object(rendered, schema) {
62
+ return schema.parse(JSON.parse(rendered));
63
+ }
64
+ }
65
+ export function createPlainTextRenderer(options = {}) {
66
+ return new PlainTextRenderer(options);
67
+ }
68
+ export function createTestProvider(options = {}) {
69
+ return new PlainTextProvider(createPlainTextRenderer(options));
70
+ }
71
+ //# sourceMappingURL=plaintext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plaintext.js","sourceRoot":"","sources":["../../src/testing/plaintext.ts"],"names":[],"mappings":"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"}