opcode-pg-memory 2.2.8 → 2.3.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.
Files changed (76) hide show
  1. package/dist/cli.js +232 -214
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +30 -21006
  5. package/dist/index.js.map +1 -0
  6. package/dist/mcp-server.js +319 -302
  7. package/dist/mcp-server.js.map +1 -0
  8. package/dist/src/cache/semantic-cache.js +399 -0
  9. package/dist/src/cache/semantic-cache.js.map +1 -0
  10. package/dist/src/cli.js +404 -0
  11. package/dist/src/cli.js.map +1 -0
  12. package/dist/src/config.d.ts +5 -0
  13. package/dist/src/config.d.ts.map +1 -1
  14. package/dist/src/config.js +89 -0
  15. package/dist/src/config.js.map +1 -0
  16. package/dist/src/db/init-db.js +545 -0
  17. package/dist/src/db/init-db.js.map +1 -0
  18. package/dist/src/hooks/message-part-updated.js +203 -0
  19. package/dist/src/hooks/message-part-updated.js.map +1 -0
  20. package/dist/src/hooks/message-updated.js +347 -0
  21. package/dist/src/hooks/message-updated.js.map +1 -0
  22. package/dist/src/hooks/session-compacting.js +179 -0
  23. package/dist/src/hooks/session-compacting.js.map +1 -0
  24. package/dist/src/hooks/session-completed.js +337 -0
  25. package/dist/src/hooks/session-completed.js.map +1 -0
  26. package/dist/src/hooks/session-created.js +206 -0
  27. package/dist/src/hooks/session-created.js.map +1 -0
  28. package/dist/src/hooks/tool-execute.js +267 -0
  29. package/dist/src/hooks/tool-execute.js.map +1 -0
  30. package/dist/src/index.d.ts +1 -0
  31. package/dist/src/index.d.ts.map +1 -1
  32. package/dist/src/index.js +643 -0
  33. package/dist/src/index.js.map +1 -0
  34. package/dist/src/mcp/hindsight-reflect-omo.js +318 -0
  35. package/dist/src/mcp/hindsight-reflect-omo.js.map +1 -0
  36. package/dist/src/mcp/hindsight-reflect.js +838 -0
  37. package/dist/src/mcp/hindsight-reflect.js.map +1 -0
  38. package/dist/src/mcp/recall-memory-omo.js +263 -0
  39. package/dist/src/mcp/recall-memory-omo.js.map +1 -0
  40. package/dist/src/mcp/recall-memory.d.ts +6 -0
  41. package/dist/src/mcp/recall-memory.d.ts.map +1 -1
  42. package/dist/src/mcp/recall-memory.js +900 -0
  43. package/dist/src/mcp/recall-memory.js.map +1 -0
  44. package/dist/src/omo/adapter.js +583 -0
  45. package/dist/src/omo/adapter.js.map +1 -0
  46. package/dist/src/omo/types.js +44 -0
  47. package/dist/src/omo/types.js.map +1 -0
  48. package/dist/src/services/db-polling.d.ts +30 -0
  49. package/dist/src/services/db-polling.d.ts.map +1 -0
  50. package/dist/src/services/db-polling.js +97 -0
  51. package/dist/src/services/db-polling.js.map +1 -0
  52. package/dist/src/services/event-synchronizer.d.ts +15 -0
  53. package/dist/src/services/event-synchronizer.d.ts.map +1 -0
  54. package/dist/src/services/event-synchronizer.js +119 -0
  55. package/dist/src/services/event-synchronizer.js.map +1 -0
  56. package/dist/src/services/keyword.js +29 -0
  57. package/dist/src/services/keyword.js.map +1 -0
  58. package/dist/src/services/logger.js +42 -0
  59. package/dist/src/services/logger.js.map +1 -0
  60. package/dist/src/services/opencode-schema-adapter.d.ts +34 -0
  61. package/dist/src/services/opencode-schema-adapter.d.ts.map +1 -0
  62. package/dist/src/services/opencode-schema-adapter.js +96 -0
  63. package/dist/src/services/opencode-schema-adapter.js.map +1 -0
  64. package/dist/src/services/privacy.js +23 -0
  65. package/dist/src/services/privacy.js.map +1 -0
  66. package/dist/src/topic/segment-manager.js +447 -0
  67. package/dist/src/topic/segment-manager.js.map +1 -0
  68. package/dist/src/types.d.ts +20 -2
  69. package/dist/src/types.d.ts.map +1 -1
  70. package/dist/src/types.js +8 -0
  71. package/dist/src/types.js.map +1 -0
  72. package/dist/src/utils/embedding.js +180 -0
  73. package/dist/src/utils/embedding.js.map +1 -0
  74. package/dist/src/utils/token-budget.js +152 -0
  75. package/dist/src/utils/token-budget.js.map +1 -0
  76. package/package.json +6 -5
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleSessionCreated = handleSessionCreated;
4
+ const token_budget_1 = require("../utils/token-budget");
5
+ const logger_1 = require("../services/logger");
6
+ const logger = (0, logger_1.createLogger)('session-created');
7
+ const DEFAULT_CONFIG = {
8
+ contextLimitRatio: 0.05,
9
+ minTokens: 500,
10
+ maxTokens: 4000,
11
+ minConfidence: 0.5,
12
+ minWeight: 0.3
13
+ };
14
+ /**
15
+ * 处理 session.created 事件
16
+ *
17
+ * 功能:
18
+ * 1. 创建或更新 sessions 表记录
19
+ * 2. 基于 Token 预算检索 entities 和 reflections
20
+ * 3. 优先注入 permanent 级别事实,其次 project,最后 session
21
+ *
22
+ * 签名规范:(input, output) => Promise<void>
23
+ * output 为可变对象,通过突变 output 影响行为
24
+ */
25
+ async function handleSessionCreated(input, output, // ✅ 添加 output 参数
26
+ pool, config = {}) {
27
+ const mergedConfig = { ...DEFAULT_CONFIG, ...config };
28
+ const { session } = input;
29
+ logger.info(`Session created: ${session.id}`);
30
+ try {
31
+ // 1. 创建或更新 session 记录
32
+ await upsertSession(session, pool);
33
+ // 2. 计算 token 预算
34
+ const budget = (0, token_budget_1.calculateTokenBudget)(session.model.contextLimit, {
35
+ contextLimitRatio: mergedConfig.contextLimitRatio,
36
+ minTokens: mergedConfig.minTokens,
37
+ maxTokens: mergedConfig.maxTokens
38
+ });
39
+ logger.info(`Token budget for injection: ${budget}`);
40
+ // 3. 检索事实
41
+ const facts = await retrieveFactsForInjection(session.id, budget, pool, mergedConfig);
42
+ logger.info(`Retrieved ${facts.length} facts for injection`);
43
+ // 4. 格式化输出 → 突变 output
44
+ const memories = facts.map(f => f.content);
45
+ // ✅ 正确的钩子签名:mutate output.context
46
+ output.context = { memories };
47
+ }
48
+ catch (error) {
49
+ logger.error('Error handling session.created:', error);
50
+ // 出错时不阻断主流程,output 保持为空对象
51
+ }
52
+ }
53
+ /**
54
+ * 创建或更新 session 记录
55
+ */
56
+ async function upsertSession(session, pool) {
57
+ const query = `
58
+ INSERT INTO sessions (external_id, project_id, model_context_limit, metadata)
59
+ VALUES ($1, $2, $3, $4)
60
+ ON CONFLICT (external_id)
61
+ DO UPDATE SET
62
+ project_id = EXCLUDED.project_id,
63
+ model_context_limit = EXCLUDED.model_context_limit,
64
+ updated_at = NOW(),
65
+ metadata = sessions.metadata || EXCLUDED.metadata
66
+ `;
67
+ await pool.query(query, [
68
+ session.id,
69
+ session.projectId || null,
70
+ session.model.contextLimit,
71
+ JSON.stringify({
72
+ modelId: session.model.id,
73
+ modelName: session.model.name
74
+ })
75
+ ]);
76
+ }
77
+ /**
78
+ * 检索用于注入的事实
79
+ * 优先顺序:permanent > project > session
80
+ */
81
+ async function retrieveFactsForInjection(sessionId, budget, pool, config) {
82
+ const facts = [];
83
+ let usedTokens = 0;
84
+ // 按 tier 优先级检索
85
+ const tierOrder = ['permanent', 'project', 'session'];
86
+ const tierAllocation = {
87
+ permanent: Math.floor(budget * 0.5),
88
+ project: Math.floor(budget * 0.3),
89
+ session: Math.floor(budget * 0.2)
90
+ };
91
+ for (const tier of tierOrder) {
92
+ const tierBudget = tierAllocation[tier];
93
+ let tierUsed = 0;
94
+ // 检索 entities
95
+ const entities = await retrieveEntitiesByTier(sessionId, tier, pool, config);
96
+ for (const entity of entities) {
97
+ const formatted = (0, token_budget_1.formatEntity)(entity);
98
+ const tokens = (0, token_budget_1.estimateTokens)(formatted);
99
+ if (tierUsed + tokens <= tierBudget && usedTokens + tokens <= budget) {
100
+ facts.push({
101
+ id: entity.id,
102
+ type: 'entity',
103
+ content: formatted,
104
+ tier,
105
+ tokens,
106
+ relevanceScore: entity.weight,
107
+ metadata: { entityId: entity.id, entityType: entity.type }
108
+ });
109
+ tierUsed += tokens;
110
+ usedTokens += tokens;
111
+ }
112
+ else {
113
+ break;
114
+ }
115
+ }
116
+ // 如果 tier 预算还有剩余,尝试检索 reflections
117
+ if (tierUsed < tierBudget && usedTokens < budget) {
118
+ const reflections = await retrieveReflectionsByTier(sessionId, tier, pool, config);
119
+ for (const reflection of reflections) {
120
+ const formatted = (0, token_budget_1.formatReflection)(reflection);
121
+ const tokens = (0, token_budget_1.estimateTokens)(formatted);
122
+ if (tierUsed + tokens <= tierBudget && usedTokens + tokens <= budget) {
123
+ facts.push({
124
+ id: reflection.id,
125
+ type: 'reflection',
126
+ content: formatted,
127
+ tier,
128
+ tokens,
129
+ relevanceScore: reflection.confidence,
130
+ metadata: { reflectionId: reflection.id, patternType: reflection.pattern_type }
131
+ });
132
+ tierUsed += tokens;
133
+ usedTokens += tokens;
134
+ }
135
+ else {
136
+ break;
137
+ }
138
+ }
139
+ }
140
+ }
141
+ return facts;
142
+ }
143
+ /**
144
+ * 按 tier 检索 entities
145
+ */
146
+ async function retrieveEntitiesByTier(sessionId, tier, pool, config) {
147
+ const query = `
148
+ SELECT * FROM entities
149
+ WHERE (session_id = $1 OR tier = 'permanent')
150
+ AND tier = $2
151
+ AND weight >= $3
152
+ AND confidence >= $4
153
+ ORDER BY weight DESC, last_seen_at DESC
154
+ LIMIT 50
155
+ `;
156
+ const result = await pool.query(query, [
157
+ sessionId,
158
+ tier,
159
+ config.minWeight,
160
+ config.minConfidence
161
+ ]);
162
+ return result.rows.map(row => ({
163
+ id: row.id,
164
+ session_id: row.session_id,
165
+ name: row.name,
166
+ type: row.type,
167
+ tier: row.tier,
168
+ weight: row.weight,
169
+ description: row.description,
170
+ embedding: row.embedding,
171
+ first_seen_at: row.first_seen_at,
172
+ last_seen_at: row.last_seen_at,
173
+ confidence: row.confidence,
174
+ metadata: row.metadata
175
+ }));
176
+ }
177
+ /**
178
+ * 按 tier 检索 reflections
179
+ */
180
+ async function retrieveReflectionsByTier(sessionId, tier, pool, config) {
181
+ // reflections 通过关联的 session 和 observation 推断 tier
182
+ // 简化处理:检索与当前 session 相关的 reflections
183
+ const query = `
184
+ SELECT * FROM reflections
185
+ WHERE session_id = $1
186
+ AND confidence >= $2
187
+ ORDER BY confidence DESC, created_at DESC
188
+ LIMIT 20
189
+ `;
190
+ const result = await pool.query(query, [
191
+ sessionId,
192
+ config.minConfidence
193
+ ]);
194
+ return result.rows.map(row => ({
195
+ id: row.id,
196
+ session_id: row.session_id,
197
+ summary: row.summary,
198
+ source_observation_ids: row.source_observation_ids || [],
199
+ confidence: row.confidence,
200
+ pattern_type: row.pattern_type,
201
+ created_at: row.created_at,
202
+ embedding: row.embedding,
203
+ metadata: row.metadata
204
+ }));
205
+ }
206
+ //# sourceMappingURL=session-created.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-created.js","sourceRoot":"","sources":["../../../src/hooks/session-created.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleToolExecuteBefore = handleToolExecuteBefore;
4
+ exports.handleToolExecuteAfter = handleToolExecuteAfter;
5
+ const privacy_1 = require("../services/privacy");
6
+ const logger_1 = require("../services/logger");
7
+ const logger = (0, logger_1.createLogger)('tool-execute');
8
+ const DEFAULT_CONFIG = {
9
+ maxInputSummaryLength: 500,
10
+ maxOutputSummaryLength: 1000,
11
+ defaultImportance: 3
12
+ };
13
+ /**
14
+ * 处理 tool.execute.before 事件
15
+ *
16
+ * 功能:
17
+ * 1. 记录工具调用参数摘要到 observations 表
18
+ * 2. 零 token 开销,仅做记录
19
+ *
20
+ * 签名规范:(input, output) => Promise<void>
21
+ */
22
+ async function handleToolExecuteBefore(input, output, // ✅ 添加 output 参数
23
+ pool, config = {}) {
24
+ const mergedConfig = { ...DEFAULT_CONFIG, ...config };
25
+ const { session, tool, messageId } = input;
26
+ logger.info(`Tool execute before: ${tool.name}`);
27
+ try {
28
+ // 获取 session 内部 ID
29
+ const sessionResult = await pool.query('SELECT id FROM session_map WHERE opencode_session_id = $1', [session.id]);
30
+ if (sessionResult.rows.length === 0) {
31
+ logger.warn(`Session not found: ${session.id}`);
32
+ return; // ✅ 返回 void 而非 {}
33
+ }
34
+ const sessionInternalId = sessionResult.rows[0].id;
35
+ // 生成输入摘要
36
+ const inputSummary = summarizeToolInput(tool.parameters, mergedConfig.maxInputSummaryLength);
37
+ // 创建观察记录(此时还没有输出)
38
+ await pool.query(`
39
+ INSERT INTO observations (
40
+ session_id,
41
+ tool_name,
42
+ tool_input_summary,
43
+ message_id,
44
+ importance,
45
+ metadata
46
+ ) VALUES ($1, $2, $3, $4, $5, $6)
47
+ `, [
48
+ sessionInternalId,
49
+ tool.name,
50
+ inputSummary,
51
+ messageId,
52
+ mergedConfig.defaultImportance,
53
+ JSON.stringify({
54
+ event: 'tool.execute.before',
55
+ parameters: sanitizeParameters(tool.parameters)
56
+ })
57
+ ]);
58
+ logger.info(`Recorded tool input: ${tool.name}`);
59
+ // ✅ 正确的钩子签名:不返回任何值(void)
60
+ }
61
+ catch (error) {
62
+ logger.error('Error handling tool.execute.before:', error);
63
+ // 出错时不阻断主流程
64
+ }
65
+ }
66
+ /**
67
+ * 处理 tool.execute.after 事件
68
+ *
69
+ * 功能:
70
+ * 1. 生成工具输出摘要
71
+ * 2. 异步向量化摘要内容
72
+ * 3. 更新 observations 表
73
+ * 4. 记录 token 使用
74
+ *
75
+ * 签名规范:(input, output) => Promise<void>
76
+ */
77
+ async function handleToolExecuteAfter(input, output, // ✅ 添加 output 参数
78
+ pool, config = {}) {
79
+ const mergedConfig = { ...DEFAULT_CONFIG, ...config };
80
+ const { session, tool, result, messageId, executionTimeMs } = input;
81
+ logger.info(`Tool execute after: ${tool.name}, success: ${result.success}`);
82
+ try {
83
+ // 获取 session 内部 ID
84
+ const sessionResult = await pool.query('SELECT id FROM session_map WHERE opencode_session_id = $1', [session.id]);
85
+ if (sessionResult.rows.length === 0) {
86
+ logger.warn(`Session not found: ${session.id}`);
87
+ return; // ✅ 返回 void
88
+ }
89
+ const sessionInternalId = sessionResult.rows[0].id;
90
+ // 生成输出摘要
91
+ const outputSummary = summarizeToolOutput(result, mergedConfig.maxOutputSummaryLength);
92
+ // 计算重要性(基于执行结果)
93
+ const importance = calculateImportance(result, executionTimeMs);
94
+ // 更新观察记录
95
+ const existingResult = await pool.query(`
96
+ SELECT id FROM observations
97
+ WHERE session_id = $1 AND message_id = $2 AND tool_name = $3
98
+ ORDER BY created_at DESC
99
+ LIMIT 1
100
+ `, [sessionInternalId, messageId, tool.name]);
101
+ if (existingResult.rows.length > 0) {
102
+ const observationId = existingResult.rows[0].id;
103
+ await pool.query(`
104
+ UPDATE observations
105
+ SET tool_output_summary = $1,
106
+ importance = $2,
107
+ metadata = metadata || $3
108
+ WHERE id = $4
109
+ `, [
110
+ outputSummary,
111
+ importance,
112
+ JSON.stringify({
113
+ executionTimeMs,
114
+ success: result.success,
115
+ event: 'tool.execute.after'
116
+ }),
117
+ observationId
118
+ ]);
119
+ logger.info(`Updated observation: ${observationId}`);
120
+ }
121
+ else {
122
+ await pool.query(`
123
+ INSERT INTO observations (
124
+ session_id,
125
+ tool_name,
126
+ tool_output_summary,
127
+ message_id,
128
+ importance,
129
+ metadata
130
+ ) VALUES ($1, $2, $3, $4, $5, $6)
131
+ `, [
132
+ sessionInternalId,
133
+ tool.name,
134
+ outputSummary,
135
+ messageId,
136
+ importance,
137
+ JSON.stringify({
138
+ executionTimeMs,
139
+ success: result.success,
140
+ event: 'tool.execute.after'
141
+ })
142
+ ]);
143
+ logger.info('Created new observation for tool output');
144
+ }
145
+ // 记录 token 使用(估算)
146
+ const estimatedTokens = estimateToolTokens(tool.name, result);
147
+ await pool.query(`
148
+ INSERT INTO token_usage_log (session_id, operation_type, tokens_used, metadata)
149
+ VALUES ($1, $2, $3, $4)
150
+ `, [
151
+ sessionInternalId,
152
+ 'tool_execution',
153
+ estimatedTokens,
154
+ JSON.stringify({
155
+ toolName: tool.name,
156
+ executionTimeMs,
157
+ success: result.success
158
+ })
159
+ ]);
160
+ // ✅ 正确的钩子签名:不返回任何值
161
+ }
162
+ catch (error) {
163
+ logger.error('Error handling tool.execute.after:', error);
164
+ // 出错时不阻断主流程
165
+ }
166
+ }
167
+ /**
168
+ * 生成工具输入摘要
169
+ */
170
+ function summarizeToolInput(parameters, maxLength) {
171
+ try {
172
+ // 过滤敏感信息
173
+ const sanitized = sanitizeParameters(parameters);
174
+ // 生成摘要
175
+ let summary = JSON.stringify(sanitized);
176
+ // 移除 <private> 标记内容
177
+ summary = (0, privacy_1.stripPrivateContent)(summary);
178
+ if (summary.length > maxLength) {
179
+ summary = summary.substring(0, maxLength) + '... [truncated]';
180
+ }
181
+ return summary;
182
+ }
183
+ catch {
184
+ return '[Error summarizing input]';
185
+ }
186
+ }
187
+ /**
188
+ * 生成工具输出摘要
189
+ */
190
+ function summarizeToolOutput(result, maxLength) {
191
+ try {
192
+ let summary;
193
+ if (!result.success) {
194
+ summary = `Error: ${result.error || 'Unknown error'}`;
195
+ }
196
+ else if (result.data === undefined || result.data === null) {
197
+ summary = 'Success (no data)';
198
+ }
199
+ else if (typeof result.data === 'string') {
200
+ summary = result.data;
201
+ }
202
+ else {
203
+ summary = JSON.stringify(result.data);
204
+ }
205
+ // 移除 <private> 标记内容
206
+ summary = (0, privacy_1.stripPrivateContent)(summary);
207
+ if (summary.length > maxLength) {
208
+ summary = summary.substring(0, maxLength) + '... [truncated]';
209
+ }
210
+ return summary;
211
+ }
212
+ catch {
213
+ return '[Error summarizing output]';
214
+ }
215
+ }
216
+ /**
217
+ * 清理参数,移除敏感信息
218
+ */
219
+ function sanitizeParameters(parameters) {
220
+ const sensitiveKeys = ['password', 'token', 'secret', 'key', 'auth', 'credential'];
221
+ const sanitized = {};
222
+ for (const [key, value] of Object.entries(parameters)) {
223
+ const isSensitive = sensitiveKeys.some(sk => key.toLowerCase().includes(sk.toLowerCase()));
224
+ if (isSensitive) {
225
+ sanitized[key] = '[REDACTED]';
226
+ }
227
+ else if (typeof value === 'object' && value !== null) {
228
+ sanitized[key] = sanitizeParameters(value);
229
+ }
230
+ else {
231
+ sanitized[key] = value;
232
+ }
233
+ }
234
+ return sanitized;
235
+ }
236
+ /**
237
+ * 计算观察的重要性
238
+ */
239
+ function calculateImportance(result, executionTimeMs) {
240
+ let importance = 3; // 默认中等重要性
241
+ // 失败的操作通常更重要
242
+ if (!result.success) {
243
+ importance += 1;
244
+ }
245
+ // 执行时间长的操作可能更复杂
246
+ if (executionTimeMs > 5000) {
247
+ importance += 1;
248
+ }
249
+ // 限制在 1-5 范围内
250
+ return Math.max(1, Math.min(5, importance));
251
+ }
252
+ /**
253
+ * 估算工具执行使用的 token 数
254
+ */
255
+ function estimateToolTokens(toolName, result) {
256
+ // 基础 token 开销
257
+ let tokens = 50;
258
+ // 根据结果数据大小估算
259
+ if (result.data) {
260
+ const dataStr = typeof result.data === 'string'
261
+ ? result.data
262
+ : JSON.stringify(result.data);
263
+ tokens += Math.ceil(dataStr.length / 4);
264
+ }
265
+ return tokens;
266
+ }
267
+ //# sourceMappingURL=tool-execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-execute.js","sourceRoot":"","sources":["../../../src/hooks/tool-execute.ts"],"names":[],"mappings":"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"}
@@ -61,4 +61,5 @@ export * from './utils/token-budget';
61
61
  export * from './cache/semantic-cache';
