chore: improve chapter 6-8 manuscript alignment#42
Conversation
e6526b6 to
e329517
Compare
e329517 to
f3371d0
Compare
There was a problem hiding this comment.
レビューしました。全体として、Issue 本文を未信頼入力として分離するワークフロー変更や、各 Provider で tool call / tool result の不整合を補正する方向性は実運用上の 400 エラー対策として良い改善だと思います。bun test も実行し、既存テストは pass していることを確認しました。
ただし、1 点ブロッカーがあります。
Must fix
src/core/prompt.ts が ESM 環境で起動時に壊れます
この PR で fileURLToPath(import.meta.url) と path.dirname(__filename) による __dirname 定義が削除されていますが、package.json は ESM ("type": "module") のため、Node/Bun の ESM 実行時に CommonJS の __dirname は定義されません。
現在の実装では以下の行で ReferenceError: __dirname is not defined になり、loadInstructions() を通る CLI / review 実行が起動できなくなる可能性があります。
const basePath = path.resolve(__dirname, 'prompt.md');コメントにも「ESM環境では __dirname が未定義」と書かれていますが、注意喚起ではなく実際に実行時エラーになります。元の実装に戻すか、例えば以下のように ESM 対応の __dirname を復元してください。
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);あわせて、loadInstructions() が prompt.md と workspace の AGENTS.md を読めることを確認するテストを追加すると、この種の回帰を防げると思います。
確認結果
bun testは pass しました。- ただし上記の
loadInstructions()の ESM 起動経路は既存テストでカバーされていないようです。
この __dirname の回帰を修正すれば、他の変更は概ね良い方向だと思います。
f3371d0 to
3dbf91d
Compare
3dbf91d to
0cc5dd5
Compare
0cc5dd5 to
89e1301
Compare
- clarify integrated CLI differences across chapters 6, 7, and 8 - separate trusted issue tasks from untrusted ISSUE_TEXT in GitHub Actions - document Git/GitHub and sandbox command hardening in code and support docs
89e1301 to
bc28613
Compare
Summary
baseInstructions/issueDrivenInstructions/instructions: isIssueDriven ? ...)に寄せ直し、後続章(7章 GitHub連携、8章サンドボックス、付録機能)の要素が先に見える理由をコメントとサポートサイトに整理しました。LLM_API_KEYを@google/genaiSDK が自動参照するGEMINI_API_KEYに反映するよう修正し、回帰テストを追加しました。ISSUE_BODY)と未信頼の Issue 本文(ISSUE_TEXT)を分離し、Prompt Injection 対策としてデリミタと注意書きを追加しました。execCommandSandboxについて、ツールdescriptionは本書の文言を維持し、安全補強(ブランチ名検証、git add --、git commit -F、--body-file、validateTitle、危険パターン検知など)はコードコメントとサポートサイトで補足する形に整理しました。Verification
bunx tsc --noEmitbun testgit diff --checkexecCommandSandboxのcommandName/commandArgs形式と危険パターン拒否のスモーク確認ISSUE_BODY/ISSUE_TEXTの CLI 入力判定スモーク確認.github/workflows/nano-code.ymlの YAML パース確認