feat(memory): add gated agent recall and lifecycle controls
This commit is contained in:
+31
@@ -2291,6 +2291,37 @@ api.post('/user-memory/v1/sync', async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
api.get('/user-memory/v1/items', async (req, res) => {
|
||||
const capabilityState = await ensureUserMemoryCapability(req, res);
|
||||
if (!capabilityState) return;
|
||||
try {
|
||||
const items = await memoryV2.listMemories?.({
|
||||
userId: req.currentUser.id,
|
||||
status: String(req.query?.status ?? 'active'),
|
||||
limit: req.query?.limit,
|
||||
offset: req.query?.offset,
|
||||
}) ?? [];
|
||||
return res.json({ ok: true, items });
|
||||
} catch (err) {
|
||||
return res.status(500).json({ message: err instanceof Error ? err.message : '读取长期记忆失败' });
|
||||
}
|
||||
});
|
||||
|
||||
api.delete('/user-memory/v1/items/:memoryId', async (req, res) => {
|
||||
const capabilityState = await ensureUserMemoryCapability(req, res);
|
||||
if (!capabilityState) return;
|
||||
try {
|
||||
const result = await memoryV2.forgetMemory?.({
|
||||
userId: req.currentUser.id,
|
||||
memoryId: req.params.memoryId,
|
||||
}) ?? { ok: false, skipped: true, reason: 'unavailable' };
|
||||
if (result.skipped) return res.status(409).json(result);
|
||||
return res.json(result);
|
||||
} catch (err) {
|
||||
return res.status(500).json({ message: err instanceof Error ? err.message : '删除长期记忆失败' });
|
||||
}
|
||||
});
|
||||
|
||||
api.get('/mindspace/v1/space', async (req, res) => {
|
||||
if (!mindSpace || !ensureMindSpaceEnabled(res, req)) return;
|
||||
const space = await mindSpace.getSpace(req.currentUser.id);
|
||||
|
||||
Reference in New Issue
Block a user