@fastpaca/cria 0.0.1 → 1.0.1

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 (140) hide show
  1. package/README.md +93 -106
  2. package/dist/ai-sdk/index.d.ts +43 -0
  3. package/dist/ai-sdk/index.d.ts.map +1 -0
  4. package/dist/ai-sdk/index.js +303 -0
  5. package/dist/ai-sdk/index.js.map +1 -0
  6. package/dist/ai-sdk/index.test.d.ts +2 -0
  7. package/dist/ai-sdk/index.test.d.ts.map +1 -0
  8. package/dist/ai-sdk/index.test.js +101 -0
  9. package/dist/ai-sdk/index.test.js.map +1 -0
  10. package/dist/anthropic/index.d.ts +74 -0
  11. package/dist/anthropic/index.d.ts.map +1 -0
  12. package/dist/anthropic/index.js +238 -0
  13. package/dist/anthropic/index.js.map +1 -0
  14. package/dist/anthropic/index.test.d.ts +2 -0
  15. package/dist/anthropic/index.test.d.ts.map +1 -0
  16. package/dist/anthropic/index.test.js +115 -0
  17. package/dist/anthropic/index.test.js.map +1 -0
  18. package/dist/components/additional.test.d.ts +2 -0
  19. package/dist/components/additional.test.d.ts.map +1 -0
  20. package/dist/components/additional.test.js +31 -0
  21. package/dist/components/additional.test.js.map +1 -0
  22. package/dist/components/index.d.ts +148 -0
  23. package/dist/components/index.d.ts.map +1 -0
  24. package/dist/components/index.js +184 -0
  25. package/dist/components/index.js.map +1 -0
  26. package/dist/components/summary.d.ts +91 -0
  27. package/dist/components/summary.d.ts.map +1 -0
  28. package/dist/components/summary.js +118 -0
  29. package/dist/components/summary.js.map +1 -0
  30. package/dist/components/summary.test.d.ts +2 -0
  31. package/dist/components/summary.test.d.ts.map +1 -0
  32. package/dist/components/summary.test.js +101 -0
  33. package/dist/components/summary.test.js.map +1 -0
  34. package/dist/components/vector-search.d.ts +70 -0
  35. package/dist/components/vector-search.d.ts.map +1 -0
  36. package/dist/components/vector-search.js +110 -0
  37. package/dist/components/vector-search.js.map +1 -0
  38. package/dist/components/vector-search.test.d.ts +2 -0
  39. package/dist/components/vector-search.test.d.ts.map +1 -0
  40. package/dist/components/vector-search.test.js +113 -0
  41. package/dist/components/vector-search.test.js.map +1 -0
  42. package/dist/index.d.ts +12 -5
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +9 -5
  45. package/dist/index.js.map +1 -1
  46. package/dist/instrumentation/otel.d.ts +19 -0
  47. package/dist/instrumentation/otel.d.ts.map +1 -0
  48. package/dist/instrumentation/otel.js +102 -0
  49. package/dist/instrumentation/otel.js.map +1 -0
  50. package/dist/instrumentation/otel.test.d.ts +2 -0
  51. package/dist/instrumentation/otel.test.d.ts.map +1 -0
  52. package/dist/instrumentation/otel.test.js +116 -0
  53. package/dist/instrumentation/otel.test.js.map +1 -0
  54. package/dist/jsx-dev-runtime.d.ts +2 -0
  55. package/dist/jsx-dev-runtime.d.ts.map +1 -0
  56. package/dist/jsx-dev-runtime.js +2 -0
  57. package/dist/jsx-dev-runtime.js.map +1 -0
  58. package/dist/jsx-runtime.d.ts +30 -8
  59. package/dist/jsx-runtime.d.ts.map +1 -1
  60. package/dist/jsx-runtime.js +13 -10
  61. package/dist/jsx-runtime.js.map +1 -1
  62. package/dist/memory/chroma/index.d.ts +59 -0
  63. package/dist/memory/chroma/index.d.ts.map +1 -0
  64. package/dist/memory/chroma/index.js +172 -0
  65. package/dist/memory/chroma/index.js.map +1 -0
  66. package/dist/memory/index.d.ts +4 -0
  67. package/dist/memory/index.d.ts.map +1 -0
  68. package/dist/memory/index.js +2 -0
  69. package/dist/memory/index.js.map +1 -0
  70. package/dist/memory/key-value.d.ts +71 -0
  71. package/dist/memory/key-value.d.ts.map +1 -0
  72. package/dist/memory/key-value.js +34 -0
  73. package/dist/memory/key-value.js.map +1 -0
  74. package/dist/memory/postgres.d.ts +71 -0
  75. package/dist/memory/postgres.d.ts.map +1 -0
  76. package/dist/memory/postgres.js +109 -0
  77. package/dist/memory/postgres.js.map +1 -0
  78. package/dist/memory/qdrant/index.d.ts +64 -0
  79. package/dist/memory/qdrant/index.d.ts.map +1 -0
  80. package/dist/memory/qdrant/index.js +136 -0
  81. package/dist/memory/qdrant/index.js.map +1 -0
  82. package/dist/memory/redis.d.ts +70 -0
  83. package/dist/memory/redis.d.ts.map +1 -0
  84. package/dist/memory/redis.js +100 -0
  85. package/dist/memory/redis.js.map +1 -0
  86. package/dist/memory/vector.d.ts +53 -0
  87. package/dist/memory/vector.d.ts.map +1 -0
  88. package/dist/memory/vector.js +2 -0
  89. package/dist/memory/vector.js.map +1 -0
  90. package/dist/openai/index.d.ts +46 -0
  91. package/dist/openai/index.d.ts.map +1 -0
  92. package/dist/openai/index.js +260 -0
  93. package/dist/openai/index.js.map +1 -0
  94. package/dist/openai/index.test.d.ts +2 -0
  95. package/dist/openai/index.test.d.ts.map +1 -0
  96. package/dist/openai/index.test.js +204 -0
  97. package/dist/openai/index.test.js.map +1 -0
  98. package/dist/providers/index.d.ts +2 -0
  99. package/dist/providers/index.d.ts.map +1 -0
  100. package/dist/providers/index.js +2 -0
  101. package/dist/providers/index.js.map +1 -0
  102. package/dist/providers/types.d.ts +2 -0
  103. package/dist/providers/types.d.ts.map +1 -0
  104. package/dist/providers/types.js +2 -0
  105. package/dist/providers/types.js.map +1 -0
  106. package/dist/render.d.ts +44 -40
  107. package/dist/render.d.ts.map +1 -1
  108. package/dist/render.js +162 -148
  109. package/dist/render.js.map +1 -1
  110. package/dist/render.test.js +146 -28
  111. package/dist/render.test.js.map +1 -1
  112. package/dist/renderers/markdown.d.ts +3 -0
  113. package/dist/renderers/markdown.d.ts.map +1 -0
  114. package/dist/renderers/markdown.js +43 -0
  115. package/dist/renderers/markdown.js.map +1 -0
  116. package/dist/renderers/shared.d.ts +82 -0
  117. package/dist/renderers/shared.d.ts.map +1 -0
  118. package/dist/renderers/shared.js +156 -0
  119. package/dist/renderers/shared.js.map +1 -0
  120. package/dist/snapshot.d.ts +47 -0
  121. package/dist/snapshot.d.ts.map +1 -0
  122. package/dist/snapshot.js +140 -0
  123. package/dist/snapshot.js.map +1 -0
  124. package/dist/snapshot.test.d.ts +2 -0
  125. package/dist/snapshot.test.d.ts.map +1 -0
  126. package/dist/snapshot.test.js +68 -0
  127. package/dist/snapshot.test.js.map +1 -0
  128. package/dist/tokenizers.d.ts +14 -0
  129. package/dist/tokenizers.d.ts.map +1 -0
  130. package/dist/tokenizers.js +45 -0
  131. package/dist/tokenizers.js.map +1 -0
  132. package/dist/types.d.ts +212 -84
  133. package/dist/types.d.ts.map +1 -1
  134. package/dist/types.js +109 -0
  135. package/dist/types.js.map +1 -1
  136. package/package.json +88 -3
  137. package/dist/components.d.ts +0 -78
  138. package/dist/components.d.ts.map +0 -1
  139. package/dist/components.js +0 -98
  140. package/dist/components.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.test.js","sourceRoot":"","sources":["../../src/components/summary.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import type { VectorMemory, VectorSearchResult } from "../memory";
