@framers/agentos 0.15.56 → 0.15.57
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.
|
@@ -7,10 +7,19 @@
|
|
|
7
7
|
* ## Import strategy
|
|
8
8
|
*
|
|
9
9
|
* For each conversation object in `conversations.json`:
|
|
10
|
-
* 1.
|
|
10
|
+
* 1. The conversation has one row in the `conversations` table, named after
|
|
11
|
+
* it: `cv_chatgpt_` and the SHA-256 of the export's id for it
|
|
12
|
+
* (`conversation_id`, else `id`), else of its title and creation time. A
|
|
13
|
+
* later import of the conversation finds the row by that name, through a
|
|
14
|
+
* rename and without a `create_time` when the export names it by an id; a
|
|
15
|
+
* conversation the export names by neither gets a row of its own at each
|
|
16
|
+
* import. When the export's update time is later than the row's, the row
|
|
17
|
+
* takes it and the conversation's title.
|
|
11
18
|
* 2. Every user/assistant message pair is encoded as an **episodic memory trace**
|
|
12
19
|
* whose content is `"[user]: {user_text}\n[assistant]: {assistant_text}"`.
|
|
13
20
|
* This preserves conversational context in a single retrievable unit.
|
|
21
|
+
* With deduplication on (the default), the trace is named after the brain
|
|
22
|
+
* and its text, `mt_chatgpt_` and their SHA-256.
|
|
14
23
|
* 3. System messages and tool messages are skipped (they are not episodic memories).
|
|
15
24
|
*
|
|
16
25
|
* ## ChatGPT export format
|
|
@@ -62,14 +71,39 @@ export declare class ChatGptImporter {
|
|
|
62
71
|
/**
|
|
63
72
|
* Import a single ChatGPT conversation object.
|
|
64
73
|
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* into episodic
|
|
74
|
+
* Writes the conversation's `conversations` row, or finds the one it has
|
|
75
|
+
* (see `_conversationRow`), and then iterates through the message mapping in
|
|
76
|
+
* tree order (BFS), pairing adjacent user/assistant messages into episodic
|
|
77
|
+
* memory traces whose metadata names that row.
|
|
68
78
|
*
|
|
69
79
|
* @param convo - Raw ChatGPT conversation object.
|
|
70
80
|
* @param result - Mutable result accumulator.
|
|
71
81
|
*/
|
|
72
82
|
private _importConversation;
|
|
83
|
+
/**
|
|
84
|
+
* The id of a conversation's `conversations` row. A conversation the export
|
|
85
|
+
* names by an id, or by no id but with a `create_time`, has a row named after
|
|
86
|
+
* it (`conversationRowName`), which a later import of it finds by that name:
|
|
87
|
+
* through a rename and without a `create_time` when the export names it by
|
|
88
|
+
* an id. The row is written with an insert that does nothing when the brain
|
|
89
|
+
* holds a row of that name, so two imports that write one conversation's row
|
|
90
|
+
* at the same time, in one process or in two, write one row and both file
|
|
91
|
+
* under it. A row of any other name is never taken, since nothing in it says
|
|
92
|
+
* which conversation it is: the conversation gets the row it names beside it,
|
|
93
|
+
* and the pairs filed under the other keep naming that one. A conversation the
|
|
94
|
+
* export names by neither has nothing to find it by: each import writes it a
|
|
95
|
+
* row of its own. The row then takes the conversation's title and the export's
|
|
96
|
+
* update time when that update time is later than the row's. The row's
|
|
97
|
+
* metadata records the export's id as `chatgpt_id`.
|
|
98
|
+
*
|
|
99
|
+
* @param exportId - The export's id for the conversation, when it names one.
|
|
100
|
+
* @param title - The conversation's title.
|
|
101
|
+
* @param exportedCreatedAt - Its creation time in ms, when the export gives one.
|
|
102
|
+
* @param createdAt - The creation time a new row takes, in ms.
|
|
103
|
+
* @param updatedAt - Its update time, in ms.
|
|
104
|
+
* @returns The row's id.
|
|
105
|
+
*/
|
|
106
|
+
private _conversationRow;
|
|
73
107
|
/**
|
|
74
108
|
* Insert a single episodic memory trace derived from a message pair.
|
|
75
109
|
*
|
|
@@ -79,7 +113,12 @@ export declare class ChatGptImporter {
|
|
|
79
113
|
* duplicate, whichever writer stored it. `import` first files the traces an
|
|
80
114
|
* older release wrote with `scope_id` `''` under the scope id their metadata
|
|
81
115
|
* names (`fillScopeIds`), so another scope id's trace is not taken for a
|
|
82
|
-
* duplicate.
|
|
116
|
+
* duplicate. With deduplication on, the trace is named after the brain and
|
|
117
|
+
* the pair's text, and written with an insert that does nothing when the
|
|
118
|
+
* brain holds a trace of that name, so two imports that store one pair at the
|
|
119
|
+
* same time, each after finding no duplicate of it, store one trace: the
|
|
120
|
+
* import whose insert wrote nothing counts the pair as a duplicate. With it
|
|
121
|
+
* off, each import stores the pair again, under a random id.
|
|
83
122
|
*
|
|
84
123
|
* @param content - The `[user]:...\n[assistant]:...` content string.
|
|
85
124
|
* @param createdAt - Unix timestamp (ms) of the user message.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatGptImporter.d.ts","sourceRoot":"","sources":["../../../../src/cognition/memory/io/ChatGptImporter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ChatGptImporter.d.ts","sourceRoot":"","sources":["../../../../src/cognition/memory/io/ChatGptImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAiFzD;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAId,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC;;OAEG;gBAC0B,KAAK,EAAE,KAAK;IAMzC;;;;;;OAMG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IA6C/F;;;;;;;;;;OAUG;YACW,mBAAmB;IAoGjC;;;;;;;;;;;;;;;;;;;;;;OAsBG;YACW,gBAAgB;IAkC9B;;;;;;;;;;;;;;;;;;;;OAoBG;YACW,oBAAoB;CAuDnC"}
|
|
@@ -7,10 +7,19 @@
|
|
|
7
7
|
* ## Import strategy
|
|
8
8
|
*
|
|
9
9
|
* For each conversation object in `conversations.json`:
|
|
10
|
-
* 1.
|
|
10
|
+
* 1. The conversation has one row in the `conversations` table, named after
|
|
11
|
+
* it: `cv_chatgpt_` and the SHA-256 of the export's id for it
|
|
12
|
+
* (`conversation_id`, else `id`), else of its title and creation time. A
|
|
13
|
+
* later import of the conversation finds the row by that name, through a
|
|
14
|
+
* rename and without a `create_time` when the export names it by an id; a
|
|
15
|
+
* conversation the export names by neither gets a row of its own at each
|
|
16
|
+
* import. When the export's update time is later than the row's, the row
|
|
17
|
+
* takes it and the conversation's title.
|
|
11
18
|
* 2. Every user/assistant message pair is encoded as an **episodic memory trace**
|
|
12
19
|
* whose content is `"[user]: {user_text}\n[assistant]: {assistant_text}"`.
|
|
13
20
|
* This preserves conversational context in a single retrievable unit.
|
|
21
|
+
* With deduplication on (the default), the trace is named after the brain
|
|
22
|
+
* and its text, `mt_chatgpt_` and their SHA-256.
|
|
14
23
|
* 3. System messages and tool messages are skipped (they are not episodic memories).
|
|
15
24
|
*
|
|
16
25
|
* ## ChatGPT export format
|
|
@@ -38,6 +47,33 @@ import { sha256 } from '../core/util/crossPlatformCrypto.js';
|
|
|
38
47
|
import { v4 as uuidv4 } from 'uuid';
|
|
39
48
|
import { fillScopeIds } from '../retrieval/store/migrations/v2-to-v3.js';
|
|
40
49
|
import { duplicateTraceCondition, duplicateTraceParams } from './importScope.js';
|
|
50
|
+
/** The export's id for a conversation: its `conversation_id`, else its `id`, when either is a non-empty string. */
|
|
51
|
+
function exportedConversationId(convo) {
|
|
52
|
+
for (const value of [convo.conversation_id, convo.id]) {
|
|
53
|
+
if (typeof value === 'string' && value !== '')
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The name of a conversation's `conversations` row: `cv_chatgpt_` and the SHA-256 of what names the
|
|
60
|
+
* conversation, the export's id for it, else its title and creation time. Undefined for a conversation the
|
|
61
|
+
* export names by neither, an id or a creation time.
|
|
62
|
+
*/
|
|
63
|
+
async function conversationRowName(exportId, title, exportedCreatedAt) {
|
|
64
|
+
if (exportId !== undefined)
|
|
65
|
+
return `cv_chatgpt_${await sha256(JSON.stringify(['id', exportId]))}`;
|
|
66
|
+
if (exportedCreatedAt === undefined)
|
|
67
|
+
return undefined;
|
|
68
|
+
return `cv_chatgpt_${await sha256(JSON.stringify(['title', title, exportedCreatedAt]))}`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* An insert of one row into `table` that does nothing when the brain holds a row of its primary key
|
|
72
|
+
* `(brain_id, id)`, on SQLite and PostgreSQL; any other failure, such as a missing value, still fails it.
|
|
73
|
+
*/
|
|
74
|
+
function insertUnlessHeld(table, columns, values) {
|
|
75
|
+
return `INSERT INTO ${table} (${columns.join(', ')}) VALUES (${values.join(', ')}) ON CONFLICT (brain_id, id) DO NOTHING`;
|
|
76
|
+
}
|
|
41
77
|
// ---------------------------------------------------------------------------
|
|
42
78
|
// ChatGptImporter
|
|
43
79
|
// ---------------------------------------------------------------------------
|
|
@@ -111,9 +147,10 @@ export class ChatGptImporter {
|
|
|
111
147
|
/**
|
|
112
148
|
* Import a single ChatGPT conversation object.
|
|
113
149
|
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
* into episodic
|
|
150
|
+
* Writes the conversation's `conversations` row, or finds the one it has
|
|
151
|
+
* (see `_conversationRow`), and then iterates through the message mapping in
|
|
152
|
+
* tree order (BFS), pairing adjacent user/assistant messages into episodic
|
|
153
|
+
* memory traces whose metadata names that row.
|
|
117
154
|
*
|
|
118
155
|
* @param convo - Raw ChatGPT conversation object.
|
|
119
156
|
* @param result - Mutable result accumulator.
|
|
@@ -122,21 +159,12 @@ export class ChatGptImporter {
|
|
|
122
159
|
const title = convo.title ?? 'Untitled';
|
|
123
160
|
const createdAt = convo.create_time ? Math.round(convo.create_time * 1000) : Date.now();
|
|
124
161
|
const updatedAt = convo.update_time ? Math.round(convo.update_time * 1000) : createdAt;
|
|
125
|
-
|
|
126
|
-
const conversationId = `cv_${uuidv4()}`;
|
|
162
|
+
let conversationId;
|
|
127
163
|
try {
|
|
128
|
-
|
|
129
|
-
await this.brain.run(dialect.insertOrIgnore('conversations', ['brain_id', 'id', 'title', 'created_at', 'updated_at', 'metadata'], ['?', '?', '?', '?', '?', '?']), [
|
|
130
|
-
this.brain.brainId,
|
|
131
|
-
conversationId,
|
|
132
|
-
title,
|
|
133
|
-
createdAt,
|
|
134
|
-
updatedAt,
|
|
135
|
-
JSON.stringify({ source: 'chatgpt_export' }),
|
|
136
|
-
]);
|
|
164
|
+
conversationId = await this._conversationRow(exportedConversationId(convo), title, convo.create_time ? createdAt : undefined, createdAt, updatedAt);
|
|
137
165
|
}
|
|
138
166
|
catch (err) {
|
|
139
|
-
result.errors.push(`Conversation
|
|
167
|
+
result.errors.push(`Conversation row error for "${title}": ${String(err)}`);
|
|
140
168
|
return;
|
|
141
169
|
}
|
|
142
170
|
if (!convo.mapping)
|
|
@@ -201,6 +229,46 @@ export class ChatGptImporter {
|
|
|
201
229
|
}
|
|
202
230
|
}
|
|
203
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* The id of a conversation's `conversations` row. A conversation the export
|
|
234
|
+
* names by an id, or by no id but with a `create_time`, has a row named after
|
|
235
|
+
* it (`conversationRowName`), which a later import of it finds by that name:
|
|
236
|
+
* through a rename and without a `create_time` when the export names it by
|
|
237
|
+
* an id. The row is written with an insert that does nothing when the brain
|
|
238
|
+
* holds a row of that name, so two imports that write one conversation's row
|
|
239
|
+
* at the same time, in one process or in two, write one row and both file
|
|
240
|
+
* under it. A row of any other name is never taken, since nothing in it says
|
|
241
|
+
* which conversation it is: the conversation gets the row it names beside it,
|
|
242
|
+
* and the pairs filed under the other keep naming that one. A conversation the
|
|
243
|
+
* export names by neither has nothing to find it by: each import writes it a
|
|
244
|
+
* row of its own. The row then takes the conversation's title and the export's
|
|
245
|
+
* update time when that update time is later than the row's. The row's
|
|
246
|
+
* metadata records the export's id as `chatgpt_id`.
|
|
247
|
+
*
|
|
248
|
+
* @param exportId - The export's id for the conversation, when it names one.
|
|
249
|
+
* @param title - The conversation's title.
|
|
250
|
+
* @param exportedCreatedAt - Its creation time in ms, when the export gives one.
|
|
251
|
+
* @param createdAt - The creation time a new row takes, in ms.
|
|
252
|
+
* @param updatedAt - Its update time, in ms.
|
|
253
|
+
* @returns The row's id.
|
|
254
|
+
*/
|
|
255
|
+
async _conversationRow(exportId, title, exportedCreatedAt, createdAt, updatedAt) {
|
|
256
|
+
const brainId = this.brain.brainId;
|
|
257
|
+
const named = await conversationRowName(exportId, title, exportedCreatedAt);
|
|
258
|
+
const conversationId = named ?? `cv_${uuidv4()}`;
|
|
259
|
+
await this.brain.run(insertUnlessHeld('conversations', ['brain_id', 'id', 'title', 'created_at', 'updated_at', 'metadata'], ['?', '?', '?', '?', '?', '?']), [
|
|
260
|
+
brainId,
|
|
261
|
+
conversationId,
|
|
262
|
+
title,
|
|
263
|
+
createdAt,
|
|
264
|
+
updatedAt,
|
|
265
|
+
JSON.stringify(exportId === undefined ? { source: 'chatgpt_export' } : { source: 'chatgpt_export', chatgpt_id: exportId }),
|
|
266
|
+
]);
|
|
267
|
+
if (named !== undefined) {
|
|
268
|
+
await this.brain.run('UPDATE conversations SET updated_at = ?, title = ? WHERE brain_id = ? AND id = ? AND updated_at < ?', [updatedAt, title, brainId, conversationId, updatedAt]);
|
|
269
|
+
}
|
|
270
|
+
return conversationId;
|
|
271
|
+
}
|
|
204
272
|
/**
|
|
205
273
|
* Insert a single episodic memory trace derived from a message pair.
|
|
206
274
|
*
|
|
@@ -210,7 +278,12 @@ export class ChatGptImporter {
|
|
|
210
278
|
* duplicate, whichever writer stored it. `import` first files the traces an
|
|
211
279
|
* older release wrote with `scope_id` `''` under the scope id their metadata
|
|
212
280
|
* names (`fillScopeIds`), so another scope id's trace is not taken for a
|
|
213
|
-
* duplicate.
|
|
281
|
+
* duplicate. With deduplication on, the trace is named after the brain and
|
|
282
|
+
* the pair's text, and written with an insert that does nothing when the
|
|
283
|
+
* brain holds a trace of that name, so two imports that store one pair at the
|
|
284
|
+
* same time, each after finding no duplicate of it, store one trace: the
|
|
285
|
+
* import whose insert wrote nothing counts the pair as a duplicate. With it
|
|
286
|
+
* off, each import stores the pair again, under a random id.
|
|
214
287
|
*
|
|
215
288
|
* @param content - The `[user]:...\n[assistant]:...` content string.
|
|
216
289
|
* @param createdAt - Unix timestamp (ms) of the user message.
|
|
@@ -219,8 +292,9 @@ export class ChatGptImporter {
|
|
|
219
292
|
*/
|
|
220
293
|
async _insertEpisodicTrace(content, createdAt, conversationId, result, options) {
|
|
221
294
|
const hash = await sha256(content);
|
|
295
|
+
const dedup = options?.dedup ?? true;
|
|
222
296
|
// Dedup check.
|
|
223
|
-
if (
|
|
297
|
+
if (dedup) {
|
|
224
298
|
const existing = await this.brain.get(`SELECT id FROM memory_traces
|
|
225
299
|
WHERE brain_id = ? AND scope = 'user' AND scope_id = ''
|
|
226
300
|
AND ${duplicateTraceCondition(this.brain)}
|
|
@@ -231,12 +305,12 @@ export class ChatGptImporter {
|
|
|
231
305
|
}
|
|
232
306
|
}
|
|
233
307
|
try {
|
|
234
|
-
await this.brain.run(
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
308
|
+
const written = await this.brain.run(insertUnlessHeld('memory_traces', [
|
|
309
|
+
'brain_id', 'id', 'type', 'scope', 'content', 'embedding', 'strength', 'created_at', 'last_accessed',
|
|
310
|
+
'retrieval_count', 'tags', 'emotions', 'metadata', 'deleted', 'scope_id',
|
|
311
|
+
], ['?', '?', "'episodic'", "'user'", '?', 'NULL', '1.0', '?', 'NULL', '0', "'[]'", "'{}'", '?', '0', "''"]), [
|
|
238
312
|
this.brain.brainId,
|
|
239
|
-
`mt_${uuidv4()}`,
|
|
313
|
+
dedup ? `mt_chatgpt_${await sha256(JSON.stringify([this.brain.brainId, content]))}` : `mt_${uuidv4()}`,
|
|
240
314
|
content,
|
|
241
315
|
createdAt,
|
|
242
316
|
JSON.stringify({
|
|
@@ -245,7 +319,10 @@ export class ChatGptImporter {
|
|
|
245
319
|
conversation_id: conversationId,
|
|
246
320
|
}),
|
|
247
321
|
]);
|
|
248
|
-
|
|
322
|
+
if (written.changes > 0)
|
|
323
|
+
result.imported++;
|
|
324
|
+
else
|
|
325
|
+
result.skipped++;
|
|
249
326
|
}
|
|
250
327
|
catch (err) {
|
|
251
328
|
result.errors.push(`Trace insert error: ${String(err)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatGptImporter.js","sourceRoot":"","sources":["../../../../src/cognition/memory/io/ChatGptImporter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ChatGptImporter.js","sourceRoot":"","sources":["../../../../src/cognition/memory/io/ChatGptImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AA4CjF,mHAAmH;AACnH,SAAS,sBAAsB,CAAC,KAA0B;IACxD,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;IAC9D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,mBAAmB,CAChC,QAA4B,EAC5B,KAAa,EACb,iBAAqC;IAErC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,cAAc,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAClG,IAAI,iBAAiB,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACtD,OAAO,cAAc,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,KAAa,EAAE,OAAiB,EAAE,MAAgB;IAC1E,OAAO,eAAe,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,yCAAyC,CAAC;AAC5H,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,YAA6B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAE7C,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,OAAsC;QACrE,MAAM,MAAM,GAAiB,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAErE,yBAAyB;QACzB,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC5C,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,aAAoC,CAAC;QACzC,IAAI,CAAC;YACH,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YACnF,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,0GAA0G;QAC1G,IAAI,OAAO,EAAE,KAAK,IAAI,IAAI;YAAE,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEvF,sCAAsC;QACtC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAE5E;;;;;;;;;;OAUG;IACK,KAAK,CAAC,mBAAmB,CAC/B,KAA0B,EAC1B,MAAoB,EACpB,OAAsC;QAEtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACxF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvF,IAAI,cAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,sBAAsB,CAAC,KAAK,CAAC,EAC7B,KAAK,EACL,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACzC,SAAS,EACT,SAAS,CACV,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,KAAK,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO;QAE3B,2CAA2C;QAC3C,0EAA0E;QAC1E,yEAAyE;QACzE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;QAE5B,2DAA2D;QAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CACvC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,CAC3B,CAAC;QAEF,iCAAiC;QACjC,MAAM,eAAe,GAAwD,EAAE,CAAC;QAEhF,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;YAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,SAAS;YAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEpB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAI,GAAG,CAAC,OAAO,CAAC,KAAmB;qBAC/C,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;qBACjD,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEZ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;oBACrB,eAAe,CAAC,IAAI,CAAC;wBACnB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;wBACrB,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;qBACvE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,6BAA6B;YAC7B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,wEAAwE;QACxE,+CAA+C;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAE,CAAC;YAEhC,+BAA+B;YAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;gBAAE,SAAS;YAE3D,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,wCAAwC;gBACxC,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpC,MAAM,aAAa,GACjB,IAAI,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAE9C,MAAM,OAAO,GACX,aAAa;oBACX,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,kBAAkB,aAAa,EAAE;oBACtD,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC;gBAE5B,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBAEpF,sEAAsE;gBACtE,IAAI,aAAa;oBAAE,CAAC,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACK,KAAK,CAAC,gBAAgB,CAC5B,QAA4B,EAC5B,KAAa,EACb,iBAAqC,EACrC,SAAiB,EACjB,SAAiB;QAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC5E,MAAM,cAAc,GAAG,KAAK,IAAI,MAAM,MAAM,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAClB,gBAAgB,CACd,eAAe,EACf,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,EACnE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAC/B,EACD;YACE,OAAO;YACP,cAAc;YACd,KAAK;YACL,SAAS;YACT,SAAS;YACT,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;SAC3H,CACF,CAAC;QACF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAClB,qGAAqG,EACrG,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,CACvD,CAAC;QACJ,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACK,KAAK,CAAC,oBAAoB,CAChC,OAAe,EACf,SAAiB,EACjB,cAAsB,EACtB,MAAoB,EACpB,OAAsC;QAEtC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC;QAErC,eAAe;QACf,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CACnC;;kBAEU,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;kBACnC,EACV,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAC7D,CAAC;YAEF,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAClC,gBAAgB,CACd,eAAe,EACf;gBACE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe;gBACpG,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;aACzE,EACD,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CACzG,EACD;gBACE,IAAI,CAAC,KAAK,CAAC,OAAO;gBAClB,KAAK,CAAC,CAAC,CAAC,cAAc,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,EAAE;gBACtG,OAAO;gBACP,SAAS;gBACT,IAAI,CAAC,SAAS,CAAC;oBACb,WAAW,EAAE,IAAI;oBACjB,MAAM,EAAE,gBAAgB;oBACxB,eAAe,EAAE,cAAc;iBAChC,CAAC;aACH,CACF,CAAC;YAEF,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC;gBAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;;gBACtC,MAAM,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@framers/agentos",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.57",
|
|
4
4
|
"description": "AgentOS: open-source TypeScript framework for autonomous AI agents. Unified graph orchestration, cognitive memory, runtime tool forging, multi-tier guardrails, voice pipeline, and 11 LLM providers.",
|
|
5
5
|
"homepage": "https://agentos.sh",
|
|
6
6
|
"repository": {
|