@amodalai/runtime 0.1.20 → 0.1.22
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/dist/src/agent/agent-runner.js +15 -5
- package/dist/src/agent/agent-runner.js.map +1 -1
- package/dist/src/agent/local-server.js +39 -35
- package/dist/src/agent/local-server.js.map +1 -1
- package/dist/src/agent/page-builder.d.ts +6 -0
- package/dist/src/agent/page-builder.js +37 -2
- package/dist/src/agent/page-builder.js.map +1 -1
- package/dist/src/agent/snapshot-server.js +2 -2
- package/dist/src/agent/snapshot-server.js.map +1 -1
- package/dist/src/agent/tool-context-builder.d.ts +1 -1
- package/dist/src/agent/tool-context-builder.js +18 -1
- package/dist/src/agent/tool-context-builder.js.map +1 -1
- package/dist/src/agent/tool-executor-local.js +20 -1
- package/dist/src/agent/tool-executor-local.js.map +1 -1
- package/dist/src/agent/tool-executor-local.test.js +1 -0
- package/dist/src/agent/tool-executor-local.test.js.map +1 -1
- package/dist/src/constants.d.ts +10 -0
- package/dist/src/constants.js +11 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.js +1 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/server.d.ts +1 -3
- package/dist/src/server.js +0 -1
- package/dist/src/server.js.map +1 -1
- package/dist/src/session/custom-tool-adapter.js +18 -0
- package/dist/src/session/custom-tool-adapter.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +7 -6
- package/dist/src/session/session-manager.js +84 -123
- package/dist/src/session/session-manager.js.map +1 -1
- package/dist/src/session/session-manager.test.js +10 -169
- package/dist/src/session/session-manager.test.js.map +1 -1
- package/dist/src/stores/pglite-store-backend.d.ts +10 -4
- package/dist/src/stores/pglite-store-backend.js +159 -111
- package/dist/src/stores/pglite-store-backend.js.map +1 -1
- package/dist/src/types.d.ts +8 -1
- package/dist/src/types.js +1 -0
- package/dist/src/types.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/dist/src/agent/routes/chat.d.ts +0 -35
- package/dist/src/agent/routes/chat.js +0 -88
- package/dist/src/agent/routes/chat.js.map +0 -1
- package/dist/src/agent/routes/chat.test.d.ts +0 -6
- package/dist/src/agent/routes/chat.test.js +0 -110
- package/dist/src/agent/routes/chat.test.js.map +0 -1
|
@@ -9,18 +9,29 @@ import { resolveTtl } from './ttl-resolver.js';
|
|
|
9
9
|
*
|
|
10
10
|
* Uses in-process WASM Postgres via @electric-sql/pglite.
|
|
11
11
|
* Data is stored in a configurable directory (default: .amodal/store-data/).
|
|
12
|
-
*
|
|
12
|
+
*
|
|
13
|
+
* All writes are serialized through a queue to prevent concurrent access
|
|
14
|
+
* issues with PGLite's single-threaded WASM engine.
|
|
13
15
|
*/
|
|
14
16
|
export class PGLiteStoreBackend {
|
|
15
17
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
18
|
db = null;
|
|
17
19
|
dataDir;
|
|
18
20
|
stores = new Map();
|
|
21
|
+
writeQueue = Promise.resolve();
|
|
19
22
|
constructor(dataDir) {
|
|
20
23
|
this.dataDir = dataDir;
|
|
21
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Serialize a write operation through the queue.
|
|
27
|
+
* Ensures PGLite only processes one write at a time.
|
|
28
|
+
*/
|
|
29
|
+
enqueue(fn) {
|
|
30
|
+
const task = this.writeQueue.then(fn, fn);
|
|
31
|
+
this.writeQueue = task.then(() => { }, () => { });
|
|
32
|
+
return task;
|
|
33
|
+
}
|
|
22
34
|
async initialize(stores) {
|
|
23
|
-
// Ensure data directory exists
|
|
24
35
|
if (this.dataDir) {
|
|
25
36
|
const { mkdirSync } = await import('node:fs');
|
|
26
37
|
mkdirSync(this.dataDir, { recursive: true });
|
|
@@ -30,7 +41,6 @@ export class PGLiteStoreBackend {
|
|
|
30
41
|
for (const store of stores) {
|
|
31
42
|
this.stores.set(store.name, store);
|
|
32
43
|
}
|
|
33
|
-
// Create tables
|
|
34
44
|
await this.db.exec(`
|
|
35
45
|
CREATE TABLE IF NOT EXISTS store_documents (
|
|
36
46
|
app_id TEXT NOT NULL,
|
|
@@ -67,132 +77,173 @@ export class PGLiteStoreBackend {
|
|
|
67
77
|
ON store_document_versions (app_id, store, key, version DESC);
|
|
68
78
|
`);
|
|
69
79
|
}
|
|
80
|
+
ensureDb() {
|
|
81
|
+
if (!this.db) {
|
|
82
|
+
throw new Error('PGLite store backend is not initialized or was closed');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
70
85
|
async get(appId, store, key) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
86
|
+
this.ensureDb();
|
|
87
|
+
try {
|
|
88
|
+
const result = await this.db.query(`SELECT key, app_id, store, version, payload, meta, expires_at
|
|
89
|
+
FROM store_documents
|
|
90
|
+
WHERE app_id = $1 AND store = $2 AND key = $3`, [appId, store, key]);
|
|
91
|
+
if (result.rows.length === 0)
|
|
92
|
+
return null;
|
|
93
|
+
return this.rowToDocument(result.rows[0]);
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
process.stderr.write(`[store] get error: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
75
97
|
return null;
|
|
76
|
-
|
|
77
|
-
return this.rowToDocument(row);
|
|
98
|
+
}
|
|
78
99
|
}
|
|
79
100
|
async put(appId, store, key, payload, meta) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
AND version <= (
|
|
106
|
-
SELECT COALESCE(MAX(version), 0) - $4
|
|
107
|
-
FROM store_document_versions
|
|
101
|
+
this.ensureDb();
|
|
102
|
+
return this.enqueue(async () => {
|
|
103
|
+
const storeConfig = this.stores.get(store);
|
|
104
|
+
const ttlSeconds = resolveTtl(storeConfig?.ttl, payload);
|
|
105
|
+
const maxVersions = storeConfig?.history?.versions;
|
|
106
|
+
const fullMeta = {
|
|
107
|
+
computedAt: new Date().toISOString(),
|
|
108
|
+
stale: false,
|
|
109
|
+
...meta,
|
|
110
|
+
ttl: ttlSeconds,
|
|
111
|
+
};
|
|
112
|
+
const expiresAt = ttlSeconds
|
|
113
|
+
? new Date(Date.now() + ttlSeconds * 1000).toISOString()
|
|
114
|
+
: null;
|
|
115
|
+
try {
|
|
116
|
+
// Use upsert to avoid read-then-write race
|
|
117
|
+
const existing = await this.db.query(`SELECT version, payload, meta FROM store_documents
|
|
118
|
+
WHERE app_id = $1 AND store = $2 AND key = $3`, [appId, store, key]);
|
|
119
|
+
if (existing.rows.length > 0) {
|
|
120
|
+
const oldVersion = Number(existing.rows[0].version);
|
|
121
|
+
const newVersion = oldVersion + 1;
|
|
122
|
+
if (maxVersions && maxVersions > 0) {
|
|
123
|
+
await this.db.query(`INSERT INTO store_document_versions (app_id, store, key, version, payload, meta)
|
|
124
|
+
VALUES ($1, $2, $3, $4, $5, $6)`, [appId, store, key, oldVersion, JSON.stringify(existing.rows[0].payload), JSON.stringify(existing.rows[0].meta)]);
|
|
125
|
+
await this.db.query(`DELETE FROM store_document_versions
|
|
108
126
|
WHERE app_id = $1 AND store = $2 AND key = $3
|
|
109
|
-
|
|
127
|
+
AND version <= (
|
|
128
|
+
SELECT COALESCE(MAX(version), 0) - $4
|
|
129
|
+
FROM store_document_versions
|
|
130
|
+
WHERE app_id = $1 AND store = $2 AND key = $3
|
|
131
|
+
)`, [appId, store, key, maxVersions]);
|
|
132
|
+
}
|
|
133
|
+
await this.db.query(`UPDATE store_documents
|
|
134
|
+
SET version = $4, payload = $5, meta = $6, expires_at = $7, updated_at = NOW()
|
|
135
|
+
WHERE app_id = $1 AND store = $2 AND key = $3`, [appId, store, key, newVersion, JSON.stringify(payload), JSON.stringify(fullMeta), expiresAt]);
|
|
136
|
+
return { stored: true, key, version: newVersion, previousVersion: oldVersion };
|
|
137
|
+
}
|
|
138
|
+
await this.db.query(`INSERT INTO store_documents (app_id, store, key, version, payload, meta, expires_at)
|
|
139
|
+
VALUES ($1, $2, $3, 1, $4, $5, $6)`, [appId, store, key, JSON.stringify(payload), JSON.stringify(fullMeta), expiresAt]);
|
|
140
|
+
return { stored: true, key, version: 1 };
|
|
110
141
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
// Insert new document
|
|
118
|
-
await this.db.query(`INSERT INTO store_documents (app_id, store, key, version, payload, meta, expires_at)
|
|
119
|
-
VALUES ($1, $2, $3, 1, $4, $5, $6)`, [appId, store, key, JSON.stringify(payload), JSON.stringify(fullMeta), expiresAt]);
|
|
120
|
-
return { stored: true, key, version: 1 };
|
|
142
|
+
catch (err) {
|
|
143
|
+
process.stderr.write(`[store] put error (${store}/${key}): ${err instanceof Error ? err.message : String(err)}\n`);
|
|
144
|
+
return { stored: false, key, version: 0 };
|
|
145
|
+
}
|
|
146
|
+
});
|
|
121
147
|
}
|
|
122
148
|
async list(appId, store, options = {}) {
|
|
149
|
+
this.ensureDb();
|
|
123
150
|
const { filter, sort, limit = 100, offset = 0, includeStale = false } = options;
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
151
|
+
try {
|
|
152
|
+
let where = 'WHERE app_id = $1 AND store = $2';
|
|
153
|
+
const params = [appId, store];
|
|
154
|
+
let paramIndex = 3;
|
|
155
|
+
if (!includeStale) {
|
|
156
|
+
where += ` AND (expires_at IS NULL OR expires_at > NOW())`;
|
|
157
|
+
}
|
|
158
|
+
if (filter) {
|
|
159
|
+
for (const [field, value] of Object.entries(filter)) {
|
|
160
|
+
where += ` AND payload->>'${field}' = $${paramIndex}`;
|
|
161
|
+
params.push(String(value));
|
|
162
|
+
paramIndex++;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const countResult = await this.db.query(`SELECT COUNT(*)::int AS total FROM store_documents ${where}`, params);
|
|
166
|
+
const total = Number(countResult.rows[0].total);
|
|
167
|
+
let orderBy = 'ORDER BY updated_at DESC';
|
|
168
|
+
if (sort) {
|
|
169
|
+
const desc = sort.startsWith('-');
|
|
170
|
+
const field = desc ? sort.slice(1) : sort;
|
|
171
|
+
const dir = desc ? 'DESC' : 'ASC';
|
|
172
|
+
orderBy = `ORDER BY payload->>'${field}' ${dir}`;
|
|
137
173
|
}
|
|
174
|
+
const result = await this.db.query(`SELECT key, app_id, store, version, payload, meta, expires_at
|
|
175
|
+
FROM store_documents ${where} ${orderBy}
|
|
176
|
+
LIMIT $${paramIndex} OFFSET $${paramIndex + 1}`, [...params, limit, offset]);
|
|
177
|
+
const documents = result.rows.map((row) => this.rowToDocument(row));
|
|
178
|
+
return { documents, total, hasMore: offset + documents.length < total };
|
|
138
179
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
// Build ORDER BY
|
|
143
|
-
let orderBy = 'ORDER BY updated_at DESC';
|
|
144
|
-
if (sort) {
|
|
145
|
-
const desc = sort.startsWith('-');
|
|
146
|
-
const field = desc ? sort.slice(1) : sort;
|
|
147
|
-
const dir = desc ? 'DESC' : 'ASC';
|
|
148
|
-
orderBy = `ORDER BY payload->>'${field}' ${dir}`;
|
|
180
|
+
catch (err) {
|
|
181
|
+
process.stderr.write(`[store] list error (${store}): ${err instanceof Error ? err.message : String(err)}\n`);
|
|
182
|
+
return { documents: [], total: 0, hasMore: false };
|
|
149
183
|
}
|
|
150
|
-
// Fetch documents
|
|
151
|
-
const result = await this.db.query(`SELECT key, app_id, store, version, payload, meta, expires_at
|
|
152
|
-
FROM store_documents ${where} ${orderBy}
|
|
153
|
-
LIMIT $${paramIndex} OFFSET $${paramIndex + 1}`, [...params, limit, offset]);
|
|
154
|
-
const documents = result.rows.map((row) => this.rowToDocument(row));
|
|
155
|
-
return {
|
|
156
|
-
documents,
|
|
157
|
-
total,
|
|
158
|
-
hasMore: offset + documents.length < total,
|
|
159
|
-
};
|
|
160
184
|
}
|
|
161
185
|
async delete(appId, store, key) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
186
|
+
this.ensureDb();
|
|
187
|
+
return this.enqueue(async () => {
|
|
188
|
+
try {
|
|
189
|
+
await this.db.query(`DELETE FROM store_document_versions WHERE app_id = $1 AND store = $2 AND key = $3`, [appId, store, key]);
|
|
190
|
+
const result = await this.db.query(`DELETE FROM store_documents WHERE app_id = $1 AND store = $2 AND key = $3`, [appId, store, key]);
|
|
191
|
+
return (result.affectedRows ?? 0) > 0;
|
|
192
|
+
}
|
|
193
|
+
catch (err) {
|
|
194
|
+
process.stderr.write(`[store] delete error (${store}/${key}): ${err instanceof Error ? err.message : String(err)}\n`);
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
});
|
|
166
198
|
}
|
|
167
199
|
async history(appId, store, key) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
200
|
+
this.ensureDb();
|
|
201
|
+
try {
|
|
202
|
+
const result = await this.db.query(`SELECT key, $1::text AS app_id, store, version, payload, meta
|
|
203
|
+
FROM store_document_versions
|
|
204
|
+
WHERE app_id = $1 AND store = $2 AND key = $3
|
|
205
|
+
ORDER BY version DESC`, [appId, store, key]);
|
|
206
|
+
return result.rows.map((row) => ({
|
|
207
|
+
key: String(row['key']),
|
|
208
|
+
appId: String(row['app_id']),
|
|
209
|
+
store: String(row['store']),
|
|
210
|
+
version: Number(row['version']),
|
|
211
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
212
|
+
payload: (typeof row['payload'] === 'string' ? JSON.parse(row['payload']) : row['payload']),
|
|
213
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
214
|
+
meta: (typeof row['meta'] === 'string' ? JSON.parse(row['meta']) : row['meta']),
|
|
215
|
+
}));
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
process.stderr.write(`[store] history error (${store}/${key}): ${err instanceof Error ? err.message : String(err)}\n`);
|
|
219
|
+
return [];
|
|
220
|
+
}
|
|
182
221
|
}
|
|
183
222
|
async purgeExpired(appId, store) {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
223
|
+
this.ensureDb();
|
|
224
|
+
return this.enqueue(async () => {
|
|
225
|
+
try {
|
|
226
|
+
let query = `DELETE FROM store_documents WHERE app_id = $1 AND expires_at IS NOT NULL AND expires_at <= NOW()`;
|
|
227
|
+
const params = [appId];
|
|
228
|
+
if (store) {
|
|
229
|
+
query += ` AND store = $2`;
|
|
230
|
+
params.push(store);
|
|
231
|
+
}
|
|
232
|
+
const result = await this.db.query(query, params);
|
|
233
|
+
return result.affectedRows ?? 0;
|
|
234
|
+
}
|
|
235
|
+
catch (err) {
|
|
236
|
+
process.stderr.write(`[store] purgeExpired error: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
237
|
+
return 0;
|
|
238
|
+
}
|
|
239
|
+
});
|
|
192
240
|
}
|
|
193
241
|
async close() {
|
|
194
242
|
if (this.db) {
|
|
195
|
-
|
|
243
|
+
try {
|
|
244
|
+
await this.db.close();
|
|
245
|
+
}
|
|
246
|
+
catch { /* best effort */ }
|
|
196
247
|
this.db = null;
|
|
197
248
|
}
|
|
198
249
|
}
|
|
@@ -215,9 +266,6 @@ export class PGLiteStoreBackend {
|
|
|
215
266
|
}
|
|
216
267
|
/**
|
|
217
268
|
* Create a PGLite store backend.
|
|
218
|
-
*
|
|
219
|
-
* @param stores Store definitions for initialization
|
|
220
|
-
* @param dataDir Optional PGLite data directory (default: in-memory)
|
|
221
269
|
*/
|
|
222
270
|
export async function createPGLiteStoreBackend(stores, dataDir) {
|
|
223
271
|
const backend = new PGLiteStoreBackend(dataDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pglite-store-backend.js","sourceRoot":"","sources":["../../../src/stores/pglite-store-backend.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAE7C
|
|
1
|
+
{"version":3,"file":"pglite-store-backend.js","sourceRoot":"","sources":["../../../src/stores/pglite-store-backend.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -81,6 +81,7 @@ export declare enum SSEEventType {
|
|
|
81
81
|
PlanMode = "plan_mode",
|
|
82
82
|
FieldScrub = "field_scrub",
|
|
83
83
|
ConfirmationRequired = "confirmation_required",
|
|
84
|
+
ToolLog = "tool_log",
|
|
84
85
|
Error = "error",
|
|
85
86
|
Done = "done"
|
|
86
87
|
}
|
|
@@ -208,7 +209,13 @@ export interface SSEConfirmationRequiredEvent {
|
|
|
208
209
|
escalated: boolean;
|
|
209
210
|
timestamp: string;
|
|
210
211
|
}
|
|
211
|
-
export type SSEEvent = SSEInitEvent | SSETextDeltaEvent | SSEToolCallStartEvent | SSEToolCallResultEvent | SSESubagentEvent | SSESkillActivatedEvent | SSEWidgetEvent | SSEKBProposalEvent | SSECredentialSavedEvent | SSEApprovedEvent | SSEAskUserEvent | SSEExploreStartEvent | SSEExploreEndEvent | SSEPlanModeEvent | SSEFieldScrubEvent | SSEConfirmationRequiredEvent | SSEErrorEvent | SSEDoneEvent;
|
|
212
|
+
export type SSEEvent = SSEInitEvent | SSETextDeltaEvent | SSEToolCallStartEvent | SSEToolCallResultEvent | SSESubagentEvent | SSESkillActivatedEvent | SSEWidgetEvent | SSEKBProposalEvent | SSECredentialSavedEvent | SSEApprovedEvent | SSEAskUserEvent | SSEExploreStartEvent | SSEExploreEndEvent | SSEPlanModeEvent | SSEFieldScrubEvent | SSEConfirmationRequiredEvent | SSEToolLogEvent | SSEErrorEvent | SSEDoneEvent;
|
|
213
|
+
export interface SSEToolLogEvent {
|
|
214
|
+
type: SSEEventType.ToolLog;
|
|
215
|
+
tool_name: string;
|
|
216
|
+
message: string;
|
|
217
|
+
timestamp: string;
|
|
218
|
+
}
|
|
212
219
|
export interface ServerConfig {
|
|
213
220
|
/** Port to listen on (default 3000) */
|
|
214
221
|
port: number;
|
package/dist/src/types.js
CHANGED
|
@@ -44,6 +44,7 @@ export var SSEEventType;
|
|
|
44
44
|
SSEEventType["PlanMode"] = "plan_mode";
|
|
45
45
|
SSEEventType["FieldScrub"] = "field_scrub";
|
|
46
46
|
SSEEventType["ConfirmationRequired"] = "confirmation_required";
|
|
47
|
+
SSEEventType["ToolLog"] = "tool_log";
|
|
47
48
|
SSEEventType["Error"] = "error";
|
|
48
49
|
SSEEventType["Done"] = "done";
|
|
49
50
|
})(SSEEventType || (SSEEventType = {}));
|
package/dist/src/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,4CAA4C;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,qDAAqD;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,8CAA8C;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,yEAAyE;IACzE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,kFAAkF;IAClF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,0DAA0D;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAoCH,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,4CAA4C;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,qDAAqD;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,8CAA8C;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,yEAAyE;IACzE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,kFAAkF;IAClF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,0DAA0D;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAoCH,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,CAAN,IAAY,YAoBX;AApBD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,wCAAwB,CAAA;IACxB,iDAAiC,CAAA;IACjC,mDAAmC,CAAA;IACnC,gDAAgC,CAAA;IAChC,kDAAkC,CAAA;IAClC,iCAAiB,CAAA;IACjB,0CAA0B,CAAA;IAC1B,oDAAoC,CAAA;IACpC,qCAAqB,CAAA;IACrB,oCAAoB,CAAA;IACpB,8CAA8B,CAAA;IAC9B,0CAA0B,CAAA;IAC1B,sCAAsB,CAAA;IACtB,0CAA0B,CAAA;IAC1B,8DAA8C,CAAA;IAC9C,oCAAoB,CAAA;IACpB,+BAAe,CAAA;IACf,6BAAa,CAAA;AACf,CAAC,EApBW,YAAY,KAAZ,YAAY,QAoBvB"}
|