2
+ import type { CompletionMessage, PromptChildren, PromptElement } from "../types";
3
+ /**
4
+ * Function that formats search results into prompt content.
5
+ *
6
+ * @template T - The type of data stored in the vector memory
7
+ */
8
+ export type ResultFormatter<T = unknown> = (results: VectorSearchResult<T>[]) => string;
9
+ type QueryExtractor = (messages: CompletionMessage[]) => string | null | undefined;
10
+ interface VectorSearchProps<T = unknown> {
11
+ /** Vector memory store to search */
12
+ store: VectorMemory<T>;
13
+ /**
14
+ * Query string. If omitted, the component will try to derive the query from
15
+ * children, then from `messages` (defaulting to the last user message).
16
+ */
17
+ query?: string | undefined;
18
+ /**
19
+ * Optional messages to derive a query from (uses last user message by default).
20
+ */
21
+ messages?: CompletionMessage[];
22
+ /** Custom query extractor (overrides the default last-user-message behavior). */
23
+ extractQuery?: QueryExtractor;
24
+ /** Maximum number of results to return. Default: 5 */
25
+ limit?: number;
26
+ /** Minimum similarity threshold (0-1). Results below this are excluded. */
27
+ threshold?: number;
28
+ /** Custom formatter for search results. Default: numbered list format */
29
+ formatResults?: ResultFormatter<T>;
30
+ /** Priority for this region (higher number = reduced first). Default: 0 */
31
+ priority?: number;
32
+ /** Stable identifier for caching/debugging */
33
+ id?: string;
34
+ /** Query text provided as children (preferred over `query` when present). */
35
+ children?: PromptChildren;
36
+ }
37
+ /**
38
+ * Renders vector search results into the prompt.
39
+ *
40
+ * The query is resolved at render time. No pre-fetching needed. Query sources, in
41
+ * order of precedence:
42
+ * 1) Children text: `<VectorSearch store={store}>find docs about RAG</VectorSearch>`
43
+ * 2) `query` prop: `<VectorSearch store={store} query="find docs about RAG" />`
44
+ * 3) Messages: `<VectorSearch store={store} messages={messages} />`
45
+ * - Defaults to the last user message, or use `extractQuery` to customize.
46
+ *
47
+ * @example
48
+ * ```tsx
49
+ * <VectorSearch store={store} limit={5}>
50
+ * my query: {topic}
51
+ * </VectorSearch>
52
+ * ```
53
+ *
54
+ * @example Using messages as the query source
55
+ * ```tsx
56
+ * <VectorSearch store={store} messages={messages} />
57
+ * ```
58
+ *
59
+ * @example Custom extractor
60
+ * ```tsx
61
+ * <VectorSearch
62
+ * store={store}
63
+ * messages={messages}
64
+ * extractQuery={(msgs) => msgs.at(-1)?.content}
65
+ * />
66
+ * ```
67
+ */
68
+ export declare function VectorSearch<T = unknown>({ store, query, messages, extractQuery, limit, threshold, formatResults, priority, id, children, }: VectorSearchProps<T>): Promise<PromptElement>;
69
+ export {};
70
+ //# sourceMappingURL=vector-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-search.d.ts","sourceRoot":"","sources":["../../src/components/vector-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,kBAAkB,EACnB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,aAAa,EACd,MAAM,UAAU,CAAC;AAElB;;;;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,CACpB,QAAQ,EAAE,iBAAiB,EAAE,KAC1B,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAE/B,UAAU,iBAAiB,CAAC,CAAC,GAAG,OAAO;IACrC,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,iBAAiB,EAAE,CAAC;IAC/B,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,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AA0DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,EAC9C,KAAK,EACL,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,KAAS,EACT,SAAS,EACT,aAAgC,EAChC,QAAY,EACZ,EAAE,EACF,QAAQ,GACT,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CA2B/C"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Default formatter that renders results as a numbered list.
3
+ * Throws if no results found - provide a custom formatter to handle empty results differently.
4
+ */
5
+ function defaultFormatter(results) {
6
+ if (results.length === 0) {
7
+ throw new Error("VectorSearch: no results found");
8
+ }
9
+ return results
10
+ .map((result, index) => {
11
+ const data = typeof result.entry.data === "string"
12
+ ? result.entry.data
13
+ : JSON.stringify(result.entry.data, null, 2);
14
+ return `[${index + 1}] (score: ${result.score.toFixed(3)})\n${data}`;
15
+ })
16
+ .join("\n\n");
17
+ }
18
+ function queryFromChildren(children) {
19
+ if (!children || children.length === 0) {
20
+ return null;
21
+ }
22
+ let buffer = "";
23
+ for (const child of children) {
24
+ if (typeof child !== "string") {
25
+ throw new Error("VectorSearch children must be plain text. Wrap complex content in a formatter before passing it as a query.");
26
+ }
27
+ buffer += child;
28
+ }
29
+ const trimmed = buffer.trim();
30
+ return trimmed === "" ? null : trimmed;
31
+ }
32
+ function defaultExtractQuery(messages) {
33
+ const lastUser = [...messages].reverse().find((m) => m.role === "user");
34
+ const content = lastUser?.content.trim() ?? "";
35
+ return content === "" ? null : content;
36
+ }
37
+ function deriveQuery(props) {
38
+ const childQuery = queryFromChildren(props.children);
39
+ if (childQuery) {
40
+ return childQuery;
41
+ }
42
+ const directQuery = props.query?.trim();
43
+ if (directQuery) {
44
+ return directQuery;
45
+ }
46
+ if (props.messages && props.messages.length > 0) {
47
+ const extracted = props.extractQuery
48
+ ? props.extractQuery(props.messages)
49
+ : defaultExtractQuery(props.messages);
50
+ const trimmed = extracted?.trim() ?? "";
51
+ if (trimmed) {
52
+ return trimmed;
53
+ }
54
+ }
55
+ return null;
56
+ }
57
+ /**
58
+ * Renders vector search results into the prompt.
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
+ * ```
87
+ */
88
+ export async function VectorSearch({ store, query, messages, extractQuery, limit = 5, threshold, formatResults = defaultFormatter, priority = 0, id, children, }) {
89
+ const finalQuery = deriveQuery({
90
+ query,
91
+ messages,
92
+ extractQuery,
93
+ children,
94
+ });
95
+ if (!finalQuery) {
96
+ throw new Error("VectorSearch: no query provided. Pass a query via children, the query prop, or messages.");
97
+ }
98
+ const searchOptions = {
99
+ limit,
100
+ ...(threshold !== undefined && { threshold }),
101
+ };
102
+ const results = await store.search(finalQuery, searchOptions);
103
+ const content = formatResults(results);
104
+ return {
105
+ priority,
106
+ children: [content],
107
+ ...(id && { id }),
108
+ };
109
+ }
110
+ //# sourceMappingURL=vector-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-search.js","sourceRoot":"","sources":["../../src/components/vector-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=vector-search.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-search.test.d.ts","sourceRoot":"","sources":["../../src/components/vector-search.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { VectorSearch } from "./vector-search";
3
+ const mockResults = [
4
+ {
5
+ key: "doc-1",
6
+ score: 0.95,
7
+ entry: {
8
+ data: { title: "First Document", content: "This is the first document." },
9
+ createdAt: 1_700_000_000_000,
10
+ updatedAt: 1_700_000_000_000,
11
+ },
12
+ },
13
+ {
14
+ key: "doc-2",
15
+ score: 0.82,
16
+ entry: {
17
+ data: {
18
+ title: "Second Document",
19
+ content: "This is the second document.",
20
+ },
21
+ createdAt: 1_700_000_001_000,
22
+ updatedAt: 1_700_000_001_000,
23
+ },
24
+ },
25
+ ];
26
+ function createMockStore(results) {
27
+ let lastQuery;
28
+ let lastOptions;
29
+ const store = {
30
+ get: () => null,
31
+ set: () => {
32
+ /* no-op */
33
+ },
34
+ delete: () => false,
35
+ search: (query, options) => {
36
+ lastQuery = query;
37
+ lastOptions = options;
38
+ return results;
39
+ },
40
+ };
41
+ return {
42
+ store,
43
+ getLastQuery: () => lastQuery,
44
+ getLastOptions: () => lastOptions,
45
+ };
46
+ }
47
+ const PLAIN_TEXT_REGEX = /plain text/;
48
+ describe("VectorSearch", () => {
49
+ it("uses children as the query and renders results", async () => {
50
+ const { store, getLastQuery, getLastOptions } = createMockStore(mockResults);
51
+ const element = await VectorSearch({
52
+ store,
53
+ limit: 2,
54
+ children: ["Find docs about RAG"],
55
+ });
56
+ expect(getLastQuery()).toBe("Find docs about RAG");
57
+ expect(getLastOptions()).toEqual({ limit: 2 });
58
+ expect(element.children[0]).toContain("First Document");
59
+ });
60
+ it("derives query from the last user message by default", async () => {
61
+ const { store, getLastQuery } = createMockStore(mockResults);
62
+ const messages = [
63
+ { role: "assistant", content: "Previous answer" },
64
+ { role: "user", content: "What is RAG?" },
65
+ ];
66
+ const element = await VectorSearch({ store, messages });
67
+ expect(getLastQuery()).toBe("What is RAG?");
68
+ expect(element.children[0]).toContain("First Document");
69
+ });
70
+ it("uses a custom extractor when provided", async () => {
71
+ const { store, getLastQuery } = createMockStore(mockResults);
72
+ const messages = [
73
+ { role: "user", content: "ignore me" },
74
+ { role: "assistant", content: "assistant reply" },
75
+ ];
76
+ const element = await VectorSearch({
77
+ store,
78
+ messages,
79
+ extractQuery: () => "custom-query",
80
+ });
81
+ expect(getLastQuery()).toBe("custom-query");
82
+ expect(element.children[0]).toContain("First Document");
83
+ });
84
+ it("throws when no results found", async () => {
85
+ const { store } = createMockStore([]);
86
+ await expect(VectorSearch({
87
+ store,
88
+ query: "nothing here",
89
+ })).rejects.toThrow("no results found");
90
+ });
91
+ it("throws when no query is available", async () => {
92
+ const { store } = createMockStore([]);
93
+ await expect(VectorSearch({ store })).rejects.toThrow("no query provided");
94
+ });
95
+ it("uses custom formatter", async () => {
96
+ const { store } = createMockStore(mockResults);
97
+ const element = await VectorSearch({
98
+ store,
99
+ query: "test",
100
+ formatResults: (results) => `Found ${results.length} results`,
101
+ });
102
+ expect(element.children[0]).toBe("Found 2 results");
103
+ });
104
+ it("rejects non-text children", async () => {
105
+ const { store } = createMockStore(mockResults);
106
+ const badChild = { priority: 0, children: [] };
107
+ await expect(VectorSearch({
108
+ store,
109
+ children: [badChild],
110
+ })).rejects.toThrow(PLAIN_TEXT_REGEX);
111
+ });
112
+ });
113
+ //# sourceMappingURL=vector-search.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-search.test.js","sourceRoot":"","sources":["../../src/components/vector-search.test.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@
8
8
  * const prompt = (
9
9
  * <Region priority={0}>
10
10
  * You are a helpful assistant.
11
- * <Truncate budget={20000} direction="start" priority={2}>
11
+ * <Truncate budget={20000} from="start" priority={2}>
12
12
  * {conversationHistory}
13
13
  * </Truncate>
14
14
  * <Omit priority={3}>
@@ -17,13 +17,20 @@
17
17
  * </Region>
18
18
  * );
