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
package/README.md
CHANGED
|
@@ -210,6 +210,31 @@ When disabled, episodes are still stored locally but not sent to OpenAI.
|
|
|
210
210
|
|
|
211
211
|
## Architecture
|
|
212
212
|
|
|
213
|
+
### Source layout
|
|
214
|
+
|
|
215
|
+
`src/` is organized as a layered tree. Imports flow strictly downward (a module
|
|
216
|
+
may import only from its own layer or lower), enforced by an ESLint import
|
|
217
|
+
fence. `src/index.ts` is the only module outside the fence — the entry point
|
|
218
|
+
that wires everything together via dynamic imports.
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
bottom → top
|
|
222
|
+
lib → config → integrations → data, llm → sessions → services → tools, dashboard → server
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
| Layer | Contents |
|
|
226
|
+
|---|---|
|
|
227
|
+
| `lib/` | logger, shared types, utils, markdown conversion |
|
|
228
|
+
| `config/` | env parsing, settings store, paths |
|
|
229
|
+
| `integrations/` | external clients: Telegram Bot API, OpenAI |
|
|
230
|
+
| `data/`, `llm/` | SQLite memory (episodes → semantic notes → narratives); LLM prompts + JSON parsing |
|
|
231
|
+
| `sessions/` | name→thread mapping, MCP session registry |
|
|
232
|
+
| `services/` | orchestration: keeper, process/spawn, dispatcher, scheduler, consolidation, self-update |
|
|
233
|
+
| `tools/`, `dashboard/` | MCP tool handlers, dashboard API + SPA |
|
|
234
|
+
| `server/` | HTTP/SSE and stdio transports, server factory |
|
|
235
|
+
|
|
236
|
+
### Data directory
|
|
237
|
+
|
|
213
238
|
```
|
|
214
239
|
~/.remote-copilot-mcp/
|
|
215
240
|
memory.db <- SQLite: episodes, semantic notes, voice signatures, thread registry
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent client settings — agent type selection, default models, Copilot
|
|
3
|
+
* BYOK provider config, per-agent custom spawn env vars, and Claude spawn
|
|
4
|
+
* overrides (CLI path, OAuth token, git-bash path, concurrency cap).
|
|
5
|
+
*/
|
|
6
|
+
export type AgentType = "copilot" | "claude" | "codex" | "openai_codex" | "fable";
|
|
7
|
+
/** The single source of truth for the default agent type when none is configured. */
|
|
8
|
+
export declare const DEFAULT_AGENT_TYPE: AgentType;
|
|
9
|
+
export declare const VALID_AGENT_TYPES: readonly string[];
|
|
10
|
+
export declare function isValidAgentType(v: unknown): v is AgentType;
|
|
11
|
+
export declare function getAgentType(): AgentType;
|
|
12
|
+
export declare function setAgentType(type: AgentType): void;
|
|
13
|
+
export declare function getFableModel(): string;
|
|
14
|
+
export declare function getDefaultThreadModel(): string;
|
|
15
|
+
export declare function getDefaultWorkerModel(): string;
|
|
16
|
+
export declare function updateDefaultThreadModel(model: string): void;
|
|
17
|
+
export declare function updateDefaultWorkerModel(model: string): void;
|
|
18
|
+
export type CopilotProviderType = "openai" | "azure" | "anthropic";
|
|
19
|
+
/**
|
|
20
|
+
* "Bring Your Own Key" provider config for the Copilot CLI. When enabled and a
|
|
21
|
+
* baseUrl + apiKey are present, the Copilot child is spawned pointing at a
|
|
22
|
+
* custom OpenAI-compatible endpoint (OpenRouter, DeepSeek, Kimi, …) instead of
|
|
23
|
+
* GitHub-hosted models. GitHub authentication is not used in this mode.
|
|
24
|
+
*/
|
|
25
|
+
export interface CopilotByokConfig {
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
providerType: CopilotProviderType;
|
|
28
|
+
baseUrl: string;
|
|
29
|
+
apiKey: string;
|
|
30
|
+
/** Optional COPILOT_PROVIDER_MODEL_ID — well-known base model for tool-calling config. */
|
|
31
|
+
modelId: string;
|
|
32
|
+
/** Optional COPILOT_PROVIDER_WIRE_MODEL — actual model id sent on the wire. */
|
|
33
|
+
wireModel: string;
|
|
34
|
+
}
|
|
35
|
+
export declare function isValidCopilotProviderType(v: unknown): v is CopilotProviderType;
|
|
36
|
+
/** Model passed to the Copilot CLI via --model / COPILOT_MODEL (native or BYOK). */
|
|
37
|
+
export declare function getCopilotModel(): string;
|
|
38
|
+
export declare function setCopilotModel(model: string): void;
|
|
39
|
+
export declare function getCopilotByokConfig(): CopilotByokConfig;
|
|
40
|
+
/**
|
|
41
|
+
* Merge a partial patch into the stored BYOK config and persist. The merged
|
|
42
|
+
* result is re-validated through normalizeByokConfig so the settings file can
|
|
43
|
+
* never hold an invalid providerType or non-string field, even though the input
|
|
44
|
+
* originates from the dashboard.
|
|
45
|
+
*/
|
|
46
|
+
export declare function setCopilotByokConfig(patch: Partial<CopilotByokConfig>): CopilotByokConfig;
|
|
47
|
+
/**
|
|
48
|
+
* Assemble the environment variables that configure the Copilot CLI's model and
|
|
49
|
+
* (optionally) a custom BYOK provider. Values here are meant to override any
|
|
50
|
+
* inherited process.env at spawn time.
|
|
51
|
+
*/
|
|
52
|
+
export declare function getCopilotSpawnEnv(): Record<string, string>;
|
|
53
|
+
export declare function getClaudeCustomEnvVars(): Record<string, string>;
|
|
54
|
+
export declare function setClaudeCustomEnvVars(vars: Record<string, string>): void;
|
|
55
|
+
export declare function getCopilotCustomEnvVars(): Record<string, string>;
|
|
56
|
+
export declare function setCopilotCustomEnvVars(vars: Record<string, string>): void;
|
|
57
|
+
/** Explicit path to the Claude CLI binary (settings only — env is read at the call site). */
|
|
58
|
+
export declare function getClaudeCliPath(): string | undefined;
|
|
59
|
+
export declare function setClaudeCliPath(path: string): void;
|
|
60
|
+
/** Long-lived Claude setup token used in place of the broken OAuth refresh flow. */
|
|
61
|
+
export declare function getClaudeOauthToken(): string | undefined;
|
|
62
|
+
export declare function setClaudeOauthToken(token: string): void;
|
|
63
|
+
/** Path to git-bash (Windows) passed to Claude via CLAUDE_CODE_GIT_BASH_PATH. */
|
|
64
|
+
export declare function getClaudeGitBashPath(): string | undefined;
|
|
65
|
+
export declare function setClaudeGitBashPath(path: string): void;
|
|
66
|
+
/** Maximum number of concurrent spawned threads. */
|
|
67
|
+
export declare function getMaxConcurrentThreads(): number;
|
|
68
|
+
export declare function setMaxConcurrentThreads(count: number): void;
|
|
69
|
+
//# sourceMappingURL=agent-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-settings.d.ts","sourceRoot":"","sources":["../../src/config/agent-settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,GAAG,OAAO,CAAC;AAElF,qFAAqF;AACrF,eAAO,MAAM,kBAAkB,EAAE,SAAoB,CAAC;AAEtD,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAM9C,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,SAAS,CAE3D;AAED,wBAAgB,YAAY,IAAI,SAAS,CAGxC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAIlD;AAWD,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAG9C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAG9C;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI5D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI5D;AAMD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,mBAAmB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;CACnB;AAWD,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,mBAAmB,CAE/E;AAED,oFAAoF;AACpF,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAInD;AAgBD,wBAAgB,oBAAoB,IAAI,iBAAiB,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAMzF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY3D;AAqBD,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE/D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAIzE;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAI1E;AAiBD,6FAA6F;AAC7F,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAErD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKnD;AAED,oFAAoF;AACpF,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAExD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAKvD;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAEzD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKvD;AAED,oDAAoD;AACpD,wBAAgB,uBAAuB,IAAI,MAAM,CAIhD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAM3D"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent client settings — agent type selection, default models, Copilot
|
|
3
|
+
* BYOK provider config, per-agent custom spawn env vars, and Claude spawn
|
|
4
|
+
* overrides (CLI path, OAuth token, git-bash path, concurrency cap).
|
|
5
|
+
*/
|
|
6
|
+
import { readSettings, updateSettings } from "./settings-store.js";
|
|
7
|
+
/** The single source of truth for the default agent type when none is configured. */
|
|
8
|
+
export const DEFAULT_AGENT_TYPE = "claude";
|
|
9
|
+
export const VALID_AGENT_TYPES = [
|
|
10
|
+
"copilot",
|
|
11
|
+
"claude",
|
|
12
|
+
"codex",
|
|
13
|
+
"openai_codex",
|
|
14
|
+
"fable",
|
|
15
|
+
];
|
|
16
|
+
export function isValidAgentType(v) {
|
|
17
|
+
return typeof v === "string" && VALID_AGENT_TYPES.includes(v);
|
|
18
|
+
}
|
|
19
|
+
export function getAgentType() {
|
|
20
|
+
const t = readSettings().agentType;
|
|
21
|
+
return isValidAgentType(t) ? t : DEFAULT_AGENT_TYPE;
|
|
22
|
+
}
|
|
23
|
+
export function setAgentType(type) {
|
|
24
|
+
updateSettings((s) => {
|
|
25
|
+
s.agentType = type;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
// ─── Default model settings ──────────────────────────────────────────────────
|
|
29
|
+
const DEFAULT_THREAD_MODEL = "claude-opus-4-6";
|
|
30
|
+
const DEFAULT_WORKER_MODEL = "claude-sonnet-4-6";
|
|
31
|
+
// Model for the experimental "fable" agent type — a Claude-CLI thread pinned to
|
|
32
|
+
// a distinct (premium) model. Overridable via settings.fableModel.
|
|
33
|
+
const DEFAULT_FABLE_MODEL = "claude-fable-5";
|
|
34
|
+
export function getFableModel() {
|
|
35
|
+
const v = readSettings().fableModel;
|
|
36
|
+
return typeof v === "string" && v.length > 0 ? v : DEFAULT_FABLE_MODEL;
|
|
37
|
+
}
|
|
38
|
+
export function getDefaultThreadModel() {
|
|
39
|
+
const v = readSettings().defaultThreadModel;
|
|
40
|
+
return typeof v === "string" && v.length > 0 ? v : DEFAULT_THREAD_MODEL;
|
|
41
|
+
}
|
|
42
|
+
export function getDefaultWorkerModel() {
|
|
43
|
+
const v = readSettings().defaultWorkerModel;
|
|
44
|
+
return typeof v === "string" && v.length > 0 ? v : DEFAULT_WORKER_MODEL;
|
|
45
|
+
}
|
|
46
|
+
export function updateDefaultThreadModel(model) {
|
|
47
|
+
updateSettings((s) => {
|
|
48
|
+
s.defaultThreadModel = model;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
export function updateDefaultWorkerModel(model) {
|
|
52
|
+
updateSettings((s) => {
|
|
53
|
+
s.defaultWorkerModel = model;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
// ─── Copilot provider (BYOK / OpenRouter) settings ──────────────────────────
|
|
57
|
+
const DEFAULT_COPILOT_MODEL = "claude-opus-4-6";
|
|
58
|
+
const DEFAULT_COPILOT_BYOK = {
|
|
59
|
+
enabled: false,
|
|
60
|
+
providerType: "openai",
|
|
61
|
+
baseUrl: "",
|
|
62
|
+
apiKey: "",
|
|
63
|
+
modelId: "",
|
|
64
|
+
wireModel: "",
|
|
65
|
+
};
|
|
66
|
+
export function isValidCopilotProviderType(v) {
|
|
67
|
+
return v === "openai" || v === "azure" || v === "anthropic";
|
|
68
|
+
}
|
|
69
|
+
/** Model passed to the Copilot CLI via --model / COPILOT_MODEL (native or BYOK). */
|
|
70
|
+
export function getCopilotModel() {
|
|
71
|
+
const v = readSettings().copilotModel;
|
|
72
|
+
return typeof v === "string" && v.length > 0 ? v : DEFAULT_COPILOT_MODEL;
|
|
73
|
+
}
|
|
74
|
+
export function setCopilotModel(model) {
|
|
75
|
+
updateSettings((s) => {
|
|
76
|
+
s.copilotModel = model;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/** Coerce an untrusted value into a fully-valid CopilotByokConfig, filling defaults. */
|
|
80
|
+
function normalizeByokConfig(raw) {
|
|
81
|
+
if (!raw || typeof raw !== "object")
|
|
82
|
+
return { ...DEFAULT_COPILOT_BYOK };
|
|
83
|
+
const e = raw;
|
|
84
|
+
return {
|
|
85
|
+
enabled: typeof e.enabled === "boolean" ? e.enabled : false,
|
|
86
|
+
providerType: isValidCopilotProviderType(e.providerType) ? e.providerType : "openai",
|
|
87
|
+
baseUrl: typeof e.baseUrl === "string" ? e.baseUrl : "",
|
|
88
|
+
apiKey: typeof e.apiKey === "string" ? e.apiKey : "",
|
|
89
|
+
modelId: typeof e.modelId === "string" ? e.modelId : "",
|
|
90
|
+
wireModel: typeof e.wireModel === "string" ? e.wireModel : "",
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export function getCopilotByokConfig() {
|
|
94
|
+
return normalizeByokConfig(readSettings().copilotByok);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Merge a partial patch into the stored BYOK config and persist. The merged
|
|
98
|
+
* result is re-validated through normalizeByokConfig so the settings file can
|
|
99
|
+
* never hold an invalid providerType or non-string field, even though the input
|
|
100
|
+
* originates from the dashboard.
|
|
101
|
+
*/
|
|
102
|
+
export function setCopilotByokConfig(patch) {
|
|
103
|
+
const next = normalizeByokConfig({ ...getCopilotByokConfig(), ...patch });
|
|
104
|
+
updateSettings((s) => {
|
|
105
|
+
s.copilotByok = next;
|
|
106
|
+
});
|
|
107
|
+
return next;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Assemble the environment variables that configure the Copilot CLI's model and
|
|
111
|
+
* (optionally) a custom BYOK provider. Values here are meant to override any
|
|
112
|
+
* inherited process.env at spawn time.
|
|
113
|
+
*/
|
|
114
|
+
export function getCopilotSpawnEnv() {
|
|
115
|
+
const model = getCopilotModel();
|
|
116
|
+
const env = { COPILOT_MODEL: model };
|
|
117
|
+
const byok = getCopilotByokConfig();
|
|
118
|
+
if (byok.enabled && byok.baseUrl && byok.apiKey) {
|
|
119
|
+
env.COPILOT_PROVIDER_BASE_URL = byok.baseUrl;
|
|
120
|
+
env.COPILOT_PROVIDER_TYPE = byok.providerType;
|
|
121
|
+
env.COPILOT_PROVIDER_API_KEY = byok.apiKey;
|
|
122
|
+
env.COPILOT_PROVIDER_MODEL_ID = byok.modelId || model;
|
|
123
|
+
env.COPILOT_PROVIDER_WIRE_MODEL = byok.wireModel || model;
|
|
124
|
+
}
|
|
125
|
+
return env;
|
|
126
|
+
}
|
|
127
|
+
// ─── Custom spawn env vars (per agent) ──────────────────────────────────────
|
|
128
|
+
//
|
|
129
|
+
// Operator-supplied env vars merged into the respective agent's spawn env. They
|
|
130
|
+
// are stored per agent so a var set for Claude is never injected into Copilot
|
|
131
|
+
// (and vice-versa). Locked built-ins always win over these, and the spawn path
|
|
132
|
+
// strips any ENV_DENYLIST key so a custom var can't smuggle a secret/cross-agent
|
|
133
|
+
// value past the denylist.
|
|
134
|
+
/** Coerce untrusted input into a clean string→string map (trimmed non-empty keys). */
|
|
135
|
+
function normalizeCustomEnvVars(raw) {
|
|
136
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
137
|
+
return {};
|
|
138
|
+
const out = {};
|
|
139
|
+
for (const [k, v] of Object.entries(raw)) {
|
|
140
|
+
const key = typeof k === "string" ? k.trim() : "";
|
|
141
|
+
if (key && typeof v === "string")
|
|
142
|
+
out[key] = v;
|
|
143
|
+
}
|
|
144
|
+
return out;
|
|
145
|
+
}
|
|
146
|
+
export function getClaudeCustomEnvVars() {
|
|
147
|
+
return normalizeCustomEnvVars(readSettings().claudeCustomEnvVars);
|
|
148
|
+
}
|
|
149
|
+
export function setClaudeCustomEnvVars(vars) {
|
|
150
|
+
updateSettings((s) => {
|
|
151
|
+
s.claudeCustomEnvVars = normalizeCustomEnvVars(vars);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
export function getCopilotCustomEnvVars() {
|
|
155
|
+
return normalizeCustomEnvVars(readSettings().copilotCustomEnvVars);
|
|
156
|
+
}
|
|
157
|
+
export function setCopilotCustomEnvVars(vars) {
|
|
158
|
+
updateSettings((s) => {
|
|
159
|
+
s.copilotCustomEnvVars = normalizeCustomEnvVars(vars);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
// ─── Claude spawn settings ──────────────────────────────────────────────────
|
|
163
|
+
//
|
|
164
|
+
// Overrides for values previously only discoverable from the environment or via
|
|
165
|
+
// auto-detection. Precedence is always env var → dashboard setting → autodetect,
|
|
166
|
+
// so setting an env var keeps the exact prior behavior and an unset setting is a
|
|
167
|
+
// no-op. Returns undefined when neither env nor setting supplies a value, letting
|
|
168
|
+
// the caller fall back to its existing auto-detection logic.
|
|
169
|
+
const DEFAULT_MAX_CONCURRENT_THREADS = 20;
|
|
170
|
+
function readStringSetting(key) {
|
|
171
|
+
const v = readSettings()[key];
|
|
172
|
+
return typeof v === "string" && v.length > 0 ? v : undefined;
|
|
173
|
+
}
|
|
174
|
+
/** Explicit path to the Claude CLI binary (settings only — env is read at the call site). */
|
|
175
|
+
export function getClaudeCliPath() {
|
|
176
|
+
return readStringSetting("claudeCliPath");
|
|
177
|
+
}
|
|
178
|
+
export function setClaudeCliPath(path) {
|
|
179
|
+
updateSettings((s) => {
|
|
180
|
+
if (path)
|
|
181
|
+
s.claudeCliPath = path;
|
|
182
|
+
else
|
|
183
|
+
delete s.claudeCliPath;
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/** Long-lived Claude setup token used in place of the broken OAuth refresh flow. */
|
|
187
|
+
export function getClaudeOauthToken() {
|
|
188
|
+
return readStringSetting("claudeOauthToken");
|
|
189
|
+
}
|
|
190
|
+
export function setClaudeOauthToken(token) {
|
|
191
|
+
updateSettings((s) => {
|
|
192
|
+
if (token)
|
|
193
|
+
s.claudeOauthToken = token;
|
|
194
|
+
else
|
|
195
|
+
delete s.claudeOauthToken;
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/** Path to git-bash (Windows) passed to Claude via CLAUDE_CODE_GIT_BASH_PATH. */
|
|
199
|
+
export function getClaudeGitBashPath() {
|
|
200
|
+
return readStringSetting("claudeGitBashPath");
|
|
201
|
+
}
|
|
202
|
+
export function setClaudeGitBashPath(path) {
|
|
203
|
+
updateSettings((s) => {
|
|
204
|
+
if (path)
|
|
205
|
+
s.claudeGitBashPath = path;
|
|
206
|
+
else
|
|
207
|
+
delete s.claudeGitBashPath;
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/** Maximum number of concurrent spawned threads. */
|
|
211
|
+
export function getMaxConcurrentThreads() {
|
|
212
|
+
const v = readSettings().maxConcurrentThreads;
|
|
213
|
+
if (typeof v === "number" && Number.isFinite(v) && v >= 1)
|
|
214
|
+
return Math.round(v);
|
|
215
|
+
return DEFAULT_MAX_CONCURRENT_THREADS;
|
|
216
|
+
}
|
|
217
|
+
export function setMaxConcurrentThreads(count) {
|
|
218
|
+
const clamped = Math.max(1, Math.round(count));
|
|
219
|
+
if (!Number.isFinite(clamped))
|
|
220
|
+
return;
|
|
221
|
+
updateSettings((s) => {
|
|
222
|
+
s.maxConcurrentThreads = clamped;
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=agent-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-settings.js","sourceRoot":"","sources":["../../src/config/agent-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom agent templates (reusable spawn presets).
|
|
3
|
+
*
|
|
4
|
+
* A template captures everything needed to stamp out a fresh root thread:
|
|
5
|
+
* client, working directory, an optional identity/system prompt, and optional
|
|
6
|
+
* per-thread MCP servers. Stored as an array in settings.json (no DB schema
|
|
7
|
+
* change). The dashboard "Agents" tab manages them; a Start action spawns a
|
|
8
|
+
* normal root thread from a template. Templates never touch running threads.
|
|
9
|
+
*/
|
|
10
|
+
import { type AgentType } from "./agent-settings.js";
|
|
11
|
+
import { type ThreadMcpServer } from "./mcp-settings.js";
|
|
12
|
+
export interface AgentTemplate {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
client: AgentType;
|
|
16
|
+
workingDirectory: string;
|
|
17
|
+
systemPrompt?: string;
|
|
18
|
+
mcpServers?: Record<string, ThreadMcpServer>;
|
|
19
|
+
}
|
|
20
|
+
/** All stored agent templates (malformed entries dropped). */
|
|
21
|
+
export declare function getAgentTemplates(): AgentTemplate[];
|
|
22
|
+
/** Single template by id, or null. */
|
|
23
|
+
export declare function getAgentTemplate(id: string): AgentTemplate | null;
|
|
24
|
+
/**
|
|
25
|
+
* Upsert a template. A blank id creates a new one (server-assigned id); an
|
|
26
|
+
* existing id replaces in place. Validates required fields and the MCP map;
|
|
27
|
+
* throws on violation so the dashboard can surface a 400.
|
|
28
|
+
*/
|
|
29
|
+
export declare function saveAgentTemplate(input: {
|
|
30
|
+
id?: string;
|
|
31
|
+
name: string;
|
|
32
|
+
client: string;
|
|
33
|
+
workingDirectory: string;
|
|
34
|
+
systemPrompt?: string | null;
|
|
35
|
+
mcpServers?: Record<string, ThreadMcpServer> | null;
|
|
36
|
+
}): AgentTemplate;
|
|
37
|
+
/** Remove a template by id. Returns true if one was removed. */
|
|
38
|
+
export declare function deleteAgentTemplate(id: string): boolean;
|
|
39
|
+
//# sourceMappingURL=agent-templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-templates.d.ts","sourceRoot":"","sources":["../../src/config/agent-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,KAAK,SAAS,EAAuC,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC9C;AAuBD,8DAA8D;AAC9D,wBAAgB,iBAAiB,IAAI,aAAa,EAAE,CASnD;AAED,sCAAsC;AACtC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC;CACrD,GAAG,aAAa,CA2BhB;AAED,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAQvD"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom agent templates (reusable spawn presets).
|
|
3
|
+
*
|
|
4
|
+
* A template captures everything needed to stamp out a fresh root thread:
|
|
5
|
+
* client, working directory, an optional identity/system prompt, and optional
|
|
6
|
+
* per-thread MCP servers. Stored as an array in settings.json (no DB schema
|
|
7
|
+
* change). The dashboard "Agents" tab manages them; a Start action spawns a
|
|
8
|
+
* normal root thread from a template. Templates never touch running threads.
|
|
9
|
+
*/
|
|
10
|
+
import { randomUUID } from "node:crypto";
|
|
11
|
+
import { readSettings, updateSettings } from "./settings-store.js";
|
|
12
|
+
import { isValidAgentType, VALID_AGENT_TYPES } from "./agent-settings.js";
|
|
13
|
+
import { parseThreadMcpServers, sanitizeThreadMcpServers, } from "./mcp-settings.js";
|
|
14
|
+
/** Parse+validate one stored template, or null if malformed. */
|
|
15
|
+
function parseAgentTemplate(raw) {
|
|
16
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
17
|
+
return null;
|
|
18
|
+
const o = raw;
|
|
19
|
+
if (typeof o.id !== "string" || !o.id)
|
|
20
|
+
return null;
|
|
21
|
+
if (typeof o.name !== "string" || !o.name)
|
|
22
|
+
return null;
|
|
23
|
+
if (!isValidAgentType(o.client))
|
|
24
|
+
return null;
|
|
25
|
+
if (typeof o.workingDirectory !== "string" || !o.workingDirectory)
|
|
26
|
+
return null;
|
|
27
|
+
const tpl = {
|
|
28
|
+
id: o.id,
|
|
29
|
+
name: o.name,
|
|
30
|
+
client: o.client,
|
|
31
|
+
workingDirectory: o.workingDirectory,
|
|
32
|
+
};
|
|
33
|
+
if (typeof o.systemPrompt === "string" && o.systemPrompt.length > 0)
|
|
34
|
+
tpl.systemPrompt = o.systemPrompt;
|
|
35
|
+
const mcp = parseThreadMcpServers(o.mcpServers);
|
|
36
|
+
if (Object.keys(mcp).length > 0)
|
|
37
|
+
tpl.mcpServers = mcp;
|
|
38
|
+
return tpl;
|
|
39
|
+
}
|
|
40
|
+
/** All stored agent templates (malformed entries dropped). */
|
|
41
|
+
export function getAgentTemplates() {
|
|
42
|
+
const raw = readSettings().agentTemplates;
|
|
43
|
+
if (!Array.isArray(raw))
|
|
44
|
+
return [];
|
|
45
|
+
const result = [];
|
|
46
|
+
for (const item of raw) {
|
|
47
|
+
const parsed = parseAgentTemplate(item);
|
|
48
|
+
if (parsed)
|
|
49
|
+
result.push(parsed);
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
/** Single template by id, or null. */
|
|
54
|
+
export function getAgentTemplate(id) {
|
|
55
|
+
return getAgentTemplates().find((t) => t.id === id) ?? null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Upsert a template. A blank id creates a new one (server-assigned id); an
|
|
59
|
+
* existing id replaces in place. Validates required fields and the MCP map;
|
|
60
|
+
* throws on violation so the dashboard can surface a 400.
|
|
61
|
+
*/
|
|
62
|
+
export function saveAgentTemplate(input) {
|
|
63
|
+
const name = input.name?.trim();
|
|
64
|
+
if (!name)
|
|
65
|
+
throw new Error("name is required");
|
|
66
|
+
if (!isValidAgentType(input.client))
|
|
67
|
+
throw new Error(`client must be one of: ${VALID_AGENT_TYPES.join(", ")}`);
|
|
68
|
+
const workingDirectory = input.workingDirectory?.trim();
|
|
69
|
+
if (!workingDirectory)
|
|
70
|
+
throw new Error("workingDirectory is required");
|
|
71
|
+
const mcpServers = sanitizeThreadMcpServers(input.mcpServers ?? undefined);
|
|
72
|
+
const tpl = {
|
|
73
|
+
id: input.id?.trim() ? input.id.trim() : `tpl_${randomUUID().replace(/-/g, "").slice(0, 12)}`,
|
|
74
|
+
name,
|
|
75
|
+
client: input.client,
|
|
76
|
+
workingDirectory,
|
|
77
|
+
};
|
|
78
|
+
const systemPrompt = typeof input.systemPrompt === "string" ? input.systemPrompt.trim() : "";
|
|
79
|
+
if (systemPrompt)
|
|
80
|
+
tpl.systemPrompt = systemPrompt;
|
|
81
|
+
if (Object.keys(mcpServers).length > 0)
|
|
82
|
+
tpl.mcpServers = mcpServers;
|
|
83
|
+
updateSettings((s) => {
|
|
84
|
+
const list = getAgentTemplates();
|
|
85
|
+
const idx = list.findIndex((t) => t.id === tpl.id);
|
|
86
|
+
if (idx >= 0)
|
|
87
|
+
list[idx] = tpl;
|
|
88
|
+
else
|
|
89
|
+
list.push(tpl);
|
|
90
|
+
s.agentTemplates = list;
|
|
91
|
+
});
|
|
92
|
+
return tpl;
|
|
93
|
+
}
|
|
94
|
+
/** Remove a template by id. Returns true if one was removed. */
|
|
95
|
+
export function deleteAgentTemplate(id) {
|
|
96
|
+
const before = getAgentTemplates();
|
|
97
|
+
const after = before.filter((t) => t.id !== id);
|
|
98
|
+
if (after.length === before.length)
|
|
99
|
+
return false;
|
|
100
|
+
updateSettings((s) => {
|
|
101
|
+
s.agentTemplates = after;
|
|
102
|
+
});
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=agent-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-templates.js","sourceRoot":"","sources":["../../src/config/agent-templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized configuration — reads environment variables at startup and
|
|
3
|
+
* exports validated values used throughout the codebase. Settings-file-backed
|
|
4
|
+
* options live in domain modules under src/config/ and are re-exported here so
|
|
5
|
+
* import sites are unchanged (settings-store itself stays internal).
|
|
6
|
+
*/
|
|
7
|
+
import type { AppConfig } from "../lib/types.js";
|
|
8
|
+
export * from "./agent-settings.js";
|
|
9
|
+
export * from "./mcp-settings.js";
|
|
10
|
+
export * from "./agent-templates.js";
|
|
11
|
+
export * from "./keep-alive-settings.js";
|
|
12
|
+
export * from "./misc-settings.js";
|
|
13
|
+
export declare const AUTONOMOUS_MODE: boolean;
|
|
14
|
+
export declare const TEMPLATES_DIR: string;
|
|
15
|
+
export declare const config: AppConfig;
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AAWnC,eAAO,MAAM,eAAe,SAAyC,CAAC;AA8BtE,eAAO,MAAM,aAAa,QAAsD,CAAC;AAKjF,eAAO,MAAM,MAAM,EAAE,SAUpB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized configuration — reads environment variables at startup and
|
|
3
|
+
* exports validated values used throughout the codebase. Settings-file-backed
|
|
4
|
+
* options live in domain modules under src/config/ and are re-exported here so
|
|
5
|
+
* import sites are unchanged (settings-store itself stays internal).
|
|
6
|
+
*/
|
|
7
|
+
import { createRequire } from "node:module";
|
|
8
|
+
import { mkdirSync } from "node:fs";
|
|
9
|
+
import { homedir } from "node:os";
|
|
10
|
+
import { join } from "node:path";
|
|
11
|
+
import { log } from "../lib/logger.js";
|
|
12
|
+
import { getWaitTimeoutMinutes } from "./misc-settings.js";
|
|
13
|
+
export * from "./agent-settings.js";
|
|
14
|
+
export * from "./mcp-settings.js";
|
|
15
|
+
export * from "./agent-templates.js";
|
|
16
|
+
export * from "./keep-alive-settings.js";
|
|
17
|
+
export * from "./misc-settings.js";
|
|
18
|
+
const esmRequire = createRequire(import.meta.url);
|
|
19
|
+
const { version: PKG_VERSION } = esmRequire("../../package.json");
|
|
20
|
+
// ─── Environment variables ──────────────────────────────────────────────────
|
|
21
|
+
const TELEGRAM_TOKEN = process.env.TELEGRAM_TOKEN ?? "";
|
|
22
|
+
const TELEGRAM_CHAT_ID = process.env.TELEGRAM_CHAT_ID ?? "";
|
|
23
|
+
const OPENAI_API_KEY = process.env.OPENAI_API_KEY ?? "";
|
|
24
|
+
const VOICE_ANALYSIS_URL = process.env.VOICE_ANALYSIS_URL ?? "";
|
|
25
|
+
export const AUTONOMOUS_MODE = process.env.AUTONOMOUS_MODE === "true";
|
|
26
|
+
const rawDmnActivationHours = parseFloat(process.env.DMN_ACTIVATION_HOURS ?? "");
|
|
27
|
+
const DMN_ACTIVATION_HOURS = Math.max(0.5, Number.isFinite(rawDmnActivationHours) ? rawDmnActivationHours : 4);
|
|
28
|
+
// ─── Validation ─────────────────────────────────────────────────────────────
|
|
29
|
+
if (!TELEGRAM_TOKEN || !TELEGRAM_CHAT_ID) {
|
|
30
|
+
log.error("TELEGRAM_TOKEN and TELEGRAM_CHAT_ID environment variables are required.");
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
if (!OPENAI_API_KEY) {
|
|
34
|
+
log.warn("OPENAI_API_KEY not set — voice messages will not be transcribed.");
|
|
35
|
+
}
|
|
36
|
+
if (VOICE_ANALYSIS_URL) {
|
|
37
|
+
log.info(`Voice analysis service configured: ${VOICE_ANALYSIS_URL}`);
|
|
38
|
+
}
|
|
39
|
+
if (process.env.TRANSCRIPTION_BASE_URL) {
|
|
40
|
+
const model = process.env.TRANSCRIPTION_MODEL || "whisper-1";
|
|
41
|
+
log.info(`Transcription provider configured: ${process.env.TRANSCRIPTION_BASE_URL} (model: ${model})`);
|
|
42
|
+
}
|
|
43
|
+
// ─── Templates directory ────────────────────────────────────────────────────
|
|
44
|
+
export const TEMPLATES_DIR = join(homedir(), ".remote-copilot-mcp", "templates");
|
|
45
|
+
mkdirSync(TEMPLATES_DIR, { recursive: true });
|
|
46
|
+
// ─── Exported config object ─────────────────────────────────────────────────
|
|
47
|
+
export const config = {
|
|
48
|
+
TELEGRAM_TOKEN,
|
|
49
|
+
TELEGRAM_CHAT_ID,
|
|
50
|
+
OPENAI_API_KEY,
|
|
51
|
+
VOICE_ANALYSIS_URL,
|
|
52
|
+
get WAIT_TIMEOUT_MINUTES() {
|
|
53
|
+
return getWaitTimeoutMinutes();
|
|
54
|
+
},
|
|
55
|
+
DMN_ACTIVATION_HOURS,
|
|
56
|
+
PKG_VERSION,
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AAEnC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,oBAAoB,CAAwB,CAAC;AAEzF,+EAA+E;AAE/E,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;AACxD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;AAC5D,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;AACxD,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC;AAChE,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,CAAC;AAEtE,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;AACjF,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CACnC,GAAG,EACH,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CACnE,CAAC;AAEF,+EAA+E;AAE/E,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACzC,GAAG,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;IACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,CAAC,cAAc,EAAE,CAAC;IACpB,GAAG,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;AAC/E,CAAC;AACD,IAAI,kBAAkB,EAAE,CAAC;IACvB,GAAG,CAAC,IAAI,CAAC,sCAAsC,kBAAkB,EAAE,CAAC,CAAC;AACvE,CAAC;AACD,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,WAAW,CAAC;IAC7D,GAAG,CAAC,IAAI,CACN,sCAAsC,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,KAAK,GAAG,CAC7F,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAC;AACjF,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAE9C,+EAA+E;AAE/E,MAAM,CAAC,MAAM,MAAM,GAAc;IAC/B,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,kBAAkB;IAClB,IAAI,oBAAoB;QACtB,OAAO,qBAAqB,EAAE,CAAC;IACjC,CAAC;IACD,oBAAoB;IACpB,WAAW;CACZ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keep-alive settings — global keeper toggle/target/retry policy, keeper
|
|
3
|
+
* client type, and per-thread keep-alive overrides.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getKeepAliveEnabled(): boolean;
|
|
6
|
+
export declare function setKeepAliveEnabled(enabled: boolean): void;
|
|
7
|
+
export declare function getKeepAliveThreadId(): number;
|
|
8
|
+
export declare function setKeepAliveThreadId(threadId: number): void;
|
|
9
|
+
export declare function getKeepAliveMaxRetries(): number;
|
|
10
|
+
export declare function setKeepAliveMaxRetries(retries: number): void;
|
|
11
|
+
export declare function getKeepAliveCooldownMs(): number;
|
|
12
|
+
export declare function setKeepAliveCooldownMs(ms: number): void;
|
|
13
|
+
export type KeeperClient = "claude" | "copilot";
|
|
14
|
+
export declare function isValidKeeperClient(v: unknown): v is KeeperClient;
|
|
15
|
+
export declare function getKeepAliveClient(): KeeperClient;
|
|
16
|
+
export declare function setKeepAliveClient(client: KeeperClient): void;
|
|
17
|
+
export interface ThreadKeepAliveSettings {
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
client?: string;
|
|
20
|
+
maxRetries?: number;
|
|
21
|
+
cooldownMs?: number;
|
|
22
|
+
}
|
|
23
|
+
/** Sets keep-alive settings for a specific thread. */
|
|
24
|
+
export declare function setThreadKeepAlive(threadId: number, settings: ThreadKeepAliveSettings): void;
|
|
25
|
+
/** Removes per-thread keep-alive settings. */
|
|
26
|
+
export declare function removeThreadKeepAlive(threadId: number): void;
|
|
27
|
+
/** Returns all per-thread keep-alive overrides. */
|
|
28
|
+
export declare function getAllThreadKeepAlive(): Record<string, ThreadKeepAliveSettings>;
|
|
29
|
+
//# sourceMappingURL=keep-alive-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keep-alive-settings.d.ts","sourceRoot":"","sources":["../../src/config/keep-alive-settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,wBAAgB,mBAAmB,IAAI,OAAO,CAI7C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAI1D;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI3D;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAI/C;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI5D;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAI/C;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIvD;AAID,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAEjE;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAGjD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAI7D;AAID,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,sDAAsD;AACtD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAM5F;AAED,8CAA8C;AAC9C,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAM5D;AAED,mDAAmD;AACnD,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAiB/E"}
|