daycare-cli 2026.2.24 → 2026.2.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/engine/agents/agent.d.ts +7 -5
- package/dist/engine/agents/agent.d.ts.map +1 -1
- package/dist/engine/agents/agent.js +58 -56
- package/dist/engine/agents/agent.js.map +1 -1
- package/dist/engine/agents/agent.spec.js +95 -46
- package/dist/engine/agents/agent.spec.js.map +1 -1
- package/dist/engine/agents/agentSystem.d.ts +13 -9
- package/dist/engine/agents/agentSystem.d.ts.map +1 -1
- package/dist/engine/agents/agentSystem.js +150 -89
- package/dist/engine/agents/agentSystem.js.map +1 -1
- package/dist/engine/agents/agentSystem.spec.js +89 -32
- package/dist/engine/agents/agentSystem.spec.js.map +1 -1
- package/dist/engine/agents/agentSystemDurableInbox.spec.js +66 -11
- package/dist/engine/agents/agentSystemDurableInbox.spec.js.map +1 -1
- package/dist/engine/agents/context.d.ts +21 -2
- package/dist/engine/agents/context.d.ts.map +1 -1
- package/dist/engine/agents/context.js +41 -4
- package/dist/engine/agents/context.js.map +1 -1
- package/dist/engine/agents/context.spec.js +15 -5
- package/dist/engine/agents/context.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentBackgroundList.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentBackgroundList.js +3 -1
- package/dist/engine/agents/ops/agentBackgroundList.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorCacheKey.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorCacheKey.js +2 -0
- package/dist/engine/agents/ops/agentDescriptorCacheKey.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorCacheKey.spec.js +8 -0
- package/dist/engine/agents/ops/agentDescriptorCacheKey.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorLabel.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorLabel.js +3 -0
- package/dist/engine/agents/ops/agentDescriptorLabel.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorLabel.spec.js +8 -0
- package/dist/engine/agents/ops/agentDescriptorLabel.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorRead.d.ts +2 -2
- package/dist/engine/agents/ops/agentDescriptorRead.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorRead.js +2 -2
- package/dist/engine/agents/ops/agentDescriptorRead.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorRoleResolve.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorRoleResolve.js +1 -0
- package/dist/engine/agents/ops/agentDescriptorRoleResolve.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorRoleResolve.spec.js +9 -0
- package/dist/engine/agents/ops/agentDescriptorRoleResolve.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorTypes.d.ts +5 -0
- package/dist/engine/agents/ops/agentDescriptorTypes.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorWrite.d.ts +3 -3
- package/dist/engine/agents/ops/agentDescriptorWrite.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorWrite.js +7 -24
- package/dist/engine/agents/ops/agentDescriptorWrite.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorWrite.spec.js +6 -4
- package/dist/engine/agents/ops/agentDescriptorWrite.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentHistoryAppend.d.ts +2 -2
- package/dist/engine/agents/ops/agentHistoryAppend.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentHistoryAppend.js +2 -2
- package/dist/engine/agents/ops/agentHistoryAppend.js.map +1 -1
- package/dist/engine/agents/ops/agentHistoryLoad.d.ts +2 -2
- package/dist/engine/agents/ops/agentHistoryLoad.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentHistoryLoad.js +2 -2
- package/dist/engine/agents/ops/agentHistoryLoad.js.map +1 -1
- package/dist/engine/agents/ops/agentHistoryLoad.spec.js +10 -8
- package/dist/engine/agents/ops/agentHistoryLoad.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentHistoryLoadAll.d.ts +2 -2
- package/dist/engine/agents/ops/agentHistoryLoadAll.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentHistoryLoadAll.js +2 -2
- package/dist/engine/agents/ops/agentHistoryLoadAll.js.map +1 -1
- package/dist/engine/agents/ops/agentHistoryLoadAll.spec.js +10 -8
- package/dist/engine/agents/ops/agentHistoryLoadAll.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentInferencePromptWrite.d.ts +2 -2
- package/dist/engine/agents/ops/agentInferencePromptWrite.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentInferencePromptWrite.js +2 -6
- package/dist/engine/agents/ops/agentInferencePromptWrite.js.map +1 -1
- package/dist/engine/agents/ops/agentInferencePromptWrite.spec.js +3 -1
- package/dist/engine/agents/ops/agentInferencePromptWrite.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentLoopRun.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentLoopRun.js +6 -8
- package/dist/engine/agents/ops/agentLoopRun.js.map +1 -1
- package/dist/engine/agents/ops/agentLoopRun.spec.js +2 -0
- package/dist/engine/agents/ops/agentLoopRun.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentPath.d.ts +2 -2
- package/dist/engine/agents/ops/agentPath.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentPath.js +2 -2
- package/dist/engine/agents/ops/agentPath.js.map +1 -1
- package/dist/engine/agents/ops/agentPromptResolve.js +1 -1
- package/dist/engine/agents/ops/agentPromptResolve.js.map +1 -1
- package/dist/engine/agents/ops/agentPromptResolve.spec.js +12 -0
- package/dist/engine/agents/ops/agentPromptResolve.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentStateRead.d.ts +2 -2
- package/dist/engine/agents/ops/agentStateRead.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentStateRead.js +2 -2
- package/dist/engine/agents/ops/agentStateRead.js.map +1 -1
- package/dist/engine/agents/ops/agentStateRead.spec.js +13 -9
- package/dist/engine/agents/ops/agentStateRead.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentStateWrite.d.ts +2 -2
- package/dist/engine/agents/ops/agentStateWrite.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentStateWrite.js +4 -4
- package/dist/engine/agents/ops/agentStateWrite.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPrompt.d.ts +1 -1
- package/dist/engine/agents/ops/agentSystemPrompt.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPrompt.js +1 -1
- package/dist/engine/agents/ops/agentSystemPrompt.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPrompt.spec.js +6 -2
- package/dist/engine/agents/ops/agentSystemPrompt.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptContext.d.ts +2 -3
- package/dist/engine/agents/ops/agentSystemPromptContext.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionAgentsTopologySignalsChannels.d.ts +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionAgentsTopologySignalsChannels.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionAgentsTopologySignalsChannels.js +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionAgentsTopologySignalsChannels.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionAutonomousOperation.d.ts +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionAutonomousOperation.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionAutonomousOperation.js +2 -2
- package/dist/engine/agents/ops/agentSystemPromptSectionAutonomousOperation.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionEnvironment.d.ts +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionEnvironment.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionEnvironment.js +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionEnvironment.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionFormatting.d.ts +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionFormatting.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionFormatting.js +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionFormatting.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionMemory.d.ts +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionMemory.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionMemory.js +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionMemory.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionModels.d.ts +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionModels.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionModels.js +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionModels.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionModels.spec.js +5 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionModels.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.d.ts +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.js +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionPreamble.d.ts +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionPreamble.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionPreamble.js +2 -2
- package/dist/engine/agents/ops/agentSystemPromptSectionPreamble.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionSkills.d.ts +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionSkills.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionSkills.js +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionSkills.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.d.ts +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.js +25 -6
- package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.spec.d.ts +2 -0
- package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.spec.d.ts.map +1 -0
- package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.spec.js +62 -0
- package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.spec.js.map +1 -0
- package/dist/engine/agents/ops/agentSystemPromptWrite.d.ts +3 -3
- package/dist/engine/agents/ops/agentSystemPromptWrite.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptWrite.js +4 -3
- package/dist/engine/agents/ops/agentSystemPromptWrite.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptWrite.spec.js +5 -3
- package/dist/engine/agents/ops/agentSystemPromptWrite.spec.js.map +1 -1
- package/dist/engine/apps/appExecute.d.ts.map +1 -1
- package/dist/engine/apps/appExecute.js +7 -5
- package/dist/engine/apps/appExecute.js.map +1 -1
- package/dist/engine/apps/appExecute.spec.js +19 -10
- package/dist/engine/apps/appExecute.spec.js.map +1 -1
- package/dist/engine/apps/appInstallToolBuild.js +4 -3
- package/dist/engine/apps/appInstallToolBuild.js.map +1 -1
- package/dist/engine/channels/channels.d.ts.map +1 -1
- package/dist/engine/channels/channels.js +9 -11
- package/dist/engine/channels/channels.js.map +1 -1
- package/dist/engine/channels/channels.spec.js +4 -4
- package/dist/engine/channels/channels.spec.js.map +1 -1
- package/dist/engine/cron/crons.d.ts.map +1 -1
- package/dist/engine/cron/crons.js +2 -1
- package/dist/engine/cron/crons.js.map +1 -1
- package/dist/engine/cron/crons.spec.js +3 -5
- package/dist/engine/cron/crons.spec.js.map +1 -1
- package/dist/engine/cron/ops/cronScheduler.js +2 -2
- package/dist/engine/cron/ops/cronScheduler.js.map +1 -1
- package/dist/engine/engine.d.ts +5 -0
- package/dist/engine/engine.d.ts.map +1 -1
- package/dist/engine/engine.js +45 -15
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/engine.spec.js +9 -4
- package/dist/engine/engine.spec.js.map +1 -1
- package/dist/engine/expose/exposes.d.ts.map +1 -1
- package/dist/engine/expose/exposes.js +9 -2
- package/dist/engine/expose/exposes.js.map +1 -1
- package/dist/engine/heartbeat/heartbeats.d.ts.map +1 -1
- package/dist/engine/heartbeat/heartbeats.js +17 -8
- package/dist/engine/heartbeat/heartbeats.js.map +1 -1
- package/dist/engine/heartbeat/heartbeats.spec.js +1 -1
- package/dist/engine/heartbeat/heartbeats.spec.js.map +1 -1
- package/dist/engine/heartbeat/ops/heartbeatScheduler.js +2 -2
- package/dist/engine/heartbeat/ops/heartbeatScheduler.js.map +1 -1
- package/dist/engine/ipc/server.d.ts.map +1 -1
- package/dist/engine/ipc/server.js +24 -5
- package/dist/engine/ipc/server.js.map +1 -1
- package/dist/engine/ipc/serverMemoryRoutesRegister.d.ts +3 -2
- package/dist/engine/ipc/serverMemoryRoutesRegister.d.ts.map +1 -1
- package/dist/engine/ipc/serverMemoryRoutesRegister.js +3 -2
- package/dist/engine/ipc/serverMemoryRoutesRegister.js.map +1 -1
- package/dist/engine/ipc/serverMemoryRoutesRegister.spec.js +3 -2
- package/dist/engine/ipc/serverMemoryRoutesRegister.spec.js.map +1 -1
- package/dist/engine/memory/memory.d.ts +6 -5
- package/dist/engine/memory/memory.d.ts.map +1 -1
- package/dist/engine/memory/memory.js +12 -12
- package/dist/engine/memory/memory.js.map +1 -1
- package/dist/engine/memory/memory.spec.js +10 -6
- package/dist/engine/memory/memory.spec.js.map +1 -1
- package/dist/engine/memory/memorySessionObserve.spec.js +3 -3
- package/dist/engine/memory/memorySessionObserve.spec.js.map +1 -1
- package/dist/engine/memory/memoryWorker.d.ts +2 -1
- package/dist/engine/memory/memoryWorker.d.ts.map +1 -1
- package/dist/engine/memory/memoryWorker.js +4 -2
- package/dist/engine/memory/memoryWorker.js.map +1 -1
- package/dist/engine/memory/memoryWorker.spec.js +4 -2
- package/dist/engine/memory/memoryWorker.spec.js.map +1 -1
- package/dist/engine/modules/rlm/rlmTool.spec.js +7 -4
- package/dist/engine/modules/rlm/rlmTool.spec.js.map +1 -1
- package/dist/engine/modules/rlm/rlmToolsForContextResolve.d.ts.map +1 -1
- package/dist/engine/modules/rlm/rlmToolsForContextResolve.js +2 -4
- package/dist/engine/modules/rlm/rlmToolsForContextResolve.js.map +1 -1
- package/dist/engine/modules/rlm/rlmToolsForContextResolve.spec.js +5 -3
- package/dist/engine/modules/rlm/rlmToolsForContextResolve.spec.js.map +1 -1
- package/dist/engine/modules/toolResolver.spec.js +2 -2
- package/dist/engine/modules/toolResolver.spec.js.map +1 -1
- package/dist/engine/modules/tools/agentCompactTool.d.ts.map +1 -1
- package/dist/engine/modules/tools/agentCompactTool.js +5 -1
- package/dist/engine/modules/tools/agentCompactTool.js.map +1 -1
- package/dist/engine/modules/tools/agentCompactTool.spec.js +9 -5
- package/dist/engine/modules/tools/agentCompactTool.spec.js.map +1 -1
- package/dist/engine/modules/tools/agentModelSetToolBuild.spec.js +5 -8
- package/dist/engine/modules/tools/agentModelSetToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/agentResetTool.d.ts.map +1 -1
- package/dist/engine/modules/tools/agentResetTool.js +5 -1
- package/dist/engine/modules/tools/agentResetTool.js.map +1 -1
- package/dist/engine/modules/tools/agentResetTool.spec.js +12 -7
- package/dist/engine/modules/tools/agentResetTool.spec.js.map +1 -1
- package/dist/engine/modules/tools/background.d.ts.map +1 -1
- package/dist/engine/modules/tools/background.js +5 -5
- package/dist/engine/modules/tools/background.js.map +1 -1
- package/dist/engine/modules/tools/background.spec.js +3 -2
- package/dist/engine/modules/tools/background.spec.js.map +1 -1
- package/dist/engine/modules/tools/channelSendTool.js +3 -0
- package/dist/engine/modules/tools/channelSendTool.js.map +1 -1
- package/dist/engine/modules/tools/cron.d.ts.map +1 -1
- package/dist/engine/modules/tools/cron.js +12 -9
- package/dist/engine/modules/tools/cron.js.map +1 -1
- package/dist/engine/modules/tools/memoryNodeReadToolBuild.js +2 -2
- package/dist/engine/modules/tools/memoryNodeReadToolBuild.js.map +1 -1
- package/dist/engine/modules/tools/memoryNodeReadToolBuild.spec.js +3 -4
- package/dist/engine/modules/tools/memoryNodeReadToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/memoryNodeWriteToolBuild.d.ts.map +1 -1
- package/dist/engine/modules/tools/memoryNodeWriteToolBuild.js +2 -3
- package/dist/engine/modules/tools/memoryNodeWriteToolBuild.js.map +1 -1
- package/dist/engine/modules/tools/memoryNodeWriteToolBuild.spec.js +3 -4
- package/dist/engine/modules/tools/memoryNodeWriteToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/memorySearchToolBuild.d.ts +2 -2
- package/dist/engine/modules/tools/memorySearchToolBuild.d.ts.map +1 -1
- package/dist/engine/modules/tools/memorySearchToolBuild.js +6 -6
- package/dist/engine/modules/tools/memorySearchToolBuild.js.map +1 -1
- package/dist/engine/modules/tools/permanentAgentToolBuild.d.ts.map +1 -1
- package/dist/engine/modules/tools/permanentAgentToolBuild.js +12 -10
- package/dist/engine/modules/tools/permanentAgentToolBuild.js.map +1 -1
- package/dist/engine/modules/tools/permanentAgentToolBuild.spec.js +2 -1
- package/dist/engine/modules/tools/permanentAgentToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/sendUserMessageTool.d.ts.map +1 -1
- package/dist/engine/modules/tools/sendUserMessageTool.js +6 -2
- package/dist/engine/modules/tools/sendUserMessageTool.js.map +1 -1
- package/dist/engine/modules/tools/sendUserMessageTool.spec.js +5 -4
- package/dist/engine/modules/tools/sendUserMessageTool.spec.js.map +1 -1
- package/dist/engine/modules/tools/sessionHistoryToolBuild.d.ts.map +1 -1
- package/dist/engine/modules/tools/sessionHistoryToolBuild.js +7 -3
- package/dist/engine/modules/tools/sessionHistoryToolBuild.js.map +1 -1
- package/dist/engine/modules/tools/sessionHistoryToolBuild.spec.js +23 -18
- package/dist/engine/modules/tools/sessionHistoryToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/skillToolBuild.d.ts.map +1 -1
- package/dist/engine/modules/tools/skillToolBuild.js +23 -7
- package/dist/engine/modules/tools/skillToolBuild.js.map +1 -1
- package/dist/engine/modules/tools/skillToolBuild.spec.js +55 -3
- package/dist/engine/modules/tools/skillToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/subuserConfigureToolBuild.d.ts +7 -0
- package/dist/engine/modules/tools/subuserConfigureToolBuild.d.ts.map +1 -0
- package/dist/engine/modules/tools/subuserConfigureToolBuild.js +96 -0
- package/dist/engine/modules/tools/subuserConfigureToolBuild.js.map +1 -0
- package/dist/engine/modules/tools/subuserConfigureToolBuild.spec.d.ts +2 -0
- package/dist/engine/modules/tools/subuserConfigureToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/modules/tools/subuserConfigureToolBuild.spec.js +91 -0
- package/dist/engine/modules/tools/subuserConfigureToolBuild.spec.js.map +1 -0
- package/dist/engine/modules/tools/subuserCreateToolBuild.d.ts +7 -0
- package/dist/engine/modules/tools/subuserCreateToolBuild.d.ts.map +1 -0
- package/dist/engine/modules/tools/subuserCreateToolBuild.js +120 -0
- package/dist/engine/modules/tools/subuserCreateToolBuild.js.map +1 -0
- package/dist/engine/modules/tools/subuserCreateToolBuild.spec.d.ts +2 -0
- package/dist/engine/modules/tools/subuserCreateToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/modules/tools/subuserCreateToolBuild.spec.js +97 -0
- package/dist/engine/modules/tools/subuserCreateToolBuild.spec.js.map +1 -0
- package/dist/engine/modules/tools/subuserListToolBuild.d.ts +7 -0
- package/dist/engine/modules/tools/subuserListToolBuild.d.ts.map +1 -0
- package/dist/engine/modules/tools/subuserListToolBuild.js +66 -0
- package/dist/engine/modules/tools/subuserListToolBuild.js.map +1 -0
- package/dist/engine/modules/tools/subuserListToolBuild.spec.d.ts +2 -0
- package/dist/engine/modules/tools/subuserListToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/modules/tools/subuserListToolBuild.spec.js +81 -0
- package/dist/engine/modules/tools/subuserListToolBuild.spec.js.map +1 -0
- package/dist/engine/modules/tools/topologyToolBuild.d.ts.map +1 -1
- package/dist/engine/modules/tools/topologyToolBuild.js +48 -16
- package/dist/engine/modules/tools/topologyToolBuild.js.map +1 -1
- package/dist/engine/modules/tools/topologyToolBuild.spec.js +117 -13
- package/dist/engine/modules/tools/topologyToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/types.d.ts +1 -2
- package/dist/engine/modules/tools/types.d.ts.map +1 -1
- package/dist/engine/processes/processes.d.ts.map +1 -1
- package/dist/engine/processes/processes.js +7 -2
- package/dist/engine/processes/processes.js.map +1 -1
- package/dist/engine/signals/signals.js +9 -2
- package/dist/engine/signals/signals.js.map +1 -1
- package/dist/plugins/dashboard/site/404.html +1 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/agent/page-8434e05e02ab5847.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/app/agents/page-70ae793aa3d3a28f.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/app/automations/{page-6a39540c21d6b25b.js → page-6be961a7eafef90d.js} +1 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/connectors/{page-92a732501885071f.js → page-8e756eb48c3f7c03.js} +1 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/memory/{page-74c0b70421c567ab.js → page-be87f13a7b6fac14.js} +1 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/{page-c4cbe1c7aca2ecd7.js → page-bd7cca39bd0f6e71.js} +1 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/processes/{page-bf7900fe583d361e.js → page-87f7e8a74fbee01f.js} +1 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/providers/{page-b2e79cb03244c267.js → page-fcedae8d614253d3.js} +1 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/signals/page-efe599a7802349fa.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/app/tools/page-e669223389d84f30.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/css/62b1686547b31a3c.css +5 -0
- package/dist/plugins/dashboard/site/agent.html +1 -1
- package/dist/plugins/dashboard/site/agent.txt +2 -2
- package/dist/plugins/dashboard/site/agents.html +1 -1
- package/dist/plugins/dashboard/site/agents.txt +2 -2
- package/dist/plugins/dashboard/site/automations.html +1 -1
- package/dist/plugins/dashboard/site/automations.txt +2 -2
- package/dist/plugins/dashboard/site/connectors.html +1 -1
- package/dist/plugins/dashboard/site/connectors.txt +2 -2
- package/dist/plugins/dashboard/site/index.html +2 -2
- package/dist/plugins/dashboard/site/index.txt +2 -2
- package/dist/plugins/dashboard/site/memory.html +1 -1
- package/dist/plugins/dashboard/site/memory.txt +2 -2
- package/dist/plugins/dashboard/site/processes.html +1 -1
- package/dist/plugins/dashboard/site/processes.txt +2 -2
- package/dist/plugins/dashboard/site/providers.html +1 -1
- package/dist/plugins/dashboard/site/providers.txt +2 -2
- package/dist/plugins/dashboard/site/signals.html +1 -1
- package/dist/plugins/dashboard/site/signals.txt +2 -2
- package/dist/plugins/dashboard/site/telemetry.html +2 -2
- package/dist/plugins/dashboard/site/telemetry.txt +1 -1
- package/dist/plugins/dashboard/site/tools.html +1 -1
- package/dist/plugins/dashboard/site/tools.txt +2 -2
- package/dist/plugins/database/__tests__/plugin.spec.js +4 -3
- package/dist/plugins/database/__tests__/plugin.spec.js.map +1 -1
- package/dist/plugins/monty-python/tool.spec.js +4 -2
- package/dist/plugins/monty-python/tool.spec.js.map +1 -1
- package/dist/plugins/shell/tool.js +4 -2
- package/dist/plugins/shell/tool.js.map +1 -1
- package/dist/plugins/shell/tool.spec.js +23 -4
- package/dist/plugins/shell/tool.spec.js.map +1 -1
- package/dist/plugins/telegram/connector.d.ts +2 -0
- package/dist/plugins/telegram/connector.d.ts.map +1 -1
- package/dist/plugins/telegram/connector.js +9 -0
- package/dist/plugins/telegram/connector.js.map +1 -1
- package/dist/plugins/telegram/connector.spec.js +60 -0
- package/dist/plugins/telegram/connector.spec.js.map +1 -1
- package/dist/plugins/telegram/plugin.d.ts +2 -1
- package/dist/plugins/telegram/plugin.d.ts.map +1 -1
- package/dist/plugins/telegram/plugin.js +43 -3
- package/dist/plugins/telegram/plugin.js.map +1 -1
- package/dist/plugins/telegram/plugin.spec.d.ts +2 -0
- package/dist/plugins/telegram/plugin.spec.d.ts.map +1 -0
- package/dist/plugins/telegram/plugin.spec.js +93 -0
- package/dist/plugins/telegram/plugin.spec.js.map +1 -0
- package/dist/prompts/SYSTEM_MEMORY.md +15 -1
- package/dist/storage/databaseTypes.d.ts +8 -0
- package/dist/storage/databaseTypes.d.ts.map +1 -1
- package/dist/storage/delayedSignalsRepository.d.ts +1 -1
- package/dist/storage/delayedSignalsRepository.d.ts.map +1 -1
- package/dist/storage/delayedSignalsRepository.js +29 -22
- package/dist/storage/delayedSignalsRepository.js.map +1 -1
- package/dist/storage/migrations/20260222_add_user_parent.d.ts +7 -0
- package/dist/storage/migrations/20260222_add_user_parent.d.ts.map +1 -0
- package/dist/storage/migrations/20260222_add_user_parent.js +23 -0
- package/dist/storage/migrations/20260222_add_user_parent.js.map +1 -0
- package/dist/storage/migrations/20260222_add_user_parent.spec.d.ts +2 -0
- package/dist/storage/migrations/20260222_add_user_parent.spec.d.ts.map +1 -0
- package/dist/storage/migrations/20260222_add_user_parent.spec.js +48 -0
- package/dist/storage/migrations/20260222_add_user_parent.spec.js.map +1 -0
- package/dist/storage/migrations/20260222_session_ended_at.d.ts +7 -0
- package/dist/storage/migrations/20260222_session_ended_at.d.ts.map +1 -0
- package/dist/storage/migrations/20260222_session_ended_at.js +18 -0
- package/dist/storage/migrations/20260222_session_ended_at.js.map +1 -0
- package/dist/storage/migrations/20260222_session_ended_at.spec.d.ts +2 -0
- package/dist/storage/migrations/20260222_session_ended_at.spec.d.ts.map +1 -0
- package/dist/storage/migrations/20260222_session_ended_at.spec.js +37 -0
- package/dist/storage/migrations/20260222_session_ended_at.spec.js.map +1 -0
- package/dist/storage/migrations/_migrations.d.ts.map +1 -1
- package/dist/storage/migrations/_migrations.js +5 -1
- package/dist/storage/migrations/_migrations.js.map +1 -1
- package/dist/storage/sessionsRepository.d.ts +5 -0
- package/dist/storage/sessionsRepository.d.ts.map +1 -1
- package/dist/storage/sessionsRepository.js +9 -1
- package/dist/storage/sessionsRepository.js.map +1 -1
- package/dist/storage/sessionsRepository.spec.js +31 -1
- package/dist/storage/sessionsRepository.spec.js.map +1 -1
- package/dist/storage/signalSubscriptionsRepository.js +3 -3
- package/dist/storage/signalSubscriptionsRepository.js.map +1 -1
- package/dist/storage/usersRepository.d.ts +1 -0
- package/dist/storage/usersRepository.d.ts.map +1 -1
- package/dist/storage/usersRepository.js +18 -2
- package/dist/storage/usersRepository.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/agent/page-2d345f6346edc077.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/agents/page-326ff3cf564198c7.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/signals/page-2992aa1807b6fdab.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/tools/page-4a2e5a16190af659.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/css/42d76d007d742231.css +0 -5
- /package/dist/plugins/dashboard/site/_next/static/{spdhxita1pAP4TEpLe5oJ → X_oqQhoSTmj1_qmNPx-r5}/_buildManifest.js +0 -0
- /package/dist/plugins/dashboard/site/_next/static/{spdhxita1pAP4TEpLe5oJ → X_oqQhoSTmj1_qmNPx-r5}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { plugin } from "./plugin.js";
|
|
3
|
+
describe("telegram plugin settings schema", () => {
|
|
4
|
+
it("allows public mode without allowedUids", () => {
|
|
5
|
+
const parsed = plugin.settingsSchema.parse({
|
|
6
|
+
mode: "public"
|
|
7
|
+
});
|
|
8
|
+
expect(parsed.mode).toBe("public");
|
|
9
|
+
expect(parsed.allowedUids).toEqual([]);
|
|
10
|
+
});
|
|
11
|
+
it("requires at least one allowed UID in private mode", () => {
|
|
12
|
+
const parsed = plugin.settingsSchema.safeParse({
|
|
13
|
+
mode: "private"
|
|
14
|
+
});
|
|
15
|
+
expect(parsed.success).toBe(false);
|
|
16
|
+
if (parsed.success) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
expect(parsed.error.issues[0]?.path).toEqual(["allowedUids"]);
|
|
20
|
+
expect(parsed.error.issues[0]?.message).toBe("allowedUids must have at least 1 entry in private mode");
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe("telegram plugin onboarding", () => {
|
|
24
|
+
it("skips UID prompt in public mode", async () => {
|
|
25
|
+
const input = vi.fn(async () => "token");
|
|
26
|
+
const selectMock = vi.fn(async () => "public");
|
|
27
|
+
const select = async () => (await selectMock());
|
|
28
|
+
const setToken = vi.fn(async () => undefined);
|
|
29
|
+
const result = await plugin.onboarding?.({
|
|
30
|
+
instanceId: "telegram",
|
|
31
|
+
pluginId: "telegram",
|
|
32
|
+
dataDir: "/tmp/daycare",
|
|
33
|
+
auth: { setToken },
|
|
34
|
+
prompt: {
|
|
35
|
+
input,
|
|
36
|
+
select,
|
|
37
|
+
confirm: async () => null
|
|
38
|
+
},
|
|
39
|
+
note: vi.fn()
|
|
40
|
+
});
|
|
41
|
+
expect(result).toEqual({
|
|
42
|
+
settings: { mode: "public" }
|
|
43
|
+
});
|
|
44
|
+
expect(input).toHaveBeenCalledTimes(1);
|
|
45
|
+
expect(selectMock).toHaveBeenCalledTimes(1);
|
|
46
|
+
expect(setToken).toHaveBeenCalledWith("telegram", "token");
|
|
47
|
+
});
|
|
48
|
+
it("prompts for UIDs in private mode", async () => {
|
|
49
|
+
const input = vi.fn().mockResolvedValueOnce("token").mockResolvedValueOnce("123, 456,123");
|
|
50
|
+
const selectMock = vi.fn(async () => "private");
|
|
51
|
+
const select = async () => (await selectMock());
|
|
52
|
+
const setToken = vi.fn(async () => undefined);
|
|
53
|
+
const result = await plugin.onboarding?.({
|
|
54
|
+
instanceId: "telegram",
|
|
55
|
+
pluginId: "telegram",
|
|
56
|
+
dataDir: "/tmp/daycare",
|
|
57
|
+
auth: { setToken },
|
|
58
|
+
prompt: {
|
|
59
|
+
input,
|
|
60
|
+
select,
|
|
61
|
+
confirm: async () => null
|
|
62
|
+
},
|
|
63
|
+
note: vi.fn()
|
|
64
|
+
});
|
|
65
|
+
expect(result).toEqual({
|
|
66
|
+
settings: { mode: "private", allowedUids: ["123", "456"] }
|
|
67
|
+
});
|
|
68
|
+
expect(input).toHaveBeenCalledTimes(2);
|
|
69
|
+
expect(selectMock).toHaveBeenCalledTimes(1);
|
|
70
|
+
expect(setToken).toHaveBeenCalledWith("telegram", "token");
|
|
71
|
+
});
|
|
72
|
+
it("does not persist token when private UID prompt is canceled", async () => {
|
|
73
|
+
const input = vi.fn().mockResolvedValueOnce("token").mockResolvedValueOnce(null);
|
|
74
|
+
const selectMock = vi.fn(async () => "private");
|
|
75
|
+
const select = async () => (await selectMock());
|
|
76
|
+
const setToken = vi.fn(async () => undefined);
|
|
77
|
+
const result = await plugin.onboarding?.({
|
|
78
|
+
instanceId: "telegram",
|
|
79
|
+
pluginId: "telegram",
|
|
80
|
+
dataDir: "/tmp/daycare",
|
|
81
|
+
auth: { setToken },
|
|
82
|
+
prompt: {
|
|
83
|
+
input,
|
|
84
|
+
select,
|
|
85
|
+
confirm: async () => null
|
|
86
|
+
},
|
|
87
|
+
note: vi.fn()
|
|
88
|
+
});
|
|
89
|
+
expect(result).toBeNull();
|
|
90
|
+
expect(setToken).not.toHaveBeenCalled();
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=plugin.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.spec.js","sourceRoot":"","sources":["../../../sources/plugins/telegram/plugin.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## Memory
|
|
2
2
|
|
|
3
|
-
Memory files:
|
|
3
|
+
Memory files:
|
|
4
4
|
- SOUL `{{soulPath}}`
|
|
5
5
|
- USER `{{userPath}}`
|
|
6
6
|
- AGENTS `{{agentsPath}}`
|
|
@@ -8,6 +8,20 @@ Memory files:
|
|
|
8
8
|
|
|
9
9
|
Update USER.md for stable user facts/preferences. Update SOUL.md for behavioral refinements. Update AGENTS.md for workspace operating rules and recurring session routines. Update TOOLS.md when you learn non-obvious tool behavior. Keep concise, no speculation.
|
|
10
10
|
|
|
11
|
+
### Memory Search
|
|
12
|
+
|
|
13
|
+
`search_memory` queries the persistent memory graph and returns a query ID. Results arrive asynchronously — you will receive them as a system message referencing the query ID.
|
|
14
|
+
|
|
15
|
+
**When to query memory:**
|
|
16
|
+
- **In parallel with other work.** Call `search_memory` alongside other tool calls whenever you can. Memory queries are cheap and fast — do not serialize them. In Python (RLM), fire off `search_memory` calls at the top of your script before doing other work, so results arrive while you proceed.
|
|
17
|
+
- **Before starting background jobs.** Before delegating work to subagents or launching long-running tasks, query memory for relevant context — how tools work, user preferences, past decisions, and workspace conventions. This prevents agents from working blind.
|
|
18
|
+
- **Before using unfamiliar tools.** If you are about to use a tool you have not used before or are unsure about, query memory first: `search_memory("how does <tool_name> work")`. Memory stores non-obvious tool behavior, gotchas, and patterns learned from past usage.
|
|
19
|
+
|
|
20
|
+
**Usage pattern:**
|
|
21
|
+
1. Call `search_memory(query)` — returns immediately with a query ID.
|
|
22
|
+
2. Continue working on other tasks in parallel.
|
|
23
|
+
3. When results arrive, incorporate them into your current work.
|
|
24
|
+
|
|
11
25
|
---
|
|
12
26
|
|
|
13
27
|
{{{user}}}
|
|
@@ -21,6 +21,7 @@ export type DatabaseSessionRow = {
|
|
|
21
21
|
reset_message: string | null;
|
|
22
22
|
invalidated_at: number | null;
|
|
23
23
|
processed_until: number | null;
|
|
24
|
+
ended_at: number | null;
|
|
24
25
|
};
|
|
25
26
|
export type DatabaseSessionHistoryRow = {
|
|
26
27
|
id: number;
|
|
@@ -295,6 +296,8 @@ export type ProcessDbRecord = {
|
|
|
295
296
|
export type DatabaseUserRow = {
|
|
296
297
|
id: string;
|
|
297
298
|
is_owner: number;
|
|
299
|
+
parent_user_id: string | null;
|
|
300
|
+
name: string | null;
|
|
298
301
|
created_at: number;
|
|
299
302
|
updated_at: number;
|
|
300
303
|
};
|
|
@@ -306,6 +309,8 @@ export type DatabaseUserConnectorKeyRow = {
|
|
|
306
309
|
export type UserDbRecord = {
|
|
307
310
|
id: string;
|
|
308
311
|
isOwner: boolean;
|
|
312
|
+
parentUserId: string | null;
|
|
313
|
+
name: string | null;
|
|
309
314
|
createdAt: number;
|
|
310
315
|
updatedAt: number;
|
|
311
316
|
};
|
|
@@ -325,10 +330,13 @@ export type SessionDbRecord = {
|
|
|
325
330
|
resetMessage: string | null;
|
|
326
331
|
invalidatedAt: number | null;
|
|
327
332
|
processedUntil: number | null;
|
|
333
|
+
endedAt: number | null;
|
|
328
334
|
};
|
|
329
335
|
export type CreateUserInput = {
|
|
330
336
|
id?: string;
|
|
331
337
|
isOwner?: boolean;
|
|
338
|
+
parentUserId?: string;
|
|
339
|
+
name?: string;
|
|
332
340
|
createdAt?: number;
|
|
333
341
|
updatedAt?: number;
|
|
334
342
|
connectorKey?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"databaseTypes.d.ts","sourceRoot":"","sources":["../../sources/storage/databaseTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,kBAAkB,EACrB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE,MAAM,MAAM,gBAAgB,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,mBAAmB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"databaseTypes.d.ts","sourceRoot":"","sources":["../../sources/storage/databaseTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ export declare class DelayedSignalsRepository {
|
|
|
17
17
|
findById(id: string): Promise<DelayedSignalDbRecord | null>;
|
|
18
18
|
findDue(now: number): Promise<DelayedSignalDbRecord[]>;
|
|
19
19
|
findMany(ctx: Context): Promise<DelayedSignalDbRecord[]>;
|
|
20
|
-
findAll(
|
|
20
|
+
findAll(): Promise<DelayedSignalDbRecord[]>;
|
|
21
21
|
delete(id: string): Promise<boolean>;
|
|
22
22
|
deleteByRepeatKey(ctx: Context, type: string, repeatKey: string): Promise<number>;
|
|
23
23
|
private signalCacheSet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delayedSignalsRepository.d.ts","sourceRoot":"","sources":["../../sources/storage/delayedSignalsRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EAA4B,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE1F;;;GAGG;AACH,qBAAa,wBAAwB;IACjC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4C;IACxE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,gBAAgB,CAAS;gBAErB,EAAE,EAAE,YAAY;IAItB,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0EpD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IA0B3D,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAetD,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"delayedSignalsRepository.d.ts","sourceRoot":"","sources":["../../sources/storage/delayedSignalsRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EAA4B,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE1F;;;GAGG;AACH,qBAAa,wBAAwB;IACjC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4C;IACxE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,gBAAgB,CAAS;gBAErB,EAAE,EAAE,YAAY;IAItB,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0EpD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IA0B3D,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAetD,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAgBxD,OAAO,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAoB3C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAapC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBvF,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,eAAe;CAS1B"}
|
|
@@ -106,32 +106,31 @@ export class DelayedSignalsRepository {
|
|
|
106
106
|
return parsed.map((entry) => delayedSignalClone(entry));
|
|
107
107
|
}
|
|
108
108
|
async findMany(ctx) {
|
|
109
|
-
|
|
109
|
+
const userId = contextUserIdRequire(ctx);
|
|
110
|
+
const rows = this.db
|
|
111
|
+
.prepare("SELECT * FROM signals_delayed WHERE user_id = ? ORDER BY deliver_at ASC, id ASC")
|
|
112
|
+
.all(userId);
|
|
113
|
+
const parsed = rows.map((row) => this.signalParse(row));
|
|
114
|
+
await this.cacheLock.inLock(() => {
|
|
115
|
+
for (const record of parsed) {
|
|
116
|
+
this.signalCacheSet(record);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
return parsed.map((entry) => delayedSignalClone(entry));
|
|
110
120
|
}
|
|
111
|
-
async findAll(
|
|
112
|
-
|
|
113
|
-
const hasScope = ctx !== undefined;
|
|
114
|
-
if (hasScope && !userId) {
|
|
115
|
-
return [];
|
|
116
|
-
}
|
|
117
|
-
if (this.allSignalsLoaded && !hasScope) {
|
|
121
|
+
async findAll() {
|
|
122
|
+
if (this.allSignalsLoaded) {
|
|
118
123
|
return delayedSignalsSort(Array.from(this.signalsById.values())).map((entry) => delayedSignalClone(entry));
|
|
119
124
|
}
|
|
120
|
-
const rows =
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
.all(userId)
|
|
124
|
-
: this.db
|
|
125
|
-
.prepare("SELECT * FROM signals_delayed ORDER BY deliver_at ASC, id ASC")
|
|
126
|
-
.all();
|
|
125
|
+
const rows = this.db
|
|
126
|
+
.prepare("SELECT * FROM signals_delayed ORDER BY deliver_at ASC, id ASC")
|
|
127
|
+
.all();
|
|
127
128
|
const parsed = rows.map((row) => this.signalParse(row));
|
|
128
129
|
await this.cacheLock.inLock(() => {
|
|
129
130
|
for (const record of parsed) {
|
|
130
131
|
this.signalCacheSet(record);
|
|
131
132
|
}
|
|
132
|
-
|
|
133
|
-
this.allSignalsLoaded = true;
|
|
134
|
-
}
|
|
133
|
+
this.allSignalsLoaded = true;
|
|
135
134
|
});
|
|
136
135
|
return parsed.map((entry) => delayedSignalClone(entry));
|
|
137
136
|
}
|
|
@@ -148,10 +147,7 @@ export class DelayedSignalsRepository {
|
|
|
148
147
|
});
|
|
149
148
|
}
|
|
150
149
|
async deleteByRepeatKey(ctx, type, repeatKey) {
|
|
151
|
-
const normalizedUserId = (ctx
|
|
152
|
-
if (!normalizedUserId) {
|
|
153
|
-
return 0;
|
|
154
|
-
}
|
|
150
|
+
const normalizedUserId = contextUserIdRequire(ctx);
|
|
155
151
|
const removed = this.db
|
|
156
152
|
.prepare("DELETE FROM signals_delayed WHERE user_id = ? AND type = ? AND repeat_key = ?")
|
|
157
153
|
.run(normalizedUserId, type, repeatKey);
|
|
@@ -204,6 +200,17 @@ export class DelayedSignalsRepository {
|
|
|
204
200
|
function delayedSignalsSort(records) {
|
|
205
201
|
return records.slice().sort((left, right) => left.deliverAt - right.deliverAt || left.id.localeCompare(right.id));
|
|
206
202
|
}
|
|
203
|
+
function contextUserIdRequire(ctx) {
|
|
204
|
+
const userIdRaw = ctx.userId;
|
|
205
|
+
if (typeof userIdRaw !== "string") {
|
|
206
|
+
throw new Error("Delayed signal context userId is required.");
|
|
207
|
+
}
|
|
208
|
+
const userId = userIdRaw.trim();
|
|
209
|
+
if (!userId) {
|
|
210
|
+
throw new Error("Delayed signal context userId is required.");
|
|
211
|
+
}
|
|
212
|
+
return userId;
|
|
213
|
+
}
|
|
207
214
|
function delayedSignalClone(record) {
|
|
208
215
|
return {
|
|
209
216
|
...record,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delayedSignalsRepository.js","sourceRoot":"","sources":["../../sources/storage/delayedSignalsRepository.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"delayedSignalsRepository.js","sourceRoot":"","sources":["../../sources/storage/delayedSignalsRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Migration } from "./migrationTypes.js";
|
|
2
|
+
/**
|
|
3
|
+
* Adds parent_user_id and name columns to the users table for subuser isolation.
|
|
4
|
+
* parent_user_id links a subuser to its owner; name is a display label.
|
|
5
|
+
*/
|
|
6
|
+
export declare const migration20260222AddUserParent: Migration;
|
|
7
|
+
//# sourceMappingURL=20260222_add_user_parent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260222_add_user_parent.d.ts","sourceRoot":"","sources":["../../../sources/storage/migrations/20260222_add_user_parent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,SAsB5C,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds parent_user_id and name columns to the users table for subuser isolation.
|
|
3
|
+
* parent_user_id links a subuser to its owner; name is a display label.
|
|
4
|
+
*/
|
|
5
|
+
export const migration20260222AddUserParent = {
|
|
6
|
+
name: "20260222_add_user_parent",
|
|
7
|
+
up(db) {
|
|
8
|
+
const columns = db.prepare("PRAGMA table_info(users)").all();
|
|
9
|
+
if (columns.length === 0) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const hasParentUserId = columns.some((column) => column.name === "parent_user_id");
|
|
13
|
+
if (!hasParentUserId) {
|
|
14
|
+
db.exec("ALTER TABLE users ADD COLUMN parent_user_id TEXT REFERENCES users(id)");
|
|
15
|
+
}
|
|
16
|
+
const hasName = columns.some((column) => column.name === "name");
|
|
17
|
+
if (!hasName) {
|
|
18
|
+
db.exec("ALTER TABLE users ADD COLUMN name TEXT");
|
|
19
|
+
}
|
|
20
|
+
db.exec("CREATE INDEX IF NOT EXISTS idx_users_parent ON users(parent_user_id) WHERE parent_user_id IS NOT NULL");
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=20260222_add_user_parent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260222_add_user_parent.js","sourceRoot":"","sources":["../../../sources/storage/migrations/20260222_add_user_parent.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAc;IACrD,IAAI,EAAE,0BAA0B;IAChC,EAAE,CAAC,EAAE;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAA6B,CAAC;QACxF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;QACX,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;QACnF,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,EAAE,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,EAAE,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACtD,CAAC;QAED,EAAE,CAAC,IAAI,CACH,uGAAuG,CAC1G,CAAC;IACN,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260222_add_user_parent.spec.d.ts","sourceRoot":"","sources":["../../../sources/storage/migrations/20260222_add_user_parent.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { databaseOpen } from "../databaseOpen.js";
|
|
3
|
+
import { migration20260220AddUsers } from "./20260220_add_users.js";
|
|
4
|
+
import { migration20260222AddUserParent } from "./20260222_add_user_parent.js";
|
|
5
|
+
describe("migration20260222AddUserParent", () => {
|
|
6
|
+
it("adds parent_user_id and name columns to users", () => {
|
|
7
|
+
const db = databaseOpen(":memory:");
|
|
8
|
+
try {
|
|
9
|
+
migration20260220AddUsers.up(db);
|
|
10
|
+
migration20260222AddUserParent.up(db);
|
|
11
|
+
const columns = db.prepare("PRAGMA table_info(users)").all();
|
|
12
|
+
const names = columns.map((c) => c.name);
|
|
13
|
+
expect(names).toContain("parent_user_id");
|
|
14
|
+
expect(names).toContain("name");
|
|
15
|
+
}
|
|
16
|
+
finally {
|
|
17
|
+
db.close();
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
it("creates partial index on parent_user_id", () => {
|
|
21
|
+
const db = databaseOpen(":memory:");
|
|
22
|
+
try {
|
|
23
|
+
migration20260220AddUsers.up(db);
|
|
24
|
+
migration20260222AddUserParent.up(db);
|
|
25
|
+
const indexes = db.prepare("PRAGMA index_list(users)").all();
|
|
26
|
+
expect(indexes.map((i) => i.name)).toContain("idx_users_parent");
|
|
27
|
+
}
|
|
28
|
+
finally {
|
|
29
|
+
db.close();
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
it("is idempotent", () => {
|
|
33
|
+
const db = databaseOpen(":memory:");
|
|
34
|
+
try {
|
|
35
|
+
migration20260220AddUsers.up(db);
|
|
36
|
+
migration20260222AddUserParent.up(db);
|
|
37
|
+
migration20260222AddUserParent.up(db);
|
|
38
|
+
const columns = db.prepare("PRAGMA table_info(users)").all();
|
|
39
|
+
const names = columns.map((c) => c.name);
|
|
40
|
+
expect(names).toContain("parent_user_id");
|
|
41
|
+
expect(names).toContain("name");
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
db.close();
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=20260222_add_user_parent.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260222_add_user_parent.spec.js","sourceRoot":"","sources":["../../../sources/storage/migrations/20260222_add_user_parent.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAE/E,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC;YACD,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,8BAA8B,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAEtC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAA6B,CAAC;YACxF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;gBAAS,CAAC;YACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC;YACD,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,8BAA8B,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAEtC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAA6B,CAAC;YACxF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACrE,CAAC;gBAAS,CAAC;YACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACrB,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC;YACD,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,8BAA8B,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACtC,8BAA8B,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAEtC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAA6B,CAAC;YACxF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;gBAAS,CAAC;YACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Migration } from "./migrationTypes.js";
|
|
2
|
+
/**
|
|
3
|
+
* Adds ended_at column to the sessions table.
|
|
4
|
+
* Allows consumers to distinguish active vs finished sessions.
|
|
5
|
+
*/
|
|
6
|
+
export declare const migration20260222SessionEndedAt: Migration;
|
|
7
|
+
//# sourceMappingURL=20260222_session_ended_at.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260222_session_ended_at.d.ts","sourceRoot":"","sources":["../../../sources/storage/migrations/20260222_session_ended_at.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAAE,SAa7C,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds ended_at column to the sessions table.
|
|
3
|
+
* Allows consumers to distinguish active vs finished sessions.
|
|
4
|
+
*/
|
|
5
|
+
export const migration20260222SessionEndedAt = {
|
|
6
|
+
name: "20260222_session_ended_at",
|
|
7
|
+
up(db) {
|
|
8
|
+
const columns = db.prepare("PRAGMA table_info(sessions)").all();
|
|
9
|
+
if (columns.length === 0) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const hasEndedAt = columns.some((column) => column.name === "ended_at");
|
|
13
|
+
if (!hasEndedAt) {
|
|
14
|
+
db.exec("ALTER TABLE sessions ADD COLUMN ended_at INTEGER");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=20260222_session_ended_at.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260222_session_ended_at.js","sourceRoot":"","sources":["../../../sources/storage/migrations/20260222_session_ended_at.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAc;IACtD,IAAI,EAAE,2BAA2B;IACjC,EAAE,CAAC,EAAE;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAA6B,CAAC;QAC3F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;QACX,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,EAAE,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAChE,CAAC;IACL,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260222_session_ended_at.spec.d.ts","sourceRoot":"","sources":["../../../sources/storage/migrations/20260222_session_ended_at.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { databaseOpen } from "../databaseOpen.js";
|
|
3
|
+
import { migration20260219Initial } from "./20260219_initial.js";
|
|
4
|
+
import { migration20260222SessionEndedAt } from "./20260222_session_ended_at.js";
|
|
5
|
+
import { migration20260224AddMemoryColumns } from "./20260224_add_memory_columns.js";
|
|
6
|
+
describe("migration20260222SessionEndedAt", () => {
|
|
7
|
+
it("adds ended_at column to sessions", () => {
|
|
8
|
+
const db = databaseOpen(":memory:");
|
|
9
|
+
try {
|
|
10
|
+
migration20260219Initial.up(db);
|
|
11
|
+
migration20260224AddMemoryColumns.up(db);
|
|
12
|
+
migration20260222SessionEndedAt.up(db);
|
|
13
|
+
const columns = db.prepare("PRAGMA table_info(sessions)").all();
|
|
14
|
+
const names = columns.map((c) => c.name);
|
|
15
|
+
expect(names).toContain("ended_at");
|
|
16
|
+
}
|
|
17
|
+
finally {
|
|
18
|
+
db.close();
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
it("is idempotent", () => {
|
|
22
|
+
const db = databaseOpen(":memory:");
|
|
23
|
+
try {
|
|
24
|
+
migration20260219Initial.up(db);
|
|
25
|
+
migration20260224AddMemoryColumns.up(db);
|
|
26
|
+
migration20260222SessionEndedAt.up(db);
|
|
27
|
+
migration20260222SessionEndedAt.up(db);
|
|
28
|
+
const columns = db.prepare("PRAGMA table_info(sessions)").all();
|
|
29
|
+
const names = columns.map((c) => c.name);
|
|
30
|
+
expect(names).toContain("ended_at");
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
db.close();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=20260222_session_ended_at.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260222_session_ended_at.spec.js","sourceRoot":"","sources":["../../../sources/storage/migrations/20260222_session_ended_at.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAErF,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC;YACD,wBAAwB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAChC,iCAAiC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACzC,+BAA+B,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAEvC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAA6B,CAAC;YAC3F,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;gBAAS,CAAC;YACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACrB,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC;YACD,wBAAwB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAChC,iCAAiC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACzC,+BAA+B,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACvC,+BAA+B,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAEvC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAA6B,CAAC;YAC3F,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;gBAAS,CAAC;YACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_migrations.d.ts","sourceRoot":"","sources":["../../../sources/storage/migrations/_migrations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_migrations.d.ts","sourceRoot":"","sources":["../../../sources/storage/migrations/_migrations.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,eAAO,MAAM,UAAU,EAAE,SAAS,EAsBjC,CAAC"}
|
|
@@ -11,10 +11,12 @@ import { migration20260222AddChannels } from "./20260222_add_channels.js";
|
|
|
11
11
|
import { migration20260222AddExpose } from "./20260222_add_expose.js";
|
|
12
12
|
import { migration20260222AddProcesses } from "./20260222_add_processes.js";
|
|
13
13
|
import { migration20260222AddSignals } from "./20260222_add_signals.js";
|
|
14
|
+
import { migration20260222AddUserParent } from "./20260222_add_user_parent.js";
|
|
14
15
|
import { migration20260222ImportChannels } from "./20260222_import_channels.js";
|
|
15
16
|
import { migration20260222ImportExpose } from "./20260222_import_expose.js";
|
|
16
17
|
import { migration20260222ImportProcesses } from "./20260222_import_processes.js";
|
|
17
18
|
import { migration20260222ImportSignals } from "./20260222_import_signals.js";
|
|
19
|
+
import { migration20260222SessionEndedAt } from "./20260222_session_ended_at.js";
|
|
18
20
|
import { migration20260223AddHeartbeatUsers } from "./20260223_add_heartbeat_users.js";
|
|
19
21
|
import { migration20260224AddMemoryColumns } from "./20260224_add_memory_columns.js";
|
|
20
22
|
export const migrations = [
|
|
@@ -36,6 +38,8 @@ export const migrations = [
|
|
|
36
38
|
migration20260222AddProcesses,
|
|
37
39
|
migration20260222ImportProcesses,
|
|
38
40
|
migration20260223AddHeartbeatUsers,
|
|
39
|
-
migration20260224AddMemoryColumns
|
|
41
|
+
migration20260224AddMemoryColumns,
|
|
42
|
+
migration20260222SessionEndedAt,
|
|
43
|
+
migration20260222AddUserParent
|
|
40
44
|
];
|
|
41
45
|
//# sourceMappingURL=_migrations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_migrations.js","sourceRoot":"","sources":["../../../sources/storage/migrations/_migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAGrF,MAAM,CAAC,MAAM,UAAU,GAAgB;IACnC,wBAAwB;IACxB,4BAA4B;IAC5B,yBAAyB;IACzB,+BAA+B;IAC/B,yBAAyB;IACzB,4BAA4B;IAC5B,gCAAgC;IAChC,kCAAkC;IAClC,yBAAyB;IACzB,2BAA2B;IAC3B,8BAA8B;IAC9B,4BAA4B;IAC5B,+BAA+B;IAC/B,0BAA0B;IAC1B,6BAA6B;IAC7B,6BAA6B;IAC7B,gCAAgC;IAChC,kCAAkC;IAClC,iCAAiC;
|
|
1
|
+
{"version":3,"file":"_migrations.js","sourceRoot":"","sources":["../../../sources/storage/migrations/_migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAGrF,MAAM,CAAC,MAAM,UAAU,GAAgB;IACnC,wBAAwB;IACxB,4BAA4B;IAC5B,yBAAyB;IACzB,+BAA+B;IAC/B,yBAAyB;IACzB,4BAA4B;IAC5B,gCAAgC;IAChC,kCAAkC;IAClC,yBAAyB;IACzB,2BAA2B;IAC3B,8BAA8B;IAC9B,4BAA4B;IAC5B,+BAA+B;IAC/B,0BAA0B;IAC1B,6BAA6B;IAC7B,6BAA6B;IAC7B,gCAAgC;IAChC,kCAAkC;IAClC,iCAAiC;IACjC,+BAA+B;IAC/B,8BAA8B;CACjC,CAAC"}
|
|
@@ -10,6 +10,11 @@ export declare class SessionsRepository {
|
|
|
10
10
|
findById(id: string): Promise<SessionDbRecord | null>;
|
|
11
11
|
findByAgentId(agentId: string): Promise<SessionDbRecord[]>;
|
|
12
12
|
create(input: CreateSessionInput): Promise<string>;
|
|
13
|
+
/**
|
|
14
|
+
* Marks a session as ended by setting ended_at.
|
|
15
|
+
* Expects: sessionId is valid.
|
|
16
|
+
*/
|
|
17
|
+
endSession(sessionId: string, endedAt: number): Promise<void>;
|
|
13
18
|
/**
|
|
14
19
|
* Marks a session as needing memory processing.
|
|
15
20
|
* Sets invalidated_at only if null or if historyId is larger.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionsRepository.d.ts","sourceRoot":"","sources":["../../sources/storage/sessionsRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,kBAAkB,EAAsB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAElG;;;GAGG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;gBAEtB,EAAE,EAAE,YAAY;IAItB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAUrD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAO1D,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBxD;;;;OAIG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrE;;;OAGG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOhE;;;;OAIG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa/G,OAAO,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"sessionsRepository.d.ts","sourceRoot":"","sources":["../../sources/storage/sessionsRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,kBAAkB,EAAsB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAElG;;;GAGG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;gBAEtB,EAAE,EAAE,YAAY;IAItB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAUrD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAO1D,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBxD;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;;;OAIG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrE;;;OAGG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOhE;;;;OAIG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa/G,OAAO,CAAC,YAAY;CAYvB"}
|