sensorium-mcp 3.0.102 → 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 +30 -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} +152 -31
- 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/playwright.default.md +6 -6
- package/templates/sensorium-repair.default.md +4 -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,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keep-alive settings — global keeper toggle/target/retry policy, keeper
|
|
3
|
+
* client type, and per-thread keep-alive overrides.
|
|
4
|
+
*/
|
|
5
|
+
import { readSettings, updateSettings } from "./settings-store.js";
|
|
6
|
+
// ─── Keep-alive settings ─────────────────────────────────────────────────────
|
|
7
|
+
const DEFAULT_KEEP_ALIVE_MAX_RETRIES = 5;
|
|
8
|
+
const DEFAULT_KEEP_ALIVE_COOLDOWN_MS = 300_000;
|
|
9
|
+
export function getKeepAliveEnabled() {
|
|
10
|
+
const v = readSettings().keepAliveEnabled;
|
|
11
|
+
if (typeof v === "boolean")
|
|
12
|
+
return v;
|
|
13
|
+
return false; // default: disabled
|
|
14
|
+
}
|
|
15
|
+
export function setKeepAliveEnabled(enabled) {
|
|
16
|
+
updateSettings((s) => {
|
|
17
|
+
s.keepAliveEnabled = enabled;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
export function getKeepAliveThreadId() {
|
|
21
|
+
const v = readSettings().keepAliveThreadId;
|
|
22
|
+
if (typeof v === "number" && Number.isFinite(v) && v > 0)
|
|
23
|
+
return v;
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
export function setKeepAliveThreadId(threadId) {
|
|
27
|
+
updateSettings((s) => {
|
|
28
|
+
s.keepAliveThreadId = threadId;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export function getKeepAliveMaxRetries() {
|
|
32
|
+
const v = readSettings().keepAliveMaxRetries;
|
|
33
|
+
if (typeof v === "number" && Number.isFinite(v) && v > 0)
|
|
34
|
+
return v;
|
|
35
|
+
return DEFAULT_KEEP_ALIVE_MAX_RETRIES;
|
|
36
|
+
}
|
|
37
|
+
export function setKeepAliveMaxRetries(retries) {
|
|
38
|
+
updateSettings((s) => {
|
|
39
|
+
s.keepAliveMaxRetries = retries;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export function getKeepAliveCooldownMs() {
|
|
43
|
+
const v = readSettings().keepAliveCooldownMs;
|
|
44
|
+
if (typeof v === "number" && Number.isFinite(v) && v > 0)
|
|
45
|
+
return v;
|
|
46
|
+
return DEFAULT_KEEP_ALIVE_COOLDOWN_MS;
|
|
47
|
+
}
|
|
48
|
+
export function setKeepAliveCooldownMs(ms) {
|
|
49
|
+
updateSettings((s) => {
|
|
50
|
+
s.keepAliveCooldownMs = ms;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
export function isValidKeeperClient(v) {
|
|
54
|
+
return v === "claude" || v === "copilot";
|
|
55
|
+
}
|
|
56
|
+
export function getKeepAliveClient() {
|
|
57
|
+
const v = readSettings().keepAliveClient;
|
|
58
|
+
return isValidKeeperClient(v) ? v : "claude";
|
|
59
|
+
}
|
|
60
|
+
export function setKeepAliveClient(client) {
|
|
61
|
+
updateSettings((s) => {
|
|
62
|
+
s.keepAliveClient = client;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/** Sets keep-alive settings for a specific thread. */
|
|
66
|
+
export function setThreadKeepAlive(threadId, settings) {
|
|
67
|
+
updateSettings((s) => {
|
|
68
|
+
const map = (s.threadKeepAlive ?? {});
|
|
69
|
+
map[String(threadId)] = settings;
|
|
70
|
+
s.threadKeepAlive = map;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/** Removes per-thread keep-alive settings. */
|
|
74
|
+
export function removeThreadKeepAlive(threadId) {
|
|
75
|
+
updateSettings((s) => {
|
|
76
|
+
const map = (s.threadKeepAlive ?? {});
|
|
77
|
+
delete map[String(threadId)];
|
|
78
|
+
s.threadKeepAlive = map;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/** Returns all per-thread keep-alive overrides. */
|
|
82
|
+
export function getAllThreadKeepAlive() {
|
|
83
|
+
const map = readSettings().threadKeepAlive;
|
|
84
|
+
if (!map || typeof map !== "object")
|
|
85
|
+
return {};
|
|
86
|
+
const result = {};
|
|
87
|
+
for (const [k, v] of Object.entries(map)) {
|
|
88
|
+
if (v && typeof v === "object") {
|
|
89
|
+
const e = v;
|
|
90
|
+
result[k] = {
|
|
91
|
+
enabled: typeof e.enabled === "boolean" ? e.enabled : false,
|
|
92
|
+
client: isValidKeeperClient(e.client) ? e.client : undefined,
|
|
93
|
+
cooldownMs: typeof e.cooldownMs === "number" && e.cooldownMs >= 1000 ? e.cooldownMs : undefined,
|
|
94
|
+
maxRetries: typeof e.maxRetries === "number" && e.maxRetries > 0 ? e.maxRetries : undefined,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=keep-alive-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keep-alive-settings.js","sourceRoot":"","sources":["../../src/config/keep-alive-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP server settings — the global user-configured server map plus the
|
|
3
|
+
* security-hardened per-thread server entries (http-only, reserved-name and
|
|
4
|
+
* header-name invariants) and dashboard masking helpers.
|
|
5
|
+
*/
|
|
6
|
+
export type McpServerConfig = {
|
|
7
|
+
type: "stdio";
|
|
8
|
+
command: string;
|
|
9
|
+
args?: string[];
|
|
10
|
+
env?: Record<string, string>;
|
|
11
|
+
} | {
|
|
12
|
+
type: "http";
|
|
13
|
+
url: string;
|
|
14
|
+
headers?: Record<string, string>;
|
|
15
|
+
env?: Record<string, string>;
|
|
16
|
+
};
|
|
17
|
+
/** Returns all user-configured MCP servers (excludes auto-injected sensorium). */
|
|
18
|
+
export declare function getMcpServers(): Record<string, McpServerConfig>;
|
|
19
|
+
/** Overwrites the entire MCP servers map. */
|
|
20
|
+
export declare function setMcpServers(servers: Record<string, McpServerConfig>): void;
|
|
21
|
+
/** Add or update a single MCP server by name. */
|
|
22
|
+
export declare function addMcpServer(name: string, config: McpServerConfig): void;
|
|
23
|
+
/** Remove an MCP server by name. Returns true if it existed. */
|
|
24
|
+
export declare function removeMcpServer(name: string): boolean;
|
|
25
|
+
/** MCP server names a per-thread entry may never use. */
|
|
26
|
+
export declare const RESERVED_MCP_NAMES: readonly string[];
|
|
27
|
+
/** A per-thread MCP server entry — HTTP transport only (no stdio, by design). */
|
|
28
|
+
export type ThreadMcpServer = {
|
|
29
|
+
type: "http";
|
|
30
|
+
url: string;
|
|
31
|
+
headers?: Record<string, string>;
|
|
32
|
+
};
|
|
33
|
+
/** Parse a per-thread server map, dropping reserved names and non-http/invalid entries. */
|
|
34
|
+
export declare function parseThreadMcpServers(raw: unknown): Record<string, ThreadMcpServer>;
|
|
35
|
+
/** Returns a thread's custom MCP servers (http-only, reserved names excluded). */
|
|
36
|
+
export declare function getThreadMcpServers(threadId: number): Record<string, ThreadMcpServer>;
|
|
37
|
+
/**
|
|
38
|
+
* Validate a caller-supplied server map against the per-thread invariants
|
|
39
|
+
* (http-only, non-reserved name, safe header names). Throws on any violation so
|
|
40
|
+
* the dashboard can surface a 400. Shared by per-thread MCP writes and agent
|
|
41
|
+
* templates (which carry the same kind of map).
|
|
42
|
+
*/
|
|
43
|
+
export declare function sanitizeThreadMcpServers(servers: Record<string, ThreadMcpServer> | null | undefined): Record<string, ThreadMcpServer>;
|
|
44
|
+
/** Header value the dashboard shows in place of a stored secret; must never be persisted back. */
|
|
45
|
+
export declare const MASK_SENTINEL = "\u2022\u2022\u2022\u2022";
|
|
46
|
+
type MaskedThreadMcpServer = {
|
|
47
|
+
type: "http";
|
|
48
|
+
url: string;
|
|
49
|
+
headers?: Record<string, string>;
|
|
50
|
+
};
|
|
51
|
+
/** Mask header values so the dashboard shows which headers exist without leaking the secret. */
|
|
52
|
+
export declare function maskThreadMcpServers(servers: Record<string, ThreadMcpServer>): Record<string, MaskedThreadMcpServer>;
|
|
53
|
+
export declare function setThreadMcpServers(threadId: number, servers: Record<string, ThreadMcpServer> | null): void;
|
|
54
|
+
/** Remove a thread's custom MCP servers entirely (called on hard-delete). */
|
|
55
|
+
export declare function deleteThreadMcpServers(threadId: number): void;
|
|
56
|
+
/** All per-thread MCP servers (for dashboard enrichment), reserved/invalid excluded. */
|
|
57
|
+
export declare function getAllThreadMcpServers(): Record<string, Record<string, ThreadMcpServer>>;
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=mcp-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-settings.d.ts","sourceRoot":"","sources":["../../src/config/mcp-settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAQlG,kFAAkF;AAClF,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAE/D;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CAI5E;AAED,iDAAiD;AACjD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAUxE;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWrD;AAmBD,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAA6B,CAAC;AAE9E,iFAAiF;AACjF,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AA2B9F,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CASnF;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAGrF;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,GAAG,SAAS,GAC1D,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CA4BjC;AAED,kGAAkG;AAClG,eAAO,MAAM,aAAa,6BAAS,CAAC;AAEpC,KAAK,qBAAqB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAE7F,gGAAgG;AAChG,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACvC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAWvC;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,GAC9C,IAAI,CAQN;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQ7D;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CASxF"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP server settings — the global user-configured server map plus the
|
|
3
|
+
* security-hardened per-thread server entries (http-only, reserved-name and
|
|
4
|
+
* header-name invariants) and dashboard masking helpers.
|
|
5
|
+
*/
|
|
6
|
+
import { readSettings, updateSettings } from "./settings-store.js";
|
|
7
|
+
function parseMcpServers(raw) {
|
|
8
|
+
return raw && typeof raw === "object" && !Array.isArray(raw)
|
|
9
|
+
? raw
|
|
10
|
+
: {};
|
|
11
|
+
}
|
|
12
|
+
/** Returns all user-configured MCP servers (excludes auto-injected sensorium). */
|
|
13
|
+
export function getMcpServers() {
|
|
14
|
+
return parseMcpServers(readSettings().mcpServers);
|
|
15
|
+
}
|
|
16
|
+
/** Overwrites the entire MCP servers map. */
|
|
17
|
+
export function setMcpServers(servers) {
|
|
18
|
+
updateSettings((s) => {
|
|
19
|
+
s.mcpServers = servers;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/** Add or update a single MCP server by name. */
|
|
23
|
+
export function addMcpServer(name, config) {
|
|
24
|
+
if (!name || name === "sensorium-mcp")
|
|
25
|
+
throw new Error(`Invalid MCP server name: "${name}"`);
|
|
26
|
+
if (config.type === "stdio" && !config.command)
|
|
27
|
+
throw new Error("Stdio MCP server requires a command");
|
|
28
|
+
if (config.type === "http" && !config.url)
|
|
29
|
+
throw new Error("HTTP MCP server requires a url");
|
|
30
|
+
updateSettings((s) => {
|
|
31
|
+
const existing = parseMcpServers(s.mcpServers);
|
|
32
|
+
existing[name] = config;
|
|
33
|
+
s.mcpServers = existing;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/** Remove an MCP server by name. Returns true if it existed. */
|
|
37
|
+
export function removeMcpServer(name) {
|
|
38
|
+
let existed = false;
|
|
39
|
+
updateSettings((s) => {
|
|
40
|
+
const servers = parseMcpServers(s.mcpServers);
|
|
41
|
+
if (name in servers) {
|
|
42
|
+
delete servers[name];
|
|
43
|
+
existed = true;
|
|
44
|
+
}
|
|
45
|
+
s.mcpServers = servers;
|
|
46
|
+
});
|
|
47
|
+
return existed;
|
|
48
|
+
}
|
|
49
|
+
// ─── Per-thread custom MCP servers (universal, agent-agnostic) ──────────────
|
|
50
|
+
//
|
|
51
|
+
// The operator can attach arbitrary MCP servers to a single thread via the
|
|
52
|
+
// dashboard. Stored in settings.json keyed by threadId (same pattern as
|
|
53
|
+
// threadConversationModes / threadKeepAlive — no DB schema change), then merged
|
|
54
|
+
// on top of the global mcpServers map at spawn. Sensorium knows nothing about
|
|
55
|
+
// what any server does (RAG, search, whatever) — it's just an { type: "http",
|
|
56
|
+
// url, headers } entry, e.g. an Authorization: Bearer <token> that selects a
|
|
57
|
+
// corpus on some external host.
|
|
58
|
+
//
|
|
59
|
+
// HARD INVARIANTS (security):
|
|
60
|
+
// • HTTP-ONLY. A per-thread `stdio` entry would spawn an operator-supplied
|
|
61
|
+
// binary at agent-spawn time = arbitrary code execution, so stdio is
|
|
62
|
+
// rejected on write and never parsed back out.
|
|
63
|
+
// • RESERVED names can't be overridden — `sensorium-mcp` is the agent's own
|
|
64
|
+
// control channel (clobbering it severs the orchestrator link).
|
|
65
|
+
/** MCP server names a per-thread entry may never use. */
|
|
66
|
+
export const RESERVED_MCP_NAMES = ["sensorium-mcp", "rag"];
|
|
67
|
+
/**
|
|
68
|
+
* Header names must be plain HTTP tokens. This is a hard security boundary, not
|
|
69
|
+
* cosmetics: Codex renders headers as dotted TOML `-c mcp_servers.X.http_headers.<key>`
|
|
70
|
+
* overrides, so a key containing `.`, `"`, `=`, `[` or whitespace could break out
|
|
71
|
+
* of the header path and inject arbitrary config (e.g. re-point sensorium-mcp or
|
|
72
|
+
* add an stdio server), defeating the reserved-name and http-only invariants.
|
|
73
|
+
*/
|
|
74
|
+
const SAFE_HEADER_NAME = /^[A-Za-z0-9-]+$/;
|
|
75
|
+
/** Parse one raw entry into a validated http-only ThreadMcpServer, or null if invalid. */
|
|
76
|
+
function parseThreadMcpServer(raw) {
|
|
77
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
78
|
+
return null;
|
|
79
|
+
const o = raw;
|
|
80
|
+
if (o.type !== "http" || typeof o.url !== "string" || o.url.length === 0)
|
|
81
|
+
return null;
|
|
82
|
+
const entry = { type: "http", url: o.url };
|
|
83
|
+
if (o.headers && typeof o.headers === "object" && !Array.isArray(o.headers)) {
|
|
84
|
+
const headers = {};
|
|
85
|
+
for (const [k, v] of Object.entries(o.headers)) {
|
|
86
|
+
if (typeof v === "string" && SAFE_HEADER_NAME.test(k))
|
|
87
|
+
headers[k] = v;
|
|
88
|
+
}
|
|
89
|
+
if (Object.keys(headers).length > 0)
|
|
90
|
+
entry.headers = headers;
|
|
91
|
+
}
|
|
92
|
+
return entry;
|
|
93
|
+
}
|
|
94
|
+
/** Parse a per-thread server map, dropping reserved names and non-http/invalid entries. */
|
|
95
|
+
export function parseThreadMcpServers(raw) {
|
|
96
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
97
|
+
return {};
|
|
98
|
+
const result = {};
|
|
99
|
+
for (const [name, val] of Object.entries(raw)) {
|
|
100
|
+
if (!name || RESERVED_MCP_NAMES.includes(name))
|
|
101
|
+
continue;
|
|
102
|
+
const parsed = parseThreadMcpServer(val);
|
|
103
|
+
if (parsed)
|
|
104
|
+
result[name] = parsed;
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
/** Returns a thread's custom MCP servers (http-only, reserved names excluded). */
|
|
109
|
+
export function getThreadMcpServers(threadId) {
|
|
110
|
+
const map = readSettings().threadMcpServers;
|
|
111
|
+
return parseThreadMcpServers(map?.[String(threadId)]);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Validate a caller-supplied server map against the per-thread invariants
|
|
115
|
+
* (http-only, non-reserved name, safe header names). Throws on any violation so
|
|
116
|
+
* the dashboard can surface a 400. Shared by per-thread MCP writes and agent
|
|
117
|
+
* templates (which carry the same kind of map).
|
|
118
|
+
*/
|
|
119
|
+
export function sanitizeThreadMcpServers(servers) {
|
|
120
|
+
const clean = {};
|
|
121
|
+
if (servers) {
|
|
122
|
+
for (const [name, cfg] of Object.entries(servers)) {
|
|
123
|
+
if (!name)
|
|
124
|
+
throw new Error("MCP server name is required");
|
|
125
|
+
if (RESERVED_MCP_NAMES.includes(name))
|
|
126
|
+
throw new Error(`MCP server name "${name}" is reserved`);
|
|
127
|
+
if (!cfg || cfg.type !== "http")
|
|
128
|
+
throw new Error(`MCP server "${name}" must be http (stdio is not allowed per-thread)`);
|
|
129
|
+
if (!cfg.url)
|
|
130
|
+
throw new Error(`MCP server "${name}" requires a url`);
|
|
131
|
+
const entry = { type: "http", url: cfg.url };
|
|
132
|
+
if (cfg.headers && Object.keys(cfg.headers).length > 0) {
|
|
133
|
+
for (const [k, v] of Object.entries(cfg.headers)) {
|
|
134
|
+
if (!SAFE_HEADER_NAME.test(k))
|
|
135
|
+
throw new Error(`MCP server "${name}" header name "${k}" is invalid (letters, digits, hyphen only)`);
|
|
136
|
+
if (typeof v === "string" && v.includes(MASK_SENTINEL))
|
|
137
|
+
throw new Error(`MCP server "${name}" header "${k}" is still masked — re-enter the value`);
|
|
138
|
+
}
|
|
139
|
+
entry.headers = cfg.headers;
|
|
140
|
+
}
|
|
141
|
+
clean[name] = entry;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return clean;
|
|
145
|
+
}
|
|
146
|
+
/** Header value the dashboard shows in place of a stored secret; must never be persisted back. */
|
|
147
|
+
export const MASK_SENTINEL = "••••";
|
|
148
|
+
/** Mask header values so the dashboard shows which headers exist without leaking the secret. */
|
|
149
|
+
export function maskThreadMcpServers(servers) {
|
|
150
|
+
const out = {};
|
|
151
|
+
for (const [name, cfg] of Object.entries(servers)) {
|
|
152
|
+
const masked = { type: "http", url: cfg.url };
|
|
153
|
+
if (cfg.headers && Object.keys(cfg.headers).length > 0) {
|
|
154
|
+
masked.headers = {};
|
|
155
|
+
for (const k of Object.keys(cfg.headers))
|
|
156
|
+
masked.headers[k] = MASK_SENTINEL;
|
|
157
|
+
}
|
|
158
|
+
out[name] = masked;
|
|
159
|
+
}
|
|
160
|
+
return out;
|
|
161
|
+
}
|
|
162
|
+
export function setThreadMcpServers(threadId, servers) {
|
|
163
|
+
const clean = sanitizeThreadMcpServers(servers);
|
|
164
|
+
updateSettings((s) => {
|
|
165
|
+
const map = (s.threadMcpServers ?? {});
|
|
166
|
+
if (Object.keys(clean).length > 0)
|
|
167
|
+
map[String(threadId)] = clean;
|
|
168
|
+
else
|
|
169
|
+
delete map[String(threadId)];
|
|
170
|
+
s.threadMcpServers = map;
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
/** Remove a thread's custom MCP servers entirely (called on hard-delete). */
|
|
174
|
+
export function deleteThreadMcpServers(threadId) {
|
|
175
|
+
updateSettings((s) => {
|
|
176
|
+
const map = (s.threadMcpServers ?? {});
|
|
177
|
+
if (String(threadId) in map) {
|
|
178
|
+
delete map[String(threadId)];
|
|
179
|
+
s.threadMcpServers = map;
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
/** All per-thread MCP servers (for dashboard enrichment), reserved/invalid excluded. */
|
|
184
|
+
export function getAllThreadMcpServers() {
|
|
185
|
+
const map = readSettings().threadMcpServers;
|
|
186
|
+
if (!map || typeof map !== "object")
|
|
187
|
+
return {};
|
|
188
|
+
const result = {};
|
|
189
|
+
for (const [tid, val] of Object.entries(map)) {
|
|
190
|
+
const parsed = parseThreadMcpServers(val);
|
|
191
|
+
if (Object.keys(parsed).length > 0)
|
|
192
|
+
result[tid] = parsed;
|
|
193
|
+
}
|
|
194
|
+
return result;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=mcp-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-settings.js","sourceRoot":"","sources":["../../src/config/mcp-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Miscellaneous settings — imported external skills, per-thread conversation
|
|
3
|
+
* mode, bootstrap message count, wait timeout, predefined prompts, guardrails
|
|
4
|
+
* toggle, and the child-thread memory source env var.
|
|
5
|
+
*/
|
|
6
|
+
export declare const SKILL_TYPES: readonly ["sensorium", "claude", "copilot"];
|
|
7
|
+
export type SkillType = (typeof SKILL_TYPES)[number];
|
|
8
|
+
export interface ImportedSkill {
|
|
9
|
+
path: string;
|
|
10
|
+
type: SkillType;
|
|
11
|
+
}
|
|
12
|
+
export declare function isValidSkillType(v: unknown): v is SkillType;
|
|
13
|
+
/** All registered external skills. Malformed entries are dropped. */
|
|
14
|
+
export declare function getImportedSkills(): ImportedSkill[];
|
|
15
|
+
/** Register an external skill by path+type. Idempotent on path (updates type). */
|
|
16
|
+
export declare function addImportedSkill(skill: ImportedSkill): void;
|
|
17
|
+
/** Unregister an external skill by path. */
|
|
18
|
+
export declare function removeImportedSkill(path: string): void;
|
|
19
|
+
export type ConversationMode = "concise" | "voice";
|
|
20
|
+
/** Returns the conversation mode for a thread, defaulting to "concise". */
|
|
21
|
+
export declare function getThreadConversationMode(threadId: number): ConversationMode;
|
|
22
|
+
/** Persists a per-thread conversation mode. */
|
|
23
|
+
export declare function setThreadConversationMode(threadId: number, mode: ConversationMode): void;
|
|
24
|
+
/** Number of recent episodes injected into the bootstrap as "Recent Conversation". */
|
|
25
|
+
export declare function getBootstrapMessageCount(): number;
|
|
26
|
+
export declare function setBootstrapMessageCount(count: number): void;
|
|
27
|
+
export declare function getWaitTimeoutMinutes(): number;
|
|
28
|
+
export declare function setWaitTimeoutMinutes(minutes: number): void;
|
|
29
|
+
export interface PredefinedPrompt {
|
|
30
|
+
label: string;
|
|
31
|
+
text: string;
|
|
32
|
+
}
|
|
33
|
+
/** Coerce untrusted input into a clean list of {label, text} prompts. */
|
|
34
|
+
export declare function normalizePredefinedPrompts(raw: unknown): PredefinedPrompt[];
|
|
35
|
+
export declare function getPredefinedPrompts(): PredefinedPrompt[];
|
|
36
|
+
export declare function setPredefinedPrompts(list: PredefinedPrompt[]): void;
|
|
37
|
+
/** Whether guardrail (Active Decisions) notes are injected into memory briefings. */
|
|
38
|
+
export declare function getGuardrailsEnabled(): boolean;
|
|
39
|
+
export declare function setGuardrailsEnabled(enabled: boolean): void;
|
|
40
|
+
/**
|
|
41
|
+
* Read the MEMORY_SOURCE_THREAD_ID env var set by the parent process
|
|
42
|
+
* when spawning a child thread (worker/branch). Returns the parent
|
|
43
|
+
* thread ID for memory briefing, or undefined if not a child thread.
|
|
44
|
+
*/
|
|
45
|
+
export declare function getMemorySourceThreadId(): number | undefined;
|
|
46
|
+
//# sourceMappingURL=misc-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc-settings.d.ts","sourceRoot":"","sources":["../../src/config/misc-settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,eAAO,MAAM,WAAW,6CAA8C,CAAC;AACvE,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,SAAS,CAE3D;AAED,qEAAqE;AACrE,wBAAgB,iBAAiB,IAAI,aAAa,EAAE,CASnD;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAM3D;AAED,4CAA4C;AAC5C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAItD;AAID,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnD,2EAA2E;AAC3E,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAO5E;AAED,+CAA+C;AAC/C,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAMxF;AAOD,sFAAsF;AACtF,wBAAgB,wBAAwB,IAAI,MAAM,CAIjD;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAM5D;AAQD,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAM3D;AAQD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAKD,yEAAyE;AACzE,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAY3E;AAED,wBAAgB,oBAAoB,IAAI,gBAAgB,EAAE,CAEzD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAInE;AAID,qFAAqF;AACrF,wBAAgB,oBAAoB,IAAI,OAAO,CAI9C;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAI3D;AAID;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,SAAS,CAK5D"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Miscellaneous settings — imported external skills, per-thread conversation
|
|
3
|
+
* mode, bootstrap message count, wait timeout, predefined prompts, guardrails
|
|
4
|
+
* toggle, and the child-thread memory source env var.
|
|
5
|
+
*/
|
|
6
|
+
import { readSettings, updateSettings } from "./settings-store.js";
|
|
7
|
+
// ─── Imported (external) skills ─────────────────────────────────────────────
|
|
8
|
+
// Skills that live OUTSIDE Sensorium (e.g. a separate git repo of sensitive
|
|
9
|
+
// skills) are registered here by absolute path + format, never copied. The
|
|
10
|
+
// skill loader reads them in place, so a `git pull` in the source repo updates
|
|
11
|
+
// them with no re-import.
|
|
12
|
+
export const SKILL_TYPES = ["sensorium", "claude", "copilot"];
|
|
13
|
+
export function isValidSkillType(v) {
|
|
14
|
+
return typeof v === "string" && SKILL_TYPES.includes(v);
|
|
15
|
+
}
|
|
16
|
+
/** All registered external skills. Malformed entries are dropped. */
|
|
17
|
+
export function getImportedSkills() {
|
|
18
|
+
const raw = readSettings().importedSkills;
|
|
19
|
+
if (!Array.isArray(raw))
|
|
20
|
+
return [];
|
|
21
|
+
return raw.filter((e) => !!e &&
|
|
22
|
+
typeof e.path === "string" &&
|
|
23
|
+
isValidSkillType(e.type));
|
|
24
|
+
}
|
|
25
|
+
/** Register an external skill by path+type. Idempotent on path (updates type). */
|
|
26
|
+
export function addImportedSkill(skill) {
|
|
27
|
+
updateSettings((s) => {
|
|
28
|
+
const list = getImportedSkills().filter((e) => e.path !== skill.path);
|
|
29
|
+
list.push(skill);
|
|
30
|
+
s.importedSkills = list;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/** Unregister an external skill by path. */
|
|
34
|
+
export function removeImportedSkill(path) {
|
|
35
|
+
updateSettings((s) => {
|
|
36
|
+
s.importedSkills = getImportedSkills().filter((e) => e.path !== path);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/** Returns the conversation mode for a thread, defaulting to "concise". */
|
|
40
|
+
export function getThreadConversationMode(threadId) {
|
|
41
|
+
const map = readSettings().threadConversationModes;
|
|
42
|
+
if (map) {
|
|
43
|
+
const m = map[String(threadId)];
|
|
44
|
+
if (m === "concise" || m === "voice")
|
|
45
|
+
return m;
|
|
46
|
+
}
|
|
47
|
+
return "concise"; // concise is the default
|
|
48
|
+
}
|
|
49
|
+
/** Persists a per-thread conversation mode. */
|
|
50
|
+
export function setThreadConversationMode(threadId, mode) {
|
|
51
|
+
updateSettings((s) => {
|
|
52
|
+
const map = (s.threadConversationModes ?? {});
|
|
53
|
+
map[String(threadId)] = mode;
|
|
54
|
+
s.threadConversationModes = map;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
// ─── Bootstrap message count setting ────────────────────────────────────────
|
|
58
|
+
/** Default number of episodes for the bootstrap "Recent Conversation" section. */
|
|
59
|
+
const DEFAULT_BOOTSTRAP_MESSAGE_COUNT = 50;
|
|
60
|
+
/** Number of recent episodes injected into the bootstrap as "Recent Conversation". */
|
|
61
|
+
export function getBootstrapMessageCount() {
|
|
62
|
+
const v = readSettings().bootstrapMessageCount;
|
|
63
|
+
if (typeof v === "number" && Number.isFinite(v) && v >= 0)
|
|
64
|
+
return v;
|
|
65
|
+
return DEFAULT_BOOTSTRAP_MESSAGE_COUNT;
|
|
66
|
+
}
|
|
67
|
+
export function setBootstrapMessageCount(count) {
|
|
68
|
+
const clamped = Math.max(0, Math.round(count));
|
|
69
|
+
if (!Number.isFinite(clamped))
|
|
70
|
+
return;
|
|
71
|
+
updateSettings((s) => {
|
|
72
|
+
s.bootstrapMessageCount = clamped;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
// ——— Wait timeout setting ———————————————————————————————————————————
|
|
76
|
+
const DEFAULT_WAIT_TIMEOUT_MINUTES = 1440;
|
|
77
|
+
const envWaitTimeoutMinutes = parseInt(process.env.WAIT_TIMEOUT_MINUTES ?? "", 10);
|
|
78
|
+
const ENV_WAIT_TIMEOUT = Number.isFinite(envWaitTimeoutMinutes) ? envWaitTimeoutMinutes : undefined;
|
|
79
|
+
export function getWaitTimeoutMinutes() {
|
|
80
|
+
const v = readSettings().waitTimeoutMinutes;
|
|
81
|
+
if (typeof v === "number" && Number.isFinite(v) && v >= 1)
|
|
82
|
+
return v;
|
|
83
|
+
return ENV_WAIT_TIMEOUT ?? DEFAULT_WAIT_TIMEOUT_MINUTES;
|
|
84
|
+
}
|
|
85
|
+
export function setWaitTimeoutMinutes(minutes) {
|
|
86
|
+
const clamped = Math.max(1, Math.round(minutes));
|
|
87
|
+
if (!Number.isFinite(clamped))
|
|
88
|
+
return;
|
|
89
|
+
updateSettings((s) => {
|
|
90
|
+
s.waitTimeoutMinutes = clamped;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
const PROMPT_LABEL_MAX = 64;
|
|
94
|
+
const PROMPT_TEXT_MAX = 4000;
|
|
95
|
+
/** Coerce untrusted input into a clean list of {label, text} prompts. */
|
|
96
|
+
export function normalizePredefinedPrompts(raw) {
|
|
97
|
+
if (!Array.isArray(raw))
|
|
98
|
+
return [];
|
|
99
|
+
const out = [];
|
|
100
|
+
for (const item of raw) {
|
|
101
|
+
if (!item || typeof item !== "object")
|
|
102
|
+
continue;
|
|
103
|
+
const rec = item;
|
|
104
|
+
const label = typeof rec.label === "string" ? rec.label.trim() : "";
|
|
105
|
+
const text = typeof rec.text === "string" ? rec.text.trim() : "";
|
|
106
|
+
if (!label || !text)
|
|
107
|
+
continue;
|
|
108
|
+
out.push({ label: label.slice(0, PROMPT_LABEL_MAX), text: text.slice(0, PROMPT_TEXT_MAX) });
|
|
109
|
+
}
|
|
110
|
+
return out;
|
|
111
|
+
}
|
|
112
|
+
export function getPredefinedPrompts() {
|
|
113
|
+
return normalizePredefinedPrompts(readSettings().predefinedPrompts);
|
|
114
|
+
}
|
|
115
|
+
export function setPredefinedPrompts(list) {
|
|
116
|
+
updateSettings((s) => {
|
|
117
|
+
s.predefinedPrompts = normalizePredefinedPrompts(list);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
// ─── Guardrails setting ─────────────────────────────────────────────────────
|
|
121
|
+
/** Whether guardrail (Active Decisions) notes are injected into memory briefings. */
|
|
122
|
+
export function getGuardrailsEnabled() {
|
|
123
|
+
const v = readSettings().guardrailsEnabled;
|
|
124
|
+
if (typeof v === "boolean")
|
|
125
|
+
return v;
|
|
126
|
+
return true; // default: enabled
|
|
127
|
+
}
|
|
128
|
+
export function setGuardrailsEnabled(enabled) {
|
|
129
|
+
updateSettings((s) => {
|
|
130
|
+
s.guardrailsEnabled = enabled;
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
// ─── Child thread memory source ───────────────────────────────────────────
|
|
134
|
+
/**
|
|
135
|
+
* Read the MEMORY_SOURCE_THREAD_ID env var set by the parent process
|
|
136
|
+
* when spawning a child thread (worker/branch). Returns the parent
|
|
137
|
+
* thread ID for memory briefing, or undefined if not a child thread.
|
|
138
|
+
*/
|
|
139
|
+
export function getMemorySourceThreadId() {
|
|
140
|
+
const val = process.env.MEMORY_SOURCE_THREAD_ID;
|
|
141
|
+
if (!val)
|
|
142
|
+
return undefined;
|
|
143
|
+
const n = Number(val);
|
|
144
|
+
return Number.isFinite(n) ? n : undefined;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=misc-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc-settings.js","sourceRoot":"","sources":["../../src/config/misc-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Settings persistence core — atomic read/modify/write of settings.json
|
|
3
|
+
* under the user's home directory. All config domain modules go through
|
|
4
|
+
* readSettings/updateSettings; nothing else touches the file directly.
|
|
5
|
+
*/
|
|
6
|
+
/** Read and parse the settings file, returning an empty object on any failure. */
|
|
7
|
+
export declare function readSettings(): Record<string, unknown>;
|
|
8
|
+
/** Read settings, apply a mutator, and atomically persist the result. */
|
|
9
|
+
export declare function updateSettings(mutator: (s: Record<string, unknown>) => void): void;
|
|
10
|
+
//# sourceMappingURL=settings-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-store.d.ts","sourceRoot":"","sources":["../../src/config/settings-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4CH,kFAAkF;AAClF,wBAAgB,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQtD;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI,CAIlF"}
|