62
62
  export { recallMemory } from './mcp/recall-memory';
63
63
  export { hindsightReflect } from './mcp/hindsight-reflect';
64
+ export default OpenCodePGMemory;
64
65
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAqBA,UAAU,aAAa;IACrB,0BAA0B;IAC1B,MAAM,EAAE,GAAG,CAAC;IACZ,uBAAuB;IACvB,OAAO,EAAE,GAAG,CAAC;IACb,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,uCAAuC;AACvC,KAAK,MAAM,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAE3D,UAAU,WAAW;IACnB,mDAAmD;IACnD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;SAAE,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,0CAA0C;IAC1C,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7H,iDAAiD;IACjD,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1K,8BAA8B;IAC9B,iCAAiC,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpI,uBAAuB;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACpF;AAwJD,eAAO,MAAM,gBAAgB,EAAE,MA+hB9B,CAAC;AA+JF,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAwBA,UAAU,aAAa;IACrB,0BAA0B;IAC1B,MAAM,EAAE,GAAG,CAAC;IACZ,uBAAuB;IACvB,OAAO,EAAE,GAAG,CAAC;IACb,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,uCAAuC;AACvC,KAAK,MAAM,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAE3D,UAAU,WAAW;IACnB,mDAAmD;IACnD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;SAAE,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,0CAA0C;IAC1C,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7H,iDAAiD;IACjD,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1K,8BAA8B;IAC9B,iCAAiC,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpI,uBAAuB;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACpF;AAwJD,eAAO,MAAM,gBAAgB,EAAE,MA6X9B,CAAC;AA+JF,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,eAAe,gBAAgB,CAAC"}