daycare-cli 2026.2.12 → 2026.2.23
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.map +1 -1
- package/dist/engine/agents/agent.js +54 -24
- package/dist/engine/agents/agent.js.map +1 -1
- package/dist/engine/agents/agentSystem.d.ts +9 -1
- package/dist/engine/agents/agentSystem.d.ts.map +1 -1
- package/dist/engine/agents/agentSystem.js +25 -5
- package/dist/engine/agents/agentSystem.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 +3 -0
- package/dist/engine/agents/ops/agentDescriptorCacheKey.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorIsHeartbeat.spec.js +1 -1
- package/dist/engine/agents/ops/agentDescriptorIsHeartbeat.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 +0 -1
- package/dist/engine/agents/ops/agentDescriptorLabel.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorTypes.d.ts +3 -0
- package/dist/engine/agents/ops/agentDescriptorTypes.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentHistoryContext.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentHistoryContext.js +14 -0
- package/dist/engine/agents/ops/agentHistoryContext.js.map +1 -1
- package/dist/engine/agents/ops/agentHistoryContext.spec.js +107 -0
- package/dist/engine/agents/ops/agentHistoryContext.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentHistoryLoadAll.d.ts +3 -2
- package/dist/engine/agents/ops/agentHistoryLoadAll.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentHistoryLoadAll.js +4 -3
- package/dist/engine/agents/ops/agentHistoryLoadAll.js.map +1 -1
- package/dist/engine/agents/ops/agentLoopRun.d.ts +3 -0
- package/dist/engine/agents/ops/agentLoopRun.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentLoopRun.js +43 -7
- package/dist/engine/agents/ops/agentLoopRun.js.map +1 -1
- package/dist/engine/agents/ops/agentLoopRun.spec.js +108 -31
- package/dist/engine/agents/ops/agentLoopRun.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.d.ts +7 -0
- package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.d.ts.map +1 -0
- package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.js +16 -0
- package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.js.map +1 -0
- package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.spec.d.ts +2 -0
- package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.spec.d.ts.map +1 -0
- package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.spec.js +20 -0
- package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.spec.js.map +1 -0
- package/dist/engine/agents/ops/agentModelOverrideApply.d.ts +10 -0
- package/dist/engine/agents/ops/agentModelOverrideApply.d.ts.map +1 -0
- package/dist/engine/agents/ops/agentModelOverrideApply.js +48 -0
- package/dist/engine/agents/ops/agentModelOverrideApply.js.map +1 -0
- package/dist/engine/agents/ops/agentModelOverrideApply.spec.d.ts +2 -0
- package/dist/engine/agents/ops/agentModelOverrideApply.spec.d.ts.map +1 -0
- package/dist/engine/agents/ops/agentModelOverrideApply.spec.js +43 -0
- package/dist/engine/agents/ops/agentModelOverrideApply.spec.js.map +1 -0
- package/dist/engine/agents/ops/agentPromptResolve.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentPromptResolve.js +8 -0
- package/dist/engine/agents/ops/agentPromptResolve.js.map +1 -1
- package/dist/engine/agents/ops/agentPromptResolve.spec.js +8 -0
- package/dist/engine/agents/ops/agentPromptResolve.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPrompt.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPrompt.js +8 -1
- package/dist/engine/agents/ops/agentSystemPrompt.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPrompt.spec.js +39 -8
- package/dist/engine/agents/ops/agentSystemPrompt.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptContext.d.ts +2 -0
- package/dist/engine/agents/ops/agentSystemPromptContext.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.js +1 -3
- package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.js.map +1 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.js +15 -1
- package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.js.map +1 -1
- package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.d.ts +11 -0
- package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.d.ts.map +1 -0
- package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.js +17 -0
- package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.js.map +1 -0
- package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.spec.d.ts +2 -0
- package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.spec.d.ts.map +1 -0
- package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.spec.js +26 -0
- package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.spec.js.map +1 -0
- package/dist/engine/agents/ops/agentTypes.d.ts +8 -0
- package/dist/engine/agents/ops/agentTypes.d.ts.map +1 -1
- package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.d.ts +6 -0
- package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.d.ts.map +1 -0
- package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.js +21 -0
- package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.js.map +1 -0
- package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.spec.d.ts +2 -0
- package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.spec.d.ts.map +1 -0
- package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.spec.js +17 -0
- package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.spec.js.map +1 -0
- package/dist/engine/agents/ops/messageContextReset.js +1 -1
- package/dist/engine/agents/ops/messageContextReset.js.map +1 -1
- package/dist/engine/agents/ops/messageContextReset.spec.js +1 -1
- package/dist/engine/agents/ops/messageContextReset.spec.js.map +1 -1
- package/dist/engine/agents/system/_systemAgents.d.ts.map +1 -1
- package/dist/engine/agents/system/_systemAgents.js +0 -5
- package/dist/engine/agents/system/_systemAgents.js.map +1 -1
- package/dist/engine/agents/system/systemAgentPromptResolve.spec.js +0 -6
- package/dist/engine/agents/system/systemAgentPromptResolve.spec.js.map +1 -1
- package/dist/engine/agents/system/systemAgentTagIs.spec.js +3 -4
- package/dist/engine/agents/system/systemAgentTagIs.spec.js.map +1 -1
- package/dist/engine/apps/appToolExecutorBuild.spec.js +11 -9
- package/dist/engine/apps/appToolExecutorBuild.spec.js.map +1 -1
- package/dist/engine/engine.d.ts +2 -0
- package/dist/engine/engine.d.ts.map +1 -1
- package/dist/engine/engine.js +18 -1
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/ipc/server.d.ts.map +1 -1
- package/dist/engine/ipc/server.js +21 -2
- package/dist/engine/ipc/server.js.map +1 -1
- package/dist/engine/ipc/serverMemoryRoutesRegister.d.ts +24 -0
- package/dist/engine/ipc/serverMemoryRoutesRegister.d.ts.map +1 -0
- package/dist/engine/ipc/serverMemoryRoutesRegister.js +54 -0
- package/dist/engine/ipc/serverMemoryRoutesRegister.js.map +1 -0
- package/dist/engine/ipc/serverMemoryRoutesRegister.spec.d.ts +2 -0
- package/dist/engine/ipc/serverMemoryRoutesRegister.spec.d.ts.map +1 -0
- package/dist/engine/ipc/serverMemoryRoutesRegister.spec.js +157 -0
- package/dist/engine/ipc/serverMemoryRoutesRegister.spec.js.map +1 -0
- package/dist/engine/memory/graph/graphNodeParse.d.ts +7 -0
- package/dist/engine/memory/graph/graphNodeParse.d.ts.map +1 -0
- package/dist/engine/memory/graph/graphNodeParse.js +122 -0
- package/dist/engine/memory/graph/graphNodeParse.js.map +1 -0
- package/dist/engine/memory/graph/graphNodeParse.spec.d.ts +2 -0
- package/dist/engine/memory/graph/graphNodeParse.spec.d.ts.map +1 -0
- package/dist/engine/memory/graph/graphNodeParse.spec.js +68 -0
- package/dist/engine/memory/graph/graphNodeParse.spec.js.map +1 -0
- package/dist/engine/memory/graph/graphNodeSerialize.d.ts +7 -0
- package/dist/engine/memory/graph/graphNodeSerialize.d.ts.map +1 -0
- package/dist/engine/memory/graph/graphNodeSerialize.js +17 -0
- package/dist/engine/memory/graph/graphNodeSerialize.js.map +1 -0
- package/dist/engine/memory/graph/graphNodeSerialize.spec.d.ts +2 -0
- package/dist/engine/memory/graph/graphNodeSerialize.spec.d.ts.map +1 -0
- package/dist/engine/memory/graph/graphNodeSerialize.spec.js +45 -0
- package/dist/engine/memory/graph/graphNodeSerialize.spec.js.map +1 -0
- package/dist/engine/memory/graph/graphRootNodeRead.d.ts +8 -0
- package/dist/engine/memory/graph/graphRootNodeRead.d.ts.map +1 -0
- package/dist/engine/memory/graph/graphRootNodeRead.js +23 -0
- package/dist/engine/memory/graph/graphRootNodeRead.js.map +1 -0
- package/dist/engine/memory/graph/graphRootNodeRead.spec.d.ts +2 -0
- package/dist/engine/memory/graph/graphRootNodeRead.spec.d.ts.map +1 -0
- package/dist/engine/memory/graph/graphRootNodeRead.spec.js +14 -0
- package/dist/engine/memory/graph/graphRootNodeRead.spec.js.map +1 -0
- package/dist/engine/memory/graph/graphStoreRead.d.ts +7 -0
- package/dist/engine/memory/graph/graphStoreRead.d.ts.map +1 -0
- package/dist/engine/memory/graph/graphStoreRead.js +32 -0
- package/dist/engine/memory/graph/graphStoreRead.js.map +1 -0
- package/dist/engine/memory/graph/graphStoreRead.spec.d.ts +2 -0
- package/dist/engine/memory/graph/graphStoreRead.spec.d.ts.map +1 -0
- package/dist/engine/memory/graph/graphStoreRead.spec.js +57 -0
- package/dist/engine/memory/graph/graphStoreRead.spec.js.map +1 -0
- package/dist/engine/memory/graph/graphStoreWrite.d.ts +7 -0
- package/dist/engine/memory/graph/graphStoreWrite.d.ts.map +1 -0
- package/dist/engine/memory/graph/graphStoreWrite.js +18 -0
- package/dist/engine/memory/graph/graphStoreWrite.js.map +1 -0
- package/dist/engine/memory/graph/graphStoreWrite.spec.d.ts +2 -0
- package/dist/engine/memory/graph/graphStoreWrite.spec.d.ts.map +1 -0
- package/dist/engine/memory/graph/graphStoreWrite.spec.js +50 -0
- package/dist/engine/memory/graph/graphStoreWrite.spec.js.map +1 -0
- package/dist/engine/memory/graph/graphTreeBuild.d.ts +9 -0
- package/dist/engine/memory/graph/graphTreeBuild.d.ts.map +1 -0
- package/dist/engine/memory/graph/graphTreeBuild.js +85 -0
- package/dist/engine/memory/graph/graphTreeBuild.js.map +1 -0
- package/dist/engine/memory/graph/graphTreeBuild.spec.d.ts +2 -0
- package/dist/engine/memory/graph/graphTreeBuild.spec.d.ts.map +1 -0
- package/dist/engine/memory/graph/graphTreeBuild.spec.js +46 -0
- package/dist/engine/memory/graph/graphTreeBuild.spec.js.map +1 -0
- package/dist/engine/memory/graph/graphTypes.d.ts +19 -0
- package/dist/engine/memory/graph/graphTypes.d.ts.map +1 -0
- package/dist/engine/memory/graph/graphTypes.js +2 -0
- package/dist/engine/memory/graph/graphTypes.js.map +1 -0
- package/dist/engine/memory/infer/inferObservations.d.ts +22 -0
- package/dist/engine/memory/infer/inferObservations.d.ts.map +1 -0
- package/dist/engine/memory/infer/inferObservations.js +71 -0
- package/dist/engine/memory/infer/inferObservations.js.map +1 -0
- package/dist/engine/memory/infer/utils/formatHistoryMessages.d.ts +9 -0
- package/dist/engine/memory/infer/utils/formatHistoryMessages.d.ts.map +1 -0
- package/dist/engine/memory/infer/utils/formatHistoryMessages.js +50 -0
- package/dist/engine/memory/infer/utils/formatHistoryMessages.js.map +1 -0
- package/dist/engine/memory/infer/utils/formatHistoryMessages.spec.d.ts +2 -0
- package/dist/engine/memory/infer/utils/formatHistoryMessages.spec.d.ts.map +1 -0
- package/dist/engine/memory/infer/utils/formatHistoryMessages.spec.js +109 -0
- package/dist/engine/memory/infer/utils/formatHistoryMessages.spec.js.map +1 -0
- package/dist/engine/memory/infer/utils/parseObservations.d.ts +7 -0
- package/dist/engine/memory/infer/utils/parseObservations.d.ts.map +1 -0
- package/dist/engine/memory/infer/utils/parseObservations.js +24 -0
- package/dist/engine/memory/infer/utils/parseObservations.js.map +1 -0
- package/dist/engine/memory/infer/utils/parseObservations.spec.d.ts +2 -0
- package/dist/engine/memory/infer/utils/parseObservations.spec.d.ts.map +1 -0
- package/dist/engine/memory/infer/utils/parseObservations.spec.js +31 -0
- package/dist/engine/memory/infer/utils/parseObservations.spec.js.map +1 -0
- package/dist/engine/memory/memory.d.ts +18 -0
- package/dist/engine/memory/memory.d.ts.map +1 -0
- package/dist/engine/memory/memory.js +71 -0
- package/dist/engine/memory/memory.js.map +1 -0
- package/dist/engine/memory/memory.spec.d.ts +2 -0
- package/dist/engine/memory/memory.spec.d.ts.map +1 -0
- package/dist/engine/memory/memory.spec.js +68 -0
- package/dist/engine/memory/memory.spec.js.map +1 -0
- package/dist/engine/memory/memorySessionObserve.d.ts +14 -2
- package/dist/engine/memory/memorySessionObserve.d.ts.map +1 -1
- package/dist/engine/memory/memorySessionObserve.js +13 -3
- package/dist/engine/memory/memorySessionObserve.js.map +1 -1
- package/dist/engine/memory/memorySessionObserve.spec.js +129 -4
- package/dist/engine/memory/memorySessionObserve.spec.js.map +1 -1
- package/dist/engine/memory/memoryWorker.d.ts +19 -2
- package/dist/engine/memory/memoryWorker.d.ts.map +1 -1
- package/dist/engine/memory/memoryWorker.js +46 -10
- package/dist/engine/memory/memoryWorker.js.map +1 -1
- package/dist/engine/memory/memoryWorker.spec.js +136 -21
- package/dist/engine/memory/memoryWorker.spec.js.map +1 -1
- package/dist/engine/memory/observationLogAppend.d.ts +9 -0
- package/dist/engine/memory/observationLogAppend.d.ts.map +1 -0
- package/dist/engine/memory/observationLogAppend.js +26 -0
- package/dist/engine/memory/observationLogAppend.js.map +1 -0
- package/dist/engine/memory/observationLogAppend.spec.d.ts +2 -0
- package/dist/engine/memory/observationLogAppend.spec.d.ts.map +1 -0
- package/dist/engine/memory/observationLogAppend.spec.js +67 -0
- package/dist/engine/memory/observationLogAppend.spec.js.map +1 -0
- package/dist/engine/modules/executablePrompts/executablePromptExpand.d.ts.map +1 -1
- package/dist/engine/modules/executablePrompts/executablePromptExpand.js +2 -1
- package/dist/engine/modules/executablePrompts/executablePromptExpand.js.map +1 -1
- package/dist/engine/modules/executablePrompts/executablePromptExpand.spec.js +1 -0
- package/dist/engine/modules/executablePrompts/executablePromptExpand.spec.js.map +1 -1
- package/dist/engine/modules/inference/router.d.ts +1 -0
- package/dist/engine/modules/inference/router.d.ts.map +1 -1
- package/dist/engine/modules/inference/router.js +1 -0
- package/dist/engine/modules/inference/router.js.map +1 -1
- package/dist/engine/modules/rlm/rlmExecute.d.ts.map +1 -1
- package/dist/engine/modules/rlm/rlmExecute.js +2 -1
- package/dist/engine/modules/rlm/rlmExecute.js.map +1 -1
- package/dist/engine/modules/rlm/rlmExecute.spec.js +1 -0
- package/dist/engine/modules/rlm/rlmExecute.spec.js.map +1 -1
- package/dist/engine/modules/rlm/rlmRestore.d.ts.map +1 -1
- package/dist/engine/modules/rlm/rlmRestore.js +2 -1
- package/dist/engine/modules/rlm/rlmRestore.js.map +1 -1
- package/dist/engine/modules/rlm/rlmRestore.spec.js +1 -0
- package/dist/engine/modules/rlm/rlmRestore.spec.js.map +1 -1
- package/dist/engine/modules/rlm/rlmResultTextBuild.d.ts.map +1 -1
- package/dist/engine/modules/rlm/rlmResultTextBuild.js +12 -3
- package/dist/engine/modules/rlm/rlmResultTextBuild.js.map +1 -1
- package/dist/engine/modules/rlm/rlmResultTextBuild.spec.d.ts +2 -0
- package/dist/engine/modules/rlm/rlmResultTextBuild.spec.d.ts.map +1 -0
- package/dist/engine/modules/rlm/rlmResultTextBuild.spec.js +32 -0
- package/dist/engine/modules/rlm/rlmResultTextBuild.spec.js.map +1 -0
- package/dist/engine/modules/rlm/rlmTool.d.ts.map +1 -1
- package/dist/engine/modules/rlm/rlmTool.js +2 -1
- package/dist/engine/modules/rlm/rlmTool.js.map +1 -1
- package/dist/engine/modules/rlm/rlmTool.spec.js +73 -0
- package/dist/engine/modules/rlm/rlmTool.spec.js.map +1 -1
- package/dist/engine/modules/rlm/rlmToolResultBuild.d.ts.map +1 -1
- package/dist/engine/modules/rlm/rlmToolResultBuild.js +5 -2
- package/dist/engine/modules/rlm/rlmToolResultBuild.js.map +1 -1
- package/dist/engine/modules/rlm/rlmToolResultBuild.spec.d.ts +2 -0
- package/dist/engine/modules/rlm/rlmToolResultBuild.spec.d.ts.map +1 -0
- package/dist/engine/modules/rlm/rlmToolResultBuild.spec.js +25 -0
- package/dist/engine/modules/rlm/rlmToolResultBuild.spec.js.map +1 -0
- package/dist/engine/modules/rlm/rlmToolsForContextResolve.d.ts +9 -0
- package/dist/engine/modules/rlm/rlmToolsForContextResolve.d.ts.map +1 -0
- package/dist/engine/modules/rlm/rlmToolsForContextResolve.js +18 -0
- package/dist/engine/modules/rlm/rlmToolsForContextResolve.js.map +1 -0
- package/dist/engine/modules/rlm/rlmToolsForContextResolve.spec.d.ts +2 -0
- package/dist/engine/modules/rlm/rlmToolsForContextResolve.spec.d.ts.map +1 -0
- package/dist/engine/modules/rlm/rlmToolsForContextResolve.spec.js +77 -0
- package/dist/engine/modules/rlm/rlmToolsForContextResolve.spec.js.map +1 -0
- package/dist/engine/modules/toolResolver.d.ts +3 -2
- package/dist/engine/modules/toolResolver.d.ts.map +1 -1
- package/dist/engine/modules/toolResolver.js +31 -9
- package/dist/engine/modules/toolResolver.js.map +1 -1
- package/dist/engine/modules/toolResolver.spec.js +101 -0
- package/dist/engine/modules/toolResolver.spec.js.map +1 -1
- package/dist/engine/modules/tools/agentModelSetToolBuild.d.ts +10 -0
- package/dist/engine/modules/tools/agentModelSetToolBuild.d.ts.map +1 -0
- package/dist/engine/modules/tools/agentModelSetToolBuild.js +94 -0
- package/dist/engine/modules/tools/agentModelSetToolBuild.js.map +1 -0
- package/dist/engine/modules/tools/agentModelSetToolBuild.spec.d.ts +2 -0
- package/dist/engine/modules/tools/agentModelSetToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/modules/tools/agentModelSetToolBuild.spec.js +45 -0
- package/dist/engine/modules/tools/agentModelSetToolBuild.spec.js.map +1 -0
- package/dist/engine/modules/tools/channelSendTool.js +3 -0
- package/dist/engine/modules/tools/channelSendTool.js.map +1 -1
- package/dist/engine/modules/tools/memoryNodeReadToolBuild.d.ts +8 -0
- package/dist/engine/modules/tools/memoryNodeReadToolBuild.d.ts.map +1 -0
- package/dist/engine/modules/tools/memoryNodeReadToolBuild.js +99 -0
- package/dist/engine/modules/tools/memoryNodeReadToolBuild.js.map +1 -0
- package/dist/engine/modules/tools/memoryNodeReadToolBuild.spec.d.ts +2 -0
- package/dist/engine/modules/tools/memoryNodeReadToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/modules/tools/memoryNodeReadToolBuild.spec.js +112 -0
- package/dist/engine/modules/tools/memoryNodeReadToolBuild.spec.js.map +1 -0
- package/dist/engine/modules/tools/memoryNodeWriteToolBuild.d.ts +10 -0
- package/dist/engine/modules/tools/memoryNodeWriteToolBuild.d.ts.map +1 -0
- package/dist/engine/modules/tools/memoryNodeWriteToolBuild.js +115 -0
- package/dist/engine/modules/tools/memoryNodeWriteToolBuild.js.map +1 -0
- package/dist/engine/modules/tools/memoryNodeWriteToolBuild.spec.d.ts +2 -0
- package/dist/engine/modules/tools/memoryNodeWriteToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/modules/tools/memoryNodeWriteToolBuild.spec.js +163 -0
- package/dist/engine/modules/tools/memoryNodeWriteToolBuild.spec.js.map +1 -0
- package/dist/engine/modules/tools/toolResultTruncate.d.ts +1 -1
- package/dist/engine/modules/tools/toolResultTruncate.d.ts.map +1 -1
- package/dist/engine/modules/tools/toolResultTruncate.js +46 -22
- package/dist/engine/modules/tools/toolResultTruncate.js.map +1 -1
- package/dist/engine/modules/tools/toolResultTruncate.spec.js +28 -2
- package/dist/engine/modules/tools/toolResultTruncate.spec.js.map +1 -1
- package/dist/engine/modules/tools/types.d.ts +10 -1
- package/dist/engine/modules/tools/types.d.ts.map +1 -1
- package/dist/engine/permissions/permissionBuildUser.d.ts.map +1 -1
- package/dist/engine/permissions/permissionBuildUser.js +5 -1
- package/dist/engine/permissions/permissionBuildUser.js.map +1 -1
- package/dist/engine/permissions/permissionBuildUser.spec.js +2 -1
- package/dist/engine/permissions/permissionBuildUser.spec.js.map +1 -1
- package/dist/engine/permissions.d.ts +1 -0
- package/dist/engine/permissions.d.ts.map +1 -1
- package/dist/engine/permissions.js +12 -2
- package/dist/engine/permissions.js.map +1 -1
- package/dist/engine/plugins/descriptor.d.ts +2 -2
- package/dist/engine/processes/processes.js +2 -1
- package/dist/engine/processes/processes.js.map +1 -1
- package/dist/engine/processes/processes.spec.js +5 -3
- package/dist/engine/processes/processes.spec.js.map +1 -1
- package/dist/engine/users/userHome.d.ts +1 -0
- package/dist/engine/users/userHome.d.ts.map +1 -1
- package/dist/engine/users/userHome.js +2 -0
- package/dist/engine/users/userHome.js.map +1 -1
- package/dist/engine/users/userHome.spec.js +1 -0
- package/dist/engine/users/userHome.spec.js.map +1 -1
- package/dist/engine/users/userHomeEnsure.d.ts.map +1 -1
- package/dist/engine/users/userHomeEnsure.js +1 -0
- package/dist/engine/users/userHomeEnsure.js.map +1 -1
- package/dist/engine/users/userHomeEnsure.spec.js +1 -0
- package/dist/engine/users/userHomeEnsure.spec.js.map +1 -1
- package/dist/plugins/dashboard/site/404.html +1 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/{315-7c3dbac7865a2549.js → 129-0781090dbd74ef24.js} +1 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/315-e0c2965b599a90c8.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/app/agent/page-2d345f6346edc077.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/app/agents/page-326ff3cf564198c7.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/app/automations/page-6a39540c21d6b25b.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/app/connectors/page-92a732501885071f.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/app/memory/page-74c0b70421c567ab.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/app/page-c4cbe1c7aca2ecd7.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/app/processes/page-bf7900fe583d361e.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/app/providers/page-b2e79cb03244c267.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/app/signals/page-2992aa1807b6fdab.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/app/telemetry/{page-98aa9367902606e3.js → page-eabe78b4fbbf1439.js} +1 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/tools/page-4a2e5a16190af659.js +1 -0
- package/dist/plugins/dashboard/site/_next/static/chunks/{main-2004b9415696334d.js → main-5352cc0d54d797b4.js} +1 -1
- package/dist/plugins/dashboard/site/_next/static/css/42d76d007d742231.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 -0
- package/dist/plugins/dashboard/site/memory.txt +7 -0
- 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 +2 -2
- package/dist/plugins/dashboard/site/tools.html +1 -1
- package/dist/plugins/dashboard/site/tools.txt +2 -2
- package/dist/plugins/shell/tool.d.ts +1 -0
- package/dist/plugins/shell/tool.d.ts.map +1 -1
- package/dist/plugins/shell/tool.js +16 -5
- package/dist/plugins/shell/tool.js.map +1 -1
- package/dist/plugins/shell/tool.spec.js +33 -6
- package/dist/plugins/shell/tool.spec.js.map +1 -1
- package/dist/prompts/SYSTEM_AGENCY.md +1 -1
- package/dist/prompts/SYSTEM_PERMISSIONS.md +4 -25
- package/dist/prompts/memory/MEMORY_AGENT.md +148 -0
- package/dist/prompts/memory/MEMORY_ROOT.md +322 -0
- package/dist/prompts/memory/OBSERVE.md +74 -0
- package/dist/sandbox/runtime.spec.js +3 -1
- package/dist/sandbox/runtime.spec.js.map +1 -1
- package/dist/sandbox/sandboxCanRead.d.ts.map +1 -1
- package/dist/sandbox/sandboxCanRead.js +26 -2
- package/dist/sandbox/sandboxCanRead.js.map +1 -1
- package/dist/sandbox/sandboxCanRead.spec.js +51 -8
- package/dist/sandbox/sandboxCanRead.spec.js.map +1 -1
- package/dist/sandbox/sandboxCanWrite.d.ts.map +1 -1
- package/dist/sandbox/sandboxCanWrite.js +11 -0
- package/dist/sandbox/sandboxCanWrite.js.map +1 -1
- package/dist/sandbox/sandboxCanWrite.spec.js +32 -1
- package/dist/sandbox/sandboxCanWrite.spec.js.map +1 -1
- package/dist/sandbox/sandboxDangerousFileCheck.d.ts +11 -0
- package/dist/sandbox/sandboxDangerousFileCheck.d.ts.map +1 -0
- package/dist/sandbox/sandboxDangerousFileCheck.js +37 -0
- package/dist/sandbox/sandboxDangerousFileCheck.js.map +1 -0
- package/dist/sandbox/sandboxDangerousFileCheck.spec.d.ts +2 -0
- package/dist/sandbox/sandboxDangerousFileCheck.spec.d.ts.map +1 -0
- package/dist/sandbox/sandboxDangerousFileCheck.spec.js +25 -0
- package/dist/sandbox/sandboxDangerousFileCheck.spec.js.map +1 -0
- package/dist/sandbox/sandboxDangerousFilesBuild.d.ts +11 -0
- package/dist/sandbox/sandboxDangerousFilesBuild.d.ts.map +1 -0
- package/dist/sandbox/sandboxDangerousFilesBuild.js +23 -0
- package/dist/sandbox/sandboxDangerousFilesBuild.js.map +1 -0
- package/dist/sandbox/sandboxDangerousFilesBuild.spec.d.ts +2 -0
- package/dist/sandbox/sandboxDangerousFilesBuild.spec.d.ts.map +1 -0
- package/dist/sandbox/sandboxDangerousFilesBuild.spec.js +31 -0
- package/dist/sandbox/sandboxDangerousFilesBuild.spec.js.map +1 -0
- package/dist/sandbox/sandboxFilesystemPolicyBuild.d.ts.map +1 -1
- package/dist/sandbox/sandboxFilesystemPolicyBuild.js +5 -47
- package/dist/sandbox/sandboxFilesystemPolicyBuild.js.map +1 -1
- package/dist/sandbox/sandboxPathDenyCheck.d.ts +6 -0
- package/dist/sandbox/sandboxPathDenyCheck.d.ts.map +1 -0
- package/dist/sandbox/sandboxPathDenyCheck.js +26 -0
- package/dist/sandbox/sandboxPathDenyCheck.js.map +1 -0
- package/dist/sandbox/sandboxPathDenyCheck.spec.d.ts +2 -0
- package/dist/sandbox/sandboxPathDenyCheck.spec.d.ts.map +1 -0
- package/dist/sandbox/sandboxPathDenyCheck.spec.js +23 -0
- package/dist/sandbox/sandboxPathDenyCheck.spec.js.map +1 -0
- package/dist/sandbox/sandboxSensitiveDenyPathsBuild.d.ts +11 -0
- package/dist/sandbox/sandboxSensitiveDenyPathsBuild.d.ts.map +1 -0
- package/dist/sandbox/sandboxSensitiveDenyPathsBuild.js +63 -0
- package/dist/sandbox/sandboxSensitiveDenyPathsBuild.js.map +1 -0
- package/dist/sandbox/sandboxSensitiveDenyPathsBuild.spec.d.ts +2 -0
- package/dist/sandbox/sandboxSensitiveDenyPathsBuild.spec.d.ts.map +1 -0
- package/dist/sandbox/sandboxSensitiveDenyPathsBuild.spec.js +52 -0
- package/dist/sandbox/sandboxSensitiveDenyPathsBuild.spec.js.map +1 -0
- package/dist/skills/memory-document/SKILL.md +134 -0
- package/dist/skills/skills/memory-document/SKILL.md +134 -0
- package/dist/storage/historyRepository.d.ts +1 -1
- package/dist/storage/historyRepository.d.ts.map +1 -1
- package/dist/storage/historyRepository.js +5 -5
- package/dist/storage/historyRepository.js.map +1 -1
- package/dist/storage/processesRepository.js +9 -3
- package/dist/storage/processesRepository.js.map +1 -1
- package/dist/types.d.ts +4 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/stringTruncateHeadTail.d.ts +6 -0
- package/dist/utils/stringTruncateHeadTail.d.ts.map +1 -0
- package/dist/utils/stringTruncateHeadTail.js +18 -0
- package/dist/utils/stringTruncateHeadTail.js.map +1 -0
- package/dist/utils/stringTruncateHeadTail.spec.d.ts +2 -0
- package/dist/utils/stringTruncateHeadTail.spec.d.ts.map +1 -0
- package/dist/utils/stringTruncateHeadTail.spec.js +20 -0
- package/dist/utils/stringTruncateHeadTail.spec.js.map +1 -0
- package/dist/utils/stringTruncateTail.d.ts +6 -0
- package/dist/utils/stringTruncateTail.d.ts.map +1 -0
- package/dist/utils/stringTruncateTail.js +15 -0
- package/dist/utils/stringTruncateTail.js.map +1 -0
- package/dist/utils/stringTruncateTail.spec.d.ts +2 -0
- package/dist/utils/stringTruncateTail.spec.d.ts.map +1 -0
- package/dist/utils/stringTruncateTail.spec.js +19 -0
- package/dist/utils/stringTruncateTail.spec.js.map +1 -0
- package/package.json +1 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/668-ebfa412e61ce0ba6.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/agent/page-22dfc72e39faa099.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/agents/page-7b0c562c7534861a.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/automations/page-6245088e82da3e1c.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/connectors/page-036fb8590b50cc57.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/page-8c0afc21c643ff8b.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/processes/page-98da30b493398bf7.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/providers/page-f0d02a91a69b9eb8.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/signals/page-44ccbe1e003b1905.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/chunks/app/tools/page-6ff89d201c006847.js +0 -1
- package/dist/plugins/dashboard/site/_next/static/css/5e0d68fc118b66c8.css +0 -5
- package/dist/prompts/ACTORS.md +0 -37
- package/dist/prompts/ARCHITECT.md +0 -36
- package/dist/prompts/PERMISSIONS.md +0 -63
- /package/dist/plugins/dashboard/site/_next/static/{dkIRezLpmA4xSr6Bj5DQ6 → 9-NVJBP-YwBbxw-w3gjmQ}/_buildManifest.js +0 -0
- /package/dist/plugins/dashboard/site/_next/static/{dkIRezLpmA4xSr6Bj5DQ6 → 9-NVJBP-YwBbxw-w3gjmQ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks whether a target path is contained in any denied directory path.
|
|
3
|
+
* Expects: target and denyPaths are absolute or resolvable paths.
|
|
4
|
+
*/
|
|
5
|
+
export declare function sandboxPathDenyCheck(target: string, denyPaths: string[]): boolean;
|
|
6
|
+
//# sourceMappingURL=sandboxPathDenyCheck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandboxPathDenyCheck.d.ts","sourceRoot":"","sources":["../../sources/sandbox/sandboxPathDenyCheck.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAQjF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { isWithinSecure } from "./pathResolveSecure.js";
|
|
4
|
+
/**
|
|
5
|
+
* Checks whether a target path is contained in any denied directory path.
|
|
6
|
+
* Expects: target and denyPaths are absolute or resolvable paths.
|
|
7
|
+
*/
|
|
8
|
+
export function sandboxPathDenyCheck(target, denyPaths) {
|
|
9
|
+
const resolvedTarget = existingPathResolve(target);
|
|
10
|
+
for (const denyPath of denyPaths) {
|
|
11
|
+
if (isWithinSecure(existingPathResolve(denyPath), resolvedTarget)) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
function existingPathResolve(target) {
|
|
18
|
+
const resolved = path.resolve(target);
|
|
19
|
+
try {
|
|
20
|
+
return fs.realpathSync(resolved);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return resolved;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=sandboxPathDenyCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandboxPathDenyCheck.js","sourceRoot":"","sources":["../../sources/sandbox/sandboxPathDenyCheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,SAAmB;IACpE,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,cAAc,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,QAAQ,CAAC;IACpB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandboxPathDenyCheck.spec.d.ts","sourceRoot":"","sources":["../../sources/sandbox/sandboxPathDenyCheck.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { sandboxPathDenyCheck } from "./sandboxPathDenyCheck.js";
|
|
4
|
+
describe("sandboxPathDenyCheck", () => {
|
|
5
|
+
it("returns true when target is inside a denied directory", () => {
|
|
6
|
+
const denied = ["/home/alice/.ssh", "/etc/ssh"];
|
|
7
|
+
const target = "/home/alice/.ssh/id_rsa";
|
|
8
|
+
expect(sandboxPathDenyCheck(target, denied)).toBe(true);
|
|
9
|
+
});
|
|
10
|
+
it("returns true when target matches a denied directory exactly", () => {
|
|
11
|
+
const target = path.resolve("/etc/ssh");
|
|
12
|
+
expect(sandboxPathDenyCheck(target, ["/etc/ssh"])).toBe(true);
|
|
13
|
+
});
|
|
14
|
+
it("returns false when target is outside denied directories", () => {
|
|
15
|
+
const target = "/home/alice/projects/daycare/readme.md";
|
|
16
|
+
expect(sandboxPathDenyCheck(target, ["/home/alice/.ssh", "/etc/ssh"])).toBe(false);
|
|
17
|
+
});
|
|
18
|
+
it("does not treat sibling directory names as contained", () => {
|
|
19
|
+
const target = "/home/alice/.ssh-backup/id_rsa";
|
|
20
|
+
expect(sandboxPathDenyCheck(target, ["/home/alice/.ssh"])).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=sandboxPathDenyCheck.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandboxPathDenyCheck.spec.js","sourceRoot":"","sources":["../../sources/sandbox/sandboxPathDenyCheck.spec.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,yBAAyB,CAAC;QAEzC,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAExC,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG,wCAAwC,CAAC;QAExD,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC3D,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAEhD,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type SandboxSensitiveDenyPathsBuildInput = {
|
|
2
|
+
homeDir?: string;
|
|
3
|
+
platform?: NodeJS.Platform;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Builds the shared sensitive filesystem deny-list used by sandbox checks.
|
|
7
|
+
* Expects: homeDir, when provided, is an absolute or resolvable path.
|
|
8
|
+
*/
|
|
9
|
+
export declare function sandboxSensitiveDenyPathsBuild(input?: SandboxSensitiveDenyPathsBuildInput): string[];
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=sandboxSensitiveDenyPathsBuild.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandboxSensitiveDenyPathsBuild.d.ts","sourceRoot":"","sources":["../../sources/sandbox/sandboxSensitiveDenyPathsBuild.ts"],"names":[],"mappings":"AAGA,KAAK,mCAAmC,GAAG;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC9B,CAAC;AA4CF;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,GAAE,mCAAwC,GAAG,MAAM,EAAE,CAexG"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const COMMON_HOME_RELATIVE_DENY_PATHS = [
|
|
4
|
+
".ssh",
|
|
5
|
+
".gnupg",
|
|
6
|
+
".aws",
|
|
7
|
+
".kube",
|
|
8
|
+
".docker",
|
|
9
|
+
".config/gcloud",
|
|
10
|
+
".config/gh",
|
|
11
|
+
".config/op",
|
|
12
|
+
".config/1Password",
|
|
13
|
+
".local/share/keyrings",
|
|
14
|
+
".npmrc",
|
|
15
|
+
".pypirc",
|
|
16
|
+
".netrc",
|
|
17
|
+
".git-credentials"
|
|
18
|
+
];
|
|
19
|
+
const COMMON_SYSTEM_DENY_PATHS = [
|
|
20
|
+
"/etc/ssh",
|
|
21
|
+
"/etc/sudoers",
|
|
22
|
+
"/etc/sudoers.d",
|
|
23
|
+
"/etc/shadow",
|
|
24
|
+
"/etc/gshadow",
|
|
25
|
+
"/etc/ssl/private"
|
|
26
|
+
];
|
|
27
|
+
const DARWIN_HOME_RELATIVE_DENY_PATHS = [
|
|
28
|
+
"Library/Keychains",
|
|
29
|
+
"Library/Application Support/iCloud",
|
|
30
|
+
"Library/Application Support/com.apple.TCC",
|
|
31
|
+
"Library/Group Containers"
|
|
32
|
+
];
|
|
33
|
+
const DARWIN_SYSTEM_DENY_PATHS = [
|
|
34
|
+
"/private/etc/ssh",
|
|
35
|
+
"/private/etc/sudoers",
|
|
36
|
+
"/private/etc/sudoers.d",
|
|
37
|
+
"/private/etc/master.passwd"
|
|
38
|
+
];
|
|
39
|
+
const LINUX_SYSTEM_DENY_PATHS = ["/root/.ssh"];
|
|
40
|
+
/**
|
|
41
|
+
* Builds the shared sensitive filesystem deny-list used by sandbox checks.
|
|
42
|
+
* Expects: homeDir, when provided, is an absolute or resolvable path.
|
|
43
|
+
*/
|
|
44
|
+
export function sandboxSensitiveDenyPathsBuild(input = {}) {
|
|
45
|
+
const platform = input.platform ?? process.platform;
|
|
46
|
+
const homeDir = path.resolve(input.homeDir ?? os.homedir());
|
|
47
|
+
const platformHomeDeny = platform === "darwin" ? DARWIN_HOME_RELATIVE_DENY_PATHS.map((entry) => path.resolve(homeDir, entry)) : [];
|
|
48
|
+
const platformSystemDeny = platform === "darwin" ? DARWIN_SYSTEM_DENY_PATHS : platform === "linux" ? LINUX_SYSTEM_DENY_PATHS : [];
|
|
49
|
+
return dedupeResolvedPaths([
|
|
50
|
+
...COMMON_HOME_RELATIVE_DENY_PATHS.map((entry) => path.resolve(homeDir, entry)),
|
|
51
|
+
...platformHomeDeny,
|
|
52
|
+
...COMMON_SYSTEM_DENY_PATHS,
|
|
53
|
+
...platformSystemDeny
|
|
54
|
+
]);
|
|
55
|
+
}
|
|
56
|
+
function dedupeResolvedPaths(values) {
|
|
57
|
+
const resolved = values
|
|
58
|
+
.map((entry) => entry.trim())
|
|
59
|
+
.filter((entry) => entry.length > 0)
|
|
60
|
+
.map((entry) => path.resolve(entry));
|
|
61
|
+
return Array.from(new Set(resolved));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=sandboxSensitiveDenyPathsBuild.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandboxSensitiveDenyPathsBuild.js","sourceRoot":"","sources":["../../sources/sandbox/sandboxSensitiveDenyPathsBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,MAAM,+BAA+B,GAAG;IACpC,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,mBAAmB;IACnB,uBAAuB;IACvB,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,kBAAkB;CACrB,CAAC;AAEF,MAAM,wBAAwB,GAAG;IAC7B,UAAU;IACV,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,kBAAkB;CACrB,CAAC;AAEF,MAAM,+BAA+B,GAAG;IACpC,mBAAmB;IACnB,oCAAoC;IACpC,2CAA2C;IAC3C,0BAA0B;CAC7B,CAAC;AAEF,MAAM,wBAAwB,GAAG;IAC7B,kBAAkB;IAClB,sBAAsB;IACtB,wBAAwB;IACxB,4BAA4B;CAC/B,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,YAAY,CAAC,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,QAA6C,EAAE;IAC1F,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAE5D,MAAM,gBAAgB,GAClB,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9G,MAAM,kBAAkB,GACpB,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3G,OAAO,mBAAmB,CAAC;QACvB,GAAG,+BAA+B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/E,GAAG,gBAAgB;QACnB,GAAG,wBAAwB;QAC3B,GAAG,kBAAkB;KACxB,CAAC,CAAC;AACP,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAgB;IACzC,MAAM,QAAQ,GAAG,MAAM;SAClB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SACnC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandboxSensitiveDenyPathsBuild.spec.d.ts","sourceRoot":"","sources":["../../sources/sandbox/sandboxSensitiveDenyPathsBuild.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { sandboxSensitiveDenyPathsBuild } from "./sandboxSensitiveDenyPathsBuild.js";
|
|
4
|
+
describe("sandboxSensitiveDenyPathsBuild", () => {
|
|
5
|
+
it("includes common and linux-specific deny paths", () => {
|
|
6
|
+
const result = sandboxSensitiveDenyPathsBuild({
|
|
7
|
+
platform: "linux",
|
|
8
|
+
homeDir: "/home/alice"
|
|
9
|
+
});
|
|
10
|
+
expect(result).toEqual(expect.arrayContaining([
|
|
11
|
+
path.resolve("/home/alice/.ssh"),
|
|
12
|
+
path.resolve("/home/alice/.gnupg"),
|
|
13
|
+
path.resolve("/home/alice/.config/gh"),
|
|
14
|
+
path.resolve("/home/alice/.git-credentials"),
|
|
15
|
+
path.resolve("/etc/ssh"),
|
|
16
|
+
path.resolve("/etc/sudoers"),
|
|
17
|
+
path.resolve("/etc/ssl/private"),
|
|
18
|
+
path.resolve("/root/.ssh")
|
|
19
|
+
]));
|
|
20
|
+
});
|
|
21
|
+
it("includes common and macOS-specific deny paths", () => {
|
|
22
|
+
const result = sandboxSensitiveDenyPathsBuild({
|
|
23
|
+
platform: "darwin",
|
|
24
|
+
homeDir: "/Users/alice"
|
|
25
|
+
});
|
|
26
|
+
expect(result).toEqual(expect.arrayContaining([
|
|
27
|
+
path.resolve("/Users/alice/.ssh"),
|
|
28
|
+
path.resolve("/Users/alice/Library/Keychains"),
|
|
29
|
+
path.resolve("/Users/alice/Library/Application Support/com.apple.TCC"),
|
|
30
|
+
path.resolve("/private/etc/master.passwd"),
|
|
31
|
+
path.resolve("/etc/ssh")
|
|
32
|
+
]));
|
|
33
|
+
});
|
|
34
|
+
it("does not include platform-specific entries for unsupported platforms", () => {
|
|
35
|
+
const result = sandboxSensitiveDenyPathsBuild({
|
|
36
|
+
platform: "win32",
|
|
37
|
+
homeDir: "/Users/alice"
|
|
38
|
+
});
|
|
39
|
+
expect(result).toContain(path.resolve("/Users/alice/.ssh"));
|
|
40
|
+
expect(result).not.toContain(path.resolve("/Users/alice/Library/Keychains"));
|
|
41
|
+
expect(result).not.toContain(path.resolve("/root/.ssh"));
|
|
42
|
+
expect(result).not.toContain(path.resolve("/private/etc/master.passwd"));
|
|
43
|
+
});
|
|
44
|
+
it("dedupes resolved paths", () => {
|
|
45
|
+
const result = sandboxSensitiveDenyPathsBuild({
|
|
46
|
+
platform: "linux",
|
|
47
|
+
homeDir: "/home/alice/."
|
|
48
|
+
});
|
|
49
|
+
expect(new Set(result).size).toBe(result.length);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=sandboxSensitiveDenyPathsBuild.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandboxSensitiveDenyPathsBuild.spec.js","sourceRoot":"","sources":["../../sources/sandbox/sandboxSensitiveDenyPathsBuild.spec.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,8BAA8B,CAAC;YAC1C,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,aAAa;SACzB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAClB,MAAM,CAAC,eAAe,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;SAC7B,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,8BAA8B,CAAC;YAC1C,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,cAAc;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAClB,MAAM,CAAC,eAAe,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,wDAAwD,CAAC;YACtE,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;SAC3B,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC5E,MAAM,MAAM,GAAG,8BAA8B,CAAC;YAC1C,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,cAAc;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,8BAA8B,CAAC;YAC1C,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,eAAe;SAC3B,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: memory-document
|
|
3
|
+
description: Write docs like code — Minto pyramid, MECE sections, BFO ontology, Mermaid diagrams, ground truth sources. Applies to any .md file.
|
|
4
|
+
version: "2.0.0"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## How to Write a Document
|
|
8
|
+
|
|
9
|
+
Write docs like code. Fractal structure where each level is complete. No redundancy — reference, don't repeat. Every claim has a source.
|
|
10
|
+
|
|
11
|
+
```mermaid
|
|
12
|
+
graph TD
|
|
13
|
+
Thesis[Thesis: 1 sentence] --> Overview[Overview: 1 paragraph]
|
|
14
|
+
Overview --> Diagrams[Mermaid: TD + LR]
|
|
15
|
+
Diagrams --> Sections[MECE Sections 1.0–7.0]
|
|
16
|
+
Sections --> Details[¶1, ¶2, ¶3 per section]
|
|
17
|
+
Sources[Ground Truth] --> Sections
|
|
18
|
+
Sources --> Details
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 1.0 The Stack
|
|
22
|
+
|
|
23
|
+
Six rules. Use internal names here for clarity — don't leak them into the actual doc output.
|
|
24
|
+
|
|
25
|
+
¶1 **Minto** — top-down. Thesis → overview → sections → details. Reader gets the point before the evidence.
|
|
26
|
+
|
|
27
|
+
¶2 **MECE** — sections don't overlap, but cover everything. 3–7 top-level sections. If you can't draw a clean boundary between two sections, merge them.
|
|
28
|
+
|
|
29
|
+
¶3 **BFO** — separate what exists (continuants) from what happens (occurrents). TD diagrams for structure, LR diagrams for process. This isn't decoration — it forces you to find the real shape of your content.
|
|
30
|
+
|
|
31
|
+
¶4 **Fractal** — each subsection mirrors the whole. Own thesis sentence, own diagram if needed, own numbered paragraphs. Expand only if it earns the depth.
|
|
32
|
+
|
|
33
|
+
¶5 **DRY** — each fact once. Cross-reference with §X.Y, don't restate.
|
|
34
|
+
|
|
35
|
+
¶6 **Ground truth** — every claim traces to a source. URL, file path, query, session ID, person. No source = no claim. See §4.0.
|
|
36
|
+
|
|
37
|
+
## 2.0 Structure
|
|
38
|
+
|
|
39
|
+
¶1 **Thesis** — one sentence. Specific outcome with who/what/when. Must preview the MECE sections that follow.
|
|
40
|
+
|
|
41
|
+
¶2 **Overview** — one paragraph expanding the thesis. Introduces each major section like a function docstring listing its parameters.
|
|
42
|
+
|
|
43
|
+
¶3 **Mermaid diagrams** — go right after the overview, before §1.0. Structure (TD) before process (LR). See §3.0.
|
|
44
|
+
|
|
45
|
+
¶4 **Sections** — numbered 1.0, 2.0, 3.0. Subsections 1.1, 1.2. State ordering logic upfront (importance / chronology / dependency). Continuant sections get noun titles, occurrent sections get verb titles.
|
|
46
|
+
|
|
47
|
+
¶5 **Paragraphs** — numbered ¶1, ¶2, ¶3 within each section. Order: general → specific, or problem → solution, or setup → action → result.
|
|
48
|
+
|
|
49
|
+
¶6 **Coherence** — if thesis says "planning, execution, monitoring", the doc must have all three. No surprise sections, no missing ones.
|
|
50
|
+
|
|
51
|
+
¶7 **Big docs** — over ~10 pages, split into linked files with proper relative paths.
|
|
52
|
+
|
|
53
|
+
## 3.0 Mermaid Diagrams
|
|
54
|
+
|
|
55
|
+
Every doc gets at least one diagram. Complex docs need both TD and LR.
|
|
56
|
+
|
|
57
|
+
¶1 **Headers required** — every diagram gets a bold header before the code block. Format: `**[Specific Description] ([Type] - [Direction]):**`. "Skill Package Structure (Continuant - TD)" not "System Structure".
|
|
58
|
+
|
|
59
|
+
¶2 **Continuant (TD/TB)** — what exists. Nodes are nouns (Database, API, User). Edges are "contains", "depends on", "is part of". Use for architecture, data models, component trees.
|
|
60
|
+
|
|
61
|
+
¶3 **Occurrent (LR)** — what happens. Nodes are verbs or states (Extract, Validate, Deploy). Edges are temporal — "then", "triggers", "flows to". Use for pipelines, workflows, request flows.
|
|
62
|
+
|
|
63
|
+
¶4 **Participation (optional)** — how continuants participate in occurrents. User triggers Pipeline which updates Database. TD or LR depending on emphasis.
|
|
64
|
+
|
|
65
|
+
¶5 **Sizing** — 5–12 nodes per diagram. More than that, split. Short labels (1–3 words). Label edges only when the relationship isn't obvious.
|
|
66
|
+
|
|
67
|
+
¶6 **Placement** — primary diagrams after overview, before §1.0. Section-level diagrams inline where needed. One diagram per abstraction level — deeper sections get smaller, focused diagrams.
|
|
68
|
+
|
|
69
|
+
¶7 **Structure first** — when showing both, continuant (TD) before occurrent (LR).
|
|
70
|
+
|
|
71
|
+
## 4.0 Ground Truth
|
|
72
|
+
|
|
73
|
+
Every piece of information traces to its source. No exceptions.
|
|
74
|
+
|
|
75
|
+
### Patterns
|
|
76
|
+
|
|
77
|
+
¶1 **External** — `**Source:** [Title](URL) (accessed YYYY-MM-DD)`
|
|
78
|
+
|
|
79
|
+
¶2 **Code** — `**Source:** path/to/file.py:123-145 (function calculate_metrics)`
|
|
80
|
+
|
|
81
|
+
¶3 **Session** — `**Generated by:** Claude Code session abc123 by Name (YYYY-MM-DD)`
|
|
82
|
+
|
|
83
|
+
¶4 **LLM reasoning** — `**LLM Analysis:** Based on ¶1 + ¶3` — flag synthesis explicitly, don't present it as source data.
|
|
84
|
+
|
|
85
|
+
¶5 **Query** — `**Query:** SELECT ... (YYYY-MM-DD)` with result and date. Data changes; timestamp matters.
|
|
86
|
+
|
|
87
|
+
¶6 **Human** — `**Expert input:** Name (Role), discussed YYYY-MM-DD`
|
|
88
|
+
|
|
89
|
+
¶7 **Meeting** — `**Source:** Gong call gong_123456 with Client (YYYY-MM-DD)` with key takeaway.
|
|
90
|
+
|
|
91
|
+
### Where to Put It
|
|
92
|
+
|
|
93
|
+
¶1 **Doc-level** — primary source right after the thesis in the overview.
|
|
94
|
+
|
|
95
|
+
¶2 **Section-level** — at top of section if the whole section comes from one source.
|
|
96
|
+
|
|
97
|
+
¶3 **Inline** — next to specific claims: "churn is 12% (**Source:** `SELECT AVG(churn_rate)...` 2025-11-10)".
|
|
98
|
+
|
|
99
|
+
¶4 **Mixed** — multiple sources in one paragraph, attribute each piece separately.
|
|
100
|
+
|
|
101
|
+
### Rules
|
|
102
|
+
|
|
103
|
+
- Dates mandatory. Always YYYY-MM-DD.
|
|
104
|
+
- URLs must work. Use archive.org if original might vanish.
|
|
105
|
+
- Code refs need line numbers or function names, not just file paths.
|
|
106
|
+
- "Based on research" is not a source. Name it.
|
|
107
|
+
- Synthesis presented as fact is a violation. Flag LLM reasoning.
|
|
108
|
+
|
|
109
|
+
## Checklist
|
|
110
|
+
|
|
111
|
+
Paste at doc end. Tick before shipping.
|
|
112
|
+
|
|
113
|
+
**Structure:**
|
|
114
|
+
- [ ] Thesis: one sentence previewing all sections
|
|
115
|
+
- [ ] Overview: one paragraph introducing each section
|
|
116
|
+
- [ ] Mermaid: at least one; complex docs get TD + LR
|
|
117
|
+
- [ ] MECE: 3–7 sections, no overlap, full coverage
|
|
118
|
+
- [ ] Ordering stated: ¶1 of each section explains sequence logic
|
|
119
|
+
- [ ] Paragraph numbering: ¶1, ¶2, ¶3 throughout
|
|
120
|
+
- [ ] Coherence: thesis matches actual sections
|
|
121
|
+
|
|
122
|
+
**Content:**
|
|
123
|
+
- [ ] DRY: each fact once, §X.Y cross-references elsewhere
|
|
124
|
+
- [ ] Dense: no filler words, but enough to execute
|
|
125
|
+
- [ ] Labels: noun titles for continuants, verb titles for occurrents
|
|
126
|
+
|
|
127
|
+
**Ground Truth:**
|
|
128
|
+
- [ ] Primary source in overview
|
|
129
|
+
- [ ] Section sources attributed
|
|
130
|
+
- [ ] Inline sources on specific claims
|
|
131
|
+
- [ ] LLM reasoning flagged
|
|
132
|
+
- [ ] Code refs have line numbers
|
|
133
|
+
- [ ] All dates present
|
|
134
|
+
- [ ] URLs tested
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: memory-document
|
|
3
|
+
description: Write docs like code — Minto pyramid, MECE sections, BFO ontology, Mermaid diagrams, ground truth sources. Applies to any .md file.
|
|
4
|
+
version: "2.0.0"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## How to Write a Document
|
|
8
|
+
|
|
9
|
+
Write docs like code. Fractal structure where each level is complete. No redundancy — reference, don't repeat. Every claim has a source.
|
|
10
|
+
|
|
11
|
+
```mermaid
|
|
12
|
+
graph TD
|
|
13
|
+
Thesis[Thesis: 1 sentence] --> Overview[Overview: 1 paragraph]
|
|
14
|
+
Overview --> Diagrams[Mermaid: TD + LR]
|
|
15
|
+
Diagrams --> Sections[MECE Sections 1.0–7.0]
|
|
16
|
+
Sections --> Details[¶1, ¶2, ¶3 per section]
|
|
17
|
+
Sources[Ground Truth] --> Sections
|
|
18
|
+
Sources --> Details
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 1.0 The Stack
|
|
22
|
+
|
|
23
|
+
Six rules. Use internal names here for clarity — don't leak them into the actual doc output.
|
|
24
|
+
|
|
25
|
+
¶1 **Minto** — top-down. Thesis → overview → sections → details. Reader gets the point before the evidence.
|
|
26
|
+
|
|
27
|
+
¶2 **MECE** — sections don't overlap, but cover everything. 3–7 top-level sections. If you can't draw a clean boundary between two sections, merge them.
|
|
28
|
+
|
|
29
|
+
¶3 **BFO** — separate what exists (continuants) from what happens (occurrents). TD diagrams for structure, LR diagrams for process. This isn't decoration — it forces you to find the real shape of your content.
|
|
30
|
+
|
|
31
|
+
¶4 **Fractal** — each subsection mirrors the whole. Own thesis sentence, own diagram if needed, own numbered paragraphs. Expand only if it earns the depth.
|
|
32
|
+
|
|
33
|
+
¶5 **DRY** — each fact once. Cross-reference with §X.Y, don't restate.
|
|
34
|
+
|
|
35
|
+
¶6 **Ground truth** — every claim traces to a source. URL, file path, query, session ID, person. No source = no claim. See §4.0.
|
|
36
|
+
|
|
37
|
+
## 2.0 Structure
|
|
38
|
+
|
|
39
|
+
¶1 **Thesis** — one sentence. Specific outcome with who/what/when. Must preview the MECE sections that follow.
|
|
40
|
+
|
|
41
|
+
¶2 **Overview** — one paragraph expanding the thesis. Introduces each major section like a function docstring listing its parameters.
|
|
42
|
+
|
|
43
|
+
¶3 **Mermaid diagrams** — go right after the overview, before §1.0. Structure (TD) before process (LR). See §3.0.
|
|
44
|
+
|
|
45
|
+
¶4 **Sections** — numbered 1.0, 2.0, 3.0. Subsections 1.1, 1.2. State ordering logic upfront (importance / chronology / dependency). Continuant sections get noun titles, occurrent sections get verb titles.
|
|
46
|
+
|
|
47
|
+
¶5 **Paragraphs** — numbered ¶1, ¶2, ¶3 within each section. Order: general → specific, or problem → solution, or setup → action → result.
|
|
48
|
+
|
|
49
|
+
¶6 **Coherence** — if thesis says "planning, execution, monitoring", the doc must have all three. No surprise sections, no missing ones.
|
|
50
|
+
|
|
51
|
+
¶7 **Big docs** — over ~10 pages, split into linked files with proper relative paths.
|
|
52
|
+
|
|
53
|
+
## 3.0 Mermaid Diagrams
|
|
54
|
+
|
|
55
|
+
Every doc gets at least one diagram. Complex docs need both TD and LR.
|
|
56
|
+
|
|
57
|
+
¶1 **Headers required** — every diagram gets a bold header before the code block. Format: `**[Specific Description] ([Type] - [Direction]):**`. "Skill Package Structure (Continuant - TD)" not "System Structure".
|
|
58
|
+
|
|
59
|
+
¶2 **Continuant (TD/TB)** — what exists. Nodes are nouns (Database, API, User). Edges are "contains", "depends on", "is part of". Use for architecture, data models, component trees.
|
|
60
|
+
|
|
61
|
+
¶3 **Occurrent (LR)** — what happens. Nodes are verbs or states (Extract, Validate, Deploy). Edges are temporal — "then", "triggers", "flows to". Use for pipelines, workflows, request flows.
|
|
62
|
+
|
|
63
|
+
¶4 **Participation (optional)** — how continuants participate in occurrents. User triggers Pipeline which updates Database. TD or LR depending on emphasis.
|
|
64
|
+
|
|
65
|
+
¶5 **Sizing** — 5–12 nodes per diagram. More than that, split. Short labels (1–3 words). Label edges only when the relationship isn't obvious.
|
|
66
|
+
|
|
67
|
+
¶6 **Placement** — primary diagrams after overview, before §1.0. Section-level diagrams inline where needed. One diagram per abstraction level — deeper sections get smaller, focused diagrams.
|
|
68
|
+
|
|
69
|
+
¶7 **Structure first** — when showing both, continuant (TD) before occurrent (LR).
|
|
70
|
+
|
|
71
|
+
## 4.0 Ground Truth
|
|
72
|
+
|
|
73
|
+
Every piece of information traces to its source. No exceptions.
|
|
74
|
+
|
|
75
|
+
### Patterns
|
|
76
|
+
|
|
77
|
+
¶1 **External** — `**Source:** [Title](URL) (accessed YYYY-MM-DD)`
|
|
78
|
+
|
|
79
|
+
¶2 **Code** — `**Source:** path/to/file.py:123-145 (function calculate_metrics)`
|
|
80
|
+
|
|
81
|
+
¶3 **Session** — `**Generated by:** Claude Code session abc123 by Name (YYYY-MM-DD)`
|
|
82
|
+
|
|
83
|
+
¶4 **LLM reasoning** — `**LLM Analysis:** Based on ¶1 + ¶3` — flag synthesis explicitly, don't present it as source data.
|
|
84
|
+
|
|
85
|
+
¶5 **Query** — `**Query:** SELECT ... (YYYY-MM-DD)` with result and date. Data changes; timestamp matters.
|
|
86
|
+
|
|
87
|
+
¶6 **Human** — `**Expert input:** Name (Role), discussed YYYY-MM-DD`
|
|
88
|
+
|
|
89
|
+
¶7 **Meeting** — `**Source:** Gong call gong_123456 with Client (YYYY-MM-DD)` with key takeaway.
|
|
90
|
+
|
|
91
|
+
### Where to Put It
|
|
92
|
+
|
|
93
|
+
¶1 **Doc-level** — primary source right after the thesis in the overview.
|
|
94
|
+
|
|
95
|
+
¶2 **Section-level** — at top of section if the whole section comes from one source.
|
|
96
|
+
|
|
97
|
+
¶3 **Inline** — next to specific claims: "churn is 12% (**Source:** `SELECT AVG(churn_rate)...` 2025-11-10)".
|
|
98
|
+
|
|
99
|
+
¶4 **Mixed** — multiple sources in one paragraph, attribute each piece separately.
|
|
100
|
+
|
|
101
|
+
### Rules
|
|
102
|
+
|
|
103
|
+
- Dates mandatory. Always YYYY-MM-DD.
|
|
104
|
+
- URLs must work. Use archive.org if original might vanish.
|
|
105
|
+
- Code refs need line numbers or function names, not just file paths.
|
|
106
|
+
- "Based on research" is not a source. Name it.
|
|
107
|
+
- Synthesis presented as fact is a violation. Flag LLM reasoning.
|
|
108
|
+
|
|
109
|
+
## Checklist
|
|
110
|
+
|
|
111
|
+
Paste at doc end. Tick before shipping.
|
|
112
|
+
|
|
113
|
+
**Structure:**
|
|
114
|
+
- [ ] Thesis: one sentence previewing all sections
|
|
115
|
+
- [ ] Overview: one paragraph introducing each section
|
|
116
|
+
- [ ] Mermaid: at least one; complex docs get TD + LR
|
|
117
|
+
- [ ] MECE: 3–7 sections, no overlap, full coverage
|
|
118
|
+
- [ ] Ordering stated: ¶1 of each section explains sequence logic
|
|
119
|
+
- [ ] Paragraph numbering: ¶1, ¶2, ¶3 throughout
|
|
120
|
+
- [ ] Coherence: thesis matches actual sections
|
|
121
|
+
|
|
122
|
+
**Content:**
|
|
123
|
+
- [ ] DRY: each fact once, §X.Y cross-references elsewhere
|
|
124
|
+
- [ ] Dense: no filler words, but enough to execute
|
|
125
|
+
- [ ] Labels: noun titles for continuants, verb titles for occurrents
|
|
126
|
+
|
|
127
|
+
**Ground Truth:**
|
|
128
|
+
- [ ] Primary source in overview
|
|
129
|
+
- [ ] Section sources attributed
|
|
130
|
+
- [ ] Inline sources on specific claims
|
|
131
|
+
- [ ] LLM reasoning flagged
|
|
132
|
+
- [ ] Code refs have line numbers
|
|
133
|
+
- [ ] All dates present
|
|
134
|
+
- [ ] URLs tested
|
|
@@ -8,7 +8,7 @@ export declare class HistoryRepository {
|
|
|
8
8
|
private readonly db;
|
|
9
9
|
constructor(db: DatabaseSync);
|
|
10
10
|
findBySessionId(sessionId: string): Promise<AgentHistoryRecord[]>;
|
|
11
|
-
findByAgentId(agentId: string): Promise<AgentHistoryRecord[]>;
|
|
11
|
+
findByAgentId(agentId: string, limit?: number): Promise<AgentHistoryRecord[]>;
|
|
12
12
|
/**
|
|
13
13
|
* Appends a history record and returns the new auto-increment id.
|
|
14
14
|
* Expects: sessionId references an existing session.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"historyRepository.d.ts","sourceRoot":"","sources":["../../sources/storage/historyRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;gBAEtB,EAAE,EAAE,YAAY;IAItB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAQjE,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"historyRepository.d.ts","sourceRoot":"","sources":["../../sources/storage/historyRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;gBAEtB,EAAE,EAAE,YAAY;IAItB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAQjE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAcnF;;;OAGG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAa5E;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAOpF;;;OAGG;IACG,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAMzD"}
|
|
@@ -13,16 +13,16 @@ export class HistoryRepository {
|
|
|
13
13
|
.all(sessionId);
|
|
14
14
|
return rows.map((row) => historyParse(row)).filter((record) => record !== null);
|
|
15
15
|
}
|
|
16
|
-
async findByAgentId(agentId) {
|
|
17
|
-
const
|
|
18
|
-
.prepare(`
|
|
16
|
+
async findByAgentId(agentId, limit) {
|
|
17
|
+
const sql = `
|
|
19
18
|
SELECT h.*
|
|
20
19
|
FROM session_history h
|
|
21
20
|
INNER JOIN sessions s ON s.id = h.session_id
|
|
22
21
|
WHERE s.agent_id = ?
|
|
23
22
|
ORDER BY s.created_at ASC, h.id ASC
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
${limit !== undefined ? `LIMIT ${limit}` : ""}
|
|
24
|
+
`;
|
|
25
|
+
const rows = this.db.prepare(sql).all(agentId);
|
|
26
26
|
return rows.map((row) => historyParse(row)).filter((record) => record !== null);
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"historyRepository.js","sourceRoot":"","sources":["../../sources/storage/historyRepository.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACT,EAAE,CAAe;IAElC,YAAY,EAAgB;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACf,OAAO,CAAC,oEAAoE,CAAC;aAC7E,GAAG,CAAC,SAAS,CAAgC,CAAC;QAEnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAgC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe;QAC/
|
|
1
|
+
{"version":3,"file":"historyRepository.js","sourceRoot":"","sources":["../../sources/storage/historyRepository.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACT,EAAE,CAAe;IAElC,YAAY,EAAgB;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACf,OAAO,CAAC,oEAAoE,CAAC;aAC7E,GAAG,CAAC,SAAS,CAAgC,CAAC;QAEnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAgC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,KAAc;QAC/C,MAAM,GAAG,GAAG;;;;;;gBAMJ,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;aAC9C,CAAC;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAgC,CAAC;QAE9E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAgC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,MAA0B;QACtD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACJ;;;aAGH,CACA;aACA,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,OAAe;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACf,OAAO,CAAC,+EAA+E,CAAC;aACxF,GAAG,CAAC,SAAS,EAAE,OAAO,CAAgC,CAAC;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAgC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,SAAiB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aACd,OAAO,CAAC,oEAAoE,CAAC;aAC7E,GAAG,CAAC,SAAS,CAAuC,CAAC;QAC1D,OAAO,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;CACJ;AAED,SAAS,YAAY,CAAC,GAA8B;IAChD,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAA4B,CAAC;QAC7D,OAAO;YACH,IAAI,EAAE,GAAG,CAAC,IAAkC;YAC5C,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,GAAG,IAAI;SACY,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC"}
|
|
@@ -315,7 +315,8 @@ function processRecordClone(record) {
|
|
|
315
315
|
allowedDomains: [...record.allowedDomains],
|
|
316
316
|
permissions: {
|
|
317
317
|
...record.permissions,
|
|
318
|
-
writeDirs: [...record.permissions.writeDirs]
|
|
318
|
+
writeDirs: [...record.permissions.writeDirs],
|
|
319
|
+
readDirs: [...(record.permissions.readDirs ?? [])]
|
|
319
320
|
},
|
|
320
321
|
owner: record.owner ? { ...record.owner } : null
|
|
321
322
|
};
|
|
@@ -354,15 +355,20 @@ function permissionsParse(raw) {
|
|
|
354
355
|
if (typeof parsed.workingDir !== "string" || !Array.isArray(parsed.writeDirs)) {
|
|
355
356
|
throw new Error("Invalid permissions");
|
|
356
357
|
}
|
|
358
|
+
const readDirs = Array.isArray(parsed.readDirs)
|
|
359
|
+
? parsed.readDirs.filter((entry) => typeof entry === "string")
|
|
360
|
+
: [];
|
|
357
361
|
return {
|
|
358
362
|
workingDir: parsed.workingDir,
|
|
359
|
-
writeDirs: parsed.writeDirs.filter((entry) => typeof entry === "string")
|
|
363
|
+
writeDirs: parsed.writeDirs.filter((entry) => typeof entry === "string"),
|
|
364
|
+
readDirs
|
|
360
365
|
};
|
|
361
366
|
}
|
|
362
367
|
catch {
|
|
363
368
|
return {
|
|
364
369
|
workingDir: "/",
|
|
365
|
-
writeDirs: []
|
|
370
|
+
writeDirs: [],
|
|
371
|
+
readDirs: []
|
|
366
372
|
};
|
|
367
373
|
}
|
|
368
374
|
}
|