[{"url":"https://api.github.com/repos/moltbot/moltbot/pulls/comments/2739152054","pull_request_review_id":3719785447,"id":2739152054,"node_id":"PRRC_kwDOQb6kR86jRCS2","diff_hunk":"@@ -399,47 +399,57 @@ export function buildAgentSystemPrompt(params: {\n \"Treat this directory as the single global workspace for file operations unless explicitly instructed otherwise.\",\n ...workspaceNotes,\n \"\",\n+ ...(runtimeInfo?.os?.toLowerCase().includes(\"windows\")\n+ ? [\n+ \"## Windows Shell Guidance\",\n+ \"You are running on Windows (PowerShell).\",\n+ \"- Use PowerShell syntax (e.g. `$env:VAR` instead of `%VAR%` or `$VAR`).\",\n+ \"- Do NOT use Unix commands like `grep`, `sed`, `awk`, `head`, `tail` unless you are sure they are installed.\",\n+ \"- Use `findstr` or `Select-String` instead of `grep`.\",\n+ \"- Use `Get-ChildItem` (dir/ls) with `-Recurse` instead of `find`.\",\n+ \"\",\n+ ]\n+ : []),","path":"src/agents/system-prompt.ts","commit_id":"a91e62607851c742c0b54fa840f1acd13dd25bd0","original_commit_id":"a91e62607851c742c0b54fa840f1acd13dd25bd0","user":{"login":"Copilot","id":175728472,"node_id":"BOT_kgDOCnlnWA","avatar_url":"https://avatars.githubusercontent.com/in/946600?v=4","gravatar_id":"","url":"https://api.github.com/users/Copilot","html_url":"https://github.com/apps/copilot-pull-request-reviewer","followers_url":"https://api.github.com/users/Copilot/followers","following_url":"https://api.github.com/users/Copilot/following{/other_user}","gists_url":"https://api.github.com/users/Copilot/gists{/gist_id}","starred_url":"https://api.github.com/users/Copilot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Copilot/subscriptions","organizations_url":"https://api.github.com/users/Copilot/orgs","repos_url":"https://api.github.com/users/Copilot/repos","events_url":"https://api.github.com/users/Copilot/events{/privacy}","received_events_url":"https://api.github.com/users/Copilot/received_events","type":"Bot","user_view_type":"public","site_admin":false},"body":"The Windows shell guidance feature lacks test coverage. Consider adding a test case in `system-prompt.test.ts` to verify that the Windows-specific guidance is included when `runtimeInfo.os` contains \"windows\" and excluded otherwise. This would ensure the feature works as expected and prevent regressions.\n\nFor example, you could add a test like:\n- Test that when runtimeInfo.os includes \"Windows_NT\", the prompt contains \"## Windows Shell Guidance\"\n- Test that when runtimeInfo.os is \"Darwin\" or \"Linux\", this section is not included","created_at":"2026-01-29T00:09:19Z","updated_at":"2026-01-29T00:09:21Z","html_url":"https://github.com/moltbot/moltbot/pull/3648#discussion_r2739152054","pull_request_url":"https://api.github.com/repos/moltbot/moltbot/pulls/3648","_links":{"self":{"href":"https://api.github.com/repos/moltbot/moltbot/pulls/comments/2739152054"},"html":{"href":"https://github.com/moltbot/moltbot/pull/3648#discussion_r2739152054"},"pull_request":{"href":"https://api.github.com/repos/moltbot/moltbot/pulls/3648"}},"reactions":{"url":"https://api.github.com/repos/moltbot/moltbot/pulls/comments/2739152054/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":402,"original_start_line":402,"start_side":"RIGHT","line":412,"original_line":412,"side":"RIGHT","author_association":"NONE","original_position":130,"position":130,"subject_type":"line"},{"url":"https://api.github.com/repos/moltbot/moltbot/pulls/comments/2739152064","pull_request_review_id":3719785447,"id":2739152064,"node_id":"PRRC_kwDOQb6kR86jRCTA","diff_hunk":"@@ -83,21 +83,21 @@ function buildMessagingSection(params: {\n \"- Never use exec/curl for provider messaging; Moltbot handles all routing internally.\",\n params.availableTools.has(\"message\")\n ? [\n- \"\",\n- \"### message tool\",\n- \"- Use `message` for proactive sends + channel actions (polls, reactions, etc.).\",\n- \"- For `action=send`, include `to` and `message`.\",\n- `- If multiple channels are configured, pass \\`channel\\` (${params.messageChannelOptions}).`,\n- `- If you use \\`message\\` (\\`action=send\\`) to deliver your user-visible reply, respond with ONLY: ${SILENT_REPLY_TOKEN} (avoid duplicate replies).`,\n- params.inlineButtonsEnabled\n- ? \"- Inline buttons supported. Use `action=send` with `buttons=[[{text,callback_data}]]` (callback_data routes back as a user message).\"\n- : params.runtimeChannel\n- ? `- Inline buttons not enabled for ${params.runtimeChannel}. If you need them, ask to set ${params.runtimeChannel}.capabilities.inlineButtons (\"dm\"|\"group\"|\"all\"|\"allowlist\").`\n- : \"\",\n- ...(params.messageToolHints ?? []),\n- ]\n- .filter(Boolean)\n- .join(\"\\n\")\n+ \"\",\n+ \"### message tool\",\n+ \"- Use `message` for proactive sends + channel actions (polls, reactions, etc.).\",\n+ \"- For `action=send`, include `to` and `message`.\",\n+ `- If multiple channels are configured, pass \\`channel\\` (${params.messageChannelOptions}).`,\n+ `- If you use \\`message\\` (\\`action=send\\`) to deliver your user-visible reply, respond with ONLY: ${SILENT_REPLY_TOKEN} (avoid duplicate replies).`,\n+ params.inlineButtonsEnabled\n+ ? \"- Inline buttons supported. Use `action=send` with `buttons=[[{text,callback_data}]]` (callback_data routes back as a user message).\"\n+ : params.runtimeChannel\n+ ? `- Inline buttons not enabled for ${params.runtimeChannel}. If you need them, ask to set ${params.runtimeChannel}.capabilities.inlineButtons (\"dm\"|\"group\"|\"all\"|\"allowlist\").`\n+ : \"\",\n+ ...(params.messageToolHints ?? []),\n+ ]\n+ .filter(Boolean)\n+ .join(\"\\n\")","path":"src/agents/system-prompt.ts","commit_id":"a91e62607851c742c0b54fa840f1acd13dd25bd0","original_commit_id":"a91e62607851c742c0b54fa840f1acd13dd25bd0","user":{"login":"Copilot","id":175728472,"node_id":"BOT_kgDOCnlnWA","avatar_url":"https://avatars.githubusercontent.com/in/946600?v=4","gravatar_id":"","url":"https://api.github.com/users/Copilot","html_url":"https://github.com/apps/copilot-pull-request-reviewer","followers_url":"https://api.github.com/users/Copilot/followers","following_url":"https://api.github.com/users/Copilot/following{/other_user}","gists_url":"https://api.github.com/users/Copilot/gists{/gist_id}","starred_url":"https://api.github.com/users/Copilot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Copilot/subscriptions","organizations_url":"https://api.github.com/users/Copilot/orgs","repos_url":"https://api.github.com/users/Copilot/repos","events_url":"https://api.github.com/users/Copilot/events{/privacy}","received_events_url":"https://api.github.com/users/Copilot/received_events","type":"Bot","user_view_type":"public","site_admin":false},"body":"This PR includes extensive indentation/formatting changes throughout the file that are not mentioned in the PR description. While these changes appear to be consistent reformatting (switching from multi-line template literals to array-based formatting), they make it harder to review the actual functional change (the Windows guidance addition). Consider:\n\n1. Splitting formatting changes into a separate commit/PR, OR\n2. Explicitly mentioning these formatting changes in the PR description\n\nThis follows best practices for keeping functional changes separate from style/formatting changes for easier code review and git history.","created_at":"2026-01-29T00:09:19Z","updated_at":"2026-01-29T00:09:21Z","html_url":"https://github.com/moltbot/moltbot/pull/3648#discussion_r2739152064","pull_request_url":"https://api.github.com/repos/moltbot/moltbot/pulls/3648","_links":{"self":{"href":"https://api.github.com/repos/moltbot/moltbot/pulls/comments/2739152064"},"html":{"href":"https://github.com/moltbot/moltbot/pull/3648#discussion_r2739152064"},"pull_request":{"href":"https://api.github.com/repos/moltbot/moltbot/pulls/3648"}},"reactions":{"url":"https://api.github.com/repos/moltbot/moltbot/pulls/comments/2739152064/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":86,"original_start_line":86,"start_side":"RIGHT","line":100,"original_line":100,"side":"RIGHT","author_association":"NONE","original_position":33,"position":33,"subject_type":"line"},{"url":"https://api.github.com/repos/moltbot/moltbot/pulls/comments/2739152076","pull_request_review_id":3719785447,"id":2739152076,"node_id":"PRRC_kwDOQb6kR86jRCTM","diff_hunk":"@@ -399,47 +399,57 @@ export function buildAgentSystemPrompt(params: {\n \"Treat this directory as the single global workspace for file operations unless explicitly instructed otherwise.\",\n ...workspaceNotes,\n \"\",\n+ ...(runtimeInfo?.os?.toLowerCase().includes(\"windows\")\n+ ? [\n+ \"## Windows Shell Guidance\",\n+ \"You are running on Windows (PowerShell).\",\n+ \"- Use PowerShell syntax (e.g. `$env:VAR` instead of `%VAR%` or `$VAR`).\",\n+ \"- Do NOT use Unix commands like `grep`, `sed`, `awk`, `head`, `tail` unless you are sure they are installed.\",","path":"src/agents/system-prompt.ts","commit_id":"a91e62607851c742c0b54fa840f1acd13dd25bd0","original_commit_id":"a91e62607851c742c0b54fa840f1acd13dd25bd0","user":{"login":"Copilot","id":175728472,"node_id":"BOT_kgDOCnlnWA","avatar_url":"https://avatars.githubusercontent.com/in/946600?v=4","gravatar_id":"","url":"https://api.github.com/users/Copilot","html_url":"https://github.com/apps/copilot-pull-request-reviewer","followers_url":"https://api.github.com/users/Copilot/followers","following_url":"https://api.github.com/users/Copilot/following{/other_user}","gists_url":"https://api.github.com/users/Copilot/gists{/gist_id}","starred_url":"https://api.github.com/users/Copilot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Copilot/subscriptions","organizations_url":"https://api.github.com/users/Copilot/orgs","repos_url":"https://api.github.com/users/Copilot/repos","events_url":"https://api.github.com/users/Copilot/events{/privacy}","received_events_url":"https://api.github.com/users/Copilot/received_events","type":"Bot","user_view_type":"public","site_admin":false},"body":"The Windows guidance warns against using Unix commands like `grep`, but the system prompt (lines 340-342) also lists `grep`, `find`, and `ls` as Pi's standard tools. This could be confusing because:\n\n1. Pi provides `grep`, `find`, and `ls` as built-in tools that work cross-platform\n2. The Windows guidance seems to warn against using these names in shell commands via the `exec` tool\n\nConsider clarifying this distinction in the Windows guidance. For example: \"- Do NOT use Unix commands like `grep`, `sed`, `awk`, `head`, `tail` in exec/shell commands unless you are sure they are installed (Pi's built-in grep/find/ls tools work fine).\"\n\nThis makes it clear that the warning is specifically about shell commands, not Pi's built-in tools.\n```suggestion\n \"- Do NOT use Unix commands like `grep`, `sed`, `awk`, `head`, `tail` in exec/shell (PowerShell) commands unless you are sure they are installed. Pi's built-in tools named `grep`, `find`, and `ls` are safe to use.\",\n```","created_at":"2026-01-29T00:09:20Z","updated_at":"2026-01-29T00:09:21Z","html_url":"https://github.com/moltbot/moltbot/pull/3648#discussion_r2739152076","pull_request_url":"https://api.github.com/repos/moltbot/moltbot/pulls/3648","_links":{"self":{"href":"https://api.github.com/repos/moltbot/moltbot/pulls/comments/2739152076"},"html":{"href":"https://github.com/moltbot/moltbot/pull/3648#discussion_r2739152076"},"pull_request":{"href":"https://api.github.com/repos/moltbot/moltbot/pulls/3648"}},"reactions":{"url":"https://api.github.com/repos/moltbot/moltbot/pulls/comments/2739152076/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":null,"original_start_line":null,"start_side":null,"line":407,"original_line":407,"side":"RIGHT","author_association":"NONE","original_position":125,"position":125,"subject_type":"line"},{"url":"https://api.github.com/repos/moltbot/moltbot/pulls/comments/2739152096","pull_request_review_id":3719785447,"id":2739152096,"node_id":"PRRC_kwDOQb6kR86jRCTg","diff_hunk":"@@ -0,0 +1,315 @@\n+# Pull Request: [Title]\n+\n+\n+\n+## 📋 Summary\n+\n+\n+\n+## 🎯 Related Issues\n+\n+\n+\n+Closes #\n+\n+## 🚀 What's New\n+\n+\n+\n+### Core Changes\n+\n+#### 1. [Feature/Component Name]\n+\n+**Purpose**: [Why this change was made]\n+\n+**Implementation**:\n+\n+- Change 1\n+- Change 2\n+- Change 3\n+\n+**Key Code** (if applicable):\n+\n+```javascript\n+// Show important code snippets with file paths\n+// /path/to/file.js:123-145\n+```\n+\n+## 📊 Type of Change\n+\n+\n+\n+- [ ] 🐛 Bug fix (non-breaking change that fixes an issue)\n+- [ ] ✨ New feature (non-breaking change that adds functionality)\n+- [ ] 💥 Breaking change (fix or feature that would cause existing functionality to change)\n+- [ ] 📝 Documentation update\n+- [ ] 🔧 Configuration change\n+- [ ] ♻️ Code refactoring (no functional changes)\n+- [ ] ⚡ Performance improvement\n+- [ ] 🎨 UI/UX change\n+- [ ] 🧪 Test coverage improvement\n+- [ ] 🔒 Security fix\n+\n+## 🧪 Testing\n+\n+\n+\n+### Automated Tests\n+\n+- [ ] Unit tests added/updated\n+- [ ] Integration tests added/updated\n+- [ ] All existing tests pass\n+\n+**Test Coverage**:\n+\n+- [ ] New code has test coverage\n+- [ ] Edge cases covered\n+- [ ] Error handling tested\n+\n+**Test Results**:\n+\n+```bash\n+# Include test output or summary\n+✓ 42 tests passing\n+✓ 0 tests failing\n+```\n+\n+### Manual Testing\n+\n+\n+\n+**Testing Checklist**:\n+\n+- [ ] Tested in development environment\n+- [ ] Tested in staging environment (if applicable)\n+- [ ] Tested with real data/production-like scenarios\n+- [ ] Tested error scenarios\n+- [ ] Verified no console errors/warnings\n+- [ ] Checked browser console for issues (frontend changes)\n+\n+**Environments Tested**:\n+\n+- [ ] Development\n+- [ ] Staging\n+- [ ] Production (if safe to test)\n+\n+## 📸 Screenshots/Videos\n+\n+\n+\n+### Before\n+\n+\n+\n+### After\n+\n+\n+\n+## 🚀 Deployment Strategy\n+\n+\n+\n+### Deployment Steps\n+\n+1. Step 1\n+2. Step 2\n+3. Step 3\n+\n+### Configuration Changes\n+\n+\n+\n+- [ ] Environment variables added/updated: `VARIABLE_NAME=value`\n+- [ ] Feature flags required: `FEATURE_FLAG=true`\n+- [ ] Database migrations needed\n+- [ ] External service configuration required\n+\n+### Phased Rollout (if applicable)\n+\n+- [ ] **Phase 1**: Deploy to staging for validation (recommended duration: X days)\n+- [ ] **Phase 2**: Deploy to production with feature flag disabled\n+- [ ] **Phase 3**: Enable feature flag for production traffic\n+- [ ] **Phase 4**: Monitor metrics and remove feature flag\n+\n+## 🔙 Rollback Plan\n+\n+\n+\n+**Quick Rollback**:\n+\n+- Disable feature flag: `FEATURE_FLAG=false` and restart service (< 1 minute)\n+- OR: Revert to previous deployment revision\n+- OR: Git revert commit hash\n+\n+**Cleanup Required** (if rollback is performed):\n+\n+- [ ] Database changes to revert\n+- [ ] Cache to clear\n+- [ ] External services to notify\n+\n+## 💰 Cost Impact\n+\n+\n+\n+**Expected Cost Changes**:\n+\n+- Cloud Run: +/- $X/month\n+- Storage: +/- $X/month\n+- API calls: +/- $X/month\n+- **Total Estimated Impact**: +/- $X/month\n+\n+**Cost Optimization Notes**:\n+\n+- [Explain any cost optimizations included]\n+\n+## ⚡ Performance Impact\n+\n+\n+\n+**Expected Performance Changes**:\n+\n+- Response time: +/- Xms\n+- Memory usage: +/- XMB\n+- Database queries: +/- X queries\n+- API calls: +/- X calls\n+\n+**Benchmarks** (if applicable):\n+\n+```text\n+Before: Xms average response time\n+After: Xms average response time\n+```\n+\n+## 🔍 Code Quality\n+\n+\n+\n+- [x] ESLint passed (auto-checked by pre-commit hooks)\n+- [x] Prettier formatting applied (auto-checked by pre-commit hooks)\n+- [x] Markdownlint passed for docs (auto-checked by pre-commit hooks)\n+- [x] Commit messages follow conventional commits\n+- [ ] Code reviewed by AI agent or peer\n+- [ ] No console.log statements in production code\n+- [ ] No commented-out code left behind\n+- [ ] Error handling implemented for edge cases\n+- [ ] Security considerations reviewed (XSS, SQL injection, auth, etc.)\n+\n+## 📚 Documentation\n+\n+\n+\n+- [ ] README.md updated (if user-facing changes)\n+- [ ] CONTRIBUTING.md updated (if dev workflow changes)\n+- [ ] API documentation updated (if API changes)\n+- [ ] Inline code comments added for complex logic\n+- [ ] Architecture documentation updated (if structural changes)\n+- [ ] CLAUDE.md updated (for AI context in future sessions)\n+\n+## 🔐 Security Considerations\n+\n+\n+\n+- [ ] No sensitive data logged or exposed\n+- [ ] Authentication/authorization implemented correctly\n+- [ ] Input validation added for user input\n+- [ ] SQL injection prevention (parameterized queries)\n+- [ ] XSS prevention (sanitized output)\n+- [ ] CSRF protection (if applicable)\n+- [ ] Secrets stored securely (not in code/logs)\n+- [ ] Rate limiting considered (if applicable)\n+\n+## 📋 Pre-Merge Checklist\n+\n+\n+\n+- [ ] All tests pass locally\n+- [ ] All pre-commit hooks pass\n+- [ ] Code has been self-reviewed\n+- [ ] Changes generate no new warnings\n+- [ ] Dependent changes have been merged\n+- [ ] Documentation has been updated\n+- [ ] Reviewer(s) have approved the PR\n+- [ ] Branch is up to date with base branch\n+- [ ] Commit messages are clean and descriptive\n+- [ ] Ready for production deployment\n+\n+## 🔗 Additional Context\n+\n+\n+\n+## 🚦 Status\n+\n+\n+\n+- [ ] 🔴 Draft - Work in progress\n+- [ ] 🟡 Ready for Review - Code complete, needs review\n+- [ ] 🟢 Approved - Ready to merge\n+- [ ] 🔵 Merged - Deployed to staging\n+- [ ] ✅ Complete - Deployed to production\n+\n+---\n+\n+","path":".github/PULL_REQUEST_TEMPLATE.md","commit_id":"a91e62607851c742c0b54fa840f1acd13dd25bd0","original_commit_id":"a91e62607851c742c0b54fa840f1acd13dd25bd0","user":{"login":"Copilot","id":175728472,"node_id":"BOT_kgDOCnlnWA","avatar_url":"https://avatars.githubusercontent.com/in/946600?v=4","gravatar_id":"","url":"https://api.github.com/users/Copilot","html_url":"https://github.com/apps/copilot-pull-request-reviewer","followers_url":"https://api.github.com/users/Copilot/followers","following_url":"https://api.github.com/users/Copilot/following{/other_user}","gists_url":"https://api.github.com/users/Copilot/gists{/gist_id}","starred_url":"https://api.github.com/users/Copilot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Copilot/subscriptions","organizations_url":"https://api.github.com/users/Copilot/orgs","repos_url":"https://api.github.com/users/Copilot/repos","events_url":"https://api.github.com/users/Copilot/events{/privacy}","received_events_url":"https://api.github.com/users/Copilot/received_events","type":"Bot","user_view_type":"public","site_admin":false},"body":"The PR includes changes to `.github/PULL_REQUEST_TEMPLATE.md` which is unrelated to adding Windows PowerShell support. The diff shows the entire file (315 lines) as new additions, which suggests either:\n\n1. The file was regenerated/reformatted\n2. Line ending changes (CRLF ↔ LF)\n3. The file was accidentally included in this PR\n\nSince this is unrelated to the stated PR purpose (\"add windows powershell support to system prompt\"), consider:\n- Removing this file from the PR if it was accidentally included\n- If intentional, explain the reason in the PR description\n- If it's a line ending change, consider using `.gitattributes` to enforce consistent line endings\n\nIncluding unrelated changes makes code review more difficult and complicates the git history.","created_at":"2026-01-29T00:09:20Z","updated_at":"2026-01-29T00:09:21Z","html_url":"https://github.com/moltbot/moltbot/pull/3648#discussion_r2739152096","pull_request_url":"https://api.github.com/repos/moltbot/moltbot/pulls/3648","_links":{"self":{"href":"https://api.github.com/repos/moltbot/moltbot/pulls/comments/2739152096"},"html":{"href":"https://github.com/moltbot/moltbot/pull/3648#discussion_r2739152096"},"pull_request":{"href":"https://api.github.com/repos/moltbot/moltbot/pulls/3648"}},"reactions":{"url":"https://api.github.com/repos/moltbot/moltbot/pulls/comments/2739152096/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":1,"original_start_line":1,"start_side":"RIGHT","line":315,"original_line":315,"side":"RIGHT","author_association":"NONE","original_position":315,"position":315,"subject_type":"line"}]