19
19
  *
20
- * const result = render(prompt, { tokenizer, budget: 128000 });
20
+ * const result = await render(prompt, { tokenizer, budget: 128000 });
21
21
  * ```
22
22
  *
23
23
  * @packageDocumentation
24
24
  */
25
- export { Omit, Region, Truncate } from "./components";
25
+ export type { ResultFormatter, StoredSummary, Summarizer, SummarizerContext, } from "./components";
26
+ export { CodeBlock, Examples, Last, Message, Omit, Reasoning, Region, Separator, Summary, ToolCall, ToolResult, Truncate, VectorSearch, } from "./components";
27
+ export { createOtelRenderHooks } from "./instrumentation/otel";
28
+ export type { KVMemory, MemoryEntry, VectorMemory, VectorSearchOptions, VectorSearchResult, } from "./memory";
29
+ export { InMemoryStore } from "./memory";
30
+ export type { FitCompleteEvent, FitErrorEvent, FitIterationEvent, FitStartEvent, RenderHooks, RenderOptions, StrategyAppliedEvent, } from "./render";
26
31
  export { render } from "./render";
27
- export type { PromptChildren, PromptElement, PromptFragment, Strategy, StrategyInput, Tokenizer, } from "./types";
28
- export { FitError } from "./types";
32
+ export { markdownRenderer } from "./renderers/markdown";
33
+ export { createSnapshot, createSnapshotHooks, diffSnapshots, type Snapshot, type SnapshotChild, type SnapshotDiff, type SnapshotElement, } from "./snapshot";
34
+ export type { CompletionMessage, CompletionRequest, CompletionResult, CriaContext, JsonValue, MaybePromise, ModelProvider, PromptChild, PromptChildren, PromptElement, PromptKind, PromptNodeKind, PromptRenderer, PromptRole, Strategy, StrategyInput, StrategyResult, Tokenizer, } from "./types";
35
+ export { FitError, JsonValueSchema, PromptChildrenSchema, PromptChildSchema, PromptElementSchema, PromptKindSchema, PromptRoleSchema, } from "./types";
29
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,QAAQ,EACR,aAAa,EACb,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,YAAY,EACV,eAAe,EACf,aAAa,EACb,UAAU,EACV,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,SAAS,EACT,MAAM,EACN,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,YAAY,EACV,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,aAAa,EACb,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,aAAa,EACb,UAAU,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,QAAQ,EACR,aAAa,EACb,cAAc,EACd,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@
8
8
  * const prompt = (
9
9
  * <Region priority={0}>
10
10
  * You are a helpful assistant.
11
- * <Truncate budget={20000} direction="start" priority={2}>
11
+ * <Truncate budget={20000} from="start" priority={2}>
12
12
  * {conversationHistory}
13
13
  * </Truncate>
14
14
  * <Omit priority={3}>
@@ -17,13 +17,17 @@
17
17
  * </Region>
18
18
  * );
19
19
  *
20
- * const result = render(prompt, { tokenizer, budget: 128000 });
20
+ * const result = await render(prompt, { tokenizer, budget: 128000 });
21
21
  * ```
