daycare-cli 2026.2.26 → 2026.2.28
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/config/configResolve.d.ts.map +1 -1
- package/dist/config/configResolve.js +15 -1
- package/dist/config/configResolve.js.map +1 -1
- package/dist/config/configResolve.spec.js +47 -0
- package/dist/config/configResolve.spec.js.map +1 -1
- package/dist/config/configSettingsParse.d.ts.map +1 -1
- package/dist/config/configSettingsParse.js +10 -0
- package/dist/config/configSettingsParse.js.map +1 -1
- package/dist/config/configSettingsParse.spec.js +32 -0
- package/dist/config/configSettingsParse.spec.js.map +1 -1
- package/dist/config/configTypes.d.ts +2 -1
- package/dist/config/configTypes.d.ts.map +1 -1
- package/dist/engine/agents/agent.d.ts +2 -0
- package/dist/engine/agents/agent.d.ts.map +1 -1
- package/dist/engine/agents/agent.js +18 -3
- package/dist/engine/agents/agent.js.map +1 -1
- package/dist/engine/agents/agentSystem.d.ts +5 -0
- package/dist/engine/agents/agentSystem.d.ts.map +1 -1
- package/dist/engine/agents/agentSystem.js +16 -1
- package/dist/engine/agents/agentSystem.js.map +1 -1
- package/dist/engine/agents/agentSystem.spec.js +59 -0
- package/dist/engine/agents/agentSystem.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentLoopRun.d.ts +0 -2
- package/dist/engine/agents/ops/agentLoopRun.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentLoopRun.js +4 -7
- package/dist/engine/agents/ops/agentLoopRun.js.map +1 -1
- package/dist/engine/agents/ops/agentLoopRun.spec.js +21 -24
- package/dist/engine/agents/ops/agentLoopRun.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptContext.d.ts +1 -1
- package/dist/engine/agents/ops/agentSystemPromptContext.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionEnvironment.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionEnvironment.js +12 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionEnvironment.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionMemory.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionMemory.js +0 -4
- package/dist/engine/agents/ops/agentSystemPromptSectionMemory.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.d.ts +2 -2
- package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.js +12 -30
- package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.js.map +1 -1
- package/dist/engine/apps/appExecute.spec.js +2 -10
- package/dist/engine/apps/appExecute.spec.js.map +1 -1
- package/dist/engine/apps/appInstallToolBuild.js +1 -1
- package/dist/engine/apps/appInstallToolBuild.js.map +1 -1
- package/dist/engine/apps/appInstallToolBuild.spec.js +1 -5
- package/dist/engine/apps/appInstallToolBuild.spec.js.map +1 -1
- package/dist/engine/apps/appRuleToolBuild.spec.js +1 -5
- package/dist/engine/apps/appRuleToolBuild.spec.js.map +1 -1
- package/dist/engine/apps/appToolExecutorBuild.spec.js +1 -5
- package/dist/engine/apps/appToolExecutorBuild.spec.js.map +1 -1
- package/dist/engine/engine.d.ts.map +1 -1
- package/dist/engine/engine.js +10 -0
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/friends/nametagGenerate.d.ts +6 -0
- package/dist/engine/friends/nametagGenerate.d.ts.map +1 -0
- package/dist/engine/friends/nametagGenerate.js +9 -0
- package/dist/engine/friends/nametagGenerate.js.map +1 -0
- package/dist/engine/friends/nametagGenerate.spec.d.ts +2 -0
- package/dist/engine/friends/nametagGenerate.spec.d.ts.map +1 -0
- package/dist/engine/friends/nametagGenerate.spec.js +18 -0
- package/dist/engine/friends/nametagGenerate.spec.js.map +1 -0
- package/dist/engine/modules/executablePrompts/executablePromptExpand.spec.js +1 -5
- package/dist/engine/modules/executablePrompts/executablePromptExpand.spec.js.map +1 -1
- package/dist/engine/modules/monty/montyPythonTypeFromSchemaRuntime.spec.js +1 -5
- package/dist/engine/modules/monty/montyPythonTypeFromSchemaRuntime.spec.js.map +1 -1
- package/dist/engine/modules/rlm/rlmExecute.spec.js +1 -5
- package/dist/engine/modules/rlm/rlmExecute.spec.js.map +1 -1
- package/dist/engine/modules/rlm/rlmPromptSkills.spec.js +9 -9
- package/dist/engine/modules/rlm/rlmPromptSkills.spec.js.map +1 -1
- package/dist/engine/modules/rlm/rlmRestore.spec.js +1 -5
- package/dist/engine/modules/rlm/rlmRestore.spec.js.map +1 -1
- package/dist/engine/modules/rlm/rlmTool.spec.js +1 -5
- package/dist/engine/modules/rlm/rlmTool.spec.js.map +1 -1
- package/dist/engine/modules/say/sayFileResolve.d.ts +4 -5
- package/dist/engine/modules/say/sayFileResolve.d.ts.map +1 -1
- package/dist/engine/modules/say/sayFileResolve.js +24 -14
- package/dist/engine/modules/say/sayFileResolve.js.map +1 -1
- package/dist/engine/modules/say/sayFileResolve.spec.js +28 -29
- package/dist/engine/modules/say/sayFileResolve.spec.js.map +1 -1
- package/dist/engine/modules/toolResolver.spec.js +1 -5
- package/dist/engine/modules/toolResolver.spec.js.map +1 -1
- package/dist/engine/modules/tools/agentCompactTool.spec.js +1 -5
- package/dist/engine/modules/tools/agentCompactTool.spec.js.map +1 -1
- package/dist/engine/modules/tools/agentResetTool.spec.js +1 -5
- package/dist/engine/modules/tools/agentResetTool.spec.js.map +1 -1
- package/dist/engine/modules/tools/background.spec.js +3 -11
- package/dist/engine/modules/tools/background.spec.js.map +1 -1
- package/dist/engine/modules/tools/channelCreateTool.spec.js +1 -5
- package/dist/engine/modules/tools/channelCreateTool.spec.js.map +1 -1
- package/dist/engine/modules/tools/channelHistoryTool.spec.js +1 -5
- package/dist/engine/modules/tools/channelHistoryTool.spec.js.map +1 -1
- package/dist/engine/modules/tools/channelMemberTool.spec.js +1 -5
- package/dist/engine/modules/tools/channelMemberTool.spec.js.map +1 -1
- package/dist/engine/modules/tools/channelSendTool.spec.js +1 -5
- package/dist/engine/modules/tools/channelSendTool.spec.js.map +1 -1
- package/dist/engine/modules/tools/friendAddToolBuild.d.ts +7 -0
- package/dist/engine/modules/tools/friendAddToolBuild.d.ts.map +1 -0
- package/dist/engine/modules/tools/friendAddToolBuild.js +160 -0
- package/dist/engine/modules/tools/friendAddToolBuild.js.map +1 -0
- package/dist/engine/modules/tools/friendAddToolBuild.spec.d.ts +2 -0
- package/dist/engine/modules/tools/friendAddToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/modules/tools/friendAddToolBuild.spec.js +151 -0
- package/dist/engine/modules/tools/friendAddToolBuild.spec.js.map +1 -0
- package/dist/engine/modules/tools/friendRemoveToolBuild.d.ts +7 -0
- package/dist/engine/modules/tools/friendRemoveToolBuild.d.ts.map +1 -0
- package/dist/engine/modules/tools/friendRemoveToolBuild.js +171 -0
- package/dist/engine/modules/tools/friendRemoveToolBuild.js.map +1 -0
- package/dist/engine/modules/tools/friendRemoveToolBuild.spec.d.ts +2 -0
- package/dist/engine/modules/tools/friendRemoveToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/modules/tools/friendRemoveToolBuild.spec.js +172 -0
- package/dist/engine/modules/tools/friendRemoveToolBuild.spec.js.map +1 -0
- package/dist/engine/modules/tools/friendSendToolBuild.d.ts +7 -0
- package/dist/engine/modules/tools/friendSendToolBuild.d.ts.map +1 -0
- package/dist/engine/modules/tools/friendSendToolBuild.js +101 -0
- package/dist/engine/modules/tools/friendSendToolBuild.js.map +1 -0
- package/dist/engine/modules/tools/friendSendToolBuild.spec.d.ts +2 -0
- package/dist/engine/modules/tools/friendSendToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/modules/tools/friendSendToolBuild.spec.js +120 -0
- package/dist/engine/modules/tools/friendSendToolBuild.spec.js.map +1 -0
- package/dist/engine/modules/tools/friendShareSubuserToolBuild.d.ts +7 -0
- package/dist/engine/modules/tools/friendShareSubuserToolBuild.d.ts.map +1 -0
- package/dist/engine/modules/tools/friendShareSubuserToolBuild.js +127 -0
- package/dist/engine/modules/tools/friendShareSubuserToolBuild.js.map +1 -0
- package/dist/engine/modules/tools/friendShareSubuserToolBuild.spec.d.ts +2 -0
- package/dist/engine/modules/tools/friendShareSubuserToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/modules/tools/friendShareSubuserToolBuild.spec.js +119 -0
- package/dist/engine/modules/tools/friendShareSubuserToolBuild.spec.js.map +1 -0
- package/dist/engine/modules/tools/friendUnshareSubuserToolBuild.d.ts +7 -0
- package/dist/engine/modules/tools/friendUnshareSubuserToolBuild.d.ts.map +1 -0
- package/dist/engine/modules/tools/friendUnshareSubuserToolBuild.js +115 -0
- package/dist/engine/modules/tools/friendUnshareSubuserToolBuild.js.map +1 -0
- package/dist/engine/modules/tools/friendUnshareSubuserToolBuild.spec.d.ts +2 -0
- package/dist/engine/modules/tools/friendUnshareSubuserToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/modules/tools/friendUnshareSubuserToolBuild.spec.js +100 -0
- package/dist/engine/modules/tools/friendUnshareSubuserToolBuild.spec.js.map +1 -0
- package/dist/engine/modules/tools/image-generation.d.ts.map +1 -1
- package/dist/engine/modules/tools/image-generation.js +26 -10
- package/dist/engine/modules/tools/image-generation.js.map +1 -1
- package/dist/engine/modules/tools/image-generation.spec.js +13 -10
- package/dist/engine/modules/tools/image-generation.spec.js.map +1 -1
- package/dist/engine/modules/tools/mermaid-png.d.ts.map +1 -1
- package/dist/engine/modules/tools/mermaid-png.js +16 -11
- package/dist/engine/modules/tools/mermaid-png.js.map +1 -1
- package/dist/engine/modules/tools/mermaid-png.spec.js +20 -24
- package/dist/engine/modules/tools/mermaid-png.spec.js.map +1 -1
- package/dist/engine/modules/tools/pdf-process.d.ts.map +1 -1
- package/dist/engine/modules/tools/pdf-process.js +10 -38
- package/dist/engine/modules/tools/pdf-process.js.map +1 -1
- package/dist/engine/modules/tools/pdf-process.spec.js +15 -5
- package/dist/engine/modules/tools/pdf-process.spec.js.map +1 -1
- package/dist/engine/modules/tools/permanentAgentToolBuild.spec.js +5 -13
- package/dist/engine/modules/tools/permanentAgentToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/send-file.d.ts.map +1 -1
- package/dist/engine/modules/tools/send-file.js +20 -11
- package/dist/engine/modules/tools/send-file.js.map +1 -1
- package/dist/engine/modules/tools/sendUserMessageTool.spec.js +1 -5
- package/dist/engine/modules/tools/sendUserMessageTool.spec.js.map +1 -1
- package/dist/engine/modules/tools/sessionHistoryToolBuild.spec.js +1 -2
- package/dist/engine/modules/tools/sessionHistoryToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/signal.spec.js +1 -5
- package/dist/engine/modules/tools/signal.spec.js.map +1 -1
- package/dist/engine/modules/tools/signalEventsCsvToolBuild.spec.js +1 -5
- package/dist/engine/modules/tools/signalEventsCsvToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/signalSubscribeToolBuild.spec.js +1 -5
- package/dist/engine/modules/tools/signalSubscribeToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/signalUnsubscribeToolBuild.spec.js +1 -5
- package/dist/engine/modules/tools/signalUnsubscribeToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/skillToolBuild.js +3 -3
- package/dist/engine/modules/tools/skillToolBuild.js.map +1 -1
- package/dist/engine/modules/tools/skillToolBuild.spec.js +12 -9
- package/dist/engine/modules/tools/skillToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/subuserConfigureToolBuild.spec.js +1 -2
- package/dist/engine/modules/tools/subuserConfigureToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/subuserCreateToolBuild.spec.js +1 -2
- package/dist/engine/modules/tools/subuserCreateToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/subuserListToolBuild.spec.js +1 -2
- package/dist/engine/modules/tools/subuserListToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/topologyToolBuild.d.ts.map +1 -1
- package/dist/engine/modules/tools/topologyToolBuild.js +111 -2
- package/dist/engine/modules/tools/topologyToolBuild.js.map +1 -1
- package/dist/engine/modules/tools/topologyToolBuild.spec.js +99 -2
- package/dist/engine/modules/tools/topologyToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/types.d.ts +3 -4
- package/dist/engine/modules/tools/types.d.ts.map +1 -1
- package/dist/plugins/dashboard/site/404.html +1 -1
- package/dist/plugins/dashboard/site/agent.html +1 -1
- package/dist/plugins/dashboard/site/agent.txt +1 -1
- package/dist/plugins/dashboard/site/agents.html +1 -1
- package/dist/plugins/dashboard/site/agents.txt +1 -1
- package/dist/plugins/dashboard/site/automations.html +1 -1
- package/dist/plugins/dashboard/site/automations.txt +1 -1
- package/dist/plugins/dashboard/site/connectors.html +1 -1
- package/dist/plugins/dashboard/site/connectors.txt +1 -1
- package/dist/plugins/dashboard/site/index.html +1 -1
- package/dist/plugins/dashboard/site/index.txt +1 -1
- package/dist/plugins/dashboard/site/memory.html +1 -1
- package/dist/plugins/dashboard/site/memory.txt +1 -1
- package/dist/plugins/dashboard/site/processes.html +1 -1
- package/dist/plugins/dashboard/site/processes.txt +1 -1
- package/dist/plugins/dashboard/site/providers.html +1 -1
- package/dist/plugins/dashboard/site/providers.txt +1 -1
- package/dist/plugins/dashboard/site/signals.html +1 -1
- package/dist/plugins/dashboard/site/signals.txt +1 -1
- package/dist/plugins/dashboard/site/telemetry.html +1 -1
- 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 +1 -1
- package/dist/plugins/database/__tests__/plugin.spec.js +4 -2
- package/dist/plugins/database/__tests__/plugin.spec.js.map +1 -1
- package/dist/plugins/monty-python/tool.spec.js +1 -2
- package/dist/plugins/monty-python/tool.spec.js.map +1 -1
- package/dist/plugins/shell/processTools.js +1 -1
- package/dist/plugins/shell/processTools.js.map +1 -1
- package/dist/plugins/shell/processTools.spec.js +2 -3
- package/dist/plugins/shell/processTools.spec.js.map +1 -1
- package/dist/plugins/shell/tool.d.ts.map +1 -1
- package/dist/plugins/shell/tool.js +90 -486
- package/dist/plugins/shell/tool.js.map +1 -1
- package/dist/plugins/shell/tool.spec.js +11 -20
- package/dist/plugins/shell/tool.spec.js.map +1 -1
- package/dist/prompts/SYSTEM_ENVIRONMENT.md +6 -0
- package/dist/prompts/SYSTEM_MEMORY.md +4 -4
- package/dist/prompts/SYSTEM_PERMISSIONS.md +3 -19
- package/dist/sandbox/docker/dockerContainerEnsure.d.ts +8 -0
- package/dist/sandbox/docker/dockerContainerEnsure.d.ts.map +1 -0
- package/dist/sandbox/docker/dockerContainerEnsure.js +56 -0
- package/dist/sandbox/docker/dockerContainerEnsure.js.map +1 -0
- package/dist/sandbox/docker/dockerContainerEnsure.spec.d.ts +2 -0
- package/dist/sandbox/docker/dockerContainerEnsure.spec.d.ts.map +1 -0
- package/dist/sandbox/docker/dockerContainerEnsure.spec.js +66 -0
- package/dist/sandbox/docker/dockerContainerEnsure.spec.js.map +1 -0
- package/dist/sandbox/docker/dockerContainerExec.d.ts +8 -0
- package/dist/sandbox/docker/dockerContainerExec.d.ts.map +1 -0
- package/dist/sandbox/docker/dockerContainerExec.js +109 -0
- package/dist/sandbox/docker/dockerContainerExec.js.map +1 -0
- package/dist/sandbox/docker/dockerContainerExec.spec.d.ts +2 -0
- package/dist/sandbox/docker/dockerContainerExec.spec.d.ts.map +1 -0
- package/dist/sandbox/docker/dockerContainerExec.spec.js +75 -0
- package/dist/sandbox/docker/dockerContainerExec.spec.js.map +1 -0
- package/dist/sandbox/docker/dockerContainerNameBuild.d.ts +6 -0
- package/dist/sandbox/docker/dockerContainerNameBuild.d.ts.map +1 -0
- package/dist/sandbox/docker/dockerContainerNameBuild.js +15 -0
- package/dist/sandbox/docker/dockerContainerNameBuild.js.map +1 -0
- package/dist/sandbox/docker/dockerContainerNameBuild.spec.d.ts +2 -0
- package/dist/sandbox/docker/dockerContainerNameBuild.spec.d.ts.map +1 -0
- package/dist/sandbox/docker/dockerContainerNameBuild.spec.js +17 -0
- package/dist/sandbox/docker/dockerContainerNameBuild.spec.js.map +1 -0
- package/dist/sandbox/docker/dockerContainers.d.ts +13 -0
- package/dist/sandbox/docker/dockerContainers.d.ts.map +1 -0
- package/dist/sandbox/docker/dockerContainers.js +42 -0
- package/dist/sandbox/docker/dockerContainers.js.map +1 -0
- package/dist/sandbox/docker/dockerContainersShared.d.ts +3 -0
- package/dist/sandbox/docker/dockerContainersShared.d.ts.map +1 -0
- package/dist/sandbox/docker/dockerContainersShared.js +3 -0
- package/dist/sandbox/docker/dockerContainersShared.js.map +1 -0
- package/dist/sandbox/docker/dockerRunInSandbox.d.ts +19 -0
- package/dist/sandbox/docker/dockerRunInSandbox.d.ts.map +1 -0
- package/dist/sandbox/docker/dockerRunInSandbox.integration.spec.d.ts +2 -0
- package/dist/sandbox/docker/dockerRunInSandbox.integration.spec.d.ts.map +1 -0
- package/dist/sandbox/docker/dockerRunInSandbox.integration.spec.js +143 -0
- package/dist/sandbox/docker/dockerRunInSandbox.integration.spec.js.map +1 -0
- package/dist/sandbox/docker/dockerRunInSandbox.js +117 -0
- package/dist/sandbox/docker/dockerRunInSandbox.js.map +1 -0
- package/dist/sandbox/docker/dockerRunInSandbox.spec.d.ts +2 -0
- package/dist/sandbox/docker/dockerRunInSandbox.spec.d.ts.map +1 -0
- package/dist/sandbox/docker/dockerRunInSandbox.spec.js +127 -0
- package/dist/sandbox/docker/dockerRunInSandbox.spec.js.map +1 -0
- package/dist/sandbox/docker/dockerTypes.d.ts +23 -0
- package/dist/sandbox/docker/dockerTypes.d.ts.map +1 -0
- package/dist/sandbox/docker/dockerTypes.js +2 -0
- package/dist/sandbox/docker/dockerTypes.js.map +1 -0
- package/dist/sandbox/sandbox.d.ts +28 -0
- package/dist/sandbox/sandbox.d.ts.map +1 -0
- package/dist/sandbox/sandbox.js +499 -0
- package/dist/sandbox/sandbox.js.map +1 -0
- package/dist/sandbox/sandbox.spec.d.ts +2 -0
- package/dist/sandbox/sandbox.spec.d.ts.map +1 -0
- package/dist/sandbox/sandbox.spec.js +167 -0
- package/dist/sandbox/sandbox.spec.js.map +1 -0
- package/dist/sandbox/sandboxCanRead.d.ts.map +1 -1
- package/dist/sandbox/sandboxCanRead.js +6 -6
- package/dist/sandbox/sandboxCanRead.js.map +1 -1
- package/dist/sandbox/sandboxCanRead.spec.js +15 -7
- package/dist/sandbox/sandboxCanRead.spec.js.map +1 -1
- package/dist/sandbox/sandboxCanWrite.d.ts.map +1 -1
- package/dist/sandbox/sandboxCanWrite.js +25 -0
- package/dist/sandbox/sandboxCanWrite.js.map +1 -1
- package/dist/sandbox/sandboxCanWrite.spec.js +6 -1
- package/dist/sandbox/sandboxCanWrite.spec.js.map +1 -1
- package/dist/sandbox/sandboxDocker.spec.d.ts +2 -0
- package/dist/sandbox/sandboxDocker.spec.d.ts.map +1 -0
- package/dist/sandbox/sandboxDocker.spec.js +121 -0
- package/dist/sandbox/sandboxDocker.spec.js.map +1 -0
- package/dist/sandbox/sandboxFilesystemPolicyBuild.d.ts +1 -1
- package/dist/sandbox/sandboxFilesystemPolicyBuild.d.ts.map +1 -1
- package/dist/sandbox/sandboxFilesystemPolicyBuild.js +14 -6
- package/dist/sandbox/sandboxFilesystemPolicyBuild.js.map +1 -1
- package/dist/sandbox/sandboxFilesystemPolicyBuild.spec.js +7 -2
- package/dist/sandbox/sandboxFilesystemPolicyBuild.spec.js.map +1 -1
- package/dist/sandbox/sandboxPathContainerToHost.d.ts +6 -0
- package/dist/sandbox/sandboxPathContainerToHost.d.ts.map +1 -0
- package/dist/sandbox/sandboxPathContainerToHost.js +24 -0
- package/dist/sandbox/sandboxPathContainerToHost.js.map +1 -0
- package/dist/sandbox/sandboxPathContainerToHost.spec.d.ts +2 -0
- package/dist/sandbox/sandboxPathContainerToHost.spec.d.ts.map +1 -0
- package/dist/sandbox/sandboxPathContainerToHost.spec.js +25 -0
- package/dist/sandbox/sandboxPathContainerToHost.spec.js.map +1 -0
- package/dist/sandbox/sandboxPathHostToContainer.d.ts +6 -0
- package/dist/sandbox/sandboxPathHostToContainer.d.ts.map +1 -0
- package/dist/sandbox/sandboxPathHostToContainer.js +23 -0
- package/dist/sandbox/sandboxPathHostToContainer.js.map +1 -0
- package/dist/sandbox/sandboxPathHostToContainer.spec.d.ts +2 -0
- package/dist/sandbox/sandboxPathHostToContainer.spec.d.ts.map +1 -0
- package/dist/sandbox/sandboxPathHostToContainer.spec.js +32 -0
- package/dist/sandbox/sandboxPathHostToContainer.spec.js.map +1 -0
- package/dist/sandbox/sandboxReadBoundaryDenyPathsBuild.d.ts +11 -0
- package/dist/sandbox/sandboxReadBoundaryDenyPathsBuild.d.ts.map +1 -0
- package/dist/sandbox/sandboxReadBoundaryDenyPathsBuild.js +20 -0
- package/dist/sandbox/sandboxReadBoundaryDenyPathsBuild.js.map +1 -0
- package/dist/sandbox/sandboxReadBoundaryDenyPathsBuild.spec.d.ts +2 -0
- package/dist/sandbox/sandboxReadBoundaryDenyPathsBuild.spec.d.ts.map +1 -0
- package/dist/sandbox/sandboxReadBoundaryDenyPathsBuild.spec.js +20 -0
- package/dist/sandbox/sandboxReadBoundaryDenyPathsBuild.spec.js.map +1 -0
- package/dist/sandbox/sandboxReadDenyPathsBuild.d.ts +13 -0
- package/dist/sandbox/sandboxReadDenyPathsBuild.d.ts.map +1 -0
- package/dist/sandbox/sandboxReadDenyPathsBuild.js +28 -0
- package/dist/sandbox/sandboxReadDenyPathsBuild.js.map +1 -0
- package/dist/sandbox/sandboxReadDenyPathsBuild.spec.d.ts +2 -0
- package/dist/sandbox/sandboxReadDenyPathsBuild.spec.d.ts.map +1 -0
- package/dist/sandbox/sandboxReadDenyPathsBuild.spec.js +29 -0
- package/dist/sandbox/sandboxReadDenyPathsBuild.spec.js.map +1 -0
- package/dist/sandbox/sandboxTypes.d.ts +76 -0
- package/dist/sandbox/sandboxTypes.d.ts.map +1 -0
- package/dist/sandbox/sandboxTypes.js +2 -0
- package/dist/sandbox/sandboxTypes.js.map +1 -0
- package/dist/settings.d.ts +17 -1
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js.map +1 -1
- package/dist/skills/daycare-friendship/SKILL.md +295 -0
- package/dist/skills/skills/daycare-friendship/SKILL.md +295 -0
- package/dist/storage/agentsRepository.d.ts +1 -0
- package/dist/storage/agentsRepository.d.ts.map +1 -1
- package/dist/storage/agentsRepository.js +16 -0
- package/dist/storage/agentsRepository.js.map +1 -1
- package/dist/storage/agentsRepository.spec.js +45 -0
- package/dist/storage/agentsRepository.spec.js.map +1 -1
- package/dist/storage/connectionsRepository.d.ts +18 -0
- package/dist/storage/connectionsRepository.d.ts.map +1 -0
- package/dist/storage/connectionsRepository.js +163 -0
- package/dist/storage/connectionsRepository.js.map +1 -0
- package/dist/storage/connectionsRepository.spec.d.ts +2 -0
- package/dist/storage/connectionsRepository.spec.d.ts.map +1 -0
- package/dist/storage/connectionsRepository.spec.js +115 -0
- package/dist/storage/connectionsRepository.spec.js.map +1 -0
- package/dist/storage/databaseTypes.d.ts +19 -0
- package/dist/storage/databaseTypes.d.ts.map +1 -1
- package/dist/storage/migrations/20260222_add_usertag_connections.d.ts +7 -0
- package/dist/storage/migrations/20260222_add_usertag_connections.d.ts.map +1 -0
- package/dist/storage/migrations/20260222_add_usertag_connections.js +32 -0
- package/dist/storage/migrations/20260222_add_usertag_connections.js.map +1 -0
- package/dist/storage/migrations/20260222_add_usertag_connections.spec.d.ts +2 -0
- package/dist/storage/migrations/20260222_add_usertag_connections.spec.d.ts.map +1 -0
- package/dist/storage/migrations/20260222_add_usertag_connections.spec.js +55 -0
- package/dist/storage/migrations/20260222_add_usertag_connections.spec.js.map +1 -0
- package/dist/storage/migrations/20260225_require_usertag.d.ts +7 -0
- package/dist/storage/migrations/20260225_require_usertag.d.ts.map +1 -0
- package/dist/storage/migrations/20260225_require_usertag.js +60 -0
- package/dist/storage/migrations/20260225_require_usertag.js.map +1 -0
- package/dist/storage/migrations/20260225_require_usertag.spec.d.ts +2 -0
- package/dist/storage/migrations/20260225_require_usertag.spec.d.ts.map +1 -0
- package/dist/storage/migrations/20260225_require_usertag.spec.js +70 -0
- package/dist/storage/migrations/20260225_require_usertag.spec.js.map +1 -0
- package/dist/storage/migrations/20260226_rename_usertag_to_nametag.d.ts +7 -0
- package/dist/storage/migrations/20260226_rename_usertag_to_nametag.d.ts.map +1 -0
- package/dist/storage/migrations/20260226_rename_usertag_to_nametag.js +47 -0
- package/dist/storage/migrations/20260226_rename_usertag_to_nametag.js.map +1 -0
- package/dist/storage/migrations/20260226_rename_usertag_to_nametag.spec.d.ts +2 -0
- package/dist/storage/migrations/20260226_rename_usertag_to_nametag.spec.d.ts.map +1 -0
- package/dist/storage/migrations/20260226_rename_usertag_to_nametag.spec.js +59 -0
- package/dist/storage/migrations/20260226_rename_usertag_to_nametag.spec.js.map +1 -0
- package/dist/storage/migrations/_migrations.d.ts.map +1 -1
- package/dist/storage/migrations/_migrations.js +7 -1
- package/dist/storage/migrations/_migrations.js.map +1 -1
- package/dist/storage/storage.d.ts +3 -0
- package/dist/storage/storage.d.ts.map +1 -1
- package/dist/storage/storage.js +35 -3
- package/dist/storage/storage.js.map +1 -1
- package/dist/storage/storage.spec.js +1 -0
- package/dist/storage/storage.spec.js.map +1 -1
- package/dist/storage/usersRepository.d.ts +2 -0
- package/dist/storage/usersRepository.d.ts.map +1 -1
- package/dist/storage/usersRepository.js +63 -3
- package/dist/storage/usersRepository.js.map +1 -1
- package/dist/storage/usersRepository.spec.js +9 -2
- package/dist/storage/usersRepository.spec.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -1
- package/package.json +6 -3
- /package/dist/plugins/dashboard/site/_next/static/{X_oqQhoSTmj1_qmNPx-r5 → fEfvfa55gmpjx9cT66rjx}/_buildManifest.js +0 -0
- /package/dist/plugins/dashboard/site/_next/static/{X_oqQhoSTmj1_qmNPx-r5 → fEfvfa55gmpjx9cT66rjx}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { resolveWorkspacePath } from "../engine/permissions.js";
|
|
4
|
+
import { getLogger } from "../log.js";
|
|
5
|
+
import { envNormalize } from "../util/envNormalize.js";
|
|
6
|
+
const logger = getLogger("sandbox");
|
|
7
|
+
import { dockerRunInSandbox } from "./docker/dockerRunInSandbox.js";
|
|
8
|
+
import { isWithinSecure, openSecure } from "./pathResolveSecure.js";
|
|
9
|
+
import { runInSandbox } from "./runtime.js";
|
|
10
|
+
import { sandboxAllowedDomainsResolve } from "./sandboxAllowedDomainsResolve.js";
|
|
11
|
+
import { sandboxAllowedDomainsValidate } from "./sandboxAllowedDomainsValidate.js";
|
|
12
|
+
import { sandboxCanRead } from "./sandboxCanRead.js";
|
|
13
|
+
import { sandboxCanWrite } from "./sandboxCanWrite.js";
|
|
14
|
+
import { sandboxFilesystemPolicyBuild } from "./sandboxFilesystemPolicyBuild.js";
|
|
15
|
+
import { sandboxPathContainerToHost } from "./sandboxPathContainerToHost.js";
|
|
16
|
+
const READ_MAX_LINES = 2000;
|
|
17
|
+
const READ_MAX_BYTES = 50 * 1024;
|
|
18
|
+
const DEFAULT_EXEC_TIMEOUT = 30_000;
|
|
19
|
+
const MAX_EXEC_BUFFER = 1_000_000;
|
|
20
|
+
const UNICODE_SPACES = /[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;
|
|
21
|
+
const NARROW_NO_BREAK_SPACE = "\u202F";
|
|
22
|
+
export class Sandbox {
|
|
23
|
+
homeDir;
|
|
24
|
+
workingDir;
|
|
25
|
+
permissions;
|
|
26
|
+
docker;
|
|
27
|
+
constructor(config) {
|
|
28
|
+
this.homeDir = path.resolve(config.homeDir);
|
|
29
|
+
this.workingDir = path.resolve(config.permissions.workingDir);
|
|
30
|
+
this.permissions = config.permissions;
|
|
31
|
+
this.docker = config.docker;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Read from the host filesystem with sandbox read checks.
|
|
35
|
+
* Expects: args.path is absolute or relative to workingDir.
|
|
36
|
+
*/
|
|
37
|
+
async read(args) {
|
|
38
|
+
const permissions = this.permissionsEffectiveResolve();
|
|
39
|
+
const targetPath = await this.readInputPathResolve(args.path);
|
|
40
|
+
await pathRejectIfSymlink(targetPath, "Cannot read symbolic link directly.");
|
|
41
|
+
const resolvedPath = await sandboxCanRead(permissions, targetPath);
|
|
42
|
+
const stats = await fs.lstat(resolvedPath);
|
|
43
|
+
if (stats.isSymbolicLink()) {
|
|
44
|
+
throw new Error("Cannot read symbolic link directly.");
|
|
45
|
+
}
|
|
46
|
+
if (!stats.isFile()) {
|
|
47
|
+
throw new Error("Path is not a file.");
|
|
48
|
+
}
|
|
49
|
+
const displayPath = sandboxDisplayPath(this.workingDir, resolvedPath);
|
|
50
|
+
if (args.binary === true) {
|
|
51
|
+
const binaryContent = await readBinaryFileSecure(resolvedPath);
|
|
52
|
+
return {
|
|
53
|
+
type: "binary",
|
|
54
|
+
content: binaryContent,
|
|
55
|
+
bytes: stats.size,
|
|
56
|
+
resolvedPath,
|
|
57
|
+
displayPath
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
const mimeType = await detectSupportedImageMimeTypeFromFile(resolvedPath);
|
|
61
|
+
if (mimeType) {
|
|
62
|
+
const imageContent = await readBinaryFileSecure(resolvedPath);
|
|
63
|
+
return {
|
|
64
|
+
type: "image",
|
|
65
|
+
content: imageContent,
|
|
66
|
+
bytes: stats.size,
|
|
67
|
+
mimeType,
|
|
68
|
+
resolvedPath,
|
|
69
|
+
displayPath
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const textContent = await readTextFileSecure(resolvedPath);
|
|
73
|
+
const allLines = textContent.split("\n");
|
|
74
|
+
const totalFileLines = allLines.length;
|
|
75
|
+
const startLine = args.offset ? Math.max(0, args.offset - 1) : 0;
|
|
76
|
+
if (startLine >= allLines.length) {
|
|
77
|
+
throw new Error(`Offset ${args.offset} is beyond end of file (${allLines.length} lines total)`);
|
|
78
|
+
}
|
|
79
|
+
let selectedContent = allLines.slice(startLine).join("\n");
|
|
80
|
+
let userLimitedLines;
|
|
81
|
+
if (args.limit !== undefined) {
|
|
82
|
+
const endLine = Math.min(startLine + args.limit, allLines.length);
|
|
83
|
+
selectedContent = allLines.slice(startLine, endLine).join("\n");
|
|
84
|
+
userLimitedLines = endLine - startLine;
|
|
85
|
+
}
|
|
86
|
+
if (args.raw === true) {
|
|
87
|
+
return {
|
|
88
|
+
type: "text",
|
|
89
|
+
content: selectedContent,
|
|
90
|
+
bytes: stats.size,
|
|
91
|
+
totalLines: totalFileLines,
|
|
92
|
+
outputLines: selectedContent.split("\n").length,
|
|
93
|
+
truncated: false,
|
|
94
|
+
truncatedBy: null,
|
|
95
|
+
resolvedPath,
|
|
96
|
+
displayPath
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
const startLineDisplay = startLine + 1;
|
|
100
|
+
const truncation = truncateHead(selectedContent);
|
|
101
|
+
const outputText = sandboxReadOutputBuild({
|
|
102
|
+
truncation,
|
|
103
|
+
allLines,
|
|
104
|
+
requestedPath: args.path,
|
|
105
|
+
totalFileLines,
|
|
106
|
+
startLine,
|
|
107
|
+
startLineDisplay,
|
|
108
|
+
userLimitedLines
|
|
109
|
+
});
|
|
110
|
+
return {
|
|
111
|
+
type: "text",
|
|
112
|
+
content: outputText,
|
|
113
|
+
bytes: stats.size,
|
|
114
|
+
totalLines: totalFileLines,
|
|
115
|
+
outputLines: truncation.outputLines,
|
|
116
|
+
truncated: truncation.truncated,
|
|
117
|
+
truncatedBy: truncation.truncatedBy,
|
|
118
|
+
resolvedPath,
|
|
119
|
+
displayPath
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Write UTF-8 content to host filesystem with sandbox write checks.
|
|
124
|
+
* Expects: args.path is an absolute path.
|
|
125
|
+
*/
|
|
126
|
+
async write(args) {
|
|
127
|
+
const permissions = this.permissionsEffectiveResolve();
|
|
128
|
+
const targetPath = this.pathContainerToHost(args.path);
|
|
129
|
+
sandboxPathAbsoluteEnsure(targetPath);
|
|
130
|
+
await pathRejectIfSymlink(targetPath, "Cannot write to symbolic link.");
|
|
131
|
+
const resolvedPath = await sandboxCanWrite(permissions, targetPath);
|
|
132
|
+
await fs.mkdir(path.dirname(resolvedPath), { recursive: true });
|
|
133
|
+
try {
|
|
134
|
+
const stats = await fs.lstat(resolvedPath);
|
|
135
|
+
if (stats.isSymbolicLink()) {
|
|
136
|
+
throw new Error("Cannot write to symbolic link.");
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
if (error.code !== "ENOENT") {
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const handle = await fs.open(resolvedPath, args.append ? "a" : "w");
|
|
145
|
+
try {
|
|
146
|
+
await handle.writeFile(args.content);
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
await handle.close();
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
bytes: Buffer.isBuffer(args.content) ? args.content.byteLength : Buffer.byteLength(args.content, "utf8"),
|
|
153
|
+
resolvedPath,
|
|
154
|
+
sandboxPath: sandboxHomePath(this.homeDir, resolvedPath)
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Execute a shell command inside sandbox-runtime.
|
|
159
|
+
* Expects: args.command is non-empty and network allowlist is explicit.
|
|
160
|
+
*/
|
|
161
|
+
async exec(args) {
|
|
162
|
+
const permissions = this.permissionsEffectiveResolve();
|
|
163
|
+
const cwd = sandboxExecCwdResolve(this.workingDir, args.cwd);
|
|
164
|
+
const allowedDomains = sandboxAllowedDomainsResolve(args.allowedDomains, args.packageManagers);
|
|
165
|
+
const domainIssues = sandboxAllowedDomainsValidate(allowedDomains);
|
|
166
|
+
if (domainIssues.length > 0) {
|
|
167
|
+
throw new Error(domainIssues.join(" "));
|
|
168
|
+
}
|
|
169
|
+
const envOverrides = envNormalize(args.env);
|
|
170
|
+
const env = envOverrides ? { ...process.env, ...envOverrides } : process.env;
|
|
171
|
+
const filesystem = sandboxFilesystemPolicyBuild({
|
|
172
|
+
writeDirs: permissions.writeDirs,
|
|
173
|
+
workingDir: permissions.workingDir,
|
|
174
|
+
homeDir: this.homeDir
|
|
175
|
+
});
|
|
176
|
+
const useDocker = this.docker?.enabled === true;
|
|
177
|
+
logger.debug(`exec: command=${JSON.stringify(args.command)} cwd=${cwd} docker=${useDocker}`);
|
|
178
|
+
try {
|
|
179
|
+
const runtimeConfig = {
|
|
180
|
+
filesystem,
|
|
181
|
+
network: {
|
|
182
|
+
allowedDomains,
|
|
183
|
+
deniedDomains: []
|
|
184
|
+
},
|
|
185
|
+
enableWeakerNestedSandbox: true
|
|
186
|
+
};
|
|
187
|
+
const runtimeOptions = {
|
|
188
|
+
cwd,
|
|
189
|
+
env,
|
|
190
|
+
home: this.homeDir,
|
|
191
|
+
timeoutMs: args.timeoutMs ?? DEFAULT_EXEC_TIMEOUT,
|
|
192
|
+
maxBufferBytes: MAX_EXEC_BUFFER
|
|
193
|
+
};
|
|
194
|
+
const result = useDocker
|
|
195
|
+
? await dockerRunInSandbox(args.command, runtimeConfig, {
|
|
196
|
+
...runtimeOptions,
|
|
197
|
+
docker: {
|
|
198
|
+
image: this.docker.image,
|
|
199
|
+
tag: this.docker.tag,
|
|
200
|
+
socketPath: this.docker.socketPath,
|
|
201
|
+
runtime: this.docker.runtime,
|
|
202
|
+
userId: this.docker.userId
|
|
203
|
+
}
|
|
204
|
+
})
|
|
205
|
+
: await runInSandbox(args.command, runtimeConfig, runtimeOptions);
|
|
206
|
+
return {
|
|
207
|
+
stdout: sandboxText(result.stdout),
|
|
208
|
+
stderr: sandboxText(result.stderr),
|
|
209
|
+
exitCode: 0,
|
|
210
|
+
signal: null,
|
|
211
|
+
failed: false,
|
|
212
|
+
cwd
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
const execError = error;
|
|
217
|
+
const exitCode = typeof execError.code === "number" ? execError.code : null;
|
|
218
|
+
const stderr = sandboxText(execError.stderr);
|
|
219
|
+
logger.warn(`exec: failed exitCode=${exitCode} signal=${execError.signal ?? "none"} error=${execError.message}` +
|
|
220
|
+
(stderr ? ` stderr=${stderr.slice(0, 500)}` : ""));
|
|
221
|
+
return {
|
|
222
|
+
stdout: sandboxText(execError.stdout),
|
|
223
|
+
stderr,
|
|
224
|
+
exitCode,
|
|
225
|
+
signal: typeof execError.signal === "string" ? execError.signal : null,
|
|
226
|
+
failed: true,
|
|
227
|
+
cwd
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
permissionsEffectiveResolve() {
|
|
232
|
+
const readDirs = this.permissions.readDirs
|
|
233
|
+
? this.permissions.readDirs.map((entry) => path.resolve(entry))
|
|
234
|
+
: undefined;
|
|
235
|
+
return {
|
|
236
|
+
workingDir: this.workingDir,
|
|
237
|
+
writeDirs: Array.from(new Set([...this.permissions.writeDirs.map((entry) => path.resolve(entry)), this.homeDir])),
|
|
238
|
+
...(readDirs ? { readDirs } : {})
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
async readInputPathResolve(rawPath) {
|
|
242
|
+
const normalized = sandboxReadPathNormalize(rawPath, this.homeDir);
|
|
243
|
+
const rewritten = this.pathContainerToHost(normalized);
|
|
244
|
+
const resolved = path.isAbsolute(rewritten) ? rewritten : path.resolve(this.workingDir, rewritten);
|
|
245
|
+
if (await pathExists(resolved)) {
|
|
246
|
+
return resolved;
|
|
247
|
+
}
|
|
248
|
+
const amPmVariant = sandboxReadPathMacOSVariant(resolved);
|
|
249
|
+
if (amPmVariant !== resolved && (await pathExists(amPmVariant))) {
|
|
250
|
+
return amPmVariant;
|
|
251
|
+
}
|
|
252
|
+
const nfdVariant = resolved.normalize("NFD");
|
|
253
|
+
if (nfdVariant !== resolved && (await pathExists(nfdVariant))) {
|
|
254
|
+
return nfdVariant;
|
|
255
|
+
}
|
|
256
|
+
const curlyVariant = resolved.replace(/'/g, "\u2019");
|
|
257
|
+
if (curlyVariant !== resolved && (await pathExists(curlyVariant))) {
|
|
258
|
+
return curlyVariant;
|
|
259
|
+
}
|
|
260
|
+
const nfdCurlyVariant = nfdVariant.replace(/'/g, "\u2019");
|
|
261
|
+
if (nfdCurlyVariant !== resolved && (await pathExists(nfdCurlyVariant))) {
|
|
262
|
+
return nfdCurlyVariant;
|
|
263
|
+
}
|
|
264
|
+
return resolved;
|
|
265
|
+
}
|
|
266
|
+
pathContainerToHost(targetPath) {
|
|
267
|
+
if (!this.docker?.enabled) {
|
|
268
|
+
return targetPath;
|
|
269
|
+
}
|
|
270
|
+
return sandboxPathContainerToHost(this.homeDir, this.docker.userId, targetPath);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
function sandboxReadPathNormalize(rawPath, homeDir) {
|
|
274
|
+
const withoutAtPrefix = rawPath.startsWith("@") ? rawPath.slice(1) : rawPath;
|
|
275
|
+
const normalized = withoutAtPrefix.replace(UNICODE_SPACES, " ");
|
|
276
|
+
if (normalized === "~") {
|
|
277
|
+
return homeDir;
|
|
278
|
+
}
|
|
279
|
+
if (normalized.startsWith("~/")) {
|
|
280
|
+
return homeDir + normalized.slice(1);
|
|
281
|
+
}
|
|
282
|
+
return normalized;
|
|
283
|
+
}
|
|
284
|
+
function sandboxReadPathMacOSVariant(target) {
|
|
285
|
+
return target.replace(/ (AM|PM)\./g, `${NARROW_NO_BREAK_SPACE}$1.`);
|
|
286
|
+
}
|
|
287
|
+
function sandboxReadOutputBuild(input) {
|
|
288
|
+
const { truncation, allLines, requestedPath, totalFileLines, startLine, startLineDisplay, userLimitedLines } = input;
|
|
289
|
+
if (truncation.firstLineExceedsLimit) {
|
|
290
|
+
const firstLineSize = sandboxSizeFormat(Buffer.byteLength(allLines[startLine] ?? "", "utf8"));
|
|
291
|
+
return `[Line ${startLineDisplay} is ${firstLineSize}, exceeds ${sandboxSizeFormat(READ_MAX_BYTES)} limit. Use bash: sed -n '${startLineDisplay}p' ${requestedPath} | head -c ${READ_MAX_BYTES}]`;
|
|
292
|
+
}
|
|
293
|
+
if (truncation.truncated) {
|
|
294
|
+
const endLineDisplay = startLineDisplay + truncation.outputLines - 1;
|
|
295
|
+
const nextOffset = endLineDisplay + 1;
|
|
296
|
+
if (truncation.truncatedBy === "lines") {
|
|
297
|
+
return `${truncation.content}\n\n[Showing lines ${startLineDisplay}-${endLineDisplay} of ${totalFileLines}. Use offset=${nextOffset} to continue.]`;
|
|
298
|
+
}
|
|
299
|
+
return `${truncation.content}\n\n[Showing lines ${startLineDisplay}-${endLineDisplay} of ${totalFileLines} (${sandboxSizeFormat(READ_MAX_BYTES)} limit). Use offset=${nextOffset} to continue.]`;
|
|
300
|
+
}
|
|
301
|
+
if (userLimitedLines !== undefined && startLine + userLimitedLines < allLines.length) {
|
|
302
|
+
const remaining = allLines.length - (startLine + userLimitedLines);
|
|
303
|
+
const nextOffset = startLine + userLimitedLines + 1;
|
|
304
|
+
return `${truncation.content}\n\n[${remaining} more lines in file. Use offset=${nextOffset} to continue.]`;
|
|
305
|
+
}
|
|
306
|
+
return truncation.content;
|
|
307
|
+
}
|
|
308
|
+
function sandboxPathAbsoluteEnsure(target) {
|
|
309
|
+
if (!path.isAbsolute(target)) {
|
|
310
|
+
throw new Error("Path must be absolute.");
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
async function pathRejectIfSymlink(target, message) {
|
|
314
|
+
try {
|
|
315
|
+
const stats = await fs.lstat(target);
|
|
316
|
+
if (stats.isSymbolicLink()) {
|
|
317
|
+
throw new Error(message);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
if (error.code !== "ENOENT") {
|
|
322
|
+
throw error;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
function sandboxDisplayPath(workingDir, target) {
|
|
327
|
+
if (isWithinSecure(workingDir, target)) {
|
|
328
|
+
return path.relative(workingDir, target) || ".";
|
|
329
|
+
}
|
|
330
|
+
return target;
|
|
331
|
+
}
|
|
332
|
+
function sandboxHomePath(homeDir, target) {
|
|
333
|
+
const homeVariants = sandboxMacPathVariants(homeDir);
|
|
334
|
+
const targetVariants = sandboxMacPathVariants(target);
|
|
335
|
+
for (const homeVariant of homeVariants) {
|
|
336
|
+
for (const targetVariant of targetVariants) {
|
|
337
|
+
if (!isWithinSecure(homeVariant, targetVariant)) {
|
|
338
|
+
continue;
|
|
339
|
+
}
|
|
340
|
+
const relative = path.relative(homeVariant, targetVariant);
|
|
341
|
+
if (relative.length === 0) {
|
|
342
|
+
return "~";
|
|
343
|
+
}
|
|
344
|
+
return `~/${relative}`;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return target;
|
|
348
|
+
}
|
|
349
|
+
function sandboxMacPathVariants(target) {
|
|
350
|
+
const resolved = path.resolve(target);
|
|
351
|
+
if (resolved.startsWith("/private/")) {
|
|
352
|
+
return [resolved, resolved.slice("/private".length)];
|
|
353
|
+
}
|
|
354
|
+
return [resolved, path.join("/private", resolved)];
|
|
355
|
+
}
|
|
356
|
+
function sandboxExecCwdResolve(workingDir, requestedCwd) {
|
|
357
|
+
if (!requestedCwd) {
|
|
358
|
+
return workingDir;
|
|
359
|
+
}
|
|
360
|
+
const candidate = path.isAbsolute(requestedCwd)
|
|
361
|
+
? path.resolve(requestedCwd)
|
|
362
|
+
: path.resolve(workingDir, requestedCwd);
|
|
363
|
+
return resolveWorkspacePath(workingDir, candidate);
|
|
364
|
+
}
|
|
365
|
+
function sandboxText(value) {
|
|
366
|
+
if (!value) {
|
|
367
|
+
return "";
|
|
368
|
+
}
|
|
369
|
+
return typeof value === "string" ? value : value.toString("utf8");
|
|
370
|
+
}
|
|
371
|
+
async function pathExists(target) {
|
|
372
|
+
try {
|
|
373
|
+
await fs.access(target);
|
|
374
|
+
return true;
|
|
375
|
+
}
|
|
376
|
+
catch {
|
|
377
|
+
return false;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
async function readTextFileSecure(resolvedPath) {
|
|
381
|
+
const handle = await openSecure(resolvedPath, "r");
|
|
382
|
+
try {
|
|
383
|
+
return await handle.readFile("utf8");
|
|
384
|
+
}
|
|
385
|
+
finally {
|
|
386
|
+
await handle.close();
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
async function readBinaryFileSecure(resolvedPath) {
|
|
390
|
+
const handle = await openSecure(resolvedPath, "r");
|
|
391
|
+
try {
|
|
392
|
+
return await handle.readFile();
|
|
393
|
+
}
|
|
394
|
+
finally {
|
|
395
|
+
await handle.close();
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
async function detectSupportedImageMimeTypeFromFile(resolvedPath) {
|
|
399
|
+
const handle = await openSecure(resolvedPath, "r");
|
|
400
|
+
try {
|
|
401
|
+
const header = Buffer.alloc(16);
|
|
402
|
+
const { bytesRead } = await handle.read(header, 0, header.length, 0);
|
|
403
|
+
if (bytesRead === 0) {
|
|
404
|
+
return null;
|
|
405
|
+
}
|
|
406
|
+
return detectSupportedImageMimeTypeFromHeader(header.subarray(0, bytesRead));
|
|
407
|
+
}
|
|
408
|
+
finally {
|
|
409
|
+
await handle.close();
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
function detectSupportedImageMimeTypeFromHeader(header) {
|
|
413
|
+
if (header.length >= 3 && header[0] === 0xff && header[1] === 0xd8 && header[2] === 0xff) {
|
|
414
|
+
return "image/jpeg";
|
|
415
|
+
}
|
|
416
|
+
if (header.length >= 8 &&
|
|
417
|
+
header[0] === 0x89 &&
|
|
418
|
+
header[1] === 0x50 &&
|
|
419
|
+
header[2] === 0x4e &&
|
|
420
|
+
header[3] === 0x47 &&
|
|
421
|
+
header[4] === 0x0d &&
|
|
422
|
+
header[5] === 0x0a &&
|
|
423
|
+
header[6] === 0x1a &&
|
|
424
|
+
header[7] === 0x0a) {
|
|
425
|
+
return "image/png";
|
|
426
|
+
}
|
|
427
|
+
if (header.length >= 6) {
|
|
428
|
+
const signature = header.subarray(0, 6).toString("ascii");
|
|
429
|
+
if (signature === "GIF87a" || signature === "GIF89a") {
|
|
430
|
+
return "image/gif";
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
if (header.length >= 12 &&
|
|
434
|
+
header.subarray(0, 4).toString("ascii") === "RIFF" &&
|
|
435
|
+
header.subarray(8, 12).toString("ascii") === "WEBP") {
|
|
436
|
+
return "image/webp";
|
|
437
|
+
}
|
|
438
|
+
return null;
|
|
439
|
+
}
|
|
440
|
+
function sandboxSizeFormat(bytes) {
|
|
441
|
+
if (bytes < 1024) {
|
|
442
|
+
return `${bytes}B`;
|
|
443
|
+
}
|
|
444
|
+
if (bytes < 1024 * 1024) {
|
|
445
|
+
return `${(bytes / 1024).toFixed(1)}KB`;
|
|
446
|
+
}
|
|
447
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
448
|
+
}
|
|
449
|
+
function truncateHead(content) {
|
|
450
|
+
const lines = content.split("\n");
|
|
451
|
+
const totalLines = lines.length;
|
|
452
|
+
const totalBytes = Buffer.byteLength(content, "utf8");
|
|
453
|
+
if (totalLines <= READ_MAX_LINES && totalBytes <= READ_MAX_BYTES) {
|
|
454
|
+
return {
|
|
455
|
+
content,
|
|
456
|
+
truncated: false,
|
|
457
|
+
truncatedBy: null,
|
|
458
|
+
totalLines,
|
|
459
|
+
outputLines: totalLines,
|
|
460
|
+
firstLineExceedsLimit: false
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
const firstLineBytes = Buffer.byteLength(lines[0] ?? "", "utf8");
|
|
464
|
+
if (firstLineBytes > READ_MAX_BYTES) {
|
|
465
|
+
return {
|
|
466
|
+
content: "",
|
|
467
|
+
truncated: true,
|
|
468
|
+
truncatedBy: "bytes",
|
|
469
|
+
totalLines,
|
|
470
|
+
outputLines: 0,
|
|
471
|
+
firstLineExceedsLimit: true
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
const outputLines = [];
|
|
475
|
+
let outputBytes = 0;
|
|
476
|
+
let truncatedBy = "lines";
|
|
477
|
+
for (let index = 0; index < lines.length && index < READ_MAX_LINES; index += 1) {
|
|
478
|
+
const line = lines[index] ?? "";
|
|
479
|
+
const lineBytes = Buffer.byteLength(line, "utf8") + (index > 0 ? 1 : 0);
|
|
480
|
+
if (outputBytes + lineBytes > READ_MAX_BYTES) {
|
|
481
|
+
truncatedBy = "bytes";
|
|
482
|
+
break;
|
|
483
|
+
}
|
|
484
|
+
outputLines.push(line);
|
|
485
|
+
outputBytes += lineBytes;
|
|
486
|
+
}
|
|
487
|
+
if (outputLines.length >= READ_MAX_LINES && outputBytes <= READ_MAX_BYTES) {
|
|
488
|
+
truncatedBy = "lines";
|
|
489
|
+
}
|
|
490
|
+
return {
|
|
491
|
+
content: outputLines.join("\n"),
|
|
492
|
+
truncated: true,
|
|
493
|
+
truncatedBy,
|
|
494
|
+
totalLines,
|
|
495
|
+
outputLines: outputLines.length,
|
|
496
|
+
firstLineExceedsLimit: false
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
//# sourceMappingURL=sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../sources/sandbox/sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.spec.d.ts","sourceRoot":"","sources":["../../sources/sandbox/sandbox.spec.ts"],"names":[],"mappings":""}
|