-
Notifications
You must be signed in to change notification settings - Fork 243
feat: wire feedback modal and IPC wiring #491
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
jeffscottward
wants to merge
10
commits into
RunMaestro:main
Choose a base branch
from
jeffscottward:symphony/issue-457-mm82lf08
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 8 commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
579335b
[Symphony] Start contribution for #457
jeffscottward c24754d
MAESTRO: add feedback issue prompt template
jeffscottward 77dbcfc
MAESTRO: add shared FeedbackView component
jeffscottward 87620f2
MAESTRO: wire FeedbackView into AboutModal
jeffscottward 52e1936
MAESTRO: fix feedback modal state wiring in quick actions
jeffscottward 440d49d
feat: wire feedback modal and IPC wiring
jeffscottward 4805547
fix: address PR review feedback for feedback modal
jeffscottward b051a06
fix: address failing checks for PR #491
599a3e8
fix: address failing checks for PR #491
b0b90b3
fix: address failing checks for PR #491
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| {"repo":"RunMaestro/Maestro","number":491,"title":"feat: wire feedback modal and IPC wiring","htmlUrl":"https://github.com/RunMaestro/Maestro/pull/491","head":"48055471d0970d23c4b933e7854ca712b0cbfc8f","failures":[{"source":"check-run","id":65324814076,"name":"test","status":"completed","conclusion":"failure","htmlUrl":"https://github.com/RunMaestro/Maestro/actions/runs/22552610299/job/65324814076","detailsUrl":"https://github.com/RunMaestro/Maestro/actions/runs/22552610299/job/65324814076","summary":"","notes":"src/renderer/components/AboutModal.tsx:211:failure Error: [vitest] No \"MessageSquarePlus\" export is defined on the \"lucide-react\" mock. Did you forget to return it from \"vi.mock\"?\nIf you need to partially mock a module, you can use \"importOriginal\" helper inside:\n\nvi.mock(import(\"lucide-react\"), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n // your mocked methods\n }\n})\n\n ❯ AboutModal src/renderer/components/AboutModal.tsx:211:8\n ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18\n ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13\n ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16\n ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14\n ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12\n ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5\n ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7\n\n | src/renderer/components/AboutModal.tsx:211:failure Error: [vitest] No \"MessageSquarePlus\" export is defined on the \"lucide-react\" mock. Did you forget to return it from \"vi.mock\"?\nIf you need to partially mock a module, you can use \"importOriginal\" helper inside:\n\nvi.mock(import(\"lucide-react\"), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n // your mocked methods\n }\n})\n\n ❯ AboutModal src/renderer/components/AboutModal.tsx:211:8\n ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18\n ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13\n ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16\n ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14\n ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12\n ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5\n ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7\n\n | src/renderer/components/AboutModal.tsx:211:failure Error: [vitest] No \"MessageSquarePlus\" export is defined on the \"lucide-react\" mock. Did you forget to return it from \"vi.mock\"?\nIf you need to partially mock a module, you can use \"importOriginal\" helper inside:\n\nvi.mock(import(\"lucide-react\"), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n // your mocked methods\n }\n})\n\n ❯ AboutModal src/renderer/components/AboutModal.tsx:211:8\n ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18\n ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13\n ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16\n ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14\n ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12\n ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5\n ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7\n\n | src/renderer/components/AboutModal.tsx:211:failure Error: [vitest] No \"MessageSquarePlus\" export is defined on the \"lucide-react\" mock. Did you forget to return it from \"vi.mock\"?\nIf you need to partially mock a module, you can use \"importOriginal\" helper inside:\n\nvi.mock(import(\"lucide-react\"), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n // your mocked methods\n }\n})\n\n ❯ AboutModal src/renderer/components/AboutModal.tsx:211:8\n ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18\n ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13\n ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16\n ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14\n ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12\n ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5\n ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7\n\n | src/renderer/components/AboutModal.tsx:211:failure Error: [vitest] No \"MessageSquarePlus\" export is defined on the \"lucide-react\" mock. Did you forget to return it from \"vi.mock\"?\nIf you need to partially mock a module, you can use \"importOriginal\" helper inside:\n\nvi.mock(import(\"lucide-react\"), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n // your mocked methods\n }\n})\n\n ❯ AboutModal src/renderer/components/AboutModal.tsx:211:8\n ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18\n ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13\n ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16\n ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14\n ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12\n ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5\n ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7\n\n","completedAt":"2026-03-01T21:11:46Z"},{"source":"check-run","id":65324814066,"name":"lint-and-format","status":"completed","conclusion":"failure","htmlUrl":"https://github.com/RunMaestro/Maestro/actions/runs/22552610299/job/65324814066","detailsUrl":"https://github.com/RunMaestro/Maestro/actions/runs/22552610299/job/65324814066","summary":"","notes":".github:11:failure Process completed with exit code 1.","completedAt":"2026-03-01T21:06:16Z"}]} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| You are an autonomous coding agent fixing a GitHub pull request for Maestro. | ||
|
|
||
| Goal: | ||
| - Fix only what is necessary to make the failing checks pass for PR #491. | ||
| - Use the failure payload below to focus changes. | ||
| - Keep changes minimal and scoped. | ||
| - Do not add broad refactors or formatting churn. | ||
| - If no safe fix exists, do not force risky behavior and return without edits. | ||
|
|
||
| Context: | ||
| - PR repo: RunMaestro/Maestro | ||
| - PR number: 491 | ||
| - Head branch: symphony/issue-457-mm82lf08 | ||
| - Head SHA: 48055471d0970d23c4b933e7854ca712b0cbfc8f | ||
|
|
||
| Failing check payload: | ||
| {"repo":"RunMaestro/Maestro","number":491,"title":"feat: wire feedback modal and IPC wiring","htmlUrl":"https://github.com/RunMaestro/Maestro/pull/491","head":"48055471d0970d23c4b933e7854ca712b0cbfc8f","failures":[{"source":"check-run","id":65324814076,"name":"test","status":"completed","conclusion":"failure","htmlUrl":"https://github.com/RunMaestro/Maestro/actions/runs/22552610299/job/65324814076","detailsUrl":"https://github.com/RunMaestro/Maestro/actions/runs/22552610299/job/65324814076","summary":"","notes":"src/renderer/components/AboutModal.tsx:211:failure Error: [vitest] No \"MessageSquarePlus\" export is defined on the \"lucide-react\" mock. Did you forget to return it from \"vi.mock\"?\nIf you need to partially mock a module, you can use \"importOriginal\" helper inside:\n\nvi.mock(import(\"lucide-react\"), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n // your mocked methods\n }\n})\n\n ❯ AboutModal src/renderer/components/AboutModal.tsx:211:8\n ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18\n ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13\n ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16\n ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14\n ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12\n ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5\n ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7\n\n | src/renderer/components/AboutModal.tsx:211:failure Error: [vitest] No \"MessageSquarePlus\" export is defined on the \"lucide-react\" mock. Did you forget to return it from \"vi.mock\"?\nIf you need to partially mock a module, you can use \"importOriginal\" helper inside:\n\nvi.mock(import(\"lucide-react\"), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n // your mocked methods\n }\n})\n\n ❯ AboutModal src/renderer/components/AboutModal.tsx:211:8\n ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18\n ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13\n ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16\n ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14\n ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12\n ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5\n ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7\n\n | src/renderer/components/AboutModal.tsx:211:failure Error: [vitest] No \"MessageSquarePlus\" export is defined on the \"lucide-react\" mock. Did you forget to return it from \"vi.mock\"?\nIf you need to partially mock a module, you can use \"importOriginal\" helper inside:\n\nvi.mock(import(\"lucide-react\"), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n // your mocked methods\n }\n})\n\n ❯ AboutModal src/renderer/components/AboutModal.tsx:211:8\n ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18\n ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13\n ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16\n ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14\n ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12\n ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5\n ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7\n\n | src/renderer/components/AboutModal.tsx:211:failure Error: [vitest] No \"MessageSquarePlus\" export is defined on the \"lucide-react\" mock. Did you forget to return it from \"vi.mock\"?\nIf you need to partially mock a module, you can use \"importOriginal\" helper inside:\n\nvi.mock(import(\"lucide-react\"), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n // your mocked methods\n }\n})\n\n ❯ AboutModal src/renderer/components/AboutModal.tsx:211:8\n ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18\n ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13\n ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16\n ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14\n ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12\n ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5\n ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7\n\n | src/renderer/components/AboutModal.tsx:211:failure Error: [vitest] No \"MessageSquarePlus\" export is defined on the \"lucide-react\" mock. Did you forget to return it from \"vi.mock\"?\nIf you need to partially mock a module, you can use \"importOriginal\" helper inside:\n\nvi.mock(import(\"lucide-react\"), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n // your mocked methods\n }\n})\n\n ❯ AboutModal src/renderer/components/AboutModal.tsx:211:8\n ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18\n ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13\n ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16\n ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14\n ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12\n ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5\n ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7\n\n","completedAt":"2026-03-01T21:11:46Z"},{"source":"check-run","id":65324814066,"name":"lint-and-format","status":"completed","conclusion":"failure","htmlUrl":"https://github.com/RunMaestro/Maestro/actions/runs/22552610299/job/65324814066","detailsUrl":"https://github.com/RunMaestro/Maestro/actions/runs/22552610299/job/65324814066","summary":"","notes":".github:11:failure Process completed with exit code 1.","completedAt":"2026-03-01T21:06:16Z"}]} | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,150 @@ | ||
| /** | ||
| * Feedback IPC Handlers | ||
| * | ||
| * This module handles: | ||
| * - Checking GitHub CLI availability and authentication | ||
| * - Submitting feedback text to the selected agent as a structured prompt | ||
| */ | ||
|
|
||
| import { ipcMain, app } from 'electron'; | ||
| import fs from 'fs/promises'; | ||
| import path from 'path'; | ||
| import { logger } from '../../utils/logger'; | ||
| import { withIpcErrorLogging, CreateHandlerOptions } from '../../utils/ipcHandler'; | ||
| import { | ||
| isGhInstalled, | ||
| setCachedGhStatus, | ||
| getCachedGhStatus, | ||
| getExpandedEnv, | ||
| } from '../../utils/cliDetection'; | ||
| import { execFileNoThrow } from '../../utils/execFile'; | ||
| import { ProcessManager } from '../../process-manager'; | ||
|
|
||
| const LOG_CONTEXT = '[Feedback]'; | ||
|
|
||
| const GH_NOT_INSTALLED_MESSAGE = | ||
| 'GitHub CLI (gh) is not installed. Install it from https://cli.github.com'; | ||
| const GH_NOT_AUTHENTICATED_MESSAGE = | ||
| 'GitHub CLI is not authenticated. Run "gh auth login" in your terminal.'; | ||
|
|
||
| function getPromptPath(): string { | ||
| if (app.isPackaged) { | ||
| return path.join(process.resourcesPath, 'prompts', 'feedback.md'); | ||
| } | ||
|
|
||
| return path.join(app.getAppPath(), 'src', 'prompts', 'feedback.md'); | ||
| } | ||
|
|
||
| /** | ||
| * Helper to create handler options with consistent context | ||
| */ | ||
| const handlerOpts = ( | ||
| operation: string, | ||
| extra?: Partial<CreateHandlerOptions> | ||
| ): Pick<CreateHandlerOptions, 'context' | 'operation'> => ({ | ||
| context: LOG_CONTEXT, | ||
| operation, | ||
| ...extra, | ||
| }); | ||
|
|
||
| /** | ||
| * Dependencies required for feedback handler registration | ||
| */ | ||
| export interface FeedbackHandlerDependencies { | ||
| getProcessManager: () => ProcessManager | null; | ||
| } | ||
|
|
||
| /** | ||
| * Register feedback IPC handlers. | ||
| */ | ||
| export function registerFeedbackHandlers(deps: FeedbackHandlerDependencies): void { | ||
| const { getProcessManager } = deps; | ||
|
|
||
| logger.info('Registering feedback IPC handlers', LOG_CONTEXT); | ||
|
|
||
| // Check if GitHub CLI is installed and authenticated | ||
| ipcMain.handle( | ||
| 'feedback:check-gh-auth', | ||
| withIpcErrorLogging( | ||
| handlerOpts('check-gh-auth'), | ||
| async (): Promise<{ authenticated: boolean; message?: string }> => { | ||
| // Prefer cache when available | ||
| const cached = getCachedGhStatus(); | ||
| if (cached) { | ||
| if (!cached.installed) { | ||
| return { authenticated: false, message: GH_NOT_INSTALLED_MESSAGE }; | ||
| } | ||
| if (!cached.authenticated) { | ||
| return { authenticated: false, message: GH_NOT_AUTHENTICATED_MESSAGE }; | ||
| } | ||
| return { authenticated: true }; | ||
| } | ||
|
|
||
| // Check if gh is installed | ||
| const installed = await isGhInstalled(); | ||
| if (!installed) { | ||
| setCachedGhStatus(false, false); | ||
| return { authenticated: false, message: GH_NOT_INSTALLED_MESSAGE }; | ||
| } | ||
|
|
||
| // Check auth status (command output ignored; exit code is the signal) | ||
| const authResult = await execFileNoThrow( | ||
| 'gh', | ||
| ['auth', 'status'], | ||
| undefined, | ||
| getExpandedEnv() | ||
| ); | ||
| const authenticated = authResult.exitCode === 0; | ||
| setCachedGhStatus(true, authenticated); | ||
|
|
||
| if (!authenticated) { | ||
| return { authenticated: false, message: GH_NOT_AUTHENTICATED_MESSAGE }; | ||
| } | ||
|
|
||
| return { authenticated: true }; | ||
| } | ||
| ) | ||
| ); | ||
|
|
||
| // Submit feedback by writing to an active process | ||
| ipcMain.handle( | ||
| 'feedback:submit', | ||
| withIpcErrorLogging( | ||
| handlerOpts('submit'), | ||
| async ({ | ||
| sessionId, | ||
| feedbackText, | ||
| }: { | ||
| sessionId: string; | ||
| feedbackText: string; | ||
| }): Promise<{ success: boolean; error?: string }> => { | ||
| if (!sessionId || typeof sessionId !== 'string') { | ||
| return { success: false, error: 'No target agent was selected.' }; | ||
| } | ||
|
|
||
| const trimmedFeedback = typeof feedbackText === 'string' ? feedbackText.trim() : ''; | ||
| if (!trimmedFeedback) { | ||
| return { success: false, error: 'Feedback cannot be empty.' }; | ||
| } | ||
| if (trimmedFeedback.length > 5000) { | ||
| return { success: false, error: 'Feedback exceeds the maximum length (5000).' }; | ||
| } | ||
|
|
||
| const processManager = getProcessManager(); | ||
| if (!processManager) { | ||
| return { success: false, error: 'Agent process not available' }; | ||
| } | ||
|
|
||
| const promptTemplate = await fs.readFile(getPromptPath(), 'utf-8'); | ||
| const finalPrompt = promptTemplate.replace('{{FEEDBACK}}', trimmedFeedback); | ||
| const writeSuccess = processManager.write(sessionId, `${finalPrompt}\n`); | ||
coderabbitai[bot] marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| if (!writeSuccess) { | ||
| return { success: false, error: 'Agent process not available' }; | ||
| } | ||
|
|
||
| return { success: true }; | ||
| } | ||
| ) | ||
| ); | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove accidental agent-prompt artifact from the PR.
This file appears unrelated to the feature implementation and contains workflow/debug payload content (CI job metadata, stack traces, and PR ops instructions). It should not be committed as part of the product change set.
🧹 Proposed fix
📝 Committable suggestion
🧰 Tools
🪛 LanguageTool
[style] ~17-~17: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...s defined on the "lucide-react" mock. Did you forget to return it from "vi.mock...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~17-~17: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...s defined on the "lucide-react" mock. Did you forget to return it from "vi.mock...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~17-~17: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...s defined on the "lucide-react" mock. Did you forget to return it from "vi.mock...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~17-~17: The official name of this software platform is spelled with a capital “H”.
Context: ...job/65324814066","summary":"","notes":".github:11:failure Process completed with exit ...
(GITHUB)
🤖 Prompt for AI Agents