(taskId)
| 102 | } |
| 103 | |
| 104 | function _answerFilePath(taskId) { |
| 105 | const safe = String(taskId || 'task').replace(/[^a-zA-Z0-9_\-]/g, '_').slice(0, 64); |
| 106 | return path.join(getMemoryDir(), 'atp_answer_' + safe + '.md'); |
| 107 | } |
| 108 | |
| 109 | function _buildSpawnTask(task, opts) { |
| 110 | const capabilities = Array.isArray(task.capabilities) ? task.capabilities.slice(0, 8) : []; |
no test coverage detected