@executioncontrolprotocol/runtime 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/dist/engine/runner.d.ts.map +1 -1
- package/dist/engine/runner.js +153 -10
- package/dist/engine/runner.js.map +1 -1
- package/dist/engine/types.d.ts +56 -1
- package/dist/engine/types.d.ts.map +1 -1
- package/dist/extensions/builtin.d.ts +6 -0
- package/dist/extensions/builtin.d.ts.map +1 -1
- package/dist/extensions/builtin.js +7 -0
- package/dist/extensions/builtin.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/plugins/index.d.ts +8 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +7 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/memory/index.d.ts +32 -0
- package/dist/plugins/memory/index.d.ts.map +1 -0
- package/dist/plugins/memory/index.js +34 -0
- package/dist/plugins/memory/index.js.map +1 -0
- package/dist/plugins/memory/sqlite-memory-store.d.ts +16 -0
- package/dist/plugins/memory/sqlite-memory-store.d.ts.map +1 -0
- package/dist/plugins/memory/sqlite-memory-store.js +215 -0
- package/dist/plugins/memory/sqlite-memory-store.js.map +1 -0
- package/dist/plugins/memory/types.d.ts +109 -0
- package/dist/plugins/memory/types.d.ts.map +1 -0
- package/dist/plugins/memory/types.js +11 -0
- package/dist/plugins/memory/types.js.map +1 -0
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/openai/openai-provider.d.ts.map +1 -1
- package/dist/providers/openai/openai-provider.js +16 -5
- package/dist/providers/openai/openai-provider.js.map +1 -1
- package/dist/providers/provider-init-error.d.ts +11 -0
- package/dist/providers/provider-init-error.d.ts.map +1 -0
- package/dist/providers/provider-init-error.js +13 -0
- package/dist/providers/provider-init-error.js.map +1 -0
- package/dist/tracing/collector.d.ts.map +1 -1
- package/dist/tracing/collector.js +4 -1
- package/dist/tracing/collector.js.map +1 -1
- package/package.json +26 -3
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Long-term memory plugin — builtin SQLite-backed store.
|
|
3
|
+
*
|
|
4
|
+
* Exposes a MemoryStore for policy-controlled, executor-scoped long-term memory.
|
|
5
|
+
* Access is explicit: executors must declare memory in the Context and have
|
|
6
|
+
* memoryAccess policy allowing read/write.
|
|
7
|
+
*
|
|
8
|
+
* @category Plugins
|
|
9
|
+
*/
|
|
10
|
+
export type { MemoryRecord, MemoryGetOptions, MemoryListOptions, MemoryStore, SqliteMemoryStoreConfig, } from "./types.js";
|
|
11
|
+
export { createSqliteMemoryStore } from "./sqlite-memory-store.js";
|
|
12
|
+
import type { ExtensionVersion } from "@executioncontrolprotocol/spec";
|
|
13
|
+
import type { ExtensionRegistry } from "../../extensions/registry.js";
|
|
14
|
+
import type { MemoryStore } from "./types.js";
|
|
15
|
+
/**
|
|
16
|
+
* Factory returned by the memory plugin's create(). The host calls open()
|
|
17
|
+
* once to obtain the store (async because sql.js loads wasm).
|
|
18
|
+
*
|
|
19
|
+
* @category Plugins
|
|
20
|
+
*/
|
|
21
|
+
export interface MemoryPluginInstance {
|
|
22
|
+
/** Open the store (load DB from disk if present). */
|
|
23
|
+
open(): Promise<MemoryStore>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Register the built-in memory plugin in the extension registry.
|
|
27
|
+
* The plugin creates a SQLite-backed store (sql.js) for long-term memory.
|
|
28
|
+
*/
|
|
29
|
+
export declare function registerBuiltinMemoryPlugin(registry: ExtensionRegistry, config?: {
|
|
30
|
+
version?: ExtensionVersion;
|
|
31
|
+
}): void;
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,qDAAqD;IACrD,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,GAAE;IAAE,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAAO,GAC1C,IAAI,CAmBN"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Long-term memory plugin — builtin SQLite-backed store.
|
|
3
|
+
*
|
|
4
|
+
* Exposes a MemoryStore for policy-controlled, executor-scoped long-term memory.
|
|
5
|
+
* Access is explicit: executors must declare memory in the Context and have
|
|
6
|
+
* memoryAccess policy allowing read/write.
|
|
7
|
+
*
|
|
8
|
+
* @category Plugins
|
|
9
|
+
*/
|
|
10
|
+
export { createSqliteMemoryStore } from "./sqlite-memory-store.js";
|
|
11
|
+
import { createSqliteMemoryStore } from "./sqlite-memory-store.js";
|
|
12
|
+
/**
|
|
13
|
+
* Register the built-in memory plugin in the extension registry.
|
|
14
|
+
* The plugin creates a SQLite-backed store (sql.js) for long-term memory.
|
|
15
|
+
*/
|
|
16
|
+
export function registerBuiltinMemoryPlugin(registry, config = {}) {
|
|
17
|
+
const version = config.version ?? "0.3.0";
|
|
18
|
+
registry.registerPlugin({
|
|
19
|
+
id: "memory",
|
|
20
|
+
kind: "plugin",
|
|
21
|
+
sourceType: "builtin",
|
|
22
|
+
version,
|
|
23
|
+
description: "Built-in long-term memory store (SQLite via sql.js). Policy-controlled, executor-scoped; does not inject memory by default.",
|
|
24
|
+
create(pluginConfig) {
|
|
25
|
+
const cfg = (pluginConfig ?? {});
|
|
26
|
+
return {
|
|
27
|
+
async open() {
|
|
28
|
+
return createSqliteMemoryStore(cfg);
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAKnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAcnE;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAA2B,EAC3B,SAAyC,EAAE;IAE3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC;IAE1C,QAAQ,CAAC,cAAc,CAAC;QACtB,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,SAAS;QACrB,OAAO;QACP,WAAW,EACT,6HAA6H;QAC/H,MAAM,CAAC,YAAsC;YAC3C,MAAM,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAA4B,CAAC;YAC5D,OAAO;gBACL,KAAK,CAAC,IAAI;oBACR,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC;gBACtC,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite-backed long-term memory store using sql.js (portable, no native deps).
|
|
3
|
+
*
|
|
4
|
+
* Persists to a single file per namespace. Safe for multiple runs; loads on
|
|
5
|
+
* first use and saves on close (and optionally after each write if needed).
|
|
6
|
+
*
|
|
7
|
+
* @category Plugins
|
|
8
|
+
*/
|
|
9
|
+
import type { SqliteMemoryStoreConfig } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Create and initialize a SQLite-backed memory store. Uses sql.js; in Node
|
|
12
|
+
* the wasm file is resolved from the package dist. Persists to a file under
|
|
13
|
+
* dataDir (or current working directory).
|
|
14
|
+
*/
|
|
15
|
+
export declare function createSqliteMemoryStore(config?: SqliteMemoryStoreConfig): Promise<import("./types.js").MemoryStore>;
|
|
16
|
+
//# sourceMappingURL=sqlite-memory-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-memory-store.d.ts","sourceRoot":"","sources":["../../../src/plugins/memory/sqlite-memory-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAIV,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAuBpB;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,GAAE,uBAA4B,GACnC,OAAO,CAAC,OAAO,YAAY,EAAE,WAAW,CAAC,CAuM3C"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite-backed long-term memory store using sql.js (portable, no native deps).
|
|
3
|
+
*
|
|
4
|
+
* Persists to a single file per namespace. Safe for multiple runs; loads on
|
|
5
|
+
* first use and saves on close (and optionally after each write if needed).
|
|
6
|
+
*
|
|
7
|
+
* @category Plugins
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
|
|
10
|
+
import { dirname, join } from "node:path";
|
|
11
|
+
const TABLE = "memories";
|
|
12
|
+
const SCHEMA = `
|
|
13
|
+
CREATE TABLE IF NOT EXISTS ${TABLE} (
|
|
14
|
+
id TEXT PRIMARY KEY,
|
|
15
|
+
scope TEXT NOT NULL,
|
|
16
|
+
executor_name TEXT NOT NULL,
|
|
17
|
+
summary TEXT NOT NULL,
|
|
18
|
+
payload TEXT,
|
|
19
|
+
created_at TEXT NOT NULL,
|
|
20
|
+
updated_at TEXT NOT NULL
|
|
21
|
+
);
|
|
22
|
+
CREATE INDEX IF NOT EXISTS idx_memories_scope_executor ON ${TABLE}(scope, executor_name);
|
|
23
|
+
CREATE INDEX IF NOT EXISTS idx_memories_created_at ON ${TABLE}(created_at);
|
|
24
|
+
`;
|
|
25
|
+
/**
|
|
26
|
+
* Rough chars-to-tokens ratio for truncation (approx 4 chars per token).
|
|
27
|
+
*/
|
|
28
|
+
const CHARS_PER_TOKEN = 4;
|
|
29
|
+
/**
|
|
30
|
+
* Create and initialize a SQLite-backed memory store. Uses sql.js; in Node
|
|
31
|
+
* the wasm file is resolved from the package dist. Persists to a file under
|
|
32
|
+
* dataDir (or current working directory).
|
|
33
|
+
*/
|
|
34
|
+
export async function createSqliteMemoryStore(config = {}) {
|
|
35
|
+
const initSqlJs = (await import("sql.js")).default;
|
|
36
|
+
const SQL = await initSqlJs();
|
|
37
|
+
const dataDir = config.dataDir ?? join(process.cwd(), ".ecp");
|
|
38
|
+
const filename = config.filename ?? "ecp-memory.sqlite";
|
|
39
|
+
const namespace = config.namespace ?? "default";
|
|
40
|
+
const safeNamespace = namespace.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
41
|
+
const filePath = join(dataDir, safeNamespace + "-" + filename);
|
|
42
|
+
let db;
|
|
43
|
+
if (existsSync(filePath)) {
|
|
44
|
+
const buf = readFileSync(filePath);
|
|
45
|
+
db = new SQL.Database(new Uint8Array(buf));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
db = new SQL.Database();
|
|
49
|
+
}
|
|
50
|
+
db.run(SCHEMA);
|
|
51
|
+
function save() {
|
|
52
|
+
mkdirSync(dirname(filePath), { recursive: true });
|
|
53
|
+
const data = db.export();
|
|
54
|
+
const buffer = Buffer.from(data);
|
|
55
|
+
writeFileSync(filePath, buffer);
|
|
56
|
+
}
|
|
57
|
+
const store = {
|
|
58
|
+
async get(scope, options) {
|
|
59
|
+
const maxItems = options?.maxItems ?? 20;
|
|
60
|
+
const executorName = options?.executorName;
|
|
61
|
+
const summariesOnly = options?.summariesOnly ?? true;
|
|
62
|
+
const maxTokens = options?.maxTokens;
|
|
63
|
+
let sql = `SELECT id, scope, executor_name, summary, payload, created_at, updated_at FROM ${TABLE} WHERE scope = ?`;
|
|
64
|
+
const params = [scope];
|
|
65
|
+
if (executorName) {
|
|
66
|
+
sql += " AND executor_name = ?";
|
|
67
|
+
params.push(executorName);
|
|
68
|
+
}
|
|
69
|
+
sql += " ORDER BY updated_at DESC LIMIT ?";
|
|
70
|
+
params.push(maxItems * 2);
|
|
71
|
+
const result = db.exec(sql, params);
|
|
72
|
+
if (!result.length || !result[0].values.length) {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
const columns = result[0].columns;
|
|
76
|
+
const rows = result[0].values;
|
|
77
|
+
const records = [];
|
|
78
|
+
let totalChars = 0;
|
|
79
|
+
for (const row of rows) {
|
|
80
|
+
if (records.length >= maxItems)
|
|
81
|
+
break;
|
|
82
|
+
const rec = rowToRecord(columns, row);
|
|
83
|
+
if (maxTokens !== undefined) {
|
|
84
|
+
const needChars = (rec.summary.length + (summariesOnly ? 0 : JSON.stringify(rec.payload ?? {}).length)) + 50;
|
|
85
|
+
if (totalChars + needChars > maxTokens * CHARS_PER_TOKEN)
|
|
86
|
+
break;
|
|
87
|
+
totalChars += needChars;
|
|
88
|
+
}
|
|
89
|
+
if (summariesOnly) {
|
|
90
|
+
records.push({
|
|
91
|
+
id: rec.id,
|
|
92
|
+
scope: rec.scope,
|
|
93
|
+
executorName: rec.executorName,
|
|
94
|
+
summary: rec.summary,
|
|
95
|
+
createdAt: rec.createdAt,
|
|
96
|
+
updatedAt: rec.updatedAt,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
records.push(rec);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return records;
|
|
104
|
+
},
|
|
105
|
+
async put(scope, executorName, summary, payload, id) {
|
|
106
|
+
const recordId = id ?? crypto.randomUUID();
|
|
107
|
+
const now = new Date().toISOString();
|
|
108
|
+
const payloadJson = payload !== undefined ? JSON.stringify(payload) : null;
|
|
109
|
+
db.run(`INSERT INTO ${TABLE} (id, scope, executor_name, summary, payload, created_at, updated_at)
|
|
110
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
111
|
+
ON CONFLICT(id) DO UPDATE SET summary=?, payload=?, updated_at=?`, [recordId, scope, executorName, summary, payloadJson, now, now, summary, payloadJson, now]);
|
|
112
|
+
save();
|
|
113
|
+
return {
|
|
114
|
+
id: recordId,
|
|
115
|
+
scope,
|
|
116
|
+
executorName,
|
|
117
|
+
summary,
|
|
118
|
+
payload,
|
|
119
|
+
createdAt: now,
|
|
120
|
+
updatedAt: now,
|
|
121
|
+
};
|
|
122
|
+
},
|
|
123
|
+
async list(scope, options) {
|
|
124
|
+
const limit = options?.limit ?? 100;
|
|
125
|
+
let sql = `SELECT id, summary, created_at FROM ${TABLE} WHERE scope = ?`;
|
|
126
|
+
const params = [scope];
|
|
127
|
+
if (options?.executorName) {
|
|
128
|
+
sql += " AND executor_name = ?";
|
|
129
|
+
params.push(options.executorName);
|
|
130
|
+
}
|
|
131
|
+
if (options?.olderThan) {
|
|
132
|
+
sql += " AND created_at < ?";
|
|
133
|
+
params.push(options.olderThan);
|
|
134
|
+
}
|
|
135
|
+
sql += " ORDER BY created_at DESC LIMIT ?";
|
|
136
|
+
params.push(limit);
|
|
137
|
+
const result = db.exec(sql, params);
|
|
138
|
+
if (!result.length || !result[0].values.length) {
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
141
|
+
const columns = result[0].columns;
|
|
142
|
+
const rows = result[0].values;
|
|
143
|
+
return rows.map((row) => {
|
|
144
|
+
const idx = (name) => columns.indexOf(name);
|
|
145
|
+
return {
|
|
146
|
+
id: String(row[idx("id")]),
|
|
147
|
+
summary: String(row[idx("summary")]),
|
|
148
|
+
createdAt: String(row[idx("created_at")]),
|
|
149
|
+
};
|
|
150
|
+
});
|
|
151
|
+
},
|
|
152
|
+
async delete(scope, options) {
|
|
153
|
+
if (options?.id) {
|
|
154
|
+
const stmt = db.prepare(`DELETE FROM ${TABLE} WHERE scope = ? AND id = ?`);
|
|
155
|
+
stmt.run([scope, options.id]);
|
|
156
|
+
stmt.free();
|
|
157
|
+
save();
|
|
158
|
+
return { deleted: 1 };
|
|
159
|
+
}
|
|
160
|
+
if (options?.ids?.length) {
|
|
161
|
+
const placeholders = options.ids.map(() => "?").join(",");
|
|
162
|
+
const sql = `DELETE FROM ${TABLE} WHERE scope = ? AND id IN (${placeholders})`;
|
|
163
|
+
const stmt = db.prepare(sql);
|
|
164
|
+
stmt.run([scope, ...options.ids]);
|
|
165
|
+
stmt.free();
|
|
166
|
+
save();
|
|
167
|
+
return { deleted: options.ids.length };
|
|
168
|
+
}
|
|
169
|
+
let sql = `DELETE FROM ${TABLE} WHERE scope = ?`;
|
|
170
|
+
const params = [scope];
|
|
171
|
+
if (options?.executorName) {
|
|
172
|
+
sql += " AND executor_name = ?";
|
|
173
|
+
params.push(options.executorName);
|
|
174
|
+
}
|
|
175
|
+
if (options?.olderThan) {
|
|
176
|
+
sql += " AND created_at < ?";
|
|
177
|
+
params.push(options.olderThan);
|
|
178
|
+
}
|
|
179
|
+
const stmt = db.prepare(sql);
|
|
180
|
+
stmt.run(params);
|
|
181
|
+
// Prefer sqlite3_changes via sql.js API — `SELECT changes()` after a prepared DELETE
|
|
182
|
+
// can be less reliable than `getRowsModified()` on some runtimes.
|
|
183
|
+
const deleted = typeof db.getRowsModified === "function"
|
|
184
|
+
? db.getRowsModified()
|
|
185
|
+
: (() => {
|
|
186
|
+
const countResult = db.exec("SELECT changes() as n");
|
|
187
|
+
return countResult.length > 0 && countResult[0].values.length > 0
|
|
188
|
+
? Number(countResult[0].values[0][0])
|
|
189
|
+
: 0;
|
|
190
|
+
})();
|
|
191
|
+
stmt.free();
|
|
192
|
+
save();
|
|
193
|
+
return { deleted };
|
|
194
|
+
},
|
|
195
|
+
async close() {
|
|
196
|
+
save();
|
|
197
|
+
db.close();
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
return store;
|
|
201
|
+
}
|
|
202
|
+
function rowToRecord(columns, row) {
|
|
203
|
+
const idx = (name) => columns.indexOf(name);
|
|
204
|
+
const payloadRaw = row[idx("payload")];
|
|
205
|
+
return {
|
|
206
|
+
id: String(row[idx("id")]),
|
|
207
|
+
scope: row[idx("scope")],
|
|
208
|
+
executorName: String(row[idx("executor_name")]),
|
|
209
|
+
summary: String(row[idx("summary")]),
|
|
210
|
+
payload: payloadRaw != null ? JSON.parse(String(payloadRaw)) : undefined,
|
|
211
|
+
createdAt: String(row[idx("created_at")]),
|
|
212
|
+
updatedAt: String(row[idx("updated_at")]),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=sqlite-memory-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-memory-store.js","sourceRoot":"","sources":["../../../src/plugins/memory/sqlite-memory-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Long-term memory plugin types and contracts.
|
|
3
|
+
*
|
|
4
|
+
* Memory is scoped (user, context, org), policy-controlled, and exposed to
|
|
5
|
+
* executors only when declared and allowed. Storage is pluggable; the builtin
|
|
6
|
+
* uses a portable SQLite backend (sql.js).
|
|
7
|
+
*
|
|
8
|
+
* @category Plugins
|
|
9
|
+
*/
|
|
10
|
+
import type { MemoryScope } from "@executioncontrolprotocol/spec";
|
|
11
|
+
/**
|
|
12
|
+
* A single memory record stored for an executor in a given scope.
|
|
13
|
+
*
|
|
14
|
+
* @category Plugins
|
|
15
|
+
*/
|
|
16
|
+
export interface MemoryRecord {
|
|
17
|
+
/** Unique id (e.g. UUID or row id). */
|
|
18
|
+
id: string;
|
|
19
|
+
/** Scope of the memory (user, context, org). */
|
|
20
|
+
scope: MemoryScope;
|
|
21
|
+
/** Executor name that wrote this memory (optional for shared scope). */
|
|
22
|
+
executorName: string;
|
|
23
|
+
/** Short summary used for retrieval and context injection (kept under token budget). */
|
|
24
|
+
summary: string;
|
|
25
|
+
/** Optional full payload (JSON). May be omitted when injecting to save tokens. */
|
|
26
|
+
payload?: Record<string, unknown>;
|
|
27
|
+
/** ISO-8601 created timestamp. */
|
|
28
|
+
createdAt: string;
|
|
29
|
+
/** ISO-8601 last updated timestamp. */
|
|
30
|
+
updatedAt: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Options when reading memories (to avoid blowing up context windows).
|
|
34
|
+
*
|
|
35
|
+
* @category Plugins
|
|
36
|
+
*/
|
|
37
|
+
export interface MemoryGetOptions {
|
|
38
|
+
/** Maximum number of records to return. */
|
|
39
|
+
maxItems?: number;
|
|
40
|
+
/** Approximate max tokens for combined summary text; store may truncate. */
|
|
41
|
+
maxTokens?: number;
|
|
42
|
+
/** Optional executor filter (only memories written by this executor). */
|
|
43
|
+
executorName?: string;
|
|
44
|
+
/** Optional: return only summaries (omit payload) to save tokens. */
|
|
45
|
+
summariesOnly?: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Options when listing or querying memories (e.g. for cleanup).
|
|
49
|
+
*
|
|
50
|
+
* @category Plugins
|
|
51
|
+
*/
|
|
52
|
+
export interface MemoryListOptions {
|
|
53
|
+
/** Maximum number of records to return. */
|
|
54
|
+
limit?: number;
|
|
55
|
+
/** Optional executor filter. */
|
|
56
|
+
executorName?: string;
|
|
57
|
+
/** Optional: only records older than this ISO-8601 timestamp (for cleanup). */
|
|
58
|
+
olderThan?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Contract for a long-term memory store. Implementations are pluggable;
|
|
62
|
+
* the builtin uses sql.js (SQLite) for portability.
|
|
63
|
+
*
|
|
64
|
+
* @category Plugins
|
|
65
|
+
*/
|
|
66
|
+
export interface MemoryStore {
|
|
67
|
+
/**
|
|
68
|
+
* Get memories for the given scope, optionally filtered by executor.
|
|
69
|
+
* Returns records ordered by recency (newest first), bounded by options.
|
|
70
|
+
*/
|
|
71
|
+
get(scope: MemoryScope, options?: MemoryGetOptions): Promise<MemoryRecord[]>;
|
|
72
|
+
/**
|
|
73
|
+
* Store a memory record. Id may be generated if not provided.
|
|
74
|
+
*/
|
|
75
|
+
put(scope: MemoryScope, executorName: string, summary: string, payload?: Record<string, unknown>, id?: string): Promise<MemoryRecord>;
|
|
76
|
+
/**
|
|
77
|
+
* List memory ids (and optionally summaries) for querying or cleanup.
|
|
78
|
+
*/
|
|
79
|
+
list(scope: MemoryScope, options?: MemoryListOptions): Promise<Pick<MemoryRecord, "id" | "summary" | "createdAt">[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Delete one or more memories by id. When id is omitted, may delete by scope/executor/age (implementation-defined).
|
|
82
|
+
*/
|
|
83
|
+
delete(scope: MemoryScope, options?: {
|
|
84
|
+
id?: string;
|
|
85
|
+
ids?: string[];
|
|
86
|
+
olderThan?: string;
|
|
87
|
+
executorName?: string;
|
|
88
|
+
}): Promise<{
|
|
89
|
+
deleted: number;
|
|
90
|
+
}>;
|
|
91
|
+
/**
|
|
92
|
+
* Close the store and persist data (for file-backed stores).
|
|
93
|
+
*/
|
|
94
|
+
close(): Promise<void>;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Configuration for the builtin SQLite memory store.
|
|
98
|
+
*
|
|
99
|
+
* @category Plugins
|
|
100
|
+
*/
|
|
101
|
+
export interface SqliteMemoryStoreConfig {
|
|
102
|
+
/** Directory path for the SQLite file (default: process cwd or .ecp). */
|
|
103
|
+
dataDir?: string;
|
|
104
|
+
/** Base name for the database file (default: "ecp-memory.sqlite"). */
|
|
105
|
+
filename?: string;
|
|
106
|
+
/** Context or tenant id used to namespace the file (e.g. context name + version). */
|
|
107
|
+
namespace?: string;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/memory/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IAEX,gDAAgD;IAChD,KAAK,EAAE,WAAW,CAAC;IAEnB,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC;IAErB,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;IAEhB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAElB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,qEAAqE;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,GAAG,CACD,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE3B;;OAEG;IACH,GAAG,CACD,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;OAEG;IACH,IAAI,CACF,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAEjE;;OAEG;IACH,MAAM,CACJ,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GACnF,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEhC;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Long-term memory plugin types and contracts.
|
|
3
|
+
*
|
|
4
|
+
* Memory is scoped (user, context, org), policy-controlled, and exposed to
|
|
5
|
+
* executors only when declared and allowed. Storage is pluggable; the builtin
|
|
6
|
+
* uses a portable SQLite backend (sql.js).
|
|
7
|
+
*
|
|
8
|
+
* @category Plugins
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/plugins/memory/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
|
package/dist/providers/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-provider.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAEV,eAAe,EACf,cAAc,EACd,aAAa,EAId,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-provider.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAEV,eAAe,EACf,cAAc,EACd,aAAa,EAId,MAAM,sBAAsB,CAAC;AAG9B;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA6FD;;;;GAIG;AACH,qBAAa,cAAe,YAAW,aAAa;IAClD,QAAQ,CAAC,IAAI,YAAY;IAEzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,MAAM,GAAE,oBAAyB;IA0B7C,mBAAmB,IAAI,OAAO;IAIxB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CA+ClE"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* @category Providers
|
|
8
8
|
*/
|
|
9
9
|
import OpenAI from "openai";
|
|
10
|
+
import { ProviderInitializationError } from "../provider-init-error.js";
|
|
10
11
|
function toOpenAIMessages(messages) {
|
|
11
12
|
return messages.map((msg) => {
|
|
12
13
|
switch (msg.role) {
|
|
@@ -94,11 +95,21 @@ export class OpenAIProvider {
|
|
|
94
95
|
defaultModel;
|
|
95
96
|
defaultMaxTokens;
|
|
96
97
|
constructor(config = {}) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
const apiKey = config.apiKey ?? process.env.OPENAI_API_KEY;
|
|
99
|
+
if (!apiKey) {
|
|
100
|
+
throw new ProviderInitializationError("The OPENAI_API_KEY environment variable is missing or empty; either provide it, or instantiate the OpenAI client with an apiKey option.", { hint: "Hint: set environment variable `OPENAI_API_KEY` for the OpenAI provider." });
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
this.client = new OpenAI({
|
|
104
|
+
apiKey,
|
|
105
|
+
baseURL: config.baseURL,
|
|
106
|
+
organization: config.organization,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
111
|
+
throw new ProviderInitializationError(`Failed to initialize OpenAI client: ${msg}`, { hint: "Hint: verify your OpenAI API key and provider configuration." });
|
|
112
|
+
}
|
|
102
113
|
this.defaultModel = config.defaultModel ?? "gpt-4o";
|
|
103
114
|
this.defaultMaxTokens = config.defaultMaxTokens ?? 4096;
|
|
104
115
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-provider.js","sourceRoot":"","sources":["../../../src/providers/openai/openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-provider.js","sourceRoot":"","sources":["../../../src/providers/openai/openai-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class ProviderInitializationError extends Error {
|
|
2
|
+
/**
|
|
3
|
+
* Optional human hint for the user (e.g. missing env var).
|
|
4
|
+
* Intended to be displayed by the CLI.
|
|
5
|
+
*/
|
|
6
|
+
readonly hint?: string;
|
|
7
|
+
constructor(message: string, opts?: {
|
|
8
|
+
hint?: string;
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=provider-init-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-init-error.d.ts","sourceRoot":"","sources":["../../src/providers/provider-init-error.ts"],"names":[],"mappings":"AAAA,qBAAa,2BAA4B,SAAQ,KAAK;IACpD;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO;CAK1D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export class ProviderInitializationError extends Error {
|
|
2
|
+
/**
|
|
3
|
+
* Optional human hint for the user (e.g. missing env var).
|
|
4
|
+
* Intended to be displayed by the CLI.
|
|
5
|
+
*/
|
|
6
|
+
hint;
|
|
7
|
+
constructor(message, opts = {}) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.name = "ProviderInitializationError";
|
|
10
|
+
this.hint = opts.hint;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=provider-init-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-init-error.js","sourceRoot":"","sources":["../../src/providers/provider-init-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD;;;OAGG;IACM,IAAI,CAAU;IAEvB,YAAY,OAAe,EAAE,OAA0B,EAAE;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/tracing/collector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,QAAQ,EACR,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,SAAS,CAAsE;IACvF,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IAEjD;;OAEG;IACH,YAAY,CAAC,GAAG,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI;IAKjD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE;QACd,IAAI,EAAE,QAAQ,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,MAAM;IAyBV;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE;QAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,cAAc,CAAC;QACxB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,IAAI;IAsBb;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,cAAc;
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/tracing/collector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,QAAQ,EACR,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,SAAS,CAAsE;IACvF,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IAEjD;;OAEG;IACH,YAAY,CAAC,GAAG,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI;IAKjD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE;QACd,IAAI,EAAE,QAAQ,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,MAAM;IAyBV;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE;QAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,cAAc,CAAC;QACxB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,IAAI;IAsBb;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,cAAc;IAUlB;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD;;OAEG;IACH,QAAQ,IAAI,aAAa,CAAC,SAAS,CAAC;CAGrC"}
|
|
@@ -78,9 +78,12 @@ export class TraceCollector {
|
|
|
78
78
|
* Build the finalized execution trace.
|
|
79
79
|
*/
|
|
80
80
|
buildTrace(meta) {
|
|
81
|
+
// Spans are appended on endSpan(), so array order is completion order (children
|
|
82
|
+
// before parents). Sort by step (assigned at startSpan) for chronological order.
|
|
83
|
+
const spans = [...this.spans].sort((a, b) => a.step - b.step);
|
|
81
84
|
return {
|
|
82
85
|
...meta,
|
|
83
|
-
spans
|
|
86
|
+
spans,
|
|
84
87
|
};
|
|
85
88
|
}
|
|
86
89
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/tracing/collector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;;;;;;;;GASG;AACH,MAAM,OAAO,cAAc;IACjB,KAAK,GAAgB,EAAE,CAAC;IACxB,SAAS,GAAG,IAAI,GAAG,EAA2D,CAAC;IAC/E,WAAW,GAAG,CAAC,CAAC;IACP,SAAS,GAAoB,EAAE,CAAC;IAEjD;;OAEG;IACH,YAAY,CAAC,GAAG,SAA0B;QACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAST;QACC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,EAAE,GAAG,QAAQ,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE;YACrB,IAAI,EAAE;gBACJ,EAAE;gBACF,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;gBACtC,IAAI,EAAE,IAAI,CAAC,WAAW;gBACtB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B;YACD,SAAS,EAAE,GAAG;SACf,CAAC,CAAC;QAEH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,MAAc,EAAE,SAQpB,EAAE;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAc;YACtB,GAAG,KAAK,CAAC,IAAI;YACb,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YACpC,UAAU,EAAE,GAAG,GAAG,KAAK,CAAC,SAAS;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,KAAK,EAAE,MAAM,CAAC,KAAK;SACP,CAAC;QAEf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAUV;QACC,
|
|
1
|
+
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/tracing/collector.ts"],"names":[],"mappings":"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"}
|