22
22
  *
23
23
  * @packageDocumentation
24
24
  */
25
- // biome-ignore lint/performance/noBarrelFile: Entry point for package exports
26
- export { Omit, Region, Truncate } from "./components";
25
+ export { CodeBlock, Examples, Last, Message, Omit, Reasoning, Region, Separator, Summary, ToolCall, ToolResult, Truncate, VectorSearch, } from "./components";
26
+ export { createOtelRenderHooks } from "./instrumentation/otel";
27
+ // LLM Memory
28
+ export { InMemoryStore } from "./memory";
27
29
  export { render } from "./render";
28
- export { FitError } from "./types";
30
+ export { markdownRenderer } from "./renderers/markdown";
31
+ export { createSnapshot, createSnapshotHooks, diffSnapshots, } from "./snapshot";
32
+ export { FitError, JsonValueSchema, PromptChildrenSchema, PromptChildSchema, PromptElementSchema, PromptKindSchema, PromptRoleSchema, } from "./types";
29
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,8EAA8E;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AASlC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAQH,OAAO,EACL,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,SAAS,EACT,MAAM,EACN,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAQ/D,aAAa;AACb,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAUzC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,aAAa,GAKd,MAAM,YAAY,CAAC;AAqBpB,OAAO,EACL,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type Attributes, type Tracer } from "@opentelemetry/api";
2
+ import type { RenderHooks } from "../render";
3
+ interface OtelRenderHooksOptions {
4
+ tracer: Tracer;
5
+ /** Root span name for a render fit. Default: "cria.fit". */
6
+ spanName?: string;
7
+ /** Static attributes applied to all spans. */
8
+ attributes?: Attributes;
9
+ }
10
+ /**
11
+ * Creates RenderHooks that emit OpenTelemetry spans for fit lifecycle events.
12
+ *
13
+ * - Throws if tracer operations throw.
14
+ * - Uses the provided tracer; does not create global tracers.
15
+ * - Uses explicit ids when present for stable node attribution.
16
+ */
17
+ export declare function createOtelRenderHooks({ tracer, spanName, attributes, }: OtelRenderHooksOptions): RenderHooks;
18
+ export {};
19
+ //# sourceMappingURL=otel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../../src/instrumentation/otel.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAIf,KAAK,MAAM,EACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,UAAU,sBAAsB;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,QAAqB,EACrB,UAAe,GAChB,EAAE,sBAAsB,GAAG,WAAW,CAwEtC"}
@@ -0,0 +1,102 @@
1
+ import { context, SpanStatusCode, } from "@opentelemetry/api";
2
+ /**
3
+ * Creates RenderHooks that emit OpenTelemetry spans for fit lifecycle events.
4
+ *
5
+ * - Throws if tracer operations throw.
6
+ * - Uses the provided tracer; does not create global tracers.
7
+ * - Uses explicit ids when present for stable node attribution.
8
+ */
9
+ export function createOtelRenderHooks({ tracer, spanName = "cria.fit", attributes = {}, }) {
10
+ let fitSpan = null;
11
+ const startChildSpan = (name, attrs) => {
12
+ const span = tracer.startSpan(name, undefined, context.active());
13
+ if (fitSpan) {
14
+ span.setAttribute("cria.fit.trace_id", fitSpan.spanContext().traceId);
15
+ }
16
+ setAttributes(span, { ...attributes, ...attrs });
17
+ return span;
18
+ };
19
+ return {
20
+ onFitStart: (event) => {
21
+ fitSpan = tracer.startSpan(spanName, undefined, context.active());
22
+ setAttributes(fitSpan, {
23
+ ...attributes,
24
+ "cria.budget": event.budget,
25
+ "cria.total_tokens": event.totalTokens,
26
+ });
27
+ setElementAttributes(fitSpan, event.element);
28
+ },
29
+ onFitIteration: (event) => {
30
+ const span = startChildSpan(`${spanName}.iteration`, {
31
+ "cria.iteration": event.iteration,
32
+ "cria.priority": event.priority,
33
+ "cria.total_tokens": event.totalTokens,
34
+ });
35
+ span.end();
36
+ },
37
+ onStrategyApplied: (event) => {
38
+ const span = startChildSpan(`${spanName}.strategy`, {
39
+ "cria.iteration": event.iteration,
40
+ "cria.priority": event.priority,
41
+ "cria.strategy.result": event.result ? "node" : "null",
42
+ });
43
+ setElementAttributes(span, event.target);
44
+ span.end();
45
+ },
46
+ onFitComplete: (event) => {
47
+ if (!fitSpan) {
48
+ return;
49
+ }
50
+ setAttributes(fitSpan, {
51
+ "cria.iterations": event.iterations,
52
+ "cria.total_tokens": event.totalTokens,
53
+ });
54
+ fitSpan.end();
55
+ fitSpan = null;
56
+ },
57
+ onFitError: (event) => {
58
+ const span = fitSpan ?? tracer.startSpan(spanName, undefined, context.active());
59
+ setAttributes(span, {
60
+ ...attributes,
61
+ "cria.iteration": event.iteration,
62
+ "cria.priority": event.priority,
63
+ "cria.total_tokens": event.totalTokens,
64
+ });
65
+ span.setStatus({
66
+ code: SpanStatusCode.ERROR,
67
+ message: event.error.message,
68
+ });
69
+ span.recordException(event.error);
70
+ span.end();
71
+ fitSpan = null;
72
+ },
73
+ };
74
+ }
75
+ function setElementAttributes(span, element) {
76
+ span.setAttribute("cria.node.kind", element.kind ?? "region");
77
+ span.setAttribute("cria.node.priority", element.priority);
78
+ if (element.id) {
79
+ span.setAttribute("cria.node.id", element.id);
80
+ }
81
+ switch (element.kind) {
82
+ case "message":
83
+ span.setAttribute("cria.node.role", element.role);
84
+ break;
85
+ case "tool-call":
86
+ case "tool-result":
87
+ span.setAttribute("cria.node.tool_call_id", element.toolCallId);
88
+ span.setAttribute("cria.node.tool_name", element.toolName);
89
+ break;
90
+ default:
91
+ // No additional attributes for other element kinds
92
+ break;
93
+ }
94
+ }
95
+ function setAttributes(span, attrs) {
96
+ for (const [key, value] of Object.entries(attrs)) {
97
+ if (value !== undefined) {
98
+ span.setAttribute(key, value);
99
+ }
100
+ }
101
+ }
102
+ //# sourceMappingURL=otel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel.js","sourceRoot":"","sources":["../../src/instrumentation/otel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=otel.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel.test.d.ts","sourceRoot":"","sources":["../../src/instrumentation/otel.test.tsx"],"names":[],"mappings":""}