sensorium-mcp 3.0.103 → 3.1.0-refactor.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global dashboard session registry.
|
|
3
|
+
* Tracks ALL sessions (HTTP + STDIO) for dashboard visibility and GC.
|
|
4
|
+
*/
|
|
5
|
+
const dashboardSessions = new Map();
|
|
6
|
+
/** Register a new session for dashboard tracking. */
|
|
7
|
+
export function registerDashboardSession(mcpSessionId, transportType, threadId = null) {
|
|
8
|
+
dashboardSessions.set(mcpSessionId, {
|
|
9
|
+
mcpSessionId,
|
|
10
|
+
threadId,
|
|
11
|
+
transportType,
|
|
12
|
+
status: "active",
|
|
13
|
+
lastActivity: Date.now(),
|
|
14
|
+
lastWaitCallAt: null,
|
|
15
|
+
disconnectedAt: null,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/** Update the last activity timestamp for a session. */
|
|
19
|
+
export function updateDashboardActivity(mcpSessionId) {
|
|
20
|
+
const entry = dashboardSessions.get(mcpSessionId);
|
|
21
|
+
if (entry) {
|
|
22
|
+
entry.lastActivity = Date.now();
|
|
23
|
+
entry.status = "active";
|
|
24
|
+
entry.disconnectedAt = null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** Update the threadId for a session (called after start_session resolves). */
|
|
28
|
+
export function updateDashboardThreadId(mcpSessionId, threadId) {
|
|
29
|
+
const entry = dashboardSessions.get(mcpSessionId);
|
|
30
|
+
if (entry) {
|
|
31
|
+
entry.threadId = threadId;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/** Record a wait_for_instructions heartbeat. */
|
|
35
|
+
export function updateLastWaitCall(mcpSessionId) {
|
|
36
|
+
const entry = dashboardSessions.get(mcpSessionId);
|
|
37
|
+
if (entry) {
|
|
38
|
+
entry.lastWaitCallAt = Date.now();
|
|
39
|
+
entry.lastActivity = Date.now();
|
|
40
|
+
entry.status = "active";
|
|
41
|
+
entry.disconnectedAt = null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Mark a session as disconnected. */
|
|
45
|
+
export function markDashboardSessionDisconnected(mcpSessionId) {
|
|
46
|
+
const entry = dashboardSessions.get(mcpSessionId);
|
|
47
|
+
if (entry) {
|
|
48
|
+
entry.status = "disconnected";
|
|
49
|
+
entry.disconnectedAt = Date.now();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/** Remove a session from dashboard tracking entirely. */
|
|
53
|
+
export function removeDashboardSession(mcpSessionId) {
|
|
54
|
+
dashboardSessions.delete(mcpSessionId);
|
|
55
|
+
}
|
|
56
|
+
/** Get all dashboard-tracked sessions. */
|
|
57
|
+
export function getDashboardSessions() {
|
|
58
|
+
return Array.from(dashboardSessions.values());
|
|
59
|
+
}
|
|
60
|
+
/** Grace period: a session is "truly alive" if lastWaitCallAt is within this. */
|
|
61
|
+
export const WAIT_LIVENESS_MS = 5 * 60 * 1000;
|
|
62
|
+
/**
|
|
63
|
+
* Thread IDs of sessions that are actively parked in wait_for_instructions
|
|
64
|
+
* (status active + lastWaitCallAt within `withinMs`). Used by self-update to
|
|
65
|
+
* know which agents are live enough to be expected to observe the maintenance
|
|
66
|
+
* flag before the HTTP port is closed.
|
|
67
|
+
*/
|
|
68
|
+
export function getLiveWaitingThreadIds(withinMs = WAIT_LIVENESS_MS) {
|
|
69
|
+
const now = Date.now();
|
|
70
|
+
const ids = [];
|
|
71
|
+
for (const entry of dashboardSessions.values()) {
|
|
72
|
+
if (entry.status !== "active")
|
|
73
|
+
continue;
|
|
74
|
+
if (entry.threadId === null)
|
|
75
|
+
continue;
|
|
76
|
+
if (entry.lastWaitCallAt === null)
|
|
77
|
+
continue;
|
|
78
|
+
if (now - entry.lastWaitCallAt > withinMs)
|
|
79
|
+
continue;
|
|
80
|
+
ids.push(entry.threadId);
|
|
81
|
+
}
|
|
82
|
+
return ids;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=dashboard-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-registry.js","sourceRoot":"","sources":["../../src/sessions/dashboard-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* MCP session registry — in-memory tracking of active transports,
|
|
3
|
+
* thread ownership, supersede semantics, and close-flush handlers.
|
|
4
4
|
*/
|
|
5
|
-
import type { Database } from "better-sqlite3";
|
|
6
|
-
import type { ISessionRepository } from "./data/interfaces.js";
|
|
7
|
-
export declare class SessionRepository implements ISessionRepository {
|
|
8
|
-
getSession(chatId: string, name: string): number | undefined;
|
|
9
|
-
setSession(chatId: string, name: string, threadId: number): void;
|
|
10
|
-
deleteSession(chatId: string, name: string): void;
|
|
11
|
-
lookupTopicRegistry(chatId: string, name: string): number | undefined;
|
|
12
|
-
registerTopicRegistry(chatId: string, name: string, threadId: number): void;
|
|
13
|
-
}
|
|
14
|
-
export declare const sessionRepository: SessionRepository;
|
|
15
|
-
export declare function lookupSession(chatId: string, name: string): number | undefined;
|
|
16
|
-
export declare function persistSession(chatId: string, name: string, threadId: number): void;
|
|
17
|
-
export declare function removeSession(chatId: string, name: string): void;
|
|
18
5
|
/** Associate a transport session id with its per-process spawn token. */
|
|
19
6
|
export declare function associateSessionToken(mcpSessionId: string, spawnToken: string): void;
|
|
20
7
|
/** Check if a session has been superseded by a newer session for its thread. */
|
|
@@ -76,48 +63,4 @@ export declare function purgeOtherSessions(threadId: number, keepMcpSessionId?:
|
|
|
76
63
|
* Returns the number of transports closed.
|
|
77
64
|
*/
|
|
78
65
|
export declare function closeThreadSessions(threadId: number): number;
|
|
79
|
-
|
|
80
|
-
mcpSessionId: string;
|
|
81
|
-
threadId: number | null;
|
|
82
|
-
transportType: "http" | "stdio";
|
|
83
|
-
status: "active" | "disconnected";
|
|
84
|
-
lastActivity: number;
|
|
85
|
-
lastWaitCallAt: number | null;
|
|
86
|
-
disconnectedAt: number | null;
|
|
87
|
-
}
|
|
88
|
-
/** Register a new session for dashboard tracking. */
|
|
89
|
-
export declare function registerDashboardSession(mcpSessionId: string, transportType: "http" | "stdio", threadId?: number | null): void;
|
|
90
|
-
/** Update the last activity timestamp for a session. */
|
|
91
|
-
export declare function updateDashboardActivity(mcpSessionId: string): void;
|
|
92
|
-
/** Update the threadId for a session (called after start_session resolves). */
|
|
93
|
-
export declare function updateDashboardThreadId(mcpSessionId: string, threadId: number | null): void;
|
|
94
|
-
/** Record a wait_for_instructions heartbeat. */
|
|
95
|
-
export declare function updateLastWaitCall(mcpSessionId: string): void;
|
|
96
|
-
/** Mark a session as disconnected. */
|
|
97
|
-
export declare function markDashboardSessionDisconnected(mcpSessionId: string): void;
|
|
98
|
-
/** Remove a session from dashboard tracking entirely. */
|
|
99
|
-
export declare function removeDashboardSession(mcpSessionId: string): void;
|
|
100
|
-
/** Get all dashboard-tracked sessions. */
|
|
101
|
-
export declare function getDashboardSessions(): DashboardSessionInfo[];
|
|
102
|
-
/** Grace period: a session is "truly alive" if lastWaitCallAt is within this. */
|
|
103
|
-
export declare const WAIT_LIVENESS_MS: number;
|
|
104
|
-
/**
|
|
105
|
-
* Thread IDs of sessions that are actively parked in wait_for_instructions
|
|
106
|
-
* (status active + lastWaitCallAt within `withinMs`). Used by self-update to
|
|
107
|
-
* know which agents are live enough to be expected to observe the maintenance
|
|
108
|
-
* flag before the HTTP port is closed.
|
|
109
|
-
*/
|
|
110
|
-
export declare function getLiveWaitingThreadIds(withinMs?: number): number[];
|
|
111
|
-
/** Wire up a lazy database accessor for the topic registry. */
|
|
112
|
-
export declare function setTopicRegistryDb(getter: () => Database): void;
|
|
113
|
-
/** Look up a thread ID from the operator-managed topic registry. */
|
|
114
|
-
export declare function lookupTopicRegistry(chatId: string, name: string): number | undefined;
|
|
115
|
-
/** Register a topic name → threadId mapping in the registry. */
|
|
116
|
-
export declare function registerTopic(chatId: string, name: string, threadId: number): void;
|
|
117
|
-
export declare function registerTopicRegistry(chatId: string, name: string, threadId: number): void;
|
|
118
|
-
/** Remove a topic from the registry. */
|
|
119
|
-
export declare function unregisterTopic(chatId: string, name: string): void;
|
|
120
|
-
/** Get all registered topics for a chat (or all chats if chatId is omitted). */
|
|
121
|
-
export declare function getAllRegisteredTopics(chatId?: string): Record<string, Record<string, number>>;
|
|
122
|
-
export {};
|
|
123
|
-
//# sourceMappingURL=sessions.d.ts.map
|
|
66
|
+
//# sourceMappingURL=mcp-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-registry.d.ts","sourceRoot":"","sources":["../../src/sessions/mcp-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwCH,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAepF;AAaD,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAwBhG;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,QAAQ,EAAE,MAAM,GACf,OAAO,CA2CT;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAiBlF;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,IAAI,GACzB,IAAI,CASN;AAED,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjF;AAYD,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAEhG;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAKpF;AAED,oFAAoF;AACpF,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAEjE;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAI5E;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAiB/D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAwCtF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiB5D"}
|
|
@@ -1,71 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* MCP session registry — in-memory tracking of active transports,
|
|
3
|
+
* thread ownership, supersede semantics, and close-flush handlers.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { join } from "node:path";
|
|
8
|
-
import { log } from "./logger.js";
|
|
9
|
-
import { errorMessage } from "./utils.js";
|
|
10
|
-
// ─── Session store (disk-backed name → threadId mapping) ────────────────────
|
|
11
|
-
const SESSION_STORE_PATH = join(homedir(), ".remote-copilot-mcp-sessions.json");
|
|
12
|
-
export class SessionRepository {
|
|
13
|
-
getSession(chatId, name) {
|
|
14
|
-
return lookupSession(chatId, name);
|
|
15
|
-
}
|
|
16
|
-
setSession(chatId, name, threadId) {
|
|
17
|
-
persistSession(chatId, name, threadId);
|
|
18
|
-
}
|
|
19
|
-
deleteSession(chatId, name) {
|
|
20
|
-
removeSession(chatId, name);
|
|
21
|
-
}
|
|
22
|
-
lookupTopicRegistry(chatId, name) {
|
|
23
|
-
return lookupTopicRegistry(chatId, name);
|
|
24
|
-
}
|
|
25
|
-
registerTopicRegistry(chatId, name, threadId) {
|
|
26
|
-
registerTopicRegistry(chatId, name, threadId);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
export const sessionRepository = new SessionRepository();
|
|
30
|
-
function loadSessionMap() {
|
|
31
|
-
try {
|
|
32
|
-
const raw = readFileSync(SESSION_STORE_PATH, "utf8");
|
|
33
|
-
return JSON.parse(raw);
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
if (err?.code !== "ENOENT")
|
|
37
|
-
log.warn(`[sessions] Failed to load session map: ${err}`);
|
|
38
|
-
return {};
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function saveSessionMap(map) {
|
|
42
|
-
try {
|
|
43
|
-
const tmp = SESSION_STORE_PATH + `.tmp.${process.pid}`;
|
|
44
|
-
writeFileSync(tmp, JSON.stringify(map, null, 2), "utf8");
|
|
45
|
-
renameSync(tmp, SESSION_STORE_PATH);
|
|
46
|
-
}
|
|
47
|
-
catch (err) {
|
|
48
|
-
log.warn(`Warning: Could not save session map to ${SESSION_STORE_PATH}: ${errorMessage(err)}`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
export function lookupSession(chatId, name) {
|
|
52
|
-
const map = loadSessionMap();
|
|
53
|
-
return map[chatId]?.[name.toLowerCase()];
|
|
54
|
-
}
|
|
55
|
-
export function persistSession(chatId, name, threadId) {
|
|
56
|
-
const map = loadSessionMap();
|
|
57
|
-
if (!map[chatId])
|
|
58
|
-
map[chatId] = {};
|
|
59
|
-
map[chatId][name.toLowerCase()] = threadId;
|
|
60
|
-
saveSessionMap(map);
|
|
61
|
-
}
|
|
62
|
-
export function removeSession(chatId, name) {
|
|
63
|
-
const map = loadSessionMap();
|
|
64
|
-
if (map[chatId]) {
|
|
65
|
-
delete map[chatId][name.toLowerCase()];
|
|
66
|
-
saveSessionMap(map);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
5
|
+
import { log } from "../lib/logger.js";
|
|
6
|
+
import { errorMessage } from "../lib/utils.js";
|
|
69
7
|
/** Thread → active MCP transport sessions */
|
|
70
8
|
const threadSessionRegistry = new Map();
|
|
71
9
|
const sessionThreadRegistry = new Map();
|
|
@@ -355,151 +293,4 @@ export function closeThreadSessions(threadId) {
|
|
|
355
293
|
threadSessionRegistry.delete(threadId);
|
|
356
294
|
return closed;
|
|
357
295
|
}
|
|
358
|
-
|
|
359
|
-
/** Register a new session for dashboard tracking. */
|
|
360
|
-
export function registerDashboardSession(mcpSessionId, transportType, threadId = null) {
|
|
361
|
-
dashboardSessions.set(mcpSessionId, {
|
|
362
|
-
mcpSessionId,
|
|
363
|
-
threadId,
|
|
364
|
-
transportType,
|
|
365
|
-
status: "active",
|
|
366
|
-
lastActivity: Date.now(),
|
|
367
|
-
lastWaitCallAt: null,
|
|
368
|
-
disconnectedAt: null,
|
|
369
|
-
});
|
|
370
|
-
}
|
|
371
|
-
/** Update the last activity timestamp for a session. */
|
|
372
|
-
export function updateDashboardActivity(mcpSessionId) {
|
|
373
|
-
const entry = dashboardSessions.get(mcpSessionId);
|
|
374
|
-
if (entry) {
|
|
375
|
-
entry.lastActivity = Date.now();
|
|
376
|
-
entry.status = "active";
|
|
377
|
-
entry.disconnectedAt = null;
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
/** Update the threadId for a session (called after start_session resolves). */
|
|
381
|
-
export function updateDashboardThreadId(mcpSessionId, threadId) {
|
|
382
|
-
const entry = dashboardSessions.get(mcpSessionId);
|
|
383
|
-
if (entry) {
|
|
384
|
-
entry.threadId = threadId;
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
/** Record a wait_for_instructions heartbeat. */
|
|
388
|
-
export function updateLastWaitCall(mcpSessionId) {
|
|
389
|
-
const entry = dashboardSessions.get(mcpSessionId);
|
|
390
|
-
if (entry) {
|
|
391
|
-
entry.lastWaitCallAt = Date.now();
|
|
392
|
-
entry.lastActivity = Date.now();
|
|
393
|
-
entry.status = "active";
|
|
394
|
-
entry.disconnectedAt = null;
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
/** Mark a session as disconnected. */
|
|
398
|
-
export function markDashboardSessionDisconnected(mcpSessionId) {
|
|
399
|
-
const entry = dashboardSessions.get(mcpSessionId);
|
|
400
|
-
if (entry) {
|
|
401
|
-
entry.status = "disconnected";
|
|
402
|
-
entry.disconnectedAt = Date.now();
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
/** Remove a session from dashboard tracking entirely. */
|
|
406
|
-
export function removeDashboardSession(mcpSessionId) {
|
|
407
|
-
dashboardSessions.delete(mcpSessionId);
|
|
408
|
-
}
|
|
409
|
-
/** Get all dashboard-tracked sessions. */
|
|
410
|
-
export function getDashboardSessions() {
|
|
411
|
-
return Array.from(dashboardSessions.values());
|
|
412
|
-
}
|
|
413
|
-
/** Grace period: a session is "truly alive" if lastWaitCallAt is within this. */
|
|
414
|
-
export const WAIT_LIVENESS_MS = 5 * 60 * 1000;
|
|
415
|
-
/**
|
|
416
|
-
* Thread IDs of sessions that are actively parked in wait_for_instructions
|
|
417
|
-
* (status active + lastWaitCallAt within `withinMs`). Used by self-update to
|
|
418
|
-
* know which agents are live enough to be expected to observe the maintenance
|
|
419
|
-
* flag before the HTTP port is closed.
|
|
420
|
-
*/
|
|
421
|
-
export function getLiveWaitingThreadIds(withinMs = WAIT_LIVENESS_MS) {
|
|
422
|
-
const now = Date.now();
|
|
423
|
-
const ids = [];
|
|
424
|
-
for (const entry of dashboardSessions.values()) {
|
|
425
|
-
if (entry.status !== "active")
|
|
426
|
-
continue;
|
|
427
|
-
if (entry.threadId === null)
|
|
428
|
-
continue;
|
|
429
|
-
if (entry.lastWaitCallAt === null)
|
|
430
|
-
continue;
|
|
431
|
-
if (now - entry.lastWaitCallAt > withinMs)
|
|
432
|
-
continue;
|
|
433
|
-
ids.push(entry.threadId);
|
|
434
|
-
}
|
|
435
|
-
return ids;
|
|
436
|
-
}
|
|
437
|
-
// ─── Topic registry (operator-managed name → threadId mapping) ──────────────
|
|
438
|
-
// Backed by the shared SQLite memory database (topic_registry table).
|
|
439
|
-
// Call setTopicRegistryDb() once at startup to wire up the DB accessor.
|
|
440
|
-
let topicDbGetter = null;
|
|
441
|
-
/** Wire up a lazy database accessor for the topic registry. */
|
|
442
|
-
export function setTopicRegistryDb(getter) {
|
|
443
|
-
topicDbGetter = getter;
|
|
444
|
-
}
|
|
445
|
-
function getTopicDb() {
|
|
446
|
-
if (!topicDbGetter)
|
|
447
|
-
throw new Error("Topic registry DB not initialized — call setTopicRegistryDb() first");
|
|
448
|
-
return topicDbGetter();
|
|
449
|
-
}
|
|
450
|
-
/** Look up a thread ID from the operator-managed topic registry. */
|
|
451
|
-
export function lookupTopicRegistry(chatId, name) {
|
|
452
|
-
try {
|
|
453
|
-
const db = getTopicDb();
|
|
454
|
-
const row = db.prepare(`SELECT thread_id FROM topic_registry WHERE chat_id = ? AND name = ?`).get(chatId, name.toLowerCase());
|
|
455
|
-
return row?.thread_id;
|
|
456
|
-
}
|
|
457
|
-
catch (err) {
|
|
458
|
-
log.debug(`[topic-registry] lookupTopicRegistry failed: ${errorMessage(err)}`);
|
|
459
|
-
return undefined;
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
/** Register a topic name → threadId mapping in the registry. */
|
|
463
|
-
export function registerTopic(chatId, name, threadId) {
|
|
464
|
-
registerTopicRegistry(chatId, name, threadId);
|
|
465
|
-
}
|
|
466
|
-
export function registerTopicRegistry(chatId, name, threadId) {
|
|
467
|
-
try {
|
|
468
|
-
const db = getTopicDb();
|
|
469
|
-
db.prepare(`INSERT OR REPLACE INTO topic_registry (chat_id, name, thread_id, registered_at) VALUES (?, ?, ?, datetime('now'))`).run(chatId, name.toLowerCase(), threadId);
|
|
470
|
-
}
|
|
471
|
-
catch (err) {
|
|
472
|
-
log.warn(`[topic-registry] Failed to register topic: ${errorMessage(err)}`);
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
/** Remove a topic from the registry. */
|
|
476
|
-
export function unregisterTopic(chatId, name) {
|
|
477
|
-
try {
|
|
478
|
-
const db = getTopicDb();
|
|
479
|
-
db.prepare(`DELETE FROM topic_registry WHERE chat_id = ? AND name = ?`).run(chatId, name.toLowerCase());
|
|
480
|
-
}
|
|
481
|
-
catch (err) {
|
|
482
|
-
log.warn(`[topic-registry] Failed to unregister topic: ${errorMessage(err)}`);
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
/** Get all registered topics for a chat (or all chats if chatId is omitted). */
|
|
486
|
-
export function getAllRegisteredTopics(chatId) {
|
|
487
|
-
try {
|
|
488
|
-
const db = getTopicDb();
|
|
489
|
-
const rows = chatId
|
|
490
|
-
? db.prepare(`SELECT chat_id, name, thread_id FROM topic_registry WHERE chat_id = ?`).all(chatId)
|
|
491
|
-
: db.prepare(`SELECT chat_id, name, thread_id FROM topic_registry`).all();
|
|
492
|
-
const result = {};
|
|
493
|
-
for (const row of rows) {
|
|
494
|
-
if (!result[row.chat_id])
|
|
495
|
-
result[row.chat_id] = {};
|
|
496
|
-
result[row.chat_id][row.name] = row.thread_id;
|
|
497
|
-
}
|
|
498
|
-
return result;
|
|
499
|
-
}
|
|
500
|
-
catch (err) {
|
|
501
|
-
log.debug(`[topic-registry] getAllRegisteredTopics failed: ${errorMessage(err)}`);
|
|
502
|
-
return {};
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
//# sourceMappingURL=sessions.js.map
|
|
296
|
+
//# sourceMappingURL=mcp-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-registry.js","sourceRoot":"","sources":["../../src/sessions/mcp-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session store — disk-backed name → threadId mapping
|
|
3
|
+
* (~/.remote-copilot-mcp-sessions.json).
|
|
4
|
+
*/
|
|
5
|
+
import type { ISessionRepository } from "../data/interfaces.js";
|
|
6
|
+
export declare class SessionRepository implements ISessionRepository {
|
|
7
|
+
getSession(chatId: string, name: string): number | undefined;
|
|
8
|
+
setSession(chatId: string, name: string, threadId: number): void;
|
|
9
|
+
deleteSession(chatId: string, name: string): void;
|
|
10
|
+
lookupTopicRegistry(chatId: string, name: string): number | undefined;
|
|
11
|
+
registerTopicRegistry(chatId: string, name: string, threadId: number): void;
|
|
12
|
+
}
|
|
13
|
+
export declare const sessionRepository: SessionRepository;
|
|
14
|
+
export declare function lookupSession(chatId: string, name: string): number | undefined;
|
|
15
|
+
export declare function persistSession(chatId: string, name: string, threadId: number): void;
|
|
16
|
+
export declare function removeSession(chatId: string, name: string): void;
|
|
17
|
+
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/sessions/session-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAShE,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI5D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIhE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIjD,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIrE,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAG5E;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC;AAuBzD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKnF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMhE"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session store — disk-backed name → threadId mapping
|
|
3
|
+
* (~/.remote-copilot-mcp-sessions.json).
|
|
4
|
+
*/
|
|
5
|
+
import { readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
6
|
+
import { homedir } from "node:os";
|
|
7
|
+
import { join } from "node:path";
|
|
8
|
+
import { log } from "../lib/logger.js";
|
|
9
|
+
import { errorMessage } from "../lib/utils.js";
|
|
10
|
+
import { lookupTopicRegistry, registerTopicRegistry } from "./topic-registry.js";
|
|
11
|
+
const SESSION_STORE_PATH = join(homedir(), ".remote-copilot-mcp-sessions.json");
|
|
12
|
+
export class SessionRepository {
|
|
13
|
+
getSession(chatId, name) {
|
|
14
|
+
return lookupSession(chatId, name);
|
|
15
|
+
}
|
|
16
|
+
setSession(chatId, name, threadId) {
|
|
17
|
+
persistSession(chatId, name, threadId);
|
|
18
|
+
}
|
|
19
|
+
deleteSession(chatId, name) {
|
|
20
|
+
removeSession(chatId, name);
|
|
21
|
+
}
|
|
22
|
+
lookupTopicRegistry(chatId, name) {
|
|
23
|
+
return lookupTopicRegistry(chatId, name);
|
|
24
|
+
}
|
|
25
|
+
registerTopicRegistry(chatId, name, threadId) {
|
|
26
|
+
registerTopicRegistry(chatId, name, threadId);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export const sessionRepository = new SessionRepository();
|
|
30
|
+
function loadSessionMap() {
|
|
31
|
+
try {
|
|
32
|
+
const raw = readFileSync(SESSION_STORE_PATH, "utf8");
|
|
33
|
+
return JSON.parse(raw);
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
if (err?.code !== "ENOENT")
|
|
37
|
+
log.warn(`[sessions] Failed to load session map: ${err}`);
|
|
38
|
+
return {};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function saveSessionMap(map) {
|
|
42
|
+
try {
|
|
43
|
+
const tmp = SESSION_STORE_PATH + `.tmp.${process.pid}`;
|
|
44
|
+
writeFileSync(tmp, JSON.stringify(map, null, 2), "utf8");
|
|
45
|
+
renameSync(tmp, SESSION_STORE_PATH);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
log.warn(`Warning: Could not save session map to ${SESSION_STORE_PATH}: ${errorMessage(err)}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export function lookupSession(chatId, name) {
|
|
52
|
+
const map = loadSessionMap();
|
|
53
|
+
return map[chatId]?.[name.toLowerCase()];
|
|
54
|
+
}
|
|
55
|
+
export function persistSession(chatId, name, threadId) {
|
|
56
|
+
const map = loadSessionMap();
|
|
57
|
+
if (!map[chatId])
|
|
58
|
+
map[chatId] = {};
|
|
59
|
+
map[chatId][name.toLowerCase()] = threadId;
|
|
60
|
+
saveSessionMap(map);
|
|
61
|
+
}
|
|
62
|
+
export function removeSession(chatId, name) {
|
|
63
|
+
const map = loadSessionMap();
|
|
64
|
+
if (map[chatId]) {
|
|
65
|
+
delete map[chatId][name.toLowerCase()];
|
|
66
|
+
saveSessionMap(map);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=session-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/sessions/session-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Topic registry — operator-managed name → threadId mapping.
|
|
3
|
+
* Backed by the shared SQLite memory database (topic_registry table).
|
|
4
|
+
*/
|
|
5
|
+
/** Look up a thread ID from the operator-managed topic registry. */
|
|
6
|
+
export declare function lookupTopicRegistry(chatId: string, name: string): number | undefined;
|
|
7
|
+
/** Register a topic name → threadId mapping in the registry. */
|
|
8
|
+
export declare function registerTopic(chatId: string, name: string, threadId: number): void;
|
|
9
|
+
export declare function registerTopicRegistry(chatId: string, name: string, threadId: number): void;
|
|
10
|
+
/** Remove a topic from the registry. */
|
|
11
|
+
export declare function unregisterTopic(chatId: string, name: string): void;
|
|
12
|
+
/** Get all registered topics for a chat (or all chats if chatId is omitted). */
|
|
13
|
+
export declare function getAllRegisteredTopics(chatId?: string): Record<string, Record<string, number>>;
|
|
14
|
+
//# sourceMappingURL=topic-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topic-registry.d.ts","sourceRoot":"","sources":["../../src/sessions/topic-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWpF;AAED,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAElF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAS1F;AAED,wCAAwC;AACxC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAUlE;AAED,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAuB9F"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Topic registry — operator-managed name → threadId mapping.
|
|
3
|
+
* Backed by the shared SQLite memory database (topic_registry table).
|
|
4
|
+
*/
|
|
5
|
+
import { initMemoryDb } from "../data/memory/schema.js";
|
|
6
|
+
import { log } from "../lib/logger.js";
|
|
7
|
+
import { errorMessage } from "../lib/utils.js";
|
|
8
|
+
/** Look up a thread ID from the operator-managed topic registry. */
|
|
9
|
+
export function lookupTopicRegistry(chatId, name) {
|
|
10
|
+
try {
|
|
11
|
+
const db = initMemoryDb();
|
|
12
|
+
const row = db
|
|
13
|
+
.prepare(`SELECT thread_id FROM topic_registry WHERE chat_id = ? AND name = ?`)
|
|
14
|
+
.get(chatId, name.toLowerCase());
|
|
15
|
+
return row?.thread_id;
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
log.debug(`[topic-registry] lookupTopicRegistry failed: ${errorMessage(err)}`);
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/** Register a topic name → threadId mapping in the registry. */
|
|
23
|
+
export function registerTopic(chatId, name, threadId) {
|
|
24
|
+
registerTopicRegistry(chatId, name, threadId);
|
|
25
|
+
}
|
|
26
|
+
export function registerTopicRegistry(chatId, name, threadId) {
|
|
27
|
+
try {
|
|
28
|
+
const db = initMemoryDb();
|
|
29
|
+
db.prepare(`INSERT OR REPLACE INTO topic_registry (chat_id, name, thread_id, registered_at) VALUES (?, ?, ?, datetime('now'))`).run(chatId, name.toLowerCase(), threadId);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
log.warn(`[topic-registry] Failed to register topic: ${errorMessage(err)}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Remove a topic from the registry. */
|
|
36
|
+
export function unregisterTopic(chatId, name) {
|
|
37
|
+
try {
|
|
38
|
+
const db = initMemoryDb();
|
|
39
|
+
db.prepare(`DELETE FROM topic_registry WHERE chat_id = ? AND name = ?`).run(chatId, name.toLowerCase());
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
log.warn(`[topic-registry] Failed to unregister topic: ${errorMessage(err)}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** Get all registered topics for a chat (or all chats if chatId is omitted). */
|
|
46
|
+
export function getAllRegisteredTopics(chatId) {
|
|
47
|
+
try {
|
|
48
|
+
const db = initMemoryDb();
|
|
49
|
+
const rows = chatId
|
|
50
|
+
? db
|
|
51
|
+
.prepare(`SELECT chat_id, name, thread_id FROM topic_registry WHERE chat_id = ?`)
|
|
52
|
+
.all(chatId)
|
|
53
|
+
: db.prepare(`SELECT chat_id, name, thread_id FROM topic_registry`).all();
|
|
54
|
+
const result = {};
|
|
55
|
+
for (const row of rows) {
|
|
56
|
+
if (!result[row.chat_id])
|
|
57
|
+
result[row.chat_id] = {};
|
|
58
|
+
result[row.chat_id][row.name] = row.thread_id;
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
log.debug(`[topic-registry] getAllRegisteredTopics failed: ${errorMessage(err)}`);
|
|
64
|
+
return {};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=topic-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topic-registry.js","sourceRoot":"","sources":["../../src/sessions/topic-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP tool definitions — thin hub that re-exports from defs/ sub-files.
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
|
-
name: string;
|
|
6
|
-
description: string;
|
|
7
|
-
inputSchema: {
|
|
8
|
-
type: "object";
|
|
9
|
-
properties: Record<string, unknown>;
|
|
10
|
-
required?: string[];
|
|
11
|
-
};
|
|
12
|
-
}
|
|
4
|
+
import type { ToolDefinition } from "./defs/types.js";
|
|
13
5
|
export declare const ALL_TOOL_DEFINITIONS: ToolDefinition[];
|
|
14
6
|
//# sourceMappingURL=definitions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,eAAO,MAAM,oBAAoB,EAAE,cAAc,EAMhD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,MAAM,CAAC,MAAM,oBAAoB,GAAqB;IACpD,GAAG,eAAe;IAClB,GAAG,YAAY;IACf,GAAG,eAAe;IAClB,GAAG,cAAc;IACjB,GAAG,aAAa;CACjB,CAAC"}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Memory tool definitions — memory_search, memory_save, memory_update,
|
|
3
3
|
* memory_consolidate, memory_status, memory_forget.
|
|
4
4
|
*/
|
|
5
|
-
import type { ToolDefinition } from "
|
|
5
|
+
import type { ToolDefinition } from "./types.js";
|
|
6
6
|
export declare const memoryToolDefs: ToolDefinition[];
|
|
7
7
|
//# sourceMappingURL=memory-defs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-defs.d.ts","sourceRoot":"","sources":["../../../src/tools/defs/memory-defs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"memory-defs.d.ts","sourceRoot":"","sources":["../../../src/tools/defs/memory-defs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,cAAc,EAAE,cAAc,EAmM1C,CAAC"}
|