agent-nuvira 2.7.3 → 3.0.1
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/agents/agents/writer-tool-calling.d.ts +14 -0
- package/dist/agents/agents/writer-tool-calling.d.ts.map +1 -1
- package/dist/agents/agents/writer-tool-calling.js +20 -0
- package/dist/agents/agents/writer-tool-calling.js.map +1 -1
- package/dist/agents/agents/writer.d.ts.map +1 -1
- package/dist/agents/agents/writer.js +15 -4
- package/dist/agents/agents/writer.js.map +1 -1
- package/dist/agents/edit-module.d.ts +7 -0
- package/dist/agents/edit-module.d.ts.map +1 -1
- package/dist/agents/edit-module.js +21 -6
- package/dist/agents/edit-module.js.map +1 -1
- package/dist/agents/orchestrator.d.ts +40 -0
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator.js +116 -27
- package/dist/agents/orchestrator.js.map +1 -1
- package/dist/agents/tool-calling-agent.d.ts +19 -0
- package/dist/agents/tool-calling-agent.d.ts.map +1 -1
- package/dist/agents/tool-calling-agent.js +42 -2
- package/dist/agents/tool-calling-agent.js.map +1 -1
- package/dist/cli/chat.d.ts +55 -1
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +278 -72
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/cli-program.d.ts +6 -0
- package/dist/cli/cli-program.d.ts.map +1 -0
- package/dist/cli/cli-program.js +242 -0
- package/dist/cli/cli-program.js.map +1 -0
- package/dist/cli/edit.d.ts.map +1 -1
- package/dist/cli/edit.js +18 -3
- package/dist/cli/edit.js.map +1 -1
- package/dist/cli/execute.d.ts.map +1 -1
- package/dist/cli/execute.js +29 -5
- package/dist/cli/execute.js.map +1 -1
- package/dist/cli/failover-runner.d.ts +13 -0
- package/dist/cli/failover-runner.d.ts.map +1 -1
- package/dist/cli/failover-runner.js +11 -0
- package/dist/cli/failover-runner.js.map +1 -1
- package/dist/cli/gateway.d.ts +16 -0
- package/dist/cli/gateway.d.ts.map +1 -1
- package/dist/cli/gateway.js +108 -2
- package/dist/cli/gateway.js.map +1 -1
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +245 -12
- package/dist/cli/loop-executor.js.map +1 -1
- package/dist/cli/plan.d.ts.map +1 -1
- package/dist/cli/plan.js +20 -6
- package/dist/cli/plan.js.map +1 -1
- package/dist/cli/process-control.d.ts +10 -0
- package/dist/cli/process-control.d.ts.map +1 -1
- package/dist/cli/process-control.js +73 -7
- package/dist/cli/process-control.js.map +1 -1
- package/dist/cli/router.d.ts +16 -5
- package/dist/cli/router.d.ts.map +1 -1
- package/dist/cli/router.js +31 -206
- package/dist/cli/router.js.map +1 -1
- package/dist/config/paths.d.ts +23 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +30 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/provider-env.d.ts +37 -0
- package/dist/config/provider-env.d.ts.map +1 -0
- package/dist/config/provider-env.js +86 -0
- package/dist/config/provider-env.js.map +1 -0
- package/dist/context/history.d.ts.map +1 -1
- package/dist/context/history.js +24 -8
- package/dist/context/history.js.map +1 -1
- package/dist/context/session-recall.d.ts +30 -0
- package/dist/context/session-recall.d.ts.map +1 -1
- package/dist/context/session-recall.js +61 -0
- package/dist/context/session-recall.js.map +1 -1
- package/dist/file.js +0 -1
- package/dist/file.js.map +1 -1
- package/dist/gateway/adapters.d.ts +10 -0
- package/dist/gateway/adapters.d.ts.map +1 -1
- package/dist/gateway/adapters.js +4 -1
- package/dist/gateway/adapters.js.map +1 -1
- package/dist/gateway/dedup.d.ts +105 -0
- package/dist/gateway/dedup.d.ts.map +1 -0
- package/dist/gateway/dedup.js +160 -0
- package/dist/gateway/dedup.js.map +1 -0
- package/dist/gateway/heartbeat.d.ts +99 -0
- package/dist/gateway/heartbeat.d.ts.map +1 -0
- package/dist/gateway/heartbeat.js +122 -0
- package/dist/gateway/heartbeat.js.map +1 -0
- package/dist/gateway/inbox.d.ts +14 -1
- package/dist/gateway/inbox.d.ts.map +1 -1
- package/dist/gateway/inbox.js.map +1 -1
- package/dist/gateway/platform-config.d.ts +5 -0
- package/dist/gateway/platform-config.d.ts.map +1 -1
- package/dist/gateway/platform-config.js +8 -13
- package/dist/gateway/platform-config.js.map +1 -1
- package/dist/gateway/registry.d.ts +47 -0
- package/dist/gateway/registry.d.ts.map +1 -1
- package/dist/gateway/registry.js +227 -21
- package/dist/gateway/registry.js.map +1 -1
- package/dist/gateway/whatsapp/baileys-bridge.d.ts +11 -1
- package/dist/gateway/whatsapp/baileys-bridge.d.ts.map +1 -1
- package/dist/gateway/whatsapp/baileys-bridge.js +64 -1
- package/dist/gateway/whatsapp/baileys-bridge.js.map +1 -1
- package/dist/gateway/whatsapp/bridge.d.ts +4 -2
- package/dist/gateway/whatsapp/bridge.d.ts.map +1 -1
- package/dist/gateway/whatsapp/bridge.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/inference/factory.d.ts +16 -0
- package/dist/inference/factory.d.ts.map +1 -1
- package/dist/inference/factory.js +42 -0
- package/dist/inference/factory.js.map +1 -1
- package/dist/inference/gemini-adapter.d.ts.map +1 -1
- package/dist/inference/gemini-adapter.js +3 -0
- package/dist/inference/gemini-adapter.js.map +1 -1
- package/dist/inference/interface.d.ts +12 -0
- package/dist/inference/interface.d.ts.map +1 -1
- package/dist/inference/local-adapter.d.ts +2 -0
- package/dist/inference/local-adapter.d.ts.map +1 -1
- package/dist/inference/local-adapter.js +36 -5
- package/dist/inference/local-adapter.js.map +1 -1
- package/dist/inference/native-tools.d.ts +8 -0
- package/dist/inference/native-tools.d.ts.map +1 -1
- package/dist/inference/native-tools.js +14 -3
- package/dist/inference/native-tools.js.map +1 -1
- package/dist/inference/tool-call-utils.d.ts +92 -7
- package/dist/inference/tool-call-utils.d.ts.map +1 -1
- package/dist/inference/tool-call-utils.js +203 -13
- package/dist/inference/tool-call-utils.js.map +1 -1
- package/dist/learning/auto-router.d.ts.map +1 -1
- package/dist/learning/auto-router.js +90 -5
- package/dist/learning/auto-router.js.map +1 -1
- package/dist/learning/context-budget.d.ts +133 -0
- package/dist/learning/context-budget.d.ts.map +1 -0
- package/dist/learning/context-budget.js +196 -0
- package/dist/learning/context-budget.js.map +1 -0
- package/dist/learning/cost-tracker.d.ts.map +1 -1
- package/dist/learning/cost-tracker.js +20 -8
- package/dist/learning/cost-tracker.js.map +1 -1
- package/dist/learning/eval-framework.d.ts.map +1 -1
- package/dist/learning/eval-framework.js +6 -2
- package/dist/learning/eval-framework.js.map +1 -1
- package/dist/learning/failure-bookkeeping.d.ts +19 -0
- package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
- package/dist/learning/failure-bookkeeping.js +67 -2
- package/dist/learning/failure-bookkeeping.js.map +1 -1
- package/dist/learning/feedback.d.ts.map +1 -1
- package/dist/learning/feedback.js +19 -8
- package/dist/learning/feedback.js.map +1 -1
- package/dist/learning/model-harness.d.ts +76 -0
- package/dist/learning/model-harness.d.ts.map +1 -0
- package/dist/learning/model-harness.js +119 -0
- package/dist/learning/model-harness.js.map +1 -0
- package/dist/learning/model-selection.d.ts +15 -0
- package/dist/learning/model-selection.d.ts.map +1 -1
- package/dist/learning/model-selection.js +27 -1
- package/dist/learning/model-selection.js.map +1 -1
- package/dist/learning/provider-fallback.d.ts +12 -0
- package/dist/learning/provider-fallback.d.ts.map +1 -1
- package/dist/learning/provider-fallback.js +74 -0
- package/dist/learning/provider-fallback.js.map +1 -1
- package/dist/learning/provider-revival.d.ts +106 -0
- package/dist/learning/provider-revival.d.ts.map +1 -0
- package/dist/learning/provider-revival.js +154 -0
- package/dist/learning/provider-revival.js.map +1 -0
- package/dist/learning/resilient-call.d.ts.map +1 -1
- package/dist/learning/resilient-call.js +48 -3
- package/dist/learning/resilient-call.js.map +1 -1
- package/dist/nlu/conversation-gate.d.ts +37 -0
- package/dist/nlu/conversation-gate.d.ts.map +1 -1
- package/dist/nlu/conversation-gate.js +49 -0
- package/dist/nlu/conversation-gate.js.map +1 -1
- package/dist/nlu/schema.d.ts +2 -2
- package/dist/observability/dag-bridge.d.ts +69 -0
- package/dist/observability/dag-bridge.d.ts.map +1 -0
- package/dist/observability/dag-bridge.js +56 -0
- package/dist/observability/dag-bridge.js.map +1 -0
- package/dist/observability/event-bus.d.ts +5 -10
- package/dist/observability/event-bus.d.ts.map +1 -1
- package/dist/observability/event-bus.js +10 -42
- package/dist/observability/event-bus.js.map +1 -1
- package/dist/skills/execution-audit.d.ts.map +1 -1
- package/dist/skills/execution-audit.js +17 -5
- package/dist/skills/execution-audit.js.map +1 -1
- package/dist/skills/sandbox-executor.d.ts +12 -1
- package/dist/skills/sandbox-executor.d.ts.map +1 -1
- package/dist/skills/sandbox-executor.js +28 -6
- package/dist/skills/sandbox-executor.js.map +1 -1
- package/dist/skills/secret-capture.d.ts +45 -1
- package/dist/skills/secret-capture.d.ts.map +1 -1
- package/dist/skills/secret-capture.js +82 -19
- package/dist/skills/secret-capture.js.map +1 -1
- package/dist/skills/skill-env-inventory.d.ts +79 -0
- package/dist/skills/skill-env-inventory.d.ts.map +1 -0
- package/dist/skills/skill-env-inventory.js +167 -0
- package/dist/skills/skill-env-inventory.js.map +1 -0
- package/dist/skills/skill-executor.d.ts +2 -0
- package/dist/skills/skill-executor.d.ts.map +1 -1
- package/dist/skills/skill-executor.js +19 -24
- package/dist/skills/skill-executor.js.map +1 -1
- package/dist/tools/ask-user.d.ts +14 -1
- package/dist/tools/ask-user.d.ts.map +1 -1
- package/dist/tools/ask-user.js +25 -1
- package/dist/tools/ask-user.js.map +1 -1
- package/dist/tools/followup-utils.d.ts +64 -0
- package/dist/tools/followup-utils.d.ts.map +1 -0
- package/dist/tools/followup-utils.js +158 -0
- package/dist/tools/followup-utils.js.map +1 -0
- package/dist/tools/loop-skill-hint.d.ts.map +1 -1
- package/dist/tools/loop-skill-hint.js +22 -1
- package/dist/tools/loop-skill-hint.js.map +1 -1
- package/dist/tools/memory-tools.d.ts +35 -0
- package/dist/tools/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory-tools.js +76 -0
- package/dist/tools/memory-tools.js.map +1 -1
- package/dist/tools/pipeline-tool.d.ts.map +1 -1
- package/dist/tools/pipeline-tool.js +8 -3
- package/dist/tools/pipeline-tool.js.map +1 -1
- package/dist/tools/registry.d.ts +25 -12
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +31 -6
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/skill-tool.d.ts.map +1 -1
- package/dist/tools/skill-tool.js +52 -5
- package/dist/tools/skill-tool.js.map +1 -1
- package/dist/tools/tool-loop.d.ts +63 -1
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +305 -66
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/tools/toolsets.d.ts +19 -3
- package/dist/tools/toolsets.d.ts.map +1 -1
- package/dist/tools/toolsets.js +21 -5
- package/dist/tools/toolsets.js.map +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/env.js +9 -13
- package/dist/utils/env.js.map +1 -1
- package/dist/web-dashboard/chat-console.d.ts +13 -1
- package/dist/web-dashboard/chat-console.d.ts.map +1 -1
- package/dist/web-dashboard/chat-console.js +16 -2
- package/dist/web-dashboard/chat-console.js.map +1 -1
- package/dist/web-dashboard/hub-data.d.ts +2 -0
- package/dist/web-dashboard/hub-data.d.ts.map +1 -1
- package/dist/web-dashboard/hub-data.js +4 -0
- package/dist/web-dashboard/hub-data.js.map +1 -1
- package/dist/web-dashboard/server.d.ts +6 -0
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +192 -3
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +31 -1
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/package.json +11 -1
- package/src/web-dashboard/public/assets/index-56yPnN_m.js +207 -0
- package/src/web-dashboard/public/assets/index-56yPnN_m.js.map +1 -0
- package/src/web-dashboard/public/assets/{index-C507EUWf.css → index-Cyd6tIew.css} +1 -1
- package/src/web-dashboard/public/index.html +2 -2
- package/dist/example.d.ts +0 -1
- package/dist/example.d.ts.map +0 -1
- package/dist/example.js +0 -3
- package/dist/example.js.map +0 -1
- package/dist/fresh.d.ts +0 -2
- package/dist/fresh.d.ts.map +0 -1
- package/dist/fresh.js +0 -2
- package/dist/fresh.js.map +0 -1
- package/dist/mcp/mcp-dashboard-oauth.d.ts +0 -94
- package/dist/mcp/mcp-dashboard-oauth.d.ts.map +0 -1
- package/dist/mcp/mcp-dashboard-oauth.js +0 -140
- package/dist/mcp/mcp-dashboard-oauth.js.map +0 -1
- package/dist/memory/background-sync.d.ts +0 -107
- package/dist/memory/background-sync.d.ts.map +0 -1
- package/dist/memory/background-sync.js +0 -242
- package/dist/memory/background-sync.js.map +0 -1
- package/dist/memory/cross-session.d.ts +0 -68
- package/dist/memory/cross-session.d.ts.map +0 -1
- package/dist/memory/cross-session.js +0 -153
- package/dist/memory/cross-session.js.map +0 -1
- package/dist/memory/drift-detector.d.ts +0 -76
- package/dist/memory/drift-detector.d.ts.map +0 -1
- package/dist/memory/drift-detector.js +0 -216
- package/dist/memory/drift-detector.js.map +0 -1
- package/dist/memory/enhanced-manager.d.ts +0 -105
- package/dist/memory/enhanced-manager.d.ts.map +0 -1
- package/dist/memory/enhanced-manager.js +0 -280
- package/dist/memory/enhanced-manager.js.map +0 -1
- package/dist/memory/session-extraction.d.ts +0 -93
- package/dist/memory/session-extraction.d.ts.map +0 -1
- package/dist/memory/session-extraction.js +0 -290
- package/dist/memory/session-extraction.js.map +0 -1
- package/dist/memory/sqlite-store.d.ts +0 -208
- package/dist/memory/sqlite-store.d.ts.map +0 -1
- package/dist/memory/sqlite-store.js +0 -556
- package/dist/memory/sqlite-store.js.map +0 -1
- package/dist/skills/daytona-executor.d.ts +0 -78
- package/dist/skills/daytona-executor.d.ts.map +0 -1
- package/dist/skills/daytona-executor.js +0 -256
- package/dist/skills/daytona-executor.js.map +0 -1
- package/dist/skills/modal-executor.d.ts +0 -81
- package/dist/skills/modal-executor.d.ts.map +0 -1
- package/dist/skills/modal-executor.js +0 -285
- package/dist/skills/modal-executor.js.map +0 -1
- package/dist/sync/inventory.d.ts +0 -1
- package/dist/sync/inventory.d.ts.map +0 -1
- package/dist/sync/inventory.js +0 -3
- package/dist/sync/inventory.js.map +0 -1
- package/dist/sync/validate.d.ts +0 -1
- package/dist/sync/validate.d.ts.map +0 -1
- package/dist/sync/validate.js +0 -3
- package/dist/sync/validate.js.map +0 -1
- package/dist/test.d.ts +0 -2
- package/dist/test.d.ts.map +0 -1
- package/dist/test.js +0 -3
- package/dist/test.js.map +0 -1
- package/dist/tools/browser-tool.d.ts +0 -206
- package/dist/tools/browser-tool.d.ts.map +0 -1
- package/dist/tools/browser-tool.js +0 -726
- package/dist/tools/browser-tool.js.map +0 -1
- package/dist/tools/delegate-tool.d.ts +0 -109
- package/dist/tools/delegate-tool.d.ts.map +0 -1
- package/dist/tools/delegate-tool.js +0 -185
- package/dist/tools/delegate-tool.js.map +0 -1
- package/dist/tools/delegation-state.d.ts +0 -87
- package/dist/tools/delegation-state.d.ts.map +0 -1
- package/dist/tools/delegation-state.js +0 -278
- package/dist/tools/delegation-state.js.map +0 -1
- package/dist/tools/desktop-ui.d.ts +0 -148
- package/dist/tools/desktop-ui.d.ts.map +0 -1
- package/dist/tools/desktop-ui.js +0 -486
- package/dist/tools/desktop-ui.js.map +0 -1
- package/dist/tools/image-video-tool.d.ts +0 -88
- package/dist/tools/image-video-tool.d.ts.map +0 -1
- package/dist/tools/image-video-tool.js +0 -276
- package/dist/tools/image-video-tool.js.map +0 -1
- package/dist/tools/kanban-cron-tools.d.ts +0 -92
- package/dist/tools/kanban-cron-tools.d.ts.map +0 -1
- package/dist/tools/kanban-cron-tools.js +0 -197
- package/dist/tools/kanban-cron-tools.js.map +0 -1
- package/dist/tools/messaging-tool.d.ts +0 -127
- package/dist/tools/messaging-tool.d.ts.map +0 -1
- package/dist/tools/messaging-tool.js +0 -314
- package/dist/tools/messaging-tool.js.map +0 -1
- package/dist/tools/modality/generic-caller.d.ts +0 -43
- package/dist/tools/modality/generic-caller.d.ts.map +0 -1
- package/dist/tools/modality/generic-caller.js +0 -254
- package/dist/tools/modality/generic-caller.js.map +0 -1
- package/dist/tools/modality/modality-catalog.d.ts +0 -134
- package/dist/tools/modality/modality-catalog.d.ts.map +0 -1
- package/dist/tools/modality/modality-catalog.js +0 -445
- package/dist/tools/modality/modality-catalog.js.map +0 -1
- package/dist/tools/modality/tool-router.d.ts +0 -81
- package/dist/tools/modality/tool-router.d.ts.map +0 -1
- package/dist/tools/modality/tool-router.js +0 -84
- package/dist/tools/modality/tool-router.js.map +0 -1
- package/dist/tools/security-tools.d.ts +0 -107
- package/dist/tools/security-tools.d.ts.map +0 -1
- package/dist/tools/security-tools.js +0 -264
- package/dist/tools/security-tools.js.map +0 -1
- package/dist/tools/ssh-tool.d.ts +0 -130
- package/dist/tools/ssh-tool.d.ts.map +0 -1
- package/dist/tools/ssh-tool.js +0 -328
- package/dist/tools/ssh-tool.js.map +0 -1
- package/dist/tools/tts-tool.d.ts +0 -91
- package/dist/tools/tts-tool.d.ts.map +0 -1
- package/dist/tools/tts-tool.js +0 -406
- package/dist/tools/tts-tool.js.map +0 -1
- package/dist/utils/shell-detection.d.ts +0 -124
- package/dist/utils/shell-detection.d.ts.map +0 -1
- package/dist/utils/shell-detection.js +0 -305
- package/dist/utils/shell-detection.js.map +0 -1
- package/dist/utils/windows-paths.d.ts +0 -185
- package/dist/utils/windows-paths.d.ts.map +0 -1
- package/dist/utils/windows-paths.js +0 -472
- package/dist/utils/windows-paths.js.map +0 -1
- package/src/web-dashboard/public/assets/index-C4frng1Q.js +0 -207
- package/src/web-dashboard/public/assets/index-C4frng1Q.js.map +0 -1
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CrossSessionPersistence — Maintain memory across sessions.
|
|
3
|
-
*
|
|
4
|
-
* Loads and saves memory context at session boundaries to enable
|
|
5
|
-
* continuous learning across multiple sessions.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Session context loading at start
|
|
9
|
-
* - Session context saving at end
|
|
10
|
-
* - Session history tracking
|
|
11
|
-
* - Automatic cleanup of old sessions
|
|
12
|
-
*/
|
|
13
|
-
import { getSQLiteStore } from './sqlite-store.js';
|
|
14
|
-
import { logger } from '../utils/logger.js';
|
|
15
|
-
// ─── Cross-Session Persistence ──────────────────────────────────────────────
|
|
16
|
-
export class CrossSessionPersistence {
|
|
17
|
-
store;
|
|
18
|
-
currentSessionId = null;
|
|
19
|
-
constructor(store) {
|
|
20
|
-
this.store = store || getSQLiteStore();
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Load session context at session start.
|
|
24
|
-
*/
|
|
25
|
-
async loadSessionContext(sessionId) {
|
|
26
|
-
this.currentSessionId = sessionId;
|
|
27
|
-
// Load recent memories
|
|
28
|
-
const memories = this.store.listMemories(undefined, 100);
|
|
29
|
-
// Load recent trajectories
|
|
30
|
-
const trajectories = this.store.getRecentTrajectories(50);
|
|
31
|
-
// Load top patterns
|
|
32
|
-
const patterns = this.store.getTopPatterns(20);
|
|
33
|
-
// Load recent lessons
|
|
34
|
-
const lessons = [
|
|
35
|
-
...this.store.getLessonsBySeverity('critical', 10),
|
|
36
|
-
...this.store.getLessonsBySeverity('high', 10),
|
|
37
|
-
];
|
|
38
|
-
return {
|
|
39
|
-
sessionId,
|
|
40
|
-
memories,
|
|
41
|
-
trajectories,
|
|
42
|
-
patterns,
|
|
43
|
-
lessons,
|
|
44
|
-
startedAt: Date.now(),
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Save session context at session end.
|
|
49
|
-
*/
|
|
50
|
-
async saveSessionContext(context) {
|
|
51
|
-
// Context is already persisted via individual operations
|
|
52
|
-
// This method just logs and updates metadata
|
|
53
|
-
logger.debug(`Session ${context.sessionId} saved: ${context.memories.length} memories, ${context.trajectories.length} trajectories`);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Get session history.
|
|
57
|
-
*/
|
|
58
|
-
getSessionHistory(limit = 20) {
|
|
59
|
-
// Get from trajectories
|
|
60
|
-
const trajectories = this.store.getRecentTrajectories(1000);
|
|
61
|
-
// Group by session
|
|
62
|
-
const sessions = new Map();
|
|
63
|
-
for (const t of trajectories) {
|
|
64
|
-
if (!sessions.has(t.session_id)) {
|
|
65
|
-
sessions.set(t.session_id, {
|
|
66
|
-
sessionId: t.session_id,
|
|
67
|
-
startedAt: t.created_at,
|
|
68
|
-
memoryCount: 0,
|
|
69
|
-
trajectoryCount: 0,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
const session = sessions.get(t.session_id);
|
|
73
|
-
session.trajectoryCount++;
|
|
74
|
-
session.endedAt = t.created_at;
|
|
75
|
-
}
|
|
76
|
-
return Array.from(sessions.values())
|
|
77
|
-
.sort((a, b) => b.startedAt - a.startedAt)
|
|
78
|
-
.slice(0, limit);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Get context for a specific session.
|
|
82
|
-
*/
|
|
83
|
-
async getSessionContext(sessionId) {
|
|
84
|
-
// Load memories created in this session
|
|
85
|
-
const memories = this.store.listMemories(undefined, 1000)
|
|
86
|
-
.filter((m) => m.session_id === sessionId);
|
|
87
|
-
// Load trajectories for this session
|
|
88
|
-
const trajectories = this.store.getRecentTrajectories(1000)
|
|
89
|
-
.filter((t) => t.session_id === sessionId);
|
|
90
|
-
if (memories.length === 0 && trajectories.length === 0) {
|
|
91
|
-
return null;
|
|
92
|
-
}
|
|
93
|
-
return {
|
|
94
|
-
sessionId,
|
|
95
|
-
memories,
|
|
96
|
-
trajectories,
|
|
97
|
-
patterns: [],
|
|
98
|
-
lessons: [],
|
|
99
|
-
startedAt: trajectories[0]?.created_at || Date.now(),
|
|
100
|
-
endedAt: trajectories[trajectories.length - 1]?.created_at,
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Get memory context for prompt injection.
|
|
105
|
-
*/
|
|
106
|
-
async getMemoryContext(query) {
|
|
107
|
-
// Search for relevant memories
|
|
108
|
-
const memories = this.store.searchMemories(query, 20);
|
|
109
|
-
const facts = memories
|
|
110
|
-
.filter((m) => m.type === 'fact' || m.type === 'observation')
|
|
111
|
-
.map((m) => m.content)
|
|
112
|
-
.join('\n');
|
|
113
|
-
// Get relevant patterns
|
|
114
|
-
const patterns = this.store.getTopPatterns(10)
|
|
115
|
-
.map((p) => p.pattern)
|
|
116
|
-
.join('\n');
|
|
117
|
-
// Get relevant lessons
|
|
118
|
-
const lessons = [
|
|
119
|
-
...this.store.getLessonsBySeverity('critical', 5),
|
|
120
|
-
...this.store.getLessonsBySeverity('high', 5),
|
|
121
|
-
].map((l) => l.lesson)
|
|
122
|
-
.join('\n');
|
|
123
|
-
// Get similar trajectories
|
|
124
|
-
const trajectories = this.store.getRecentTrajectories(10)
|
|
125
|
-
.map((t) => `User: ${t.user_text.slice(0, 100)}\nAssistant: ${t.assistant_text.slice(0, 100)}`)
|
|
126
|
-
.join('\n');
|
|
127
|
-
return {
|
|
128
|
-
facts,
|
|
129
|
-
patterns,
|
|
130
|
-
lessons,
|
|
131
|
-
trajectories,
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Cleanup old sessions.
|
|
136
|
-
*/
|
|
137
|
-
cleanupOldSessions(maxAgeDays = 30) {
|
|
138
|
-
// This is a placeholder - in production, implement proper cleanup
|
|
139
|
-
logger.debug(`CrossSessionPersistence: Cleanup not implemented yet`);
|
|
140
|
-
return 0;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
// ─── Singleton ──────────────────────────────────────────────────────────────
|
|
144
|
-
let _instance = null;
|
|
145
|
-
export function getCrossSessionPersistence() {
|
|
146
|
-
if (!_instance)
|
|
147
|
-
_instance = new CrossSessionPersistence();
|
|
148
|
-
return _instance;
|
|
149
|
-
}
|
|
150
|
-
export function resetCrossSessionPersistence() {
|
|
151
|
-
_instance = null;
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=cross-session.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cross-session.js","sourceRoot":"","sources":["../../src/memory/cross-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DriftDetector — Detect external modifications to memory files.
|
|
3
|
-
*
|
|
4
|
-
* Prevents data corruption by detecting when memory files have been
|
|
5
|
-
* modified outside of the memory tools (e.g., by patch tool, shell append,
|
|
6
|
-
* manual edit, or concurrent session).
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Checksum-based drift detection
|
|
10
|
-
* - Snapshot backup before writes
|
|
11
|
-
* - Automatic rollback on drift
|
|
12
|
-
* - Audit logging
|
|
13
|
-
*/
|
|
14
|
-
interface FileSnapshot {
|
|
15
|
-
path: string;
|
|
16
|
-
checksum: string;
|
|
17
|
-
content: string;
|
|
18
|
-
timestamp: number;
|
|
19
|
-
}
|
|
20
|
-
interface DriftEvent {
|
|
21
|
-
path: string;
|
|
22
|
-
expectedChecksum: string;
|
|
23
|
-
actualChecksum: string;
|
|
24
|
-
timestamp: number;
|
|
25
|
-
action: 'detected' | 'rolled_back' | 'merged';
|
|
26
|
-
}
|
|
27
|
-
export declare class DriftDetector {
|
|
28
|
-
private snapshots;
|
|
29
|
-
private driftLog;
|
|
30
|
-
private memoryDir;
|
|
31
|
-
constructor(memoryDir?: string);
|
|
32
|
-
/**
|
|
33
|
-
* Record a snapshot of a file before writing.
|
|
34
|
-
*/
|
|
35
|
-
snapshot(filePath: string): FileSnapshot | null;
|
|
36
|
-
/**
|
|
37
|
-
* Check for drift before writing.
|
|
38
|
-
*/
|
|
39
|
-
checkDrift(filePath: string): {
|
|
40
|
-
hasDrift: boolean;
|
|
41
|
-
currentChecksum: string;
|
|
42
|
-
expectedChecksum: string;
|
|
43
|
-
currentContent?: string;
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* Create a backup before writing.
|
|
47
|
-
*/
|
|
48
|
-
backup(filePath: string): string | null;
|
|
49
|
-
/**
|
|
50
|
-
* Restore from backup.
|
|
51
|
-
*/
|
|
52
|
-
restore(backupPath: string): boolean;
|
|
53
|
-
/**
|
|
54
|
-
* Merge external changes with our changes.
|
|
55
|
-
*/
|
|
56
|
-
merge(filePath: string, ourContent: string, theirContent: string): string;
|
|
57
|
-
/**
|
|
58
|
-
* Compute checksum for content.
|
|
59
|
-
*/
|
|
60
|
-
private computeChecksum;
|
|
61
|
-
/**
|
|
62
|
-
* Get drift log.
|
|
63
|
-
*/
|
|
64
|
-
getDriftLog(limit?: number): DriftEvent[];
|
|
65
|
-
/**
|
|
66
|
-
* Get snapshot for a file.
|
|
67
|
-
*/
|
|
68
|
-
getSnapshot(filePath: string): FileSnapshot | null;
|
|
69
|
-
/**
|
|
70
|
-
* Clear old snapshots.
|
|
71
|
-
*/
|
|
72
|
-
clearOldSnapshots(maxAgeMs?: number): number;
|
|
73
|
-
}
|
|
74
|
-
export declare function getDriftDetector(): DriftDetector;
|
|
75
|
-
export {};
|
|
76
|
-
//# sourceMappingURL=drift-detector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drift-detector.d.ts","sourceRoot":"","sources":["../../src/memory/drift-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC;CAC/C;AAID,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,CAAC,EAAE,MAAM;IAI9B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAuB/C;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG;QAC5B,QAAQ,EAAE,OAAO,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB;IAoDD;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAcvC;;OAEG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IA0BpC;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAuCzE;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,WAAW,CAAC,KAAK,SAAK,GAAG,UAAU,EAAE;IAIrC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAIlD;;OAEG;IACH,iBAAiB,CAAC,QAAQ,SAAW,GAAG,MAAM;CAa/C;AAMD,wBAAgB,gBAAgB,IAAI,aAAa,CAGhD"}
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DriftDetector — Detect external modifications to memory files.
|
|
3
|
-
*
|
|
4
|
-
* Prevents data corruption by detecting when memory files have been
|
|
5
|
-
* modified outside of the memory tools (e.g., by patch tool, shell append,
|
|
6
|
-
* manual edit, or concurrent session).
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Checksum-based drift detection
|
|
10
|
-
* - Snapshot backup before writes
|
|
11
|
-
* - Automatic rollback on drift
|
|
12
|
-
* - Audit logging
|
|
13
|
-
*/
|
|
14
|
-
import * as fs from 'fs';
|
|
15
|
-
import * as path from 'path';
|
|
16
|
-
import * as crypto from 'crypto';
|
|
17
|
-
// ─── Drift Detector ─────────────────────────────────────────────────────────
|
|
18
|
-
export class DriftDetector {
|
|
19
|
-
snapshots = new Map();
|
|
20
|
-
driftLog = [];
|
|
21
|
-
memoryDir;
|
|
22
|
-
constructor(memoryDir) {
|
|
23
|
-
this.memoryDir = memoryDir || path.join(process.env.HOME || '~', '.nuvira', 'memory');
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Record a snapshot of a file before writing.
|
|
27
|
-
*/
|
|
28
|
-
snapshot(filePath) {
|
|
29
|
-
try {
|
|
30
|
-
if (!fs.existsSync(filePath)) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
34
|
-
const checksum = this.computeChecksum(content);
|
|
35
|
-
const snapshot = {
|
|
36
|
-
path: filePath,
|
|
37
|
-
checksum,
|
|
38
|
-
content,
|
|
39
|
-
timestamp: Date.now(),
|
|
40
|
-
};
|
|
41
|
-
this.snapshots.set(filePath, snapshot);
|
|
42
|
-
return snapshot;
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Check for drift before writing.
|
|
50
|
-
*/
|
|
51
|
-
checkDrift(filePath) {
|
|
52
|
-
const snapshot = this.snapshots.get(filePath);
|
|
53
|
-
if (!snapshot) {
|
|
54
|
-
// No snapshot, can't detect drift
|
|
55
|
-
return {
|
|
56
|
-
hasDrift: false,
|
|
57
|
-
currentChecksum: '',
|
|
58
|
-
expectedChecksum: '',
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
try {
|
|
62
|
-
if (!fs.existsSync(filePath)) {
|
|
63
|
-
// File was deleted
|
|
64
|
-
return {
|
|
65
|
-
hasDrift: true,
|
|
66
|
-
currentChecksum: '',
|
|
67
|
-
expectedChecksum: snapshot.checksum,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
const currentContent = fs.readFileSync(filePath, 'utf-8');
|
|
71
|
-
const currentChecksum = this.computeChecksum(currentContent);
|
|
72
|
-
const hasDrift = currentChecksum !== snapshot.checksum;
|
|
73
|
-
if (hasDrift) {
|
|
74
|
-
this.driftLog.push({
|
|
75
|
-
path: filePath,
|
|
76
|
-
expectedChecksum: snapshot.checksum,
|
|
77
|
-
actualChecksum: currentChecksum,
|
|
78
|
-
timestamp: Date.now(),
|
|
79
|
-
action: 'detected',
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
return {
|
|
83
|
-
hasDrift,
|
|
84
|
-
currentChecksum,
|
|
85
|
-
expectedChecksum: snapshot.checksum,
|
|
86
|
-
currentContent,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
return {
|
|
91
|
-
hasDrift: false,
|
|
92
|
-
currentChecksum: '',
|
|
93
|
-
expectedChecksum: snapshot.checksum,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Create a backup before writing.
|
|
99
|
-
*/
|
|
100
|
-
backup(filePath) {
|
|
101
|
-
try {
|
|
102
|
-
if (!fs.existsSync(filePath)) {
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
const backupPath = `${filePath}.bak.${Date.now()}`;
|
|
106
|
-
fs.copyFileSync(filePath, backupPath);
|
|
107
|
-
return backupPath;
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
return null;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Restore from backup.
|
|
115
|
-
*/
|
|
116
|
-
restore(backupPath) {
|
|
117
|
-
try {
|
|
118
|
-
if (!fs.existsSync(backupPath)) {
|
|
119
|
-
return false;
|
|
120
|
-
}
|
|
121
|
-
const originalPath = backupPath.replace(/\.bak\.\d+$/, '');
|
|
122
|
-
fs.copyFileSync(backupPath, originalPath);
|
|
123
|
-
// Update snapshot
|
|
124
|
-
this.snapshot(originalPath);
|
|
125
|
-
this.driftLog.push({
|
|
126
|
-
path: originalPath,
|
|
127
|
-
expectedChecksum: '',
|
|
128
|
-
actualChecksum: '',
|
|
129
|
-
timestamp: Date.now(),
|
|
130
|
-
action: 'rolled_back',
|
|
131
|
-
});
|
|
132
|
-
return true;
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Merge external changes with our changes.
|
|
140
|
-
*/
|
|
141
|
-
merge(filePath, ourContent, theirContent) {
|
|
142
|
-
// Simple merge strategy: prefer ours for conflicts
|
|
143
|
-
// In production, use a proper merge algorithm
|
|
144
|
-
const ourLines = ourContent.split('\n');
|
|
145
|
-
const theirLines = theirContent.split('\n');
|
|
146
|
-
// Simple line-based merge
|
|
147
|
-
const merged = [];
|
|
148
|
-
const maxLength = Math.max(ourLines.length, theirLines.length);
|
|
149
|
-
for (let i = 0; i < maxLength; i++) {
|
|
150
|
-
const ourLine = ourLines[i];
|
|
151
|
-
const theirLine = theirLines[i];
|
|
152
|
-
if (ourLine === theirLine) {
|
|
153
|
-
merged.push(ourLine || '');
|
|
154
|
-
}
|
|
155
|
-
else if (ourLine !== undefined && theirLine !== undefined) {
|
|
156
|
-
// Conflict - prefer ours
|
|
157
|
-
merged.push(ourLine);
|
|
158
|
-
merged.push(`<!-- DRIFT CONFLICT: ${theirLine} -->`);
|
|
159
|
-
}
|
|
160
|
-
else if (ourLine !== undefined) {
|
|
161
|
-
merged.push(ourLine);
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
merged.push(theirLine);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
this.driftLog.push({
|
|
168
|
-
path: filePath,
|
|
169
|
-
expectedChecksum: '',
|
|
170
|
-
actualChecksum: '',
|
|
171
|
-
timestamp: Date.now(),
|
|
172
|
-
action: 'merged',
|
|
173
|
-
});
|
|
174
|
-
return merged.join('\n');
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Compute checksum for content.
|
|
178
|
-
*/
|
|
179
|
-
computeChecksum(content) {
|
|
180
|
-
return crypto.createHash('sha256').update(content).digest('hex');
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Get drift log.
|
|
184
|
-
*/
|
|
185
|
-
getDriftLog(limit = 50) {
|
|
186
|
-
return this.driftLog.slice(-limit);
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Get snapshot for a file.
|
|
190
|
-
*/
|
|
191
|
-
getSnapshot(filePath) {
|
|
192
|
-
return this.snapshots.get(filePath) || null;
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Clear old snapshots.
|
|
196
|
-
*/
|
|
197
|
-
clearOldSnapshots(maxAgeMs = 3600_000) {
|
|
198
|
-
const cutoff = Date.now() - maxAgeMs;
|
|
199
|
-
let cleared = 0;
|
|
200
|
-
for (const [path, snapshot] of this.snapshots) {
|
|
201
|
-
if (snapshot.timestamp < cutoff) {
|
|
202
|
-
this.snapshots.delete(path);
|
|
203
|
-
cleared++;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
return cleared;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
// ─── Singleton ──────────────────────────────────────────────────────────────
|
|
210
|
-
let _instance = null;
|
|
211
|
-
export function getDriftDetector() {
|
|
212
|
-
if (!_instance)
|
|
213
|
-
_instance = new DriftDetector();
|
|
214
|
-
return _instance;
|
|
215
|
-
}
|
|
216
|
-
//# sourceMappingURL=drift-detector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drift-detector.js","sourceRoot":"","sources":["../../src/memory/drift-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* EnhancedMemoryManager — Memory manager with background sync.
|
|
3
|
-
*
|
|
4
|
-
* Extends the base MemoryManager with:
|
|
5
|
-
* - Background sync for zero-cost per-turn operations
|
|
6
|
-
* - Session-end extraction for fact distillation
|
|
7
|
-
* - Drift detection for memory file safety
|
|
8
|
-
* - Daemon thread management
|
|
9
|
-
*
|
|
10
|
-
* This is the recommended entry point for production use.
|
|
11
|
-
*/
|
|
12
|
-
import { EventEmitter } from 'events';
|
|
13
|
-
import { BackgroundSyncManager } from './background-sync.js';
|
|
14
|
-
import { DriftDetector } from './drift-detector.js';
|
|
15
|
-
import { type SQLiteStore } from './sqlite-store.js';
|
|
16
|
-
import { type CrossSessionPersistence } from './cross-session.js';
|
|
17
|
-
interface EnhancedMemoryConfig {
|
|
18
|
-
enableBackgroundSync: boolean;
|
|
19
|
-
enableDriftDetection: boolean;
|
|
20
|
-
enableSessionExtraction: boolean;
|
|
21
|
-
enableSQLite: boolean;
|
|
22
|
-
syncConcurrency: number;
|
|
23
|
-
drainTimeoutMs: number;
|
|
24
|
-
}
|
|
25
|
-
interface MemoryMetrics {
|
|
26
|
-
turnsBuffered: number;
|
|
27
|
-
factsExtracted: number;
|
|
28
|
-
driftsDetected: number;
|
|
29
|
-
backgroundTasksQueued: number;
|
|
30
|
-
backgroundTasksCompleted: number;
|
|
31
|
-
}
|
|
32
|
-
export declare class EnhancedMemoryManager extends EventEmitter {
|
|
33
|
-
private baseManager;
|
|
34
|
-
private backgroundSync;
|
|
35
|
-
private sessionExtraction;
|
|
36
|
-
private driftDetector;
|
|
37
|
-
private config;
|
|
38
|
-
private metrics;
|
|
39
|
-
private sessionId;
|
|
40
|
-
private sqliteStore;
|
|
41
|
-
private crossSession;
|
|
42
|
-
constructor(config?: Partial<EnhancedMemoryConfig>);
|
|
43
|
-
/**
|
|
44
|
-
* Setup event handlers for background sync.
|
|
45
|
-
*/
|
|
46
|
-
private setupEventHandlers;
|
|
47
|
-
/**
|
|
48
|
-
* Begin a session.
|
|
49
|
-
*/
|
|
50
|
-
startSession(sessionId: string): Promise<void>;
|
|
51
|
-
/**
|
|
52
|
-
* Build memory block for a query.
|
|
53
|
-
*/
|
|
54
|
-
buildMemoryBlock(query: string): Promise<any>;
|
|
55
|
-
/**
|
|
56
|
-
* Record a completed user↔assistant turn (buffered, zero-cost).
|
|
57
|
-
*/
|
|
58
|
-
recordTurn(userText: string, assistantText: string): Promise<void>;
|
|
59
|
-
/**
|
|
60
|
-
* End the session — flush buffered turns into durable facts.
|
|
61
|
-
*/
|
|
62
|
-
endSession(): Promise<string | null>;
|
|
63
|
-
/**
|
|
64
|
-
* Execute a sync task in background.
|
|
65
|
-
*/
|
|
66
|
-
private executeSyncTask;
|
|
67
|
-
/**
|
|
68
|
-
* Add a memory with drift detection.
|
|
69
|
-
*/
|
|
70
|
-
addMemoryWithDriftDetection(filePath: string, content: string): Promise<{
|
|
71
|
-
success: boolean;
|
|
72
|
-
driftDetected: boolean;
|
|
73
|
-
}>;
|
|
74
|
-
/**
|
|
75
|
-
* Get metrics.
|
|
76
|
-
*/
|
|
77
|
-
getMetrics(): MemoryMetrics & {
|
|
78
|
-
backgroundSync: any;
|
|
79
|
-
sqlite?: any;
|
|
80
|
-
};
|
|
81
|
-
/**
|
|
82
|
-
* Get SQLite store.
|
|
83
|
-
*/
|
|
84
|
-
getSQLiteStore(): SQLiteStore | null;
|
|
85
|
-
/**
|
|
86
|
-
* Get cross-session persistence.
|
|
87
|
-
*/
|
|
88
|
-
getCrossSession(): CrossSessionPersistence | null;
|
|
89
|
-
/**
|
|
90
|
-
* Get background sync manager.
|
|
91
|
-
*/
|
|
92
|
-
getBackgroundSync(): BackgroundSyncManager;
|
|
93
|
-
/**
|
|
94
|
-
* Get drift detector.
|
|
95
|
-
*/
|
|
96
|
-
getDriftDetector(): DriftDetector;
|
|
97
|
-
/**
|
|
98
|
-
* Shutdown gracefully.
|
|
99
|
-
*/
|
|
100
|
-
shutdown(): Promise<void>;
|
|
101
|
-
}
|
|
102
|
-
export declare function getEnhancedMemoryManager(): EnhancedMemoryManager;
|
|
103
|
-
export declare function resetEnhancedMemoryManager(): void;
|
|
104
|
-
export {};
|
|
105
|
-
//# sourceMappingURL=enhanced-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enhanced-manager.d.ts","sourceRoot":"","sources":["../../src/memory/enhanced-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAA8B,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAK9F,UAAU,oBAAoB;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,aAAa;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAID,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,YAAY,CAAwC;gBAEhD,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAoClD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAapD;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAInD;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCxE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA4D1C;;OAEG;YACW,eAAe;IAiB7B;;OAEG;IACG,2BAA2B,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC;IAoCxD;;OAEG;IACH,UAAU,IAAI,aAAa,GAAG;QAAE,cAAc,EAAE,GAAG,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,CAAA;KAAE;IAQnE;;OAEG;IACH,cAAc,IAAI,WAAW,GAAG,IAAI;IAIpC;;OAEG;IACH,eAAe,IAAI,uBAAuB,GAAG,IAAI;IAIjD;;OAEG;IACH,iBAAiB,IAAI,qBAAqB;IAI1C;;OAEG;IACH,gBAAgB,IAAI,aAAa;IAIjC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAIhC;AAMD,wBAAgB,wBAAwB,IAAI,qBAAqB,CAGhE;AAED,wBAAgB,0BAA0B,IAAI,IAAI,CAKjD"}
|