sensorium-mcp 3.0.103 → 3.1.0-refactor.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/README.md +25 -0
- package/dist/config/agent-settings.d.ts +69 -0
- package/dist/config/agent-settings.d.ts.map +1 -0
- package/dist/config/agent-settings.js +225 -0
- package/dist/config/agent-settings.js.map +1 -0
- package/dist/config/agent-templates.d.ts +39 -0
- package/dist/config/agent-templates.d.ts.map +1 -0
- package/dist/config/agent-templates.js +105 -0
- package/dist/config/agent-templates.js.map +1 -0
- package/dist/config/index.d.ts +16 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +58 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/keep-alive-settings.d.ts +29 -0
- package/dist/config/keep-alive-settings.d.ts.map +1 -0
- package/dist/config/keep-alive-settings.js +100 -0
- package/dist/config/keep-alive-settings.js.map +1 -0
- package/dist/config/mcp-settings.d.ts +59 -0
- package/dist/config/mcp-settings.d.ts.map +1 -0
- package/dist/config/mcp-settings.js +196 -0
- package/dist/config/mcp-settings.js.map +1 -0
- package/dist/config/misc-settings.d.ts +46 -0
- package/dist/config/misc-settings.d.ts.map +1 -0
- package/dist/config/misc-settings.js +146 -0
- package/dist/config/misc-settings.js.map +1 -0
- package/dist/config/settings-store.d.ts +10 -0
- package/dist/config/settings-store.d.ts.map +1 -0
- package/dist/config/settings-store.js +65 -0
- package/dist/config/settings-store.js.map +1 -0
- package/dist/dashboard/log-parser.d.ts.map +1 -1
- package/dist/dashboard/log-parser.js +12 -2
- package/dist/dashboard/log-parser.js.map +1 -1
- package/dist/dashboard/presets.d.ts +1 -1
- package/dist/dashboard/presets.d.ts.map +1 -1
- package/dist/dashboard/presets.js +1 -1
- package/dist/dashboard/presets.js.map +1 -1
- package/dist/dashboard/routes/agent-templates.d.ts.map +1 -1
- package/dist/dashboard/routes/agent-templates.js +13 -8
- package/dist/dashboard/routes/agent-templates.js.map +1 -1
- package/dist/dashboard/routes/claude.d.ts.map +1 -1
- package/dist/dashboard/routes/claude.js +6 -3
- package/dist/dashboard/routes/claude.js.map +1 -1
- package/dist/dashboard/routes/copilot.d.ts.map +1 -1
- package/dist/dashboard/routes/copilot.js +16 -7
- package/dist/dashboard/routes/copilot.js.map +1 -1
- package/dist/dashboard/routes/data.d.ts.map +1 -1
- package/dist/dashboard/routes/data.js +43 -15
- package/dist/dashboard/routes/data.js.map +1 -1
- package/dist/dashboard/routes/env-vars.d.ts.map +1 -1
- package/dist/dashboard/routes/env-vars.js.map +1 -1
- package/dist/dashboard/routes/mcp-servers.d.ts.map +1 -1
- package/dist/dashboard/routes/mcp-servers.js +11 -5
- package/dist/dashboard/routes/mcp-servers.js.map +1 -1
- package/dist/dashboard/routes/prompts.d.ts.map +1 -1
- package/dist/dashboard/routes/prompts.js +2 -2
- package/dist/dashboard/routes/prompts.js.map +1 -1
- package/dist/dashboard/routes/settings.d.ts.map +1 -1
- package/dist/dashboard/routes/settings.js +5 -3
- package/dist/dashboard/routes/settings.js.map +1 -1
- package/dist/dashboard/routes/skills.d.ts.map +1 -1
- package/dist/dashboard/routes/skills.js +4 -4
- package/dist/dashboard/routes/skills.js.map +1 -1
- package/dist/dashboard/routes/snapshots.d.ts.map +1 -1
- package/dist/dashboard/routes/snapshots.js +18 -11
- package/dist/dashboard/routes/snapshots.js.map +1 -1
- package/dist/dashboard/routes/templates.d.ts.map +1 -1
- package/dist/dashboard/routes/templates.js +6 -3
- package/dist/dashboard/routes/templates.js.map +1 -1
- package/dist/dashboard/routes/threads-create.d.ts +22 -0
- package/dist/dashboard/routes/threads-create.d.ts.map +1 -0
- package/dist/dashboard/routes/threads-create.js +225 -0
- package/dist/dashboard/routes/threads-create.js.map +1 -0
- package/dist/dashboard/routes/threads-helpers.d.ts +28 -0
- package/dist/dashboard/routes/threads-helpers.d.ts.map +1 -0
- package/dist/dashboard/routes/threads-helpers.js +138 -0
- package/dist/dashboard/routes/threads-helpers.js.map +1 -0
- package/dist/dashboard/routes/threads-read.d.ts +26 -0
- package/dist/dashboard/routes/threads-read.d.ts.map +1 -0
- package/dist/dashboard/routes/threads-read.js +118 -0
- package/dist/dashboard/routes/threads-read.js.map +1 -0
- package/dist/dashboard/routes/threads.d.ts +5 -44
- package/dist/dashboard/routes/threads.d.ts.map +1 -1
- package/dist/dashboard/routes/threads.js +40 -496
- package/dist/dashboard/routes/threads.js.map +1 -1
- package/dist/dashboard/routes/types.d.ts.map +1 -1
- package/dist/dashboard/routes/types.js.map +1 -1
- package/dist/dashboard/routes.d.ts.map +1 -1
- package/dist/dashboard/routes.js +9 -5
- package/dist/dashboard/routes.js.map +1 -1
- package/dist/data/daily-marker.d.ts.map +1 -1
- package/dist/data/daily-marker.js +1 -1
- package/dist/data/daily-marker.js.map +1 -1
- package/dist/data/file-storage.d.ts.map +1 -1
- package/dist/data/file-storage.js +40 -16
- package/dist/data/file-storage.js.map +1 -1
- package/dist/data/interfaces.d.ts +23 -2
- package/dist/data/interfaces.d.ts.map +1 -1
- package/dist/data/memory/bootstrap.d.ts +1 -1
- package/dist/data/memory/bootstrap.d.ts.map +1 -1
- package/dist/data/memory/bootstrap.js +32 -13
- package/dist/data/memory/bootstrap.js.map +1 -1
- package/dist/data/memory/consolidation.d.ts.map +1 -1
- package/dist/data/memory/consolidation.js +17 -8
- package/dist/data/memory/consolidation.js.map +1 -1
- package/dist/data/memory/db-types.d.ts +4 -0
- package/dist/data/memory/db-types.d.ts.map +1 -0
- package/dist/data/memory/db-types.js +2 -0
- package/dist/data/memory/db-types.js.map +1 -0
- package/dist/data/memory/episodes.d.ts.map +1 -1
- package/dist/data/memory/episodes.js +3 -5
- package/dist/data/memory/episodes.js.map +1 -1
- package/dist/data/memory/index.d.ts +28 -14
- package/dist/data/memory/index.d.ts.map +1 -1
- package/dist/data/memory/index.js +28 -14
- package/dist/data/memory/index.js.map +1 -1
- package/dist/data/memory/migration-runner.d.ts +1 -1
- package/dist/data/memory/migration-runner.d.ts.map +1 -1
- package/dist/data/memory/migration-runner.js +23 -15
- package/dist/data/memory/migration-runner.js.map +1 -1
- package/dist/data/memory/narrative-lint.d.ts +12 -0
- package/dist/data/memory/narrative-lint.d.ts.map +1 -0
- package/dist/data/memory/narrative-lint.js +117 -0
- package/dist/data/memory/narrative-lint.js.map +1 -0
- package/dist/data/memory/narrative-resolutions.d.ts +26 -0
- package/dist/data/memory/narrative-resolutions.d.ts.map +1 -0
- package/dist/data/memory/narrative-resolutions.js +81 -0
- package/dist/data/memory/narrative-resolutions.js.map +1 -0
- package/dist/data/memory/narrative-sources.d.ts +19 -0
- package/dist/data/memory/narrative-sources.d.ts.map +1 -0
- package/dist/data/memory/narrative-sources.js +150 -0
- package/dist/data/memory/narrative-sources.js.map +1 -0
- package/dist/data/memory/narrative-store.d.ts +11 -0
- package/dist/data/memory/narrative-store.d.ts.map +1 -0
- package/dist/data/memory/narrative-store.js +80 -0
- package/dist/data/memory/narrative-store.js.map +1 -0
- package/dist/data/memory/narrative-types.d.ts +15 -0
- package/dist/data/memory/narrative-types.d.ts.map +1 -0
- package/dist/data/memory/narrative-types.js +3 -0
- package/dist/data/memory/narrative-types.js.map +1 -0
- package/dist/data/memory/narrative.d.ts +5 -2
- package/dist/data/memory/narrative.d.ts.map +1 -1
- package/dist/data/memory/narrative.js +31 -521
- package/dist/data/memory/narrative.js.map +1 -1
- package/dist/data/memory/note-archival.d.ts +17 -0
- package/dist/data/memory/note-archival.d.ts.map +1 -0
- package/dist/data/memory/note-archival.js +48 -0
- package/dist/data/memory/note-archival.js.map +1 -0
- package/dist/data/memory/note-embeddings.d.ts +27 -0
- package/dist/data/memory/note-embeddings.d.ts.map +1 -0
- package/dist/data/memory/note-embeddings.js +98 -0
- package/dist/data/memory/note-embeddings.js.map +1 -0
- package/dist/data/memory/reflection-dedup.d.ts +17 -0
- package/dist/data/memory/reflection-dedup.d.ts.map +1 -0
- package/dist/data/memory/reflection-dedup.js +55 -0
- package/dist/data/memory/reflection-dedup.js.map +1 -0
- package/dist/data/memory/reflection-gates.d.ts +40 -0
- package/dist/data/memory/reflection-gates.d.ts.map +1 -0
- package/dist/data/memory/reflection-gates.js +220 -0
- package/dist/data/memory/reflection-gates.js.map +1 -0
- package/dist/data/memory/reflection-sources.d.ts +13 -0
- package/dist/data/memory/reflection-sources.d.ts.map +1 -0
- package/dist/data/memory/reflection-sources.js +115 -0
- package/dist/data/memory/reflection-sources.js.map +1 -0
- package/dist/data/memory/reflection.d.ts +5 -35
- package/dist/data/memory/reflection.d.ts.map +1 -1
- package/dist/data/memory/reflection.js +25 -329
- package/dist/data/memory/reflection.js.map +1 -1
- package/dist/data/memory/schema-ddl.d.ts +1 -1
- package/dist/data/memory/schema-ddl.d.ts.map +1 -1
- package/dist/data/memory/schema-ddl.js +5 -3
- package/dist/data/memory/schema-ddl.js.map +1 -1
- package/dist/data/memory/schema-guard.d.ts +1 -1
- package/dist/data/memory/schema-guard.d.ts.map +1 -1
- package/dist/data/memory/schema-guard.js +5 -4
- package/dist/data/memory/schema-guard.js.map +1 -1
- package/dist/data/memory/schema.d.ts +2 -2
- package/dist/data/memory/schema.d.ts.map +1 -1
- package/dist/data/memory/schema.js +4 -2
- package/dist/data/memory/schema.js.map +1 -1
- package/dist/data/memory/{semantic.d.ts → semantic-notes.d.ts} +6 -72
- package/dist/data/memory/semantic-notes.d.ts.map +1 -0
- package/dist/data/memory/semantic-notes.js +249 -0
- package/dist/data/memory/semantic-notes.js.map +1 -0
- package/dist/data/memory/semantic-search.d.ts +29 -0
- package/dist/data/memory/semantic-search.d.ts.map +1 -0
- package/dist/data/memory/semantic-search.js +156 -0
- package/dist/data/memory/semantic-search.js.map +1 -0
- package/dist/data/memory/synthesis.d.ts.map +1 -1
- package/dist/data/memory/synthesis.js +15 -7
- package/dist/data/memory/synthesis.js.map +1 -1
- package/dist/data/memory/thread-registry.d.ts +2 -2
- package/dist/data/memory/thread-registry.d.ts.map +1 -1
- package/dist/data/memory/thread-registry.js +74 -36
- package/dist/data/memory/thread-registry.js.map +1 -1
- package/dist/data/memory/topic-index.d.ts +20 -0
- package/dist/data/memory/topic-index.d.ts.map +1 -0
- package/dist/data/memory/topic-index.js +91 -0
- package/dist/data/memory/topic-index.js.map +1 -0
- package/dist/data/memory/topic-shift.js +1 -1
- package/dist/data/memory/topic-shift.js.map +1 -1
- package/dist/data/memory/utils.d.ts +0 -5
- package/dist/data/memory/utils.d.ts.map +1 -1
- package/dist/data/memory/utils.js +0 -94
- package/dist/data/memory/utils.js.map +1 -1
- package/dist/data/sent-message.repository.js +2 -2
- package/dist/data/sent-message.repository.js.map +1 -1
- package/dist/data/templates.js +2 -2
- package/dist/data/templates.js.map +1 -1
- package/dist/index.js +21 -19
- package/dist/index.js.map +1 -1
- package/dist/integrations/openai/chat.d.ts.map +1 -1
- package/dist/integrations/openai/chat.js +5 -5
- package/dist/integrations/openai/chat.js.map +1 -1
- package/dist/integrations/openai/speech.d.ts +1 -1
- package/dist/integrations/openai/speech.d.ts.map +1 -1
- package/dist/integrations/openai/speech.js +1 -3
- package/dist/integrations/openai/speech.js.map +1 -1
- package/dist/integrations/openai/video.d.ts.map +1 -1
- package/dist/integrations/openai/video.js +21 -10
- package/dist/integrations/openai/video.js.map +1 -1
- package/dist/integrations/openai/vision.d.ts.map +1 -1
- package/dist/integrations/openai/vision.js.map +1 -1
- package/dist/integrations/openai/voice-emotion.d.ts.map +1 -1
- package/dist/integrations/openai/voice-emotion.js +2 -2
- package/dist/integrations/openai/voice-emotion.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/{logger.js → lib/logger.js} +77 -50
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/markdown.d.ts.map +1 -0
- package/dist/{markdown.js → lib/markdown.js} +13 -5
- package/dist/lib/markdown.js.map +1 -0
- package/dist/{types.d.ts → lib/types.d.ts} +0 -1
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/{utils.js → lib/utils.js} +29 -9
- package/dist/lib/utils.js.map +1 -0
- package/dist/llm/json.d.ts +14 -0
- package/dist/llm/json.d.ts.map +1 -0
- package/dist/llm/json.js +112 -0
- package/dist/llm/json.js.map +1 -0
- package/dist/llm/prompts/narrative.d.ts +7 -0
- package/dist/llm/prompts/narrative.d.ts.map +1 -0
- package/dist/llm/prompts/narrative.js +124 -0
- package/dist/llm/prompts/narrative.js.map +1 -0
- package/dist/llm/prompts/reflection.d.ts +6 -0
- package/dist/llm/prompts/reflection.d.ts.map +1 -0
- package/dist/llm/prompts/reflection.js +77 -0
- package/dist/llm/prompts/reflection.js.map +1 -0
- package/dist/server/factory.d.ts +2 -2
- package/dist/server/factory.d.ts.map +1 -1
- package/dist/server/factory.js +152 -73
- package/dist/server/factory.js.map +1 -1
- package/dist/{http-server.d.ts → server/http-server.d.ts} +2 -2
- package/dist/server/http-server.d.ts.map +1 -0
- package/dist/{http-server.js → server/http-server.js} +38 -17
- package/dist/server/http-server.js.map +1 -0
- package/dist/{stdio-server.d.ts → server/stdio-server.d.ts} +1 -1
- package/dist/server/stdio-server.d.ts.map +1 -0
- package/dist/{stdio-server.js → server/stdio-server.js} +25 -11
- package/dist/server/stdio-server.js.map +1 -0
- package/dist/services/agent-spawn.service.d.ts +1 -1
- package/dist/services/agent-spawn.service.d.ts.map +1 -1
- package/dist/services/agent-spawn.service.js +17 -7
- package/dist/services/agent-spawn.service.js.map +1 -1
- package/dist/services/background-runner.d.ts +2 -2
- package/dist/services/background-runner.d.ts.map +1 -1
- package/dist/services/background-runner.js +8 -3
- package/dist/services/background-runner.js.map +1 -1
- package/dist/services/claude-spawn.service.d.ts.map +1 -1
- package/dist/services/claude-spawn.service.js +61 -52
- package/dist/services/claude-spawn.service.js.map +1 -1
- package/dist/services/codex-spawn.service.d.ts.map +1 -1
- package/dist/services/codex-spawn.service.js +52 -40
- package/dist/services/codex-spawn.service.js.map +1 -1
- package/dist/services/consolidation-prompts.d.ts +26 -0
- package/dist/services/consolidation-prompts.d.ts.map +1 -0
- package/dist/services/consolidation-prompts.js +144 -0
- package/dist/services/consolidation-prompts.js.map +1 -0
- package/dist/services/consolidation.service.d.ts +1 -5
- package/dist/services/consolidation.service.d.ts.map +1 -1
- package/dist/services/consolidation.service.js +53 -322
- package/dist/services/consolidation.service.js.map +1 -1
- package/dist/services/copilot-spawn.service.d.ts.map +1 -1
- package/dist/services/copilot-spawn.service.js +47 -57
- package/dist/services/copilot-spawn.service.js.map +1 -1
- package/dist/{daily-session.d.ts → services/daily-session.d.ts} +1 -1
- package/dist/services/daily-session.d.ts.map +1 -0
- package/dist/{daily-session.js → services/daily-session.js} +15 -14
- package/dist/services/daily-session.js.map +1 -0
- package/dist/services/dispatcher/broker.d.ts +0 -6
- package/dist/services/dispatcher/broker.d.ts.map +1 -1
- package/dist/services/dispatcher/broker.js +46 -38
- package/dist/services/dispatcher/broker.js.map +1 -1
- package/dist/services/dispatcher/index.d.ts +1 -1
- package/dist/services/dispatcher/index.d.ts.map +1 -1
- package/dist/services/dispatcher/index.js +1 -1
- package/dist/services/dispatcher/index.js.map +1 -1
- package/dist/services/dispatcher/lock.d.ts.map +1 -1
- package/dist/services/dispatcher/lock.js +24 -9
- package/dist/services/dispatcher/lock.js.map +1 -1
- package/dist/services/dispatcher/poller.d.ts +1 -1
- package/dist/services/dispatcher/poller.d.ts.map +1 -1
- package/dist/services/dispatcher/poller.js +74 -49
- package/dist/services/dispatcher/poller.js.map +1 -1
- package/dist/services/drive.d.ts.map +1 -0
- package/dist/{drive.js → services/drive.js} +1 -1
- package/dist/services/drive.js.map +1 -0
- package/dist/services/intent.d.ts.map +1 -0
- package/dist/{intent.js → services/intent.js} +78 -23
- package/dist/services/intent.js.map +1 -0
- package/dist/services/keep-alive-sync.service.d.ts +11 -0
- package/dist/services/keep-alive-sync.service.d.ts.map +1 -0
- package/dist/services/keep-alive-sync.service.js +47 -0
- package/dist/services/keep-alive-sync.service.js.map +1 -0
- package/dist/services/keeper.service.d.ts +1 -1
- package/dist/services/keeper.service.d.ts.map +1 -1
- package/dist/services/keeper.service.js +31 -18
- package/dist/services/keeper.service.js.map +1 -1
- package/dist/services/maintenance-signal.js +1 -1
- package/dist/services/maintenance-signal.js.map +1 -1
- package/dist/services/mcp-config.service.d.ts.map +1 -1
- package/dist/services/mcp-config.service.js +19 -6
- package/dist/services/mcp-config.service.js.map +1 -1
- package/dist/services/memory-briefing.service.d.ts.map +1 -1
- package/dist/services/memory-briefing.service.js +13 -7
- package/dist/services/memory-briefing.service.js.map +1 -1
- package/dist/services/memory-pruning.service.d.ts +12 -0
- package/dist/services/memory-pruning.service.d.ts.map +1 -0
- package/dist/services/memory-pruning.service.js +177 -0
- package/dist/services/memory-pruning.service.js.map +1 -0
- package/dist/services/process.service.d.ts +7 -2
- package/dist/services/process.service.d.ts.map +1 -1
- package/dist/services/process.service.js +233 -103
- package/dist/services/process.service.js.map +1 -1
- package/dist/services/reconnect-snapshot.service.d.ts.map +1 -1
- package/dist/services/reconnect-snapshot.service.js +3 -3
- package/dist/services/reconnect-snapshot.service.js.map +1 -1
- package/dist/{scheduler.d.ts → services/scheduler.d.ts} +1 -23
- package/dist/services/scheduler.d.ts.map +1 -0
- package/dist/{scheduler.js → services/scheduler.js} +6 -8
- package/dist/services/scheduler.js.map +1 -0
- package/dist/services/self-update.service.d.ts +15 -5
- package/dist/services/self-update.service.d.ts.map +1 -1
- package/dist/services/self-update.service.js +85 -41
- package/dist/services/self-update.service.js.map +1 -1
- package/dist/services/spawn-common.d.ts +40 -16
- package/dist/services/spawn-common.d.ts.map +1 -1
- package/dist/services/spawn-common.js +163 -36
- package/dist/services/spawn-common.js.map +1 -1
- package/dist/{telegram.d.ts → services/telegram.d.ts} +3 -3
- package/dist/services/telegram.d.ts.map +1 -0
- package/dist/{telegram.js → services/telegram.js} +16 -8
- package/dist/services/telegram.js.map +1 -0
- package/dist/services/thread-config.service.d.ts +25 -0
- package/dist/services/thread-config.service.d.ts.map +1 -0
- package/dist/services/thread-config.service.js +73 -0
- package/dist/services/thread-config.service.js.map +1 -0
- package/dist/services/thread-health.service.d.ts.map +1 -1
- package/dist/services/thread-health.service.js +23 -9
- package/dist/services/thread-health.service.js.map +1 -1
- package/dist/services/thread-lifecycle.service.d.ts.map +1 -1
- package/dist/services/thread-lifecycle.service.js +21 -7
- package/dist/services/thread-lifecycle.service.js.map +1 -1
- package/dist/services/topic.service.d.ts.map +1 -1
- package/dist/services/topic.service.js +17 -6
- package/dist/services/topic.service.js.map +1 -1
- package/dist/services/worker-cleanup.service.d.ts +3 -2
- package/dist/services/worker-cleanup.service.d.ts.map +1 -1
- package/dist/services/worker-cleanup.service.js +31 -19
- package/dist/services/worker-cleanup.service.js.map +1 -1
- package/dist/sessions/dashboard-registry.d.ts +38 -0
- package/dist/sessions/dashboard-registry.d.ts.map +1 -0
- package/dist/sessions/dashboard-registry.js +84 -0
- package/dist/sessions/dashboard-registry.js.map +1 -0
- package/dist/{sessions.d.ts → sessions/mcp-registry.d.ts} +3 -60
- package/dist/sessions/mcp-registry.d.ts.map +1 -0
- package/dist/{sessions.js → sessions/mcp-registry.js} +5 -214
- package/dist/sessions/mcp-registry.js.map +1 -0
- package/dist/sessions/session-store.d.ts +17 -0
- package/dist/sessions/session-store.d.ts.map +1 -0
- package/dist/sessions/session-store.js +69 -0
- package/dist/sessions/session-store.js.map +1 -0
- package/dist/sessions/topic-registry.d.ts +14 -0
- package/dist/sessions/topic-registry.d.ts.map +1 -0
- package/dist/sessions/topic-registry.js +67 -0
- package/dist/sessions/topic-registry.js.map +1 -0
- package/dist/tools/definitions.d.ts +1 -9
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/defs/memory-defs.d.ts +1 -1
- package/dist/tools/defs/memory-defs.d.ts.map +1 -1
- package/dist/tools/defs/memory-defs.js +1 -1
- package/dist/tools/defs/memory-defs.js.map +1 -1
- package/dist/tools/defs/session-defs.d.ts +1 -1
- package/dist/tools/defs/session-defs.d.ts.map +1 -1
- package/dist/tools/defs/session-defs.js +3 -14
- package/dist/tools/defs/session-defs.js.map +1 -1
- package/dist/tools/defs/skill-defs.d.ts +1 -1
- package/dist/tools/defs/skill-defs.d.ts.map +1 -1
- package/dist/tools/defs/types.d.ts +11 -0
- package/dist/tools/defs/types.d.ts.map +1 -0
- package/dist/{chat-ui/src → tools/defs}/types.js.map +1 -1
- package/dist/tools/defs/utility-defs.d.ts +1 -1
- package/dist/tools/defs/utility-defs.d.ts.map +1 -1
- package/dist/tools/defs/utility-defs.js.map +1 -1
- package/dist/tools/defs/wait-defs.d.ts +1 -1
- package/dist/tools/defs/wait-defs.d.ts.map +1 -1
- package/dist/tools/delegate-tool.d.ts +2 -2
- package/dist/tools/delegate-tool.d.ts.map +1 -1
- package/dist/tools/delegate-tool.js +57 -37
- package/dist/tools/delegate-tool.js.map +1 -1
- package/dist/tools/memory-tools.d.ts +2 -2
- package/dist/tools/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory-tools.js +108 -37
- package/dist/tools/memory-tools.js.map +1 -1
- package/dist/{response-builders.d.ts → tools/response-builders.d.ts} +2 -2
- package/dist/tools/response-builders.d.ts.map +1 -0
- package/dist/{response-builders.js → tools/response-builders.js} +151 -30
- package/dist/tools/response-builders.js.map +1 -0
- package/dist/tools/session-tools.d.ts +5 -14
- package/dist/tools/session-tools.d.ts.map +1 -1
- package/dist/tools/session-tools.js +17 -12
- package/dist/tools/session-tools.js.map +1 -1
- package/dist/tools/shared-agent-utils.d.ts +1 -1
- package/dist/tools/shared-agent-utils.d.ts.map +1 -1
- package/dist/tools/shared-agent-utils.js +2 -4
- package/dist/tools/shared-agent-utils.js.map +1 -1
- package/dist/tools/skill-tools.d.ts +1 -1
- package/dist/tools/skill-tools.d.ts.map +1 -1
- package/dist/tools/skill-tools.js +12 -7
- package/dist/tools/skill-tools.js.map +1 -1
- package/dist/tools/start-session-tool.d.ts +3 -3
- package/dist/tools/start-session-tool.d.ts.map +1 -1
- package/dist/tools/start-session-tool.js +35 -25
- package/dist/tools/start-session-tool.js.map +1 -1
- package/dist/tools/utility-tools.d.ts +3 -3
- package/dist/tools/utility-tools.d.ts.map +1 -1
- package/dist/tools/utility-tools.js +46 -28
- package/dist/tools/utility-tools.js.map +1 -1
- package/dist/tools/wait/auto-forward.d.ts +1 -1
- package/dist/tools/wait/auto-forward.d.ts.map +1 -1
- package/dist/tools/wait/auto-forward.js +6 -4
- package/dist/tools/wait/auto-forward.js.map +1 -1
- package/dist/tools/wait/context.d.ts +45 -0
- package/dist/tools/wait/context.d.ts.map +1 -0
- package/dist/tools/wait/context.js +5 -0
- package/dist/tools/wait/context.js.map +1 -0
- package/dist/tools/wait/drive-handler.d.ts +2 -2
- package/dist/tools/wait/drive-handler.d.ts.map +1 -1
- package/dist/tools/wait/drive-handler.js +24 -12
- package/dist/tools/wait/drive-handler.js.map +1 -1
- package/dist/tools/wait/index.d.ts +2 -1
- package/dist/tools/wait/index.d.ts.map +1 -1
- package/dist/tools/wait/index.js.map +1 -1
- package/dist/tools/wait/media-processor.d.ts +4 -4
- package/dist/tools/wait/media-processor.d.ts.map +1 -1
- package/dist/tools/wait/media-processor.js +17 -8
- package/dist/tools/wait/media-processor.js.map +1 -1
- package/dist/tools/wait/message-delivery.d.ts +5 -5
- package/dist/tools/wait/message-delivery.d.ts.map +1 -1
- package/dist/tools/wait/message-delivery.js +78 -37
- package/dist/tools/wait/message-delivery.js.map +1 -1
- package/dist/tools/wait/message-processing.d.ts +2 -2
- package/dist/tools/wait/message-processing.d.ts.map +1 -1
- package/dist/tools/wait/message-processing.js +95 -37
- package/dist/tools/wait/message-processing.js.map +1 -1
- package/dist/tools/wait/poll-loop.d.ts +2 -41
- package/dist/tools/wait/poll-loop.d.ts.map +1 -1
- package/dist/tools/wait/poll-loop.js +75 -23
- package/dist/tools/wait/poll-loop.js.map +1 -1
- package/dist/tools/wait/reaction-handler.d.ts +3 -3
- package/dist/tools/wait/reaction-handler.d.ts.map +1 -1
- package/dist/tools/wait/reaction-handler.js +6 -6
- package/dist/tools/wait/reaction-handler.js.map +1 -1
- package/dist/tools/wait/task-handler.d.ts +1 -1
- package/dist/tools/wait/task-handler.d.ts.map +1 -1
- package/dist/tools/wait/task-handler.js +5 -4
- package/dist/tools/wait/task-handler.js.map +1 -1
- package/package.json +11 -2
- package/templates/code-review.default.md +1 -1
- package/templates/fire-and-forget.default.md +1 -1
- package/templates/handoff.default.md +1 -1
- package/templates/sensorium-repair.default.md +1 -1
- package/templates/sleep.default.md +1 -1
- package/dist/chat-ui/src/main.d.ts +0 -2
- package/dist/chat-ui/src/main.d.ts.map +0 -1
- package/dist/chat-ui/src/main.js +0 -4
- package/dist/chat-ui/src/main.js.map +0 -1
- package/dist/chat-ui/src/markdown.d.ts +0 -2
- package/dist/chat-ui/src/markdown.d.ts.map +0 -1
- package/dist/chat-ui/src/markdown.js +0 -39
- package/dist/chat-ui/src/markdown.js.map +0 -1
- package/dist/chat-ui/src/mock-data.d.ts +0 -4
- package/dist/chat-ui/src/mock-data.d.ts.map +0 -1
- package/dist/chat-ui/src/mock-data.js +0 -230
- package/dist/chat-ui/src/mock-data.js.map +0 -1
- package/dist/chat-ui/src/types.d.ts +0 -47
- package/dist/chat-ui/src/types.d.ts.map +0 -1
- package/dist/chat-ui/vite.config.d.ts +0 -3
- package/dist/chat-ui/vite.config.d.ts.map +0 -1
- package/dist/chat-ui/vite.config.js +0 -14
- package/dist/chat-ui/vite.config.js.map +0 -1
- package/dist/config.d.ts +0 -228
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -841
- package/dist/config.js.map +0 -1
- package/dist/daily-session.d.ts.map +0 -1
- package/dist/daily-session.js.map +0 -1
- package/dist/dashboard.d.ts +0 -10
- package/dist/dashboard.d.ts.map +0 -1
- package/dist/dashboard.js +0 -10
- package/dist/dashboard.js.map +0 -1
- package/dist/data/memory/semantic.d.ts.map +0 -1
- package/dist/data/memory/semantic.js +0 -588
- package/dist/data/memory/semantic.js.map +0 -1
- package/dist/dispatcher.d.ts +0 -9
- package/dist/dispatcher.d.ts.map +0 -1
- package/dist/dispatcher.js +0 -9
- package/dist/dispatcher.js.map +0 -1
- package/dist/drive.d.ts.map +0 -1
- package/dist/drive.js.map +0 -1
- package/dist/http-server.d.ts.map +0 -1
- package/dist/http-server.js.map +0 -1
- package/dist/intent.d.ts.map +0 -1
- package/dist/intent.js.map +0 -1
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js.map +0 -1
- package/dist/markdown.d.ts.map +0 -1
- package/dist/markdown.js.map +0 -1
- package/dist/memory.d.ts +0 -9
- package/dist/memory.d.ts.map +0 -1
- package/dist/memory.js +0 -9
- package/dist/memory.js.map +0 -1
- package/dist/openai.d.ts +0 -13
- package/dist/openai.d.ts.map +0 -1
- package/dist/openai.js +0 -17
- package/dist/openai.js.map +0 -1
- package/dist/response-builders.d.ts.map +0 -1
- package/dist/response-builders.js.map +0 -1
- package/dist/scheduler.d.ts.map +0 -1
- package/dist/scheduler.js.map +0 -1
- package/dist/sessions.d.ts.map +0 -1
- package/dist/sessions.js.map +0 -1
- package/dist/stdio-server.d.ts.map +0 -1
- package/dist/stdio-server.js.map +0 -1
- package/dist/telegram.d.ts.map +0 -1
- package/dist/telegram.js.map +0 -1
- package/dist/tool-definitions.d.ts +0 -2
- package/dist/tool-definitions.d.ts.map +0 -1
- package/dist/tool-definitions.js +0 -2
- package/dist/tool-definitions.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js.map +0 -1
- /package/dist/{logger.d.ts → lib/logger.d.ts} +0 -0
- /package/dist/{markdown.d.ts → lib/markdown.d.ts} +0 -0
- /package/dist/{types.js → lib/types.js} +0 -0
- /package/dist/{utils.d.ts → lib/utils.d.ts} +0 -0
- /package/dist/{drive.d.ts → services/drive.d.ts} +0 -0
- /package/dist/{intent.d.ts → services/intent.d.ts} +0 -0
- /package/dist/{chat-ui/src → tools/defs}/types.js +0 -0
|
@@ -1,588 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Semantic note CRUD operations for the memory system.
|
|
3
|
-
*
|
|
4
|
-
* Extracted from memory.ts — semantic memory layer.
|
|
5
|
-
*/
|
|
6
|
-
import { generateId, nowISO, jsonOrNull, parseJsonArray, parseJsonObject } from "./utils.js";
|
|
7
|
-
import { cosineSimilarity } from "../../openai.js";
|
|
8
|
-
import { log } from "../../logger.js";
|
|
9
|
-
// ─── Constants ───────────────────────────────────────────────────────────────
|
|
10
|
-
/** Maximum guardrail notes returned by getGuardrailNotes. */
|
|
11
|
-
const GUARDRAIL_LIMIT = 5;
|
|
12
|
-
/** Maximum pinned notes returned by getPinnedNotes. */
|
|
13
|
-
const PINNED_LIMIT = 20;
|
|
14
|
-
/** Minimum shared keywords required to flag a note as a potential conflict. */
|
|
15
|
-
const MIN_KEYWORD_OVERLAP = 2;
|
|
16
|
-
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
17
|
-
/** Increment access_count and update last_accessed for a batch of note IDs. */
|
|
18
|
-
function bumpAccessCounts(db, noteIds) {
|
|
19
|
-
if (noteIds.length === 0)
|
|
20
|
-
return;
|
|
21
|
-
const now = nowISO();
|
|
22
|
-
const stmt = db.prepare(`UPDATE semantic_notes SET access_count = access_count + 1, last_accessed = ? WHERE note_id = ?`);
|
|
23
|
-
db.transaction(() => {
|
|
24
|
-
for (const id of noteIds)
|
|
25
|
-
stmt.run(now, id);
|
|
26
|
-
})();
|
|
27
|
-
}
|
|
28
|
-
// ─── Row → Interface mappers ─────────────────────────────────────────────────
|
|
29
|
-
function rowToSemanticNote(row) {
|
|
30
|
-
return {
|
|
31
|
-
noteId: row.note_id,
|
|
32
|
-
type: row.type,
|
|
33
|
-
content: row.content,
|
|
34
|
-
keywords: parseJsonArray(row.keywords),
|
|
35
|
-
confidence: row.confidence,
|
|
36
|
-
priority: row.priority ?? 0,
|
|
37
|
-
threadId: row.thread_id ?? null,
|
|
38
|
-
sourceEpisodes: parseJsonArray(row.source_episodes),
|
|
39
|
-
linkedNotes: parseJsonArray(row.linked_notes),
|
|
40
|
-
linkReasons: parseJsonObject(row.link_reasons),
|
|
41
|
-
validFrom: row.valid_from,
|
|
42
|
-
validTo: row.valid_to ?? null,
|
|
43
|
-
supersededBy: row.superseded_by ?? null,
|
|
44
|
-
accessCount: row.access_count,
|
|
45
|
-
lastAccessed: row.last_accessed ?? null,
|
|
46
|
-
isGuardrail: row.is_guardrail === 1,
|
|
47
|
-
pinned: row.pinned === 1,
|
|
48
|
-
qualityScore: row.quality_score ?? null,
|
|
49
|
-
createdAt: row.created_at,
|
|
50
|
-
updatedAt: row.updated_at,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
// ─── Topic Index ─────────────────────────────────────────────────────────────
|
|
54
|
-
export function updateTopicIndexForKeywords(db, keywords) {
|
|
55
|
-
const now = nowISO();
|
|
56
|
-
const upsertStmt = db.prepare(`INSERT INTO meta_topic_index (topic, semantic_count, last_updated)
|
|
57
|
-
VALUES (?, 1, ?)
|
|
58
|
-
ON CONFLICT(topic) DO UPDATE SET
|
|
59
|
-
semantic_count = semantic_count + 1,
|
|
60
|
-
last_updated = ?`);
|
|
61
|
-
const txn = db.transaction(() => {
|
|
62
|
-
for (const kw of keywords) {
|
|
63
|
-
const normalised = kw.toLowerCase().trim();
|
|
64
|
-
if (normalised.length > 1) {
|
|
65
|
-
upsertStmt.run(normalised, now, now);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
txn();
|
|
70
|
-
}
|
|
71
|
-
export function decrementTopicIndexForKeywords(db, keywords) {
|
|
72
|
-
const decrementStmt = db.prepare(`UPDATE meta_topic_index SET semantic_count = MAX(semantic_count - 1, 0) WHERE topic = ?`);
|
|
73
|
-
const deleteStmt = db.prepare(`DELETE FROM meta_topic_index WHERE topic = ? AND semantic_count <= 0`);
|
|
74
|
-
const txn = db.transaction(() => {
|
|
75
|
-
for (const kw of keywords) {
|
|
76
|
-
const normalised = kw.toLowerCase().trim();
|
|
77
|
-
if (normalised.length > 1) {
|
|
78
|
-
decrementStmt.run(normalised);
|
|
79
|
-
deleteStmt.run(normalised);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
txn();
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Recompute meta_topic_index from scratch over the currently-active notes.
|
|
87
|
-
*
|
|
88
|
-
* The incremental upsert/decrement counters drift because note expiry,
|
|
89
|
-
* supersession and merge bypass the decrement path (they UPDATE valid_to
|
|
90
|
-
* directly). Rather than wire decrements into every expiry site, we treat the
|
|
91
|
-
* index as a derived aggregate and rebuild it authoritatively here — called
|
|
92
|
-
* during consolidation. semantic_count reflects live notes; total_accesses is
|
|
93
|
-
* the summed access_count of those notes (a real retrieval signal, which is
|
|
94
|
-
* what bootstrap orders by). Returns the number of topics indexed.
|
|
95
|
-
*/
|
|
96
|
-
export function rebuildTopicIndex(db) {
|
|
97
|
-
const rows = db
|
|
98
|
-
.prepare(`SELECT keywords, confidence, access_count FROM semantic_notes
|
|
99
|
-
WHERE valid_to IS NULL AND superseded_by IS NULL`)
|
|
100
|
-
.all();
|
|
101
|
-
const agg = new Map();
|
|
102
|
-
for (const row of rows) {
|
|
103
|
-
let keywords;
|
|
104
|
-
try {
|
|
105
|
-
keywords = JSON.parse(row.keywords);
|
|
106
|
-
}
|
|
107
|
-
catch {
|
|
108
|
-
continue;
|
|
109
|
-
}
|
|
110
|
-
if (!Array.isArray(keywords))
|
|
111
|
-
continue;
|
|
112
|
-
const seen = new Set();
|
|
113
|
-
for (const kw of keywords) {
|
|
114
|
-
if (typeof kw !== "string")
|
|
115
|
-
continue;
|
|
116
|
-
const normalised = kw.toLowerCase().trim();
|
|
117
|
-
if (normalised.length <= 1 || seen.has(normalised))
|
|
118
|
-
continue;
|
|
119
|
-
seen.add(normalised);
|
|
120
|
-
const entry = agg.get(normalised) ?? { count: 0, confSum: 0, accesses: 0 };
|
|
121
|
-
entry.count += 1;
|
|
122
|
-
entry.confSum += row.confidence ?? 0.5;
|
|
123
|
-
entry.accesses += row.access_count ?? 0;
|
|
124
|
-
agg.set(normalised, entry);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
const now = nowISO();
|
|
128
|
-
const insert = db.prepare(`INSERT INTO meta_topic_index (topic, semantic_count, last_updated, avg_confidence, total_accesses)
|
|
129
|
-
VALUES (?, ?, ?, ?, ?)`);
|
|
130
|
-
const txn = db.transaction(() => {
|
|
131
|
-
db.prepare(`DELETE FROM meta_topic_index`).run();
|
|
132
|
-
for (const [topic, entry] of agg) {
|
|
133
|
-
insert.run(topic, entry.count, now, entry.confSum / entry.count, entry.accesses);
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
txn();
|
|
137
|
-
return agg.size;
|
|
138
|
-
}
|
|
139
|
-
// ─── Semantic Memory CRUD ────────────────────────────────────────────────────
|
|
140
|
-
/** Look up a single semantic note by ID (returns type + keywords only, or undefined). */
|
|
141
|
-
export function getSemanticNoteById(db, noteId) {
|
|
142
|
-
const row = db.prepare("SELECT type, keywords FROM semantic_notes WHERE note_id = ?").get(noteId);
|
|
143
|
-
if (!row)
|
|
144
|
-
return undefined;
|
|
145
|
-
return { type: row.type, keywords: parseJsonArray(row.keywords) };
|
|
146
|
-
}
|
|
147
|
-
export function getSemanticNotesByIds(db, noteIds) {
|
|
148
|
-
if (noteIds.length === 0)
|
|
149
|
-
return [];
|
|
150
|
-
const placeholders = noteIds.map(() => "?").join(",");
|
|
151
|
-
const rows = db.prepare(`SELECT * FROM semantic_notes WHERE note_id IN (${placeholders}) AND valid_to IS NULL AND superseded_by IS NULL`).all(...noteIds);
|
|
152
|
-
return rows.map(rowToSemanticNote);
|
|
153
|
-
}
|
|
154
|
-
export function saveSemanticNote(db, note) {
|
|
155
|
-
const validTypes = new Set(["fact", "preference", "pattern", "entity", "relationship"]);
|
|
156
|
-
if (!validTypes.has(note.type)) {
|
|
157
|
-
log.warn(`[semantic] Saving note with non-standard type "${note.type}" — consider using fact/preference/pattern/entity/relationship`);
|
|
158
|
-
}
|
|
159
|
-
const id = generateId("sn");
|
|
160
|
-
const now = nowISO();
|
|
161
|
-
const qualityScore = note.qualityScore != null ? Math.max(1, Math.min(5, Math.round(note.qualityScore))) : null;
|
|
162
|
-
if (qualityScore !== null && qualityScore < 3) {
|
|
163
|
-
log.warn(`[semantic] Low-quality note (score ${qualityScore}/5): ${note.content.slice(0, 120)}`);
|
|
164
|
-
}
|
|
165
|
-
db.prepare(`INSERT INTO semantic_notes
|
|
166
|
-
(note_id, type, content, keywords, confidence, priority, thread_id, is_guardrail, pinned, source_episodes, linked_notes, link_reasons, valid_from, access_count, quality_score, created_at, updated_at)
|
|
167
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?, ?, ?)`).run(id, note.type, note.content, JSON.stringify(note.keywords), Math.max(0, Math.min(1, note.confidence ?? 0.5)), Math.max(0, Math.min(2, note.priority ?? 0)), note.threadId ?? null, note.isGuardrail ? 1 : 0, note.pinned ? 1 : 0, jsonOrNull(note.sourceEpisodes), jsonOrNull(note.linkedNotes), note.linkReasons ? JSON.stringify(note.linkReasons) : null, now, qualityScore, now, now);
|
|
168
|
-
// Update topic index for each keyword
|
|
169
|
-
updateTopicIndexForKeywords(db, note.keywords);
|
|
170
|
-
return id;
|
|
171
|
-
}
|
|
172
|
-
export function searchSemanticNotes(db, query, options) {
|
|
173
|
-
const maxResults = options?.maxResults ?? 10;
|
|
174
|
-
const terms = query
|
|
175
|
-
.toLowerCase()
|
|
176
|
-
.split(/\s+/)
|
|
177
|
-
.filter((t) => t.length > 1);
|
|
178
|
-
if (terms.length === 0)
|
|
179
|
-
return [];
|
|
180
|
-
// Build LIKE conditions: each term must match content OR keywords
|
|
181
|
-
// Escape SQL LIKE wildcards in search terms
|
|
182
|
-
const conditions = [];
|
|
183
|
-
const params = [];
|
|
184
|
-
for (const term of terms) {
|
|
185
|
-
const escaped = term.replace(/%/g, "\\%").replace(/_/g, "\\_");
|
|
186
|
-
conditions.push(`(LOWER(content) LIKE ? ESCAPE '\\' OR LOWER(keywords) LIKE ? ESCAPE '\\')`);
|
|
187
|
-
params.push(`%${escaped}%`, `%${escaped}%`);
|
|
188
|
-
}
|
|
189
|
-
let sql = `SELECT * FROM semantic_notes WHERE valid_to IS NULL AND superseded_by IS NULL AND (${conditions.join(" AND ")})`;
|
|
190
|
-
if (options?.startTime) {
|
|
191
|
-
sql += ` AND created_at >= ?`;
|
|
192
|
-
params.push(options.startTime);
|
|
193
|
-
}
|
|
194
|
-
if (options?.endTime) {
|
|
195
|
-
sql += ` AND created_at <= ?`;
|
|
196
|
-
params.push(options.endTime);
|
|
197
|
-
}
|
|
198
|
-
// Thread filtering: current thread + universal globals (thread_id IS NULL); foreign threads excluded.
|
|
199
|
-
if (options?.threadId !== undefined) {
|
|
200
|
-
sql += ` AND (thread_id = ? OR thread_id IS NULL)`;
|
|
201
|
-
params.push(options.threadId);
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
// Fail-closed: never broaden to the whole cross-thread pool. Only universal notes.
|
|
205
|
-
sql += ` AND (thread_id IS NULL OR is_guardrail = 1 OR pinned = 1)`;
|
|
206
|
-
}
|
|
207
|
-
if (options?.types && options.types.length > 0) {
|
|
208
|
-
const placeholders = options.types.map(() => "?").join(",");
|
|
209
|
-
sql += ` AND type IN (${placeholders})`;
|
|
210
|
-
params.push(...options.types);
|
|
211
|
-
}
|
|
212
|
-
sql += ` ORDER BY confidence DESC, access_count DESC LIMIT ?`;
|
|
213
|
-
params.push(maxResults);
|
|
214
|
-
const rows = db.prepare(sql).all(...params);
|
|
215
|
-
// Update access counts
|
|
216
|
-
if (!options?.skipAccessTracking) {
|
|
217
|
-
bumpAccessCounts(db, rows.map(r => r.note_id));
|
|
218
|
-
}
|
|
219
|
-
return rows.map(rowToSemanticNote);
|
|
220
|
-
}
|
|
221
|
-
export function searchSemanticNotesRanked(db, query, options) {
|
|
222
|
-
const maxResults = options?.maxResults ?? 10;
|
|
223
|
-
const minMatchRatio = options?.minMatchRatio ?? 0.4; // require at least 40% of terms to match
|
|
224
|
-
const terms = query.toLowerCase().split(/\s+/).filter(t => t.length > 1);
|
|
225
|
-
if (terms.length === 0)
|
|
226
|
-
return [];
|
|
227
|
-
// Use OR to get broad recall
|
|
228
|
-
const conditions = [];
|
|
229
|
-
const params = [];
|
|
230
|
-
for (const term of terms) {
|
|
231
|
-
const escaped = term.replace(/%/g, "\\%").replace(/_/g, "\\_");
|
|
232
|
-
conditions.push(`(LOWER(content) LIKE ? ESCAPE '\\' OR LOWER(keywords) LIKE ? ESCAPE '\\')`);
|
|
233
|
-
params.push(`%${escaped}%`, `%${escaped}%`);
|
|
234
|
-
}
|
|
235
|
-
let sql = `SELECT * FROM semantic_notes WHERE valid_to IS NULL AND superseded_by IS NULL AND (${conditions.join(" OR ")})`;
|
|
236
|
-
if (options?.startTime) {
|
|
237
|
-
sql += ` AND created_at >= ?`;
|
|
238
|
-
params.push(options.startTime);
|
|
239
|
-
}
|
|
240
|
-
if (options?.endTime) {
|
|
241
|
-
sql += ` AND created_at <= ?`;
|
|
242
|
-
params.push(options.endTime);
|
|
243
|
-
}
|
|
244
|
-
// Thread filtering: current thread + universal globals (thread_id IS NULL); foreign threads excluded.
|
|
245
|
-
if (options?.threadId !== undefined) {
|
|
246
|
-
sql += ` AND (thread_id = ? OR thread_id IS NULL)`;
|
|
247
|
-
params.push(options.threadId);
|
|
248
|
-
}
|
|
249
|
-
else {
|
|
250
|
-
// Fail-closed: never broaden to the whole cross-thread pool. Only universal notes.
|
|
251
|
-
sql += ` AND (thread_id IS NULL OR is_guardrail = 1 OR pinned = 1)`;
|
|
252
|
-
}
|
|
253
|
-
if (options?.types && options.types.length > 0) {
|
|
254
|
-
const placeholders = options.types.map(() => "?").join(",");
|
|
255
|
-
sql += ` AND type IN (${placeholders})`;
|
|
256
|
-
params.push(...options.types);
|
|
257
|
-
}
|
|
258
|
-
sql += ` ORDER BY confidence DESC, access_count DESC LIMIT ?`;
|
|
259
|
-
params.push(maxResults * 3); // fetch more to allow scoring/filtering
|
|
260
|
-
const rows = db.prepare(sql).all(...params);
|
|
261
|
-
const allNotes = rows.map(rowToSemanticNote);
|
|
262
|
-
// Score by how many terms match
|
|
263
|
-
const minMatches = Math.max(2, Math.ceil(terms.length * minMatchRatio));
|
|
264
|
-
const scored = allNotes.map(n => {
|
|
265
|
-
const text = (n.content + " " + n.keywords.join(" ")).toLowerCase();
|
|
266
|
-
let matchCount = 0;
|
|
267
|
-
for (const term of terms) {
|
|
268
|
-
if (text.includes(term))
|
|
269
|
-
matchCount++;
|
|
270
|
-
}
|
|
271
|
-
return { ...n, _matchCount: matchCount };
|
|
272
|
-
})
|
|
273
|
-
.filter(n => n._matchCount >= minMatches)
|
|
274
|
-
.sort((a, b) => {
|
|
275
|
-
if (b._matchCount !== a._matchCount)
|
|
276
|
-
return b._matchCount - a._matchCount;
|
|
277
|
-
return b.confidence - a.confidence;
|
|
278
|
-
})
|
|
279
|
-
.slice(0, maxResults);
|
|
280
|
-
const notes = scored;
|
|
281
|
-
// Update access counts
|
|
282
|
-
if (!options?.skipAccessTracking) {
|
|
283
|
-
bumpAccessCounts(db, notes.map(n => n.noteId));
|
|
284
|
-
}
|
|
285
|
-
return notes;
|
|
286
|
-
}
|
|
287
|
-
export function getTopSemanticNotes(db, options) {
|
|
288
|
-
const limit = options?.limit ?? 10;
|
|
289
|
-
const sortBy = options?.sortBy ?? "confidence";
|
|
290
|
-
const validSortColumns = {
|
|
291
|
-
confidence: "confidence DESC",
|
|
292
|
-
access_count: "access_count DESC",
|
|
293
|
-
created_at: "created_at DESC",
|
|
294
|
-
};
|
|
295
|
-
const orderClause = validSortColumns[sortBy] ?? "confidence DESC";
|
|
296
|
-
let sql = `SELECT * FROM semantic_notes WHERE valid_to IS NULL AND superseded_by IS NULL`;
|
|
297
|
-
const params = [];
|
|
298
|
-
// Thread filtering: current thread + universal globals (thread_id IS NULL); foreign threads excluded.
|
|
299
|
-
if (options?.threadId !== undefined) {
|
|
300
|
-
sql += ` AND (thread_id = ? OR thread_id IS NULL)`;
|
|
301
|
-
params.push(options.threadId);
|
|
302
|
-
}
|
|
303
|
-
else {
|
|
304
|
-
// Fail-closed: never broaden to the whole cross-thread pool. Only universal notes.
|
|
305
|
-
sql += ` AND (thread_id IS NULL OR is_guardrail = 1 OR pinned = 1)`;
|
|
306
|
-
}
|
|
307
|
-
if (options?.type) {
|
|
308
|
-
sql += ` AND type = ?`;
|
|
309
|
-
params.push(options.type);
|
|
310
|
-
}
|
|
311
|
-
sql += ` ORDER BY ${orderClause} LIMIT ?`;
|
|
312
|
-
params.push(limit);
|
|
313
|
-
const rows = db.prepare(sql).all(...params);
|
|
314
|
-
return rows.map(rowToSemanticNote);
|
|
315
|
-
}
|
|
316
|
-
/**
|
|
317
|
-
* Guardrail notes: explicitly flagged decision constraints the LLM must always
|
|
318
|
-
* follow. Capped at 5, ordered by priority DESC then access_count DESC.
|
|
319
|
-
*/
|
|
320
|
-
export function getGuardrailNotes(db) {
|
|
321
|
-
const rows = db
|
|
322
|
-
.prepare(`SELECT * FROM semantic_notes
|
|
323
|
-
WHERE valid_to IS NULL AND superseded_by IS NULL
|
|
324
|
-
AND is_guardrail = 1
|
|
325
|
-
ORDER BY priority DESC, access_count DESC, confidence DESC
|
|
326
|
-
LIMIT ?`)
|
|
327
|
-
.all(GUARDRAIL_LIMIT);
|
|
328
|
-
return rows.map(rowToSemanticNote);
|
|
329
|
-
}
|
|
330
|
-
/**
|
|
331
|
-
* Pinned notes: always shown in bootstrap briefing regardless of access count.
|
|
332
|
-
* Thread-scoped — only returns notes for the given thread (or global NULL).
|
|
333
|
-
* Ordered by priority DESC, then confidence DESC.
|
|
334
|
-
*/
|
|
335
|
-
export function getPinnedNotes(db, threadId) {
|
|
336
|
-
const rows = db
|
|
337
|
-
.prepare(`SELECT * FROM semantic_notes
|
|
338
|
-
WHERE valid_to IS NULL AND superseded_by IS NULL
|
|
339
|
-
AND pinned = 1 AND thread_id = ?
|
|
340
|
-
ORDER BY priority DESC, confidence DESC, created_at ASC
|
|
341
|
-
LIMIT ?`)
|
|
342
|
-
.all(threadId, PINNED_LIMIT);
|
|
343
|
-
return rows.map(rowToSemanticNote);
|
|
344
|
-
}
|
|
345
|
-
export function updateSemanticNote(db, noteId, updates) {
|
|
346
|
-
const now = nowISO();
|
|
347
|
-
const setClauses = ["updated_at = ?"];
|
|
348
|
-
const params = [now];
|
|
349
|
-
if (updates.content !== undefined) {
|
|
350
|
-
setClauses.push("content = ?");
|
|
351
|
-
params.push(updates.content);
|
|
352
|
-
}
|
|
353
|
-
if (updates.confidence !== undefined) {
|
|
354
|
-
setClauses.push("confidence = ?");
|
|
355
|
-
params.push(updates.confidence);
|
|
356
|
-
}
|
|
357
|
-
if (updates.priority !== undefined) {
|
|
358
|
-
setClauses.push("priority = ?");
|
|
359
|
-
params.push(Math.max(0, Math.min(2, updates.priority)));
|
|
360
|
-
}
|
|
361
|
-
if (updates.keywords !== undefined) {
|
|
362
|
-
setClauses.push("keywords = ?");
|
|
363
|
-
params.push(JSON.stringify(updates.keywords));
|
|
364
|
-
}
|
|
365
|
-
if (updates.linkedNotes !== undefined) {
|
|
366
|
-
setClauses.push("linked_notes = ?");
|
|
367
|
-
params.push(JSON.stringify(updates.linkedNotes));
|
|
368
|
-
}
|
|
369
|
-
if (updates.linkReasons !== undefined) {
|
|
370
|
-
setClauses.push("link_reasons = ?");
|
|
371
|
-
params.push(JSON.stringify(updates.linkReasons));
|
|
372
|
-
}
|
|
373
|
-
params.push(noteId);
|
|
374
|
-
db.prepare(`UPDATE semantic_notes SET ${setClauses.join(", ")} WHERE note_id = ?`).run(...params);
|
|
375
|
-
}
|
|
376
|
-
export function supersedeNote(db, oldNoteId, newNote) {
|
|
377
|
-
// Inherit thread_id and is_guardrail from the old note being superseded
|
|
378
|
-
const oldRow = db.prepare(`SELECT thread_id, is_guardrail, pinned FROM semantic_notes WHERE note_id = ?`).get(oldNoteId);
|
|
379
|
-
// Defensive guard: never demote a guardrail or pinned note. Save the new note fresh
|
|
380
|
-
// (without inheriting guardrail/pinned status) and leave the protected target untouched.
|
|
381
|
-
if (oldRow && (oldRow.is_guardrail === 1 || oldRow.pinned === 1)) {
|
|
382
|
-
log.warn(`[semantic] Refusing to supersede guardrail/pinned note ${oldNoteId}; saving new note without expiring target`);
|
|
383
|
-
return saveSemanticNote(db, {
|
|
384
|
-
type: newNote.type,
|
|
385
|
-
content: newNote.content,
|
|
386
|
-
keywords: newNote.keywords,
|
|
387
|
-
confidence: newNote.confidence,
|
|
388
|
-
priority: newNote.priority,
|
|
389
|
-
qualityScore: newNote.qualityScore,
|
|
390
|
-
threadId: oldRow.thread_id ?? null,
|
|
391
|
-
sourceEpisodes: newNote.sourceEpisodes,
|
|
392
|
-
});
|
|
393
|
-
}
|
|
394
|
-
const newId = saveSemanticNote(db, {
|
|
395
|
-
type: newNote.type,
|
|
396
|
-
content: newNote.content,
|
|
397
|
-
keywords: newNote.keywords,
|
|
398
|
-
confidence: newNote.confidence,
|
|
399
|
-
priority: newNote.priority,
|
|
400
|
-
qualityScore: newNote.qualityScore,
|
|
401
|
-
threadId: oldRow?.thread_id ?? null,
|
|
402
|
-
isGuardrail: (oldRow?.is_guardrail ?? 0) === 1,
|
|
403
|
-
pinned: (oldRow?.pinned ?? 0) === 1,
|
|
404
|
-
sourceEpisodes: newNote.sourceEpisodes,
|
|
405
|
-
});
|
|
406
|
-
const now = nowISO();
|
|
407
|
-
db.prepare(`UPDATE semantic_notes SET superseded_by = ?, valid_to = ?, updated_at = ? WHERE note_id = ?`).run(newId, now, now, oldNoteId);
|
|
408
|
-
// The supersession relationship is already recorded by superseded_by above.
|
|
409
|
-
// Repoint any inbound causal links from the now-expired note to its successor
|
|
410
|
-
// so they stay live for the bootstrap consumer.
|
|
411
|
-
migrateInboundLinks(db, oldNoteId, newId);
|
|
412
|
-
return newId;
|
|
413
|
-
}
|
|
414
|
-
/**
|
|
415
|
-
* Repoint inbound causal links from a now-dead note to its successor.
|
|
416
|
-
* When `fromNoteId` is superseded/merged into `toNoteId`, any active note that
|
|
417
|
-
* linked to `fromNoteId` is repointed at the live successor — otherwise the link
|
|
418
|
-
* is dead-on-arrival, since the consumer filters out expired link targets.
|
|
419
|
-
*/
|
|
420
|
-
export function migrateInboundLinks(db, fromNoteId, toNoteId) {
|
|
421
|
-
if (fromNoteId === toNoteId)
|
|
422
|
-
return;
|
|
423
|
-
// Escape LIKE wildcards — note IDs contain underscores ("sn_<hex>") which
|
|
424
|
-
// would otherwise match any character and produce unnecessary false positives.
|
|
425
|
-
const escapedId = fromNoteId.replace(/%/g, "\\%").replace(/_/g, "\\_");
|
|
426
|
-
const inbound = db.prepare(`SELECT note_id, linked_notes, link_reasons FROM semantic_notes
|
|
427
|
-
WHERE valid_to IS NULL AND superseded_by IS NULL AND linked_notes LIKE ? ESCAPE '\\'`).all(`%${escapedId}%`);
|
|
428
|
-
for (const row of inbound) {
|
|
429
|
-
const linked = parseJsonArray(row.linked_notes);
|
|
430
|
-
if (!linked.includes(fromNoteId))
|
|
431
|
-
continue; // LIKE prefilter false positive
|
|
432
|
-
const reasons = parseJsonObject(row.link_reasons);
|
|
433
|
-
const reason = reasons[fromNoteId];
|
|
434
|
-
delete reasons[fromNoteId];
|
|
435
|
-
const next = linked.filter((id) => id !== fromNoteId);
|
|
436
|
-
// Skip if the successor is the note itself — never create a self-link.
|
|
437
|
-
if (toNoteId !== row.note_id && !next.includes(toNoteId)) {
|
|
438
|
-
next.push(toNoteId);
|
|
439
|
-
if (reason && !reasons[toNoteId])
|
|
440
|
-
reasons[toNoteId] = reason;
|
|
441
|
-
}
|
|
442
|
-
updateSemanticNote(db, row.note_id, { linkedNotes: next, linkReasons: reasons });
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
// ─── Embedding-based Semantic Search ─────────────────────────────────────────
|
|
446
|
-
/** Store a pre-computed embedding vector for a semantic note. */
|
|
447
|
-
export function saveNoteEmbedding(db, noteId, embedding) {
|
|
448
|
-
const buf = Buffer.from(embedding.buffer, embedding.byteOffset, embedding.byteLength);
|
|
449
|
-
db.prepare(`INSERT OR REPLACE INTO note_embeddings (note_id, embedding, model, created_at) VALUES (?, ?, ?, ?)`).run(noteId, buf, "text-embedding-3-small", nowISO());
|
|
450
|
-
}
|
|
451
|
-
/** Load all note embeddings into memory for cosine similarity search. */
|
|
452
|
-
function loadAllEmbeddings(db, options) {
|
|
453
|
-
// When threadId is provided, return embeddings for that thread + universal globals (thread_id IS NULL); foreign threads excluded.
|
|
454
|
-
let sql = `SELECT ne.note_id, ne.embedding FROM note_embeddings ne
|
|
455
|
-
JOIN semantic_notes sn ON sn.note_id = ne.note_id
|
|
456
|
-
WHERE sn.valid_to IS NULL AND sn.superseded_by IS NULL`;
|
|
457
|
-
const params = [];
|
|
458
|
-
if (options?.threadId !== undefined) {
|
|
459
|
-
sql += ` AND (sn.thread_id = ? OR sn.thread_id IS NULL)`;
|
|
460
|
-
params.push(options.threadId);
|
|
461
|
-
}
|
|
462
|
-
else {
|
|
463
|
-
// Fail-closed: never load the entire cross-thread pool. Only universal notes.
|
|
464
|
-
sql += ` AND (sn.thread_id IS NULL OR sn.is_guardrail = 1 OR sn.pinned = 1)`;
|
|
465
|
-
}
|
|
466
|
-
if (options?.startTime) {
|
|
467
|
-
sql += ` AND sn.created_at >= ?`;
|
|
468
|
-
params.push(options.startTime);
|
|
469
|
-
}
|
|
470
|
-
if (options?.endTime) {
|
|
471
|
-
sql += ` AND sn.created_at <= ?`;
|
|
472
|
-
params.push(options.endTime);
|
|
473
|
-
}
|
|
474
|
-
const rows = db.prepare(sql).all(...params);
|
|
475
|
-
const map = new Map();
|
|
476
|
-
for (const row of rows) {
|
|
477
|
-
map.set(row.note_id, new Float32Array(row.embedding.buffer, row.embedding.byteOffset, row.embedding.byteLength / 4));
|
|
478
|
-
}
|
|
479
|
-
return map;
|
|
480
|
-
}
|
|
481
|
-
/**
|
|
482
|
-
* Search semantic notes using embedding cosine similarity.
|
|
483
|
-
* Returns notes sorted by similarity score, filtered by minimum threshold.
|
|
484
|
-
*/
|
|
485
|
-
export function searchByEmbedding(db, queryEmbedding, options) {
|
|
486
|
-
const maxResults = options?.maxResults ?? 5;
|
|
487
|
-
const minSimilarity = options?.minSimilarity ?? 0.3;
|
|
488
|
-
// Load embeddings — filtered by thread and time when provided
|
|
489
|
-
const embeddings = loadAllEmbeddings(db, { threadId: options?.threadId, startTime: options?.startTime, endTime: options?.endTime });
|
|
490
|
-
// Compute similarities
|
|
491
|
-
const scores = [];
|
|
492
|
-
for (const [noteId, emb] of embeddings) {
|
|
493
|
-
const sim = cosineSimilarity(queryEmbedding, emb);
|
|
494
|
-
if (sim >= minSimilarity) {
|
|
495
|
-
scores.push({ noteId, similarity: sim });
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
// Sort by similarity descending
|
|
499
|
-
scores.sort((a, b) => b.similarity - a.similarity);
|
|
500
|
-
const topIds = scores.slice(0, maxResults);
|
|
501
|
-
if (topIds.length === 0)
|
|
502
|
-
return [];
|
|
503
|
-
// Fetch full notes
|
|
504
|
-
const placeholders = topIds.map(() => "?").join(",");
|
|
505
|
-
const rows = db.prepare(`SELECT * FROM semantic_notes WHERE note_id IN (${placeholders})`).all(...topIds.map(s => s.noteId));
|
|
506
|
-
const noteMap = new Map();
|
|
507
|
-
for (const row of rows) {
|
|
508
|
-
const note = rowToSemanticNote(row);
|
|
509
|
-
noteMap.set(note.noteId, note);
|
|
510
|
-
}
|
|
511
|
-
// Update access counts
|
|
512
|
-
if (!options?.skipAccessTracking) {
|
|
513
|
-
bumpAccessCounts(db, topIds.map(s => s.noteId));
|
|
514
|
-
}
|
|
515
|
-
// Return in similarity order
|
|
516
|
-
return topIds
|
|
517
|
-
.map(s => {
|
|
518
|
-
const note = noteMap.get(s.noteId);
|
|
519
|
-
return note ? { ...note, similarity: s.similarity } : null;
|
|
520
|
-
})
|
|
521
|
-
.filter((n) => n !== null);
|
|
522
|
-
}
|
|
523
|
-
/** Get note IDs that don't have embeddings yet (for backfill). */
|
|
524
|
-
export function getNotesWithoutEmbeddings(db) {
|
|
525
|
-
return db.prepare(`SELECT sn.note_id as noteId, sn.content FROM semantic_notes sn
|
|
526
|
-
LEFT JOIN note_embeddings ne ON ne.note_id = sn.note_id
|
|
527
|
-
WHERE ne.note_id IS NULL AND sn.valid_to IS NULL AND sn.superseded_by IS NULL`).all();
|
|
528
|
-
}
|
|
529
|
-
/**
|
|
530
|
-
* Find semantic notes that potentially conflict with a given note
|
|
531
|
-
* by sharing >= 2 keywords of the same type.
|
|
532
|
-
*/
|
|
533
|
-
export function findPotentialConflicts(db, noteId) {
|
|
534
|
-
const row = db.prepare(`SELECT note_id, type, keywords FROM semantic_notes WHERE note_id = ?`).get(noteId);
|
|
535
|
-
if (!row)
|
|
536
|
-
return [];
|
|
537
|
-
const noteKeywords = row.keywords ? JSON.parse(row.keywords) : [];
|
|
538
|
-
if (noteKeywords.length < MIN_KEYWORD_OVERLAP)
|
|
539
|
-
return [];
|
|
540
|
-
// Fetch all active notes of the same type (excluding this note and superseded ones)
|
|
541
|
-
const candidates = db.prepare(`SELECT * FROM semantic_notes
|
|
542
|
-
WHERE type = ? AND note_id != ? AND valid_to IS NULL AND superseded_by IS NULL`).all(row.type, noteId);
|
|
543
|
-
const lowerKeywords = new Set(noteKeywords.map(k => k.toLowerCase()));
|
|
544
|
-
return candidates
|
|
545
|
-
.filter(c => {
|
|
546
|
-
const cKeywords = c.keywords ? JSON.parse(c.keywords) : [];
|
|
547
|
-
const overlap = cKeywords.filter(k => lowerKeywords.has(k.toLowerCase())).length;
|
|
548
|
-
return overlap >= MIN_KEYWORD_OVERLAP;
|
|
549
|
-
})
|
|
550
|
-
.map(rowToSemanticNote);
|
|
551
|
-
}
|
|
552
|
-
/**
|
|
553
|
-
* Expire all active semantic notes belonging to a given thread.
|
|
554
|
-
* Sets valid_to = NOW() and decrements the topic index for each note's keywords.
|
|
555
|
-
* Returns the count of archived notes.
|
|
556
|
-
*/
|
|
557
|
-
export function archiveNotesForThread(db, threadId) {
|
|
558
|
-
const now = nowISO();
|
|
559
|
-
const activeNotes = db.prepare(`SELECT note_id, keywords FROM semantic_notes
|
|
560
|
-
WHERE thread_id = ? AND valid_to IS NULL`).all(threadId);
|
|
561
|
-
if (activeNotes.length === 0)
|
|
562
|
-
return 0;
|
|
563
|
-
const expireStmt = db.prepare(`UPDATE semantic_notes SET valid_to = ?, updated_at = ? WHERE note_id = ?`);
|
|
564
|
-
const notes = activeNotes.map(row => ({
|
|
565
|
-
noteId: row.note_id,
|
|
566
|
-
keywords: parseJsonArray(row.keywords),
|
|
567
|
-
}));
|
|
568
|
-
db.transaction(() => {
|
|
569
|
-
for (const note of notes) {
|
|
570
|
-
expireStmt.run(now, now, note.noteId);
|
|
571
|
-
if (note.keywords.length > 0) {
|
|
572
|
-
decrementTopicIndexForKeywords(db, note.keywords);
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
})();
|
|
576
|
-
log.info(`[memory] Archived ${notes.length} semantic notes for thread ${threadId}`);
|
|
577
|
-
return notes.length;
|
|
578
|
-
}
|
|
579
|
-
/**
|
|
580
|
-
* Find thread IDs that have active (non-expired) semantic notes.
|
|
581
|
-
* Returns distinct thread IDs (excluding null/global notes).
|
|
582
|
-
*/
|
|
583
|
-
export function getThreadIdsWithActiveNotes(db) {
|
|
584
|
-
const rows = db.prepare(`SELECT DISTINCT thread_id FROM semantic_notes
|
|
585
|
-
WHERE thread_id IS NOT NULL AND valid_to IS NULL`).all();
|
|
586
|
-
return rows.map(r => r.thread_id);
|
|
587
|
-
}
|
|
588
|
-
//# sourceMappingURL=semantic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../src/data/memory/semantic.ts"],"names":[],"mappings":"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"}
|
package/dist/dispatcher.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared Telegram update dispatcher — thin re-export façade.
|
|
3
|
-
*
|
|
4
|
-
* The implementation has been decomposed into focused modules under
|
|
5
|
-
* src/services/dispatcher/ (lock, broker, poller). This file preserves
|
|
6
|
-
* the original import paths so existing consumers are unaffected.
|
|
7
|
-
*/
|
|
8
|
-
export * from './services/dispatcher/index.js';
|
|
9
|
-
//# sourceMappingURL=dispatcher.d.ts.map
|
package/dist/dispatcher.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,gCAAgC,CAAC"}
|
package/dist/dispatcher.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared Telegram update dispatcher — thin re-export façade.
|
|
3
|
-
*
|
|
4
|
-
* The implementation has been decomposed into focused modules under
|
|
5
|
-
* src/services/dispatcher/ (lock, broker, poller). This file preserves
|
|
6
|
-
* the original import paths so existing consumers are unaffected.
|
|
7
|
-
*/
|
|
8
|
-
export * from './services/dispatcher/index.js';
|
|
9
|
-
//# sourceMappingURL=dispatcher.js.map
|
package/dist/dispatcher.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,gCAAgC,CAAC"}
|
package/dist/drive.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../src/drive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiBH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,oFAC2C,CAAC;AAE/E;;GAEG;AACH,UAAU,WAAW;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,WAAW,CAoCrF"}
|