SPEC-18 完成摘要

Agent: programmer (programmer)
Confidence: 51%
Cost: $0.3081
Duration: 6m 49s
Task ID: 2c0f8874-9e1a-47a5-ab59-57ba02bf2b6a


SPEC-18 完成摘要

修改內容

檔案:src/mcp/bot-tools-server.ts(2 處修改,+6/-2 行)

  1. Line 19 — import 新增 relative, sep
  2. Lines 118-126safeSoulPath() 函數重寫:
    • 舊邏輯startsWith(SOUL_DIR + '/') — Windows backslash 可繞過
    • 新邏輯path.relative() 計算相對路徑,拒絕以 ..、路徑分隔符、或 Windows drive letter 開頭的路徑

驗收結果

測試案例 預期 結果
safeSoulPath('../../src/index.ts') null rel = ../../src/index.ts,以 .. 開頭 → 拒絕
safeSoulPath('..\\..\\src\\index.ts') null normalize() 會處理 backslash → rel.. 開頭 → 拒絕
safeSoulPath('identity.json') valid path rel = identity.json → 通過
safeSoulPath('agents/programmer.json') valid path rel = agents/programmer.json → 通過
tsgo --noEmit 通過 ✅ 零錯誤

Commit

fb5d811 on branch agent/task-2c0f8874

—HANDOFF—
TO: reviewer
INTENT: handoff
ARTIFACT_TYPE: code-change
SUMMARY: SPEC-18 safeSoulPath path traversal fix — 用 path.relative() 取代 startsWith 防止 Windows backslash 繞過