@fastpaca/cria 1.7.1 → 1.7.3
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 +108 -18
- package/dist/cria.d.ts +49 -0
- package/dist/cria.d.ts.map +1 -0
- package/dist/cria.js +49 -0
- package/dist/cria.js.map +1 -0
- package/dist/dsl/builder.d.ts +34 -44
- package/dist/dsl/builder.d.ts.map +1 -1
- package/dist/dsl/builder.js +122 -159
- package/dist/dsl/builder.js.map +1 -1
- package/dist/dsl/index.d.ts +2 -43
- package/dist/dsl/index.d.ts.map +1 -1
- package/dist/dsl/index.js +7 -51
- package/dist/dsl/index.js.map +1 -1
- package/dist/eval/index.d.ts +3 -1
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/index.js +1 -1
- package/dist/eval/index.js.map +1 -1
- package/dist/eval/judge.d.ts +1 -1
- package/dist/eval/judge.d.ts.map +1 -1
- package/dist/eval/judge.js +1 -1
- package/dist/eval/judge.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/memory/chroma/index.d.ts +6 -6
- package/dist/memory/chroma/index.d.ts.map +1 -1
- package/dist/memory/chroma/index.js +34 -25
- package/dist/memory/chroma/index.js.map +1 -1
- package/dist/memory/index.d.ts +4 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +2 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/key-value.d.ts +8 -3
- package/dist/memory/key-value.d.ts.map +1 -1
- package/dist/memory/key-value.js +8 -3
- package/dist/memory/key-value.js.map +1 -1
- package/dist/memory/postgres.d.ts.map +1 -1
- package/dist/memory/postgres.js +16 -6
- package/dist/memory/postgres.js.map +1 -1
- package/dist/memory/qdrant/index.d.ts +6 -6
- package/dist/memory/qdrant/index.d.ts.map +1 -1
- package/dist/memory/qdrant/index.js +29 -25
- package/dist/memory/qdrant/index.js.map +1 -1
- package/dist/memory/redis.d.ts.map +1 -1
- package/dist/memory/redis.js +21 -9
- package/dist/memory/redis.js.map +1 -1
- package/dist/memory/sqlite-vector.d.ts +89 -0
- package/dist/memory/sqlite-vector.d.ts.map +1 -0
- package/dist/memory/sqlite-vector.js +211 -0
- package/dist/memory/sqlite-vector.js.map +1 -0
- package/dist/memory/sqlite.d.ts +12 -12
- package/dist/memory/sqlite.d.ts.map +1 -1
- package/dist/memory/sqlite.js +57 -36
- package/dist/memory/sqlite.js.map +1 -1
- package/dist/memory/summarizer.d.ts +50 -0
- package/dist/memory/summarizer.d.ts.map +1 -0
- package/dist/memory/summarizer.js +110 -0
- package/dist/memory/summarizer.js.map +1 -0
- package/dist/memory/vector-db.d.ts +30 -0
- package/dist/memory/vector-db.d.ts.map +1 -0
- package/dist/memory/vector-db.js +85 -0
- package/dist/memory/vector-db.js.map +1 -0
- package/package.json +10 -7
- package/dist/dsl/summary.d.ts +0 -51
- package/dist/dsl/summary.d.ts.map +0 -1
- package/dist/dsl/summary.js +0 -56
- package/dist/dsl/summary.js.map +0 -1
- package/dist/dsl/vector-search.d.ts +0 -19
- package/dist/dsl/vector-search.d.ts.map +0 -1
- package/dist/dsl/vector-search.js +0 -36
- package/dist/dsl/vector-search.js.map +0 -1
package/dist/memory/sqlite.js
CHANGED
|
@@ -1,9 +1,30 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { createClient } from "@libsql/client";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
const MetadataSchema = z.record(z.string(), z.unknown());
|
|
4
|
+
const SqliteRowSchema = z
|
|
5
|
+
.object({
|
|
6
|
+
key: z.string(),
|
|
7
|
+
data: z.string(),
|
|
8
|
+
created_at: z.coerce.number(),
|
|
9
|
+
updated_at: z.coerce.number(),
|
|
10
|
+
metadata: z.string().nullable(),
|
|
11
|
+
})
|
|
12
|
+
.transform((row) => {
|
|
13
|
+
const metadata = row.metadata === null
|
|
14
|
+
? undefined
|
|
15
|
+
: MetadataSchema.parse(JSON.parse(row.metadata));
|
|
16
|
+
return {
|
|
17
|
+
data: JSON.parse(row.data),
|
|
18
|
+
createdAt: row.created_at,
|
|
19
|
+
updatedAt: row.updated_at,
|
|
20
|
+
...(metadata && { metadata }),
|
|
21
|
+
};
|
|
22
|
+
});
|
|
2
23
|
/**
|
|
3
24
|
* SQLite-backed implementation of KVMemory.
|
|
4
25
|
*
|
|
5
|
-
* Plug-and-play adapter using
|
|
6
|
-
* an existing database
|
|
26
|
+
* Plug-and-play adapter using libSQL. Just pass a filename or
|
|
27
|
+
* an existing database client.
|
|
7
28
|
*
|
|
8
29
|
* @template T - The type of data to store
|
|
9
30
|
*
|
|
@@ -25,16 +46,21 @@ export class SqliteStore {
|
|
|
25
46
|
autoCreateTable;
|
|
26
47
|
tableCreated = false;
|
|
27
48
|
constructor(options = {}) {
|
|
28
|
-
const { filename, options: dbOptions, database, tableName, autoCreateTable, } = options;
|
|
29
|
-
this.db =
|
|
30
|
-
|
|
31
|
-
|
|
49
|
+
const { filename = ":memory:", options: dbOptions, database, tableName = "cria_kv_store", autoCreateTable = true, } = options;
|
|
50
|
+
this.db =
|
|
51
|
+
database ??
|
|
52
|
+
createClient({
|
|
53
|
+
url: filename === ":memory:" ? ":memory:" : `file:${filename}`,
|
|
54
|
+
...dbOptions,
|
|
55
|
+
});
|
|
56
|
+
this.tableName = tableName;
|
|
57
|
+
this.autoCreateTable = autoCreateTable;
|
|
32
58
|
}
|
|
33
|
-
ensureTable() {
|
|
59
|
+
async ensureTable() {
|
|
34
60
|
if (this.tableCreated || !this.autoCreateTable) {
|
|
35
61
|
return;
|
|
36
62
|
}
|
|
37
|
-
this.db.
|
|
63
|
+
await this.db.execute(`
|
|
38
64
|
CREATE TABLE IF NOT EXISTS ${this.tableName} (
|
|
39
65
|
key TEXT PRIMARY KEY,
|
|
40
66
|
data TEXT NOT NULL,
|
|
@@ -45,47 +71,42 @@ export class SqliteStore {
|
|
|
45
71
|
`);
|
|
46
72
|
this.tableCreated = true;
|
|
47
73
|
}
|
|
48
|
-
get(key) {
|
|
49
|
-
this.ensureTable();
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
74
|
+
async get(key) {
|
|
75
|
+
await this.ensureTable();
|
|
76
|
+
const result = await this.db.execute({
|
|
77
|
+
sql: `SELECT key, data, created_at, updated_at, metadata FROM ${this.tableName} WHERE key = ?`,
|
|
78
|
+
args: [key],
|
|
79
|
+
});
|
|
80
|
+
const row = result.rows[0];
|
|
53
81
|
if (row === undefined) {
|
|
54
82
|
return null;
|
|
55
83
|
}
|
|
56
|
-
|
|
57
|
-
const metadata = row.metadata === null
|
|
58
|
-
? undefined
|
|
59
|
-
: JSON.parse(row.metadata);
|
|
60
|
-
return {
|
|
61
|
-
data,
|
|
62
|
-
createdAt: row.created_at,
|
|
63
|
-
updatedAt: row.updated_at,
|
|
64
|
-
...(metadata && { metadata }),
|
|
65
|
-
};
|
|
84
|
+
return SqliteRowSchema.parse(row);
|
|
66
85
|
}
|
|
67
|
-
set(key, data, metadata) {
|
|
68
|
-
this.ensureTable();
|
|
86
|
+
async set(key, data, metadata) {
|
|
87
|
+
await this.ensureTable();
|
|
69
88
|
const now = Date.now();
|
|
70
89
|
const serializedData = JSON.stringify(data);
|
|
71
90
|
const serializedMetadata = metadata !== undefined ? JSON.stringify(metadata) : null;
|
|
72
|
-
this.db
|
|
73
|
-
|
|
91
|
+
await this.db.execute({
|
|
92
|
+
sql: `
|
|
74
93
|
INSERT INTO ${this.tableName} (key, data, created_at, updated_at, metadata)
|
|
75
94
|
VALUES (?, ?, ?, ?, ?)
|
|
76
95
|
ON CONFLICT(key) DO UPDATE SET
|
|
77
96
|
data = excluded.data,
|
|
78
97
|
updated_at = excluded.updated_at,
|
|
79
98
|
metadata = excluded.metadata
|
|
80
|
-
|
|
81
|
-
|
|
99
|
+
`,
|
|
100
|
+
args: [key, serializedData, now, now, serializedMetadata],
|
|
101
|
+
});
|
|
82
102
|
}
|
|
83
|
-
delete(key) {
|
|
84
|
-
this.ensureTable();
|
|
85
|
-
const result = this.db
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
103
|
+
async delete(key) {
|
|
104
|
+
await this.ensureTable();
|
|
105
|
+
const result = await this.db.execute({
|
|
106
|
+
sql: `DELETE FROM ${this.tableName} WHERE key = ?`,
|
|
107
|
+
args: [key],
|
|
108
|
+
});
|
|
109
|
+
return result.rowsAffected > 0;
|
|
89
110
|
}
|
|
90
111
|
/**
|
|
91
112
|
* Close the database connection.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/memory/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/memory/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAEzD,MAAM,eAAe,GAAG,CAAC;KACtB,MAAM,CAAC;IACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC;KACD,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;IACjB,MAAM,QAAQ,GACZ,GAAG,CAAC,QAAQ,KAAK,IAAI;QACnB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;KAC9B,CAAC;AACJ,CAAC,CAAC,CAAC;AAgCL;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,WAAW;IACL,EAAE,CAAiB;IACnB,SAAS,CAAS;IAClB,eAAe,CAAU;IAClC,YAAY,GAAG,KAAK,CAAC;IAE7B,YAAY,UAA8B,EAAE;QAC1C,MAAM,EACJ,QAAQ,GAAG,UAAU,EACrB,OAAO,EAAE,SAAS,EAClB,QAAQ,EACR,SAAS,GAAG,eAAe,EAC3B,eAAe,GAAG,IAAI,GACvB,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,EAAE;YACL,QAAQ;gBACR,YAAY,CAAC;oBACX,GAAG,EAAE,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE;oBAC9D,GAAG,SAAS;iBACb,CAAC,CAAC;QACL,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;mCACS,IAAI,CAAC,SAAS;;;;;;;KAO5C,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;YACnC,GAAG,EAAE,2DAA2D,IAAI,CAAC,SAAS,gBAAgB;YAC9F,IAAI,EAAE,CAAC,GAAG,CAAC;SACZ,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,GAAG,CACP,GAAW,EACX,IAAO,EACP,QAAkC;QAElC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,kBAAkB,GACtB,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE3D,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;YACpB,GAAG,EAAE;sBACW,IAAI,CAAC,SAAS;;;;;;OAM7B;YACD,IAAI,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,kBAAkB,CAAC;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;YACnC,GAAG,EAAE,eAAe,IAAI,CAAC,SAAS,gBAAgB;YAClD,IAAI,EAAE,CAAC,GAAG,CAAC;SACZ,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Summary strategy for progressively summarizing conversation history.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { type PromptPlugin, type ScopeContent } from "../dsl/builder";
|
|
6
|
+
import type { ModelProvider } from "../provider";
|
|
7
|
+
import type { PromptRole, PromptScope, ProviderToolIO } from "../types";
|
|
8
|
+
import type { KVMemory, MemoryEntry } from "./key-value";
|
|
9
|
+
export declare const StoredSummarySchema: z.ZodObject<{
|
|
10
|
+
content: z.ZodString;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
/**
|
|
13
|
+
* Stored summary data persisted across renders.
|
|
14
|
+
*/
|
|
15
|
+
export type StoredSummary = z.infer<typeof StoredSummarySchema>;
|
|
16
|
+
export type SummarizerProvider = ModelProvider<unknown, ProviderToolIO>;
|
|
17
|
+
export interface SummarizerOptions {
|
|
18
|
+
history: ScopeContent<SummarizerProvider>;
|
|
19
|
+
id?: string;
|
|
20
|
+
metadata?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
export interface SummarizerConfig {
|
|
23
|
+
store: KVMemory<StoredSummary>;
|
|
24
|
+
id: string;
|
|
25
|
+
provider: SummarizerProvider;
|
|
26
|
+
metadata?: Record<string, unknown>;
|
|
27
|
+
role?: PromptRole;
|
|
28
|
+
priority?: number;
|
|
29
|
+
}
|
|
30
|
+
export declare class Summarizer {
|
|
31
|
+
private readonly store;
|
|
32
|
+
private readonly defaultId;
|
|
33
|
+
private readonly provider;
|
|
34
|
+
private readonly defaultMetadata;
|
|
35
|
+
private readonly messageRole;
|
|
36
|
+
private readonly priority;
|
|
37
|
+
constructor(config: SummarizerConfig);
|
|
38
|
+
plugin(options: SummarizerOptions): PromptPlugin<SummarizerProvider>;
|
|
39
|
+
writeNow(options: SummarizerOptions): Promise<string>;
|
|
40
|
+
load(options?: {
|
|
41
|
+
id?: string;
|
|
42
|
+
}): Promise<MemoryEntry<StoredSummary> | null>;
|
|
43
|
+
renderPlugin(options: SummarizerOptions): Promise<PromptScope<ProviderToolIO>>;
|
|
44
|
+
private resolveId;
|
|
45
|
+
private resolveMetadata;
|
|
46
|
+
private resolveHistory;
|
|
47
|
+
private summarize;
|
|
48
|
+
}
|
|
49
|
+
export declare const summarizer: (config: SummarizerConfig) => Summarizer;
|
|
50
|
+
//# sourceMappingURL=summarizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summarizer.d.ts","sourceRoot":"","sources":["../../src/memory/summarizer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,cAAc,EAEf,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzD,eAAO,MAAM,mBAAmB;;iBAE9B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAExE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAgBD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IACtE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;gBAElC,MAAM,EAAE,gBAAgB;IASpC,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,YAAY,CAAC,kBAAkB,CAAC;IAI9D,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAWrD,IAAI,CACR,OAAO,GAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAO,GAC5B,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IAYvC,YAAY,CAAC,OAAO,EAAE,iBAAiB;IA0B7C,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,eAAe;YAMT,cAAc;YAMd,SAAS;CAiCxB;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,gBAAgB,KAAG,UAErD,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Summary strategy for progressively summarizing conversation history.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { PromptBuilder, resolveScopeContent, } from "../dsl/builder";
|
|
6
|
+
import { createMessage, createScope } from "../dsl/strategies";
|
|
7
|
+
import { textPart } from "../dsl/templating";
|
|
8
|
+
import { render } from "../render";
|
|
9
|
+
export const StoredSummarySchema = z.object({
|
|
10
|
+
content: z.string(),
|
|
11
|
+
});
|
|
12
|
+
class SummarizerPlugin {
|
|
13
|
+
component;
|
|
14
|
+
options;
|
|
15
|
+
constructor(component, options) {
|
|
16
|
+
this.component = component;
|
|
17
|
+
this.options = options;
|
|
18
|
+
}
|
|
19
|
+
async render() {
|
|
20
|
+
return await this.component.renderPlugin(this.options);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class Summarizer {
|
|
24
|
+
store;
|
|
25
|
+
defaultId;
|
|
26
|
+
provider;
|
|
27
|
+
defaultMetadata;
|
|
28
|
+
messageRole;
|
|
29
|
+
priority;
|
|
30
|
+
constructor(config) {
|
|
31
|
+
this.store = config.store;
|
|
32
|
+
this.defaultId = config.id;
|
|
33
|
+
this.provider = config.provider;
|
|
34
|
+
this.defaultMetadata = config.metadata;
|
|
35
|
+
this.messageRole = config.role ?? "system";
|
|
36
|
+
this.priority = config.priority;
|
|
37
|
+
}
|
|
38
|
+
plugin(options) {
|
|
39
|
+
return new SummarizerPlugin(this, options);
|
|
40
|
+
}
|
|
41
|
+
async writeNow(options) {
|
|
42
|
+
const summaryId = this.resolveId(options.id);
|
|
43
|
+
const summaryMetadata = this.resolveMetadata(options.metadata);
|
|
44
|
+
const children = await this.resolveHistory(options.history);
|
|
45
|
+
const target = createScope(children, {
|
|
46
|
+
...(this.priority !== undefined ? { priority: this.priority } : {}),
|
|
47
|
+
});
|
|
48
|
+
return await this.summarize(target, summaryId, summaryMetadata);
|
|
49
|
+
}
|
|
50
|
+
async load(options = {}) {
|
|
51
|
+
const summaryId = this.resolveId(options.id);
|
|
52
|
+
const entry = await this.store.get(summaryId);
|
|
53
|
+
if (!entry) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
...entry,
|
|
58
|
+
data: StoredSummarySchema.parse(entry.data),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
async renderPlugin(options) {
|
|
62
|
+
const summaryId = this.resolveId(options.id);
|
|
63
|
+
const summaryMetadata = this.resolveMetadata(options.metadata);
|
|
64
|
+
const children = await this.resolveHistory(options.history);
|
|
65
|
+
return createScope(children, {
|
|
66
|
+
...(this.priority !== undefined ? { priority: this.priority } : {}),
|
|
67
|
+
strategy: async (input) => {
|
|
68
|
+
const summaryText = await this.summarize(input.target, summaryId, summaryMetadata);
|
|
69
|
+
const message = createMessage(this.messageRole, [
|
|
70
|
+
textPart(summaryText),
|
|
71
|
+
]);
|
|
72
|
+
return createScope([message], {
|
|
73
|
+
priority: input.target.priority,
|
|
74
|
+
});
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
resolveId(idOverride) {
|
|
79
|
+
return idOverride ?? this.defaultId;
|
|
80
|
+
}
|
|
81
|
+
resolveMetadata(metadataOverride) {
|
|
82
|
+
return metadataOverride ?? this.defaultMetadata;
|
|
83
|
+
}
|
|
84
|
+
async resolveHistory(history) {
|
|
85
|
+
return await resolveScopeContent(history, this.provider.codec);
|
|
86
|
+
}
|
|
87
|
+
async summarize(target, summaryId, summaryMetadata) {
|
|
88
|
+
const existingEntry = await this.store.get(summaryId);
|
|
89
|
+
const existingSummary = existingEntry
|
|
90
|
+
? StoredSummarySchema.parse(existingEntry.data).content
|
|
91
|
+
: null;
|
|
92
|
+
let builder = PromptBuilder.create(this.provider).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.");
|
|
93
|
+
if (existingSummary) {
|
|
94
|
+
builder = builder.assistant(`Current summary:\n${existingSummary}`);
|
|
95
|
+
}
|
|
96
|
+
builder = builder.merge(target.children);
|
|
97
|
+
builder = builder.user(existingSummary
|
|
98
|
+
? "Update the summary based on the previous summary and the conversation above."
|
|
99
|
+
: "Summarize the conversation above.");
|
|
100
|
+
const summaryPrompt = await builder.build();
|
|
101
|
+
const rendered = await render(summaryPrompt, { provider: this.provider });
|
|
102
|
+
const summaryText = await this.provider.completion(rendered);
|
|
103
|
+
await this.store.set(summaryId, { content: summaryText }, summaryMetadata);
|
|
104
|
+
return summaryText;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export const summarizer = (config) => {
|
|
108
|
+
return new Summarizer(config);
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=summarizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summarizer.js","sourceRoot":"","sources":["../../src/memory/summarizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vector DB helper for shared retrieval + indexing.
|
|
3
|
+
*/
|
|
4
|
+
import type { PromptPlugin } from "../dsl/builder";
|
|
5
|
+
import type { MemoryEntry } from "./key-value";
|
|
6
|
+
import type { VectorMemory, VectorSearchResult } from "./vector";
|
|
7
|
+
type VectorDBFilterValue = string | number | boolean;
|
|
8
|
+
export interface VectorDBSearchOptions {
|
|
9
|
+
query: string;
|
|
10
|
+
limit?: number;
|
|
11
|
+
filter?: Record<string, VectorDBFilterValue>;
|
|
12
|
+
}
|
|
13
|
+
export interface VectorDBEntry<T> {
|
|
14
|
+
id: string;
|
|
15
|
+
data: T;
|
|
16
|
+
metadata?: Record<string, unknown>;
|
|
17
|
+
}
|
|
18
|
+
export declare class VectorDB<T> {
|
|
19
|
+
private readonly store;
|
|
20
|
+
constructor(store: VectorMemory<T>);
|
|
21
|
+
plugin<P = unknown>(options: VectorDBSearchOptions): PromptPlugin<P>;
|
|
22
|
+
index(options: VectorDBEntry<T>): Promise<void>;
|
|
23
|
+
load(options: {
|
|
24
|
+
id: string;
|
|
25
|
+
}): Promise<MemoryEntry<T> | null>;
|
|
26
|
+
search(query: string, limit: number): Promise<VectorSearchResult<T>[]>;
|
|
27
|
+
}
|
|
28
|
+
export declare const vectordb: <T>(store: VectorMemory<T>) => VectorDB<T>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=vector-db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector-db.d.ts","sourceRoot":"","sources":["../../src/memory/vector-db.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEjE,KAAK,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AA6ED,qBAAa,QAAQ,CAAC,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;gBAE5B,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAIlC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,qBAAqB,GAAG,YAAY,CAAC,CAAC,CAAC;IAI9D,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,IAAI,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAI7D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;CAG7E;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,OAAO,YAAY,CAAC,CAAC,CAAC,KAAG,QAAQ,CAAC,CAAC,CAE9D,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vector DB helper for shared retrieval + indexing.
|
|
3
|
+
*/
|
|
4
|
+
import { createMessage, createScope } from "../dsl/strategies";
|
|
5
|
+
import { textPart } from "../dsl/templating";
|
|
6
|
+
const DEFAULT_SEARCH_LIMIT = 10;
|
|
7
|
+
const DEFAULT_FILTER_OVERFETCH_MULTIPLIER = 5;
|
|
8
|
+
const formatEntry = (data) => {
|
|
9
|
+
if (typeof data === "string") {
|
|
10
|
+
return data;
|
|
11
|
+
}
|
|
12
|
+
return JSON.stringify(data, null, 2);
|
|
13
|
+
};
|
|
14
|
+
const matchesFilter = (result, filter) => {
|
|
15
|
+
const metadata = result.entry.metadata;
|
|
16
|
+
if (!metadata) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
for (const [key, value] of Object.entries(filter)) {
|
|
20
|
+
if (metadata[key] !== value) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
};
|
|
26
|
+
const formatResults = (results) => {
|
|
27
|
+
if (results.length === 0) {
|
|
28
|
+
return "Vector search returned no results.";
|
|
29
|
+
}
|
|
30
|
+
return results
|
|
31
|
+
.map((result, index) => {
|
|
32
|
+
return `[${index + 1}] (score: ${result.score.toFixed(3)})\n${formatEntry(result.entry.data)}`;
|
|
33
|
+
})
|
|
34
|
+
.join("\n\n");
|
|
35
|
+
};
|
|
36
|
+
class VectorDBPlugin {
|
|
37
|
+
db;
|
|
38
|
+
options;
|
|
39
|
+
constructor(db, options) {
|
|
40
|
+
this.db = db;
|
|
41
|
+
this.options = options;
|
|
42
|
+
}
|
|
43
|
+
async render() {
|
|
44
|
+
const query = this.options.query.trim();
|
|
45
|
+
if (!query) {
|
|
46
|
+
throw new Error("VectorDB search requires a non-empty query.");
|
|
47
|
+
}
|
|
48
|
+
const filter = this.options.filter;
|
|
49
|
+
const limit = this.options.limit ?? DEFAULT_SEARCH_LIMIT;
|
|
50
|
+
const searchLimit = filter
|
|
51
|
+
? limit * DEFAULT_FILTER_OVERFETCH_MULTIPLIER
|
|
52
|
+
: limit;
|
|
53
|
+
const rawResults = await this.db.search(query, searchLimit);
|
|
54
|
+
const results = filter
|
|
55
|
+
? rawResults.filter((result) => matchesFilter(result, filter))
|
|
56
|
+
: rawResults;
|
|
57
|
+
const content = formatResults(results.slice(0, limit));
|
|
58
|
+
const message = createMessage("user", [
|
|
59
|
+
textPart(content),
|
|
60
|
+
]);
|
|
61
|
+
return createScope([message]);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export class VectorDB {
|
|
65
|
+
store;
|
|
66
|
+
constructor(store) {
|
|
67
|
+
this.store = store;
|
|
68
|
+
}
|
|
69
|
+
plugin(options) {
|
|
70
|
+
return new VectorDBPlugin(this, options);
|
|
71
|
+
}
|
|
72
|
+
async index(options) {
|
|
73
|
+
await this.store.set(options.id, options.data, options.metadata);
|
|
74
|
+
}
|
|
75
|
+
async load(options) {
|
|
76
|
+
return await this.store.get(options.id);
|
|
77
|
+
}
|
|
78
|
+
async search(query, limit) {
|
|
79
|
+
return await this.store.search(query, { limit });
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
export const vectordb = (store) => {
|
|
83
|
+
return new VectorDB(store);
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=vector-db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector-db.js","sourceRoot":"","sources":["../../src/memory/vector-db.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fastpaca/cria",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.3",
|
|
4
4
|
"description": "Lightweight, fast, and tiny LLM Context & Memory layout renderer to enforce token budgets in long running agents.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "seb@fastpaca.com",
|
|
@@ -45,6 +45,10 @@
|
|
|
45
45
|
"types": "./dist/memory/sqlite.d.ts",
|
|
46
46
|
"import": "./dist/memory/sqlite.js"
|
|
47
47
|
},
|
|
48
|
+
"./memory/sqlite-vector": {
|
|
49
|
+
"types": "./dist/memory/sqlite-vector.d.ts",
|
|
50
|
+
"import": "./dist/memory/sqlite-vector.js"
|
|
51
|
+
},
|
|
48
52
|
"./memory/chroma": {
|
|
49
53
|
"types": "./dist/memory/chroma/index.d.ts",
|
|
50
54
|
"import": "./dist/memory/chroma/index.js"
|
|
@@ -60,9 +64,9 @@
|
|
|
60
64
|
},
|
|
61
65
|
"peerDependencies": {
|
|
62
66
|
"@anthropic-ai/sdk": "^0.20.0",
|
|
67
|
+
"@libsql/client": "^0.17.0",
|
|
63
68
|
"@qdrant/js-client-rest": "^1.0.0",
|
|
64
69
|
"ai": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0",
|
|
65
|
-
"better-sqlite3": "^12.0.0",
|
|
66
70
|
"chromadb": "^1.0.0 || ^2.0.0 || ^3.0.0",
|
|
67
71
|
"ioredis": "^5.0.0",
|
|
68
72
|
"openai": "^4.0.0 || ^5.0.0 || ^6.0.0",
|
|
@@ -72,13 +76,13 @@
|
|
|
72
76
|
"@anthropic-ai/sdk": {
|
|
73
77
|
"optional": true
|
|
74
78
|
},
|
|
75
|
-
"@
|
|
79
|
+
"@libsql/client": {
|
|
76
80
|
"optional": true
|
|
77
81
|
},
|
|
78
|
-
"
|
|
82
|
+
"@qdrant/js-client-rest": {
|
|
79
83
|
"optional": true
|
|
80
84
|
},
|
|
81
|
-
"
|
|
85
|
+
"ai": {
|
|
82
86
|
"optional": true
|
|
83
87
|
},
|
|
84
88
|
"chromadb": {
|
|
@@ -117,11 +121,10 @@
|
|
|
117
121
|
"@qdrant/js-client-rest": "^1.16.2",
|
|
118
122
|
"@semantic-release/changelog": "^6.0.3",
|
|
119
123
|
"@semantic-release/git": "^10.0.1",
|
|
120
|
-
"@
|
|
124
|
+
"@libsql/client": "^0.17.0",
|
|
121
125
|
"@types/node": "^25.0.10",
|
|
122
126
|
"@types/pg": "^8.16.0",
|
|
123
127
|
"ai": "^6.0.45",
|
|
124
|
-
"better-sqlite3": "^12.0.0",
|
|
125
128
|
"chromadb": "^3.2.2",
|
|
126
129
|
"husky": "^9.1.7",
|
|
127
130
|
"ioredis": "^5.9.2",
|
package/dist/dsl/summary.d.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Summary strategy for progressively summarizing conversation history.
|
|
3
|
-
*/
|
|
4
|
-
import type { KVMemory } from "../memory";
|
|
5
|
-
import type { ModelProvider } from "../provider";
|
|
6
|
-
import type { MaybePromise, PromptRole, PromptScope, ProviderToolIO, ScopeChildren } from "../types";
|
|
7
|
-
/**
|
|
8
|
-
* Stored summary data persisted across renders.
|
|
9
|
-
*/
|
|
10
|
-
export interface StoredSummary {
|
|
11
|
-
/** The summary text content */
|
|
12
|
-
content: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Context passed to the summarizer function.
|
|
16
|
-
*/
|
|
17
|
-
export interface SummarizerContext {
|
|
18
|
-
/** The subtree being summarized */
|
|
19
|
-
target: PromptScope<ProviderToolIO>;
|
|
20
|
-
/** Previous summary to build upon (null if first summary) */
|
|
21
|
-
existingSummary: string | null;
|
|
22
|
-
/** Provider in scope, if any */
|
|
23
|
-
provider?: ModelProvider<unknown, ProviderToolIO>;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Function that generates summaries.
|
|
27
|
-
*/
|
|
28
|
-
export type Summarizer = (ctx: SummarizerContext) => MaybePromise<string>;
|
|
29
|
-
interface SummaryProps<TToolIO extends ProviderToolIO = ProviderToolIO> {
|
|
30
|
-
/** Unique identifier for this summary in the store */
|
|
31
|
-
id: string;
|
|
32
|
-
/** Storage adapter for persisting summaries */
|
|
33
|
-
store: KVMemory<StoredSummary>;
|
|
34
|
-
/**
|
|
35
|
-
* Function that generates summaries.
|
|
36
|
-
* If omitted, uses the ModelProvider from render options with a default prompt.
|
|
37
|
-
*/
|
|
38
|
-
summarize?: Summarizer;
|
|
39
|
-
/** Priority for this scope (higher number = reduced first). Default: 0 */
|
|
40
|
-
priority?: number;
|
|
41
|
-
/** Role for the summary message. Default: "system" */
|
|
42
|
-
role?: PromptRole;
|
|
43
|
-
/** Content to potentially summarize */
|
|
44
|
-
children?: ScopeChildren<TToolIO>;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* A scope that summarizes its content when the prompt needs to shrink.
|
|
48
|
-
*/
|
|
49
|
-
export declare function Summary<TToolIO extends ProviderToolIO>({ id, store, summarize, priority, role, children, }: SummaryProps<TToolIO>): PromptScope<TToolIO>;
|
|
50
|
-
export {};
|
|
51
|
-
//# sourceMappingURL=summary.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EACV,YAAY,EACZ,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"}
|
package/dist/dsl/summary.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
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
|
package/dist/dsl/summary.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/dsl/summary.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AASnC,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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VectorSearch async component for RAG-style retrieval.
|
|
3
|
-
*/
|
|
4
|
-
import type { VectorMemory } from "../memory";
|
|
5
|
-
import type { PromptScope, ProviderToolIO } from "../types";
|
|
6
|
-
interface VectorSearchProps<T = unknown> {
|
|
7
|
-
/** Vector memory store to search */
|
|
8
|
-
store: VectorMemory<T>;
|
|
9
|
-
/** Query string */
|
|
10
|
-
query: string;
|
|
11
|
-
/** Maximum number of results to return */
|
|
12
|
-
limit: number;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Renders vector search results into a scoped message.
|
|
16
|
-
*/
|
|
17
|
-
export declare function VectorSearch<T = unknown, TToolIO extends ProviderToolIO = ProviderToolIO>({ store, query, limit, }: VectorSearchProps<T>): Promise<PromptScope<TToolIO>>;
|
|
18
|
-
export {};
|
|
19
|
-
//# sourceMappingURL=vector-search.d.ts.map
|