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.
- package/dist/cli.js +232 -214
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -21006
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.js +319 -302
- package/dist/mcp-server.js.map +1 -0
- package/dist/src/cache/semantic-cache.js +399 -0
- package/dist/src/cache/semantic-cache.js.map +1 -0
- package/dist/src/cli.js +404 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/config.d.ts +5 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +89 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/db/init-db.js +545 -0
- package/dist/src/db/init-db.js.map +1 -0
- package/dist/src/hooks/message-part-updated.js +203 -0
- package/dist/src/hooks/message-part-updated.js.map +1 -0
- package/dist/src/hooks/message-updated.js +347 -0
- package/dist/src/hooks/message-updated.js.map +1 -0
- package/dist/src/hooks/session-compacting.js +179 -0
- package/dist/src/hooks/session-compacting.js.map +1 -0
- package/dist/src/hooks/session-completed.js +337 -0
- package/dist/src/hooks/session-completed.js.map +1 -0
- package/dist/src/hooks/session-created.js +206 -0
- package/dist/src/hooks/session-created.js.map +1 -0
- package/dist/src/hooks/tool-execute.js +267 -0
- package/dist/src/hooks/tool-execute.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +643 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mcp/hindsight-reflect-omo.js +318 -0
- package/dist/src/mcp/hindsight-reflect-omo.js.map +1 -0
- package/dist/src/mcp/hindsight-reflect.js +838 -0
- package/dist/src/mcp/hindsight-reflect.js.map +1 -0
- package/dist/src/mcp/recall-memory-omo.js +263 -0
- package/dist/src/mcp/recall-memory-omo.js.map +1 -0
- package/dist/src/mcp/recall-memory.d.ts +6 -0
- package/dist/src/mcp/recall-memory.d.ts.map +1 -1
- package/dist/src/mcp/recall-memory.js +900 -0
- package/dist/src/mcp/recall-memory.js.map +1 -0
- package/dist/src/omo/adapter.js +583 -0
- package/dist/src/omo/adapter.js.map +1 -0
- package/dist/src/omo/types.js +44 -0
- package/dist/src/omo/types.js.map +1 -0
- package/dist/src/services/db-polling.d.ts +30 -0
- package/dist/src/services/db-polling.d.ts.map +1 -0
- package/dist/src/services/db-polling.js +97 -0
- package/dist/src/services/db-polling.js.map +1 -0
- package/dist/src/services/event-synchronizer.d.ts +15 -0
- package/dist/src/services/event-synchronizer.d.ts.map +1 -0
- package/dist/src/services/event-synchronizer.js +119 -0
- package/dist/src/services/event-synchronizer.js.map +1 -0
- package/dist/src/services/keyword.js +29 -0
- package/dist/src/services/keyword.js.map +1 -0
- package/dist/src/services/logger.js +42 -0
- package/dist/src/services/logger.js.map +1 -0
- package/dist/src/services/opencode-schema-adapter.d.ts +34 -0
- package/dist/src/services/opencode-schema-adapter.d.ts.map +1 -0
- package/dist/src/services/opencode-schema-adapter.js +96 -0
- package/dist/src/services/opencode-schema-adapter.js.map +1 -0
- package/dist/src/services/privacy.js +23 -0
- package/dist/src/services/privacy.js.map +1 -0
- package/dist/src/topic/segment-manager.js +447 -0
- package/dist/src/topic/segment-manager.js.map +1 -0
- package/dist/src/types.d.ts +20 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +8 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/embedding.js +180 -0
- package/dist/src/utils/embedding.js.map +1 -0
- package/dist/src/utils/token-budget.js +152 -0
- package/dist/src/utils/token-budget.js.map +1 -0
- 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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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -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
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
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"}
|