@verygoodplugins/mcp-freescout 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +0 -4
- package/AGENTS.md +36 -0
- package/README.md +29 -10
- package/dist/freescout-api.d.ts +3 -1
- package/dist/freescout-api.d.ts.map +1 -1
- package/dist/freescout-api.js +40 -1
- package/dist/freescout-api.js.map +1 -1
- package/dist/index.js +128 -40
- package/dist/index.js.map +1 -1
- package/package.json +8 -6
- package/.claude/commands/implement-freescout-ticket.md +0 -422
package/.claude/settings.json
CHANGED
|
@@ -32,10 +32,6 @@
|
|
|
32
32
|
"WebFetch",
|
|
33
33
|
"WebFetch(domain:wpfusion.com)",
|
|
34
34
|
"WebSearch",
|
|
35
|
-
"Bash(curl -s \"https://wpfusion.com/wp-json/*\")",
|
|
36
|
-
"Bash(curl -u \"$WPF_DOCS_USER:$WPF_DOCS_PASSWORD\" \"https://wpfusion.com/wp-json/*\")",
|
|
37
|
-
"Bash(curl -H \"Authorization: Basic*\" \"https://wpfusion.com/wp-json/*\")",
|
|
38
|
-
"Bash(curl -s -H \"Authorization: Basic*\" \"$WPF_DOCS_URL/wp-json/*\")",
|
|
39
35
|
"Bash(curl -X POST:*)",
|
|
40
36
|
"Bash(curl -X PUT:*)",
|
|
41
37
|
"Bash(curl -X PATCH:*)",
|
package/AGENTS.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Repository Guidelines
|
|
2
|
+
|
|
3
|
+
## Project Structure & Modules
|
|
4
|
+
- **Source**: TypeScript sources live in `src/` (`index.ts`, `freescout-api.ts`, `ticket-analyzer.ts`, `types.ts`).
|
|
5
|
+
- **Build output**: Compiled JavaScript and type declarations are in `dist/` (do not edit directly).
|
|
6
|
+
- **Entry point**: The MCP server CLI entry is `src/index.ts`, built to `dist/index.js` and exposed as `mcp-freescout`.
|
|
7
|
+
|
|
8
|
+
## Build, Test & Development
|
|
9
|
+
- **Install**: `npm install` – install dependencies.
|
|
10
|
+
- **Dev server**: `npm run dev` – run `src/index.ts` with live reload.
|
|
11
|
+
- **Build**: `npm run build` – compile TypeScript to `dist/`.
|
|
12
|
+
- **Test**: `npm test` – run Jest test suite.
|
|
13
|
+
- **Lint**: `npm run lint` – run ESLint over `src/**/*.ts`.
|
|
14
|
+
- **Format**: `npm run format` – apply Prettier formatting to `src/**/*.ts`.
|
|
15
|
+
|
|
16
|
+
## Coding Style & Naming
|
|
17
|
+
- **Language**: TypeScript with ES modules (`type: module`).
|
|
18
|
+
- **Formatting**: Use Prettier via `npm run format`; 2‑space indentation and single quotes where possible.
|
|
19
|
+
- **Linting**: ESLint with `@typescript-eslint` rules; fix warnings before opening a PR.
|
|
20
|
+
- **Naming**: Use `camelCase` for variables/functions, `PascalCase` for classes/types, and descriptive file names (e.g., `freescout-api.ts`).
|
|
21
|
+
|
|
22
|
+
## Testing Guidelines
|
|
23
|
+
- **Framework**: Jest (`npm test`).
|
|
24
|
+
- **Location**: Place tests alongside code as `*.test.ts` or in a dedicated test folder if introduced consistently.
|
|
25
|
+
- **Scope**: Cover new behavior, especially FreeScout API calls and ticket analysis logic.
|
|
26
|
+
- **CI readiness**: Ensure `npm test` and `npm run lint` pass locally before pushing.
|
|
27
|
+
|
|
28
|
+
## Commit & Pull Requests
|
|
29
|
+
- **Commits**: Write clear, imperative messages (e.g., `Add ticket analyzer tests`, `Fix FreeScout auth error`).
|
|
30
|
+
- **Branches**: Use short, descriptive names (e.g., `feat/ticket-tags`, `fix/rate-limits`).
|
|
31
|
+
- **PRs**: Include a concise summary, motivation, testing notes (`npm test`, `npm run lint`), and link related issues. Add screenshots or logs when changing error handling or CLI behavior.
|
|
32
|
+
|
|
33
|
+
## Memory MCP Usage
|
|
34
|
+
- **Start of work**: Use the memory MCP to recall project-specific context for the area you are modifying (recent bugs, decisions, or related files).
|
|
35
|
+
- **During/after work**: When you fix an issue or learn something important (API behavior, edge case, configuration nuance), store or update a memory via the MCP.
|
|
36
|
+
- **Associations**: When relevant, associate new memories with existing ones (e.g., linking a bugfix to a specific module or decision) to keep context navigable for future tasks.
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ An MCP (Model Context Protocol) server for FreeScout helpdesk ticket management
|
|
|
9
9
|
- 💬 **Draft Responses**: Generate customer replies based on ticket analysis
|
|
10
10
|
- 🌳 **Git Integration**: Create and manage Git worktrees for ticket implementations
|
|
11
11
|
- 🔄 **Full Workflow Support**: Complete ticket-to-PR workflow automation
|
|
12
|
-
- 📊 **Search Capabilities**: Search and filter tickets across your FreeScout instance
|
|
12
|
+
- 📊 **Search Capabilities**: Search and filter tickets across your FreeScout instance with mailbox filtering support
|
|
13
13
|
|
|
14
14
|
## Installation
|
|
15
15
|
|
|
@@ -18,6 +18,7 @@ An MCP (Model Context Protocol) server for FreeScout helpdesk ticket management
|
|
|
18
18
|
- Node.js 18 or higher
|
|
19
19
|
- FreeScout instance with API access enabled
|
|
20
20
|
- Git (for worktree management features)
|
|
21
|
+
- GitHub CLI (`gh`) for GitHub integration (install from https://cli.github.com/)
|
|
21
22
|
|
|
22
23
|
## Quick Start (Recommended)
|
|
23
24
|
|
|
@@ -63,7 +64,8 @@ Add this to your Cursor settings.json or create `~/.cursor/mcp.json`:
|
|
|
63
64
|
"args": ["@verygoodplugins/mcp-freescout@latest"],
|
|
64
65
|
"env": {
|
|
65
66
|
"FREESCOUT_URL": "https://your-freescout-domain.com",
|
|
66
|
-
"FREESCOUT_API_KEY": "your-api-key-here"
|
|
67
|
+
"FREESCOUT_API_KEY": "your-api-key-here",
|
|
68
|
+
"WORKING_DIRECTORY": "${workspaceFolder}"
|
|
67
69
|
}
|
|
68
70
|
}
|
|
69
71
|
}
|
|
@@ -103,7 +105,8 @@ npm run build
|
|
|
103
105
|
"args": ["/path/to/mcp-freescout/dist/index.js"],
|
|
104
106
|
"env": {
|
|
105
107
|
"FREESCOUT_URL": "https://your-freescout-domain.com",
|
|
106
|
-
"FREESCOUT_API_KEY": "your-api-key-here"
|
|
108
|
+
"FREESCOUT_API_KEY": "your-api-key-here",
|
|
109
|
+
"WORKING_DIRECTORY": "/path/to/your/project"
|
|
107
110
|
}
|
|
108
111
|
}
|
|
109
112
|
}
|
|
@@ -271,6 +274,7 @@ Search for tickets across your FreeScout instance.
|
|
|
271
274
|
**Parameters:**
|
|
272
275
|
- `query` (required): Search query
|
|
273
276
|
- `status` (optional): Filter by status ('active', 'pending', 'closed', 'spam', 'all')
|
|
277
|
+
- `mailboxId` (optional): Filter by specific mailbox ID (searches all mailboxes if not specified)
|
|
274
278
|
|
|
275
279
|
**Natural Language Examples:**
|
|
276
280
|
- "Search for tickets containing 'OAuth error'"
|
|
@@ -278,6 +282,20 @@ Search for tickets across your FreeScout instance.
|
|
|
278
282
|
- "Search for closed tickets about 'plugin conflicts'"
|
|
279
283
|
- "Look for tickets from customer 'victor@example.com'"
|
|
280
284
|
- "Find all active tickets related to 'authentication'"
|
|
285
|
+
- "Search for tickets in mailbox 1 containing 'bug report'"
|
|
286
|
+
- "Find tickets in mailbox 2 with status pending"
|
|
287
|
+
|
|
288
|
+
#### `freescout_get_mailboxes`
|
|
289
|
+
Get a list of all available mailboxes in your FreeScout instance.
|
|
290
|
+
|
|
291
|
+
**Parameters:**
|
|
292
|
+
None
|
|
293
|
+
|
|
294
|
+
**Natural Language Examples:**
|
|
295
|
+
- "Show me all available mailboxes"
|
|
296
|
+
- "List the mailboxes in FreeScout"
|
|
297
|
+
- "What mailboxes are configured?"
|
|
298
|
+
- "Get mailbox information"
|
|
281
299
|
|
|
282
300
|
### Git Workflow Tools
|
|
283
301
|
|
|
@@ -328,15 +346,16 @@ Create a GitHub pull request for the current branch. Automatically detects the r
|
|
|
328
346
|
- "Create a draft PR for the current branch"
|
|
329
347
|
|
|
330
348
|
**Features:**
|
|
331
|
-
- Auto-detects GitHub repository
|
|
349
|
+
- Auto-detects GitHub repository using GitHub CLI (no configuration needed!)
|
|
332
350
|
- Adds FreeScout ticket link to PR body when ticketId is provided
|
|
333
351
|
- Supports draft PRs for work in progress
|
|
334
|
-
- Uses GitHub CLI (gh) for authentication
|
|
352
|
+
- Uses GitHub CLI (`gh`) for authentication - no tokens required!
|
|
353
|
+
- Requires: `gh` installed and authenticated (`gh auth login`)
|
|
335
354
|
|
|
336
355
|
### Workflow Automation
|
|
337
356
|
|
|
338
357
|
#### `freescout_implement_ticket`
|
|
339
|
-
|
|
358
|
+
workflow automation: analyze ticket, create worktree, and prepare implementation plan.
|
|
340
359
|
|
|
341
360
|
**Parameters:**
|
|
342
361
|
- `ticket` (required): Ticket ID, number, or FreeScout URL
|
|
@@ -430,6 +449,8 @@ await mcp.callTool('git_remove_worktree', {
|
|
|
430
449
|
ticketId: '12345'
|
|
431
450
|
});
|
|
432
451
|
```
|
|
452
|
+

|
|
453
|
+
|
|
433
454
|
|
|
434
455
|
### Draft Reply Workflow
|
|
435
456
|
```javascript
|
|
@@ -542,12 +563,11 @@ npm run build
|
|
|
542
563
|
|----------|-------------|---------|
|
|
543
564
|
| `FREESCOUT_DEFAULT_USER_ID` | Default user ID for assignments | `1` |
|
|
544
565
|
| `WORKING_DIRECTORY` | Base directory for Git operations | Current working directory¹ |
|
|
545
|
-
| `
|
|
546
|
-
| `GITHUB_REPO` | GitHub repository (owner/repo) | Auto-detected from git remote² |
|
|
566
|
+
| `GITHUB_REPO` | GitHub repository (owner/repo) | Auto-detected using `gh`² |
|
|
547
567
|
|
|
548
568
|
¹ **Note**: Automatically uses the current project/workspace directory. Only set this if you need to work on a different directory.
|
|
549
569
|
|
|
550
|
-
² **Note**: The server automatically detects the GitHub repository
|
|
570
|
+
² **Note**: The server automatically detects the GitHub repository using GitHub CLI (`gh`). Requires `gh` to be installed and authenticated (`gh auth login`). Only set `GITHUB_REPO` if you need to override the auto-detection.
|
|
551
571
|
|
|
552
572
|
### Advanced Configuration Example
|
|
553
573
|
|
|
@@ -563,7 +583,6 @@ For more control, you can specify additional environment variables:
|
|
|
563
583
|
"FREESCOUT_API_KEY": "your-api-key",
|
|
564
584
|
"FREESCOUT_DEFAULT_USER_ID": "2",
|
|
565
585
|
"WORKING_DIRECTORY": "/path/to/specific/project",
|
|
566
|
-
"GITHUB_TOKEN": "ghp_yourtoken",
|
|
567
586
|
"GITHUB_REPO": "owner/repo"
|
|
568
587
|
}
|
|
569
588
|
}
|
package/dist/freescout-api.d.ts
CHANGED
|
@@ -16,7 +16,9 @@ export declare class FreeScoutAPI {
|
|
|
16
16
|
assignTo?: number;
|
|
17
17
|
byUser?: number;
|
|
18
18
|
}): Promise<FreeScoutConversation>;
|
|
19
|
-
searchConversations(query: string, status?: string): Promise<FreeScoutApiResponse<FreeScoutConversation>>;
|
|
19
|
+
searchConversations(query: string, status?: string, state?: string, mailboxId?: number): Promise<FreeScoutApiResponse<FreeScoutConversation>>;
|
|
20
|
+
listConversations(status?: string, state?: string, assignee?: string | null): Promise<FreeScoutApiResponse<FreeScoutConversation>>;
|
|
21
|
+
getMailboxes(): Promise<any>;
|
|
20
22
|
extractTicketIdFromUrl(url: string): string | null;
|
|
21
23
|
parseTicketInput(input: string): string;
|
|
22
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freescout-api.d.ts","sourceRoot":"","sources":["../src/freescout-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK3C;;OAEG;IACH,OAAO,CAAC,cAAc;YAgIR,OAAO;IA6Bf,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,cAAc,GAAE,OAAc,GAC7B,OAAO,CAAC,qBAAqB,CAAC;IAO3B,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,EACrC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,GAC5B,OAAO,CAAC,eAAe,CAAC;IAqBrB,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC;IAMrB,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;QAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GACA,OAAO,CAAC,qBAAqB,CAAC;IAQ3B,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"freescout-api.d.ts","sourceRoot":"","sources":["../src/freescout-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK3C;;OAEG;IACH,OAAO,CAAC,cAAc;YAgIR,OAAO;IA6Bf,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,cAAc,GAAE,OAAc,GAC7B,OAAO,CAAC,qBAAqB,CAAC;IAO3B,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,EACrC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,GAC5B,OAAO,CAAC,eAAe,CAAC;IAqBrB,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC;IAMrB,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;QAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GACA,OAAO,CAAC,qBAAqB,CAAC;IAQ3B,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;IAiCjD,iBAAiB,CACrB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;IAiBjD,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC;IAIlC,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQlD,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAoBxC"}
|
package/dist/freescout-api.js
CHANGED
|
@@ -166,14 +166,53 @@ export class FreeScoutAPI {
|
|
|
166
166
|
async updateConversation(ticketId, updates) {
|
|
167
167
|
return this.request(`/conversations/${ticketId}`, 'PUT', updates);
|
|
168
168
|
}
|
|
169
|
-
async searchConversations(query, status) {
|
|
169
|
+
async searchConversations(query, status, state, mailboxId) {
|
|
170
|
+
// Valid statuses as defined in the API
|
|
171
|
+
const VALID_STATUSES = ['active', 'pending', 'closed', 'spam'];
|
|
170
172
|
const params = new URLSearchParams();
|
|
171
173
|
if (query)
|
|
172
174
|
params.append('query', query);
|
|
175
|
+
// Handle state parameter
|
|
176
|
+
if (state)
|
|
177
|
+
params.append('state', state);
|
|
178
|
+
// Handle mailboxId=0 correctly using typeof check
|
|
179
|
+
if (typeof mailboxId !== 'undefined') {
|
|
180
|
+
params.append('mailboxId', mailboxId.toString());
|
|
181
|
+
}
|
|
182
|
+
// Handle status parameter
|
|
183
|
+
if (status) {
|
|
184
|
+
if (status === 'all') {
|
|
185
|
+
// When status is 'all', append each valid status explicitly
|
|
186
|
+
VALID_STATUSES.forEach(validStatus => {
|
|
187
|
+
params.append('status', validStatus);
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
// Only append single status when a specific status is provided
|
|
192
|
+
params.append('status', status);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return this.request(`/conversations?${params.toString()}`);
|
|
196
|
+
}
|
|
197
|
+
async listConversations(status, state, assignee) {
|
|
198
|
+
const params = new URLSearchParams();
|
|
173
199
|
if (status)
|
|
174
200
|
params.append('status', status);
|
|
201
|
+
if (state)
|
|
202
|
+
params.append('state', state);
|
|
203
|
+
if (assignee !== undefined) {
|
|
204
|
+
if (assignee === null) {
|
|
205
|
+
params.append('assignee', 'null');
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
params.append('assignee', assignee);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
175
211
|
return this.request(`/conversations?${params.toString()}`);
|
|
176
212
|
}
|
|
213
|
+
async getMailboxes() {
|
|
214
|
+
return this.request('/mailboxes');
|
|
215
|
+
}
|
|
177
216
|
extractTicketIdFromUrl(url) {
|
|
178
217
|
// Match patterns like:
|
|
179
218
|
// https://domain.com/conversation/12345
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freescout-api.js","sourceRoot":"","sources":["../src/freescout-api.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"freescout-api.js","sourceRoot":"","sources":["../src/freescout-api.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -15,39 +15,43 @@ const DEFAULT_USER_ID = parseInt(process.env.FREESCOUT_DEFAULT_USER_ID || '1');
|
|
|
15
15
|
// WORKING_DIRECTORY defaults to current working directory if not specified
|
|
16
16
|
// This allows the server to work with the current project context automatically
|
|
17
17
|
const WORKING_DIRECTORY = process.env.WORKING_DIRECTORY || process.cwd();
|
|
18
|
-
// Helper function to
|
|
18
|
+
// Helper function to check if GitHub CLI is available
|
|
19
|
+
function isGhAvailable() {
|
|
20
|
+
try {
|
|
21
|
+
execSync('gh --version', {
|
|
22
|
+
stdio: 'pipe',
|
|
23
|
+
timeout: 5000
|
|
24
|
+
});
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Helper function to get GitHub repo using gh CLI
|
|
19
32
|
function getGitHubRepo() {
|
|
20
33
|
if (process.env.GITHUB_REPO) {
|
|
21
34
|
return process.env.GITHUB_REPO;
|
|
22
35
|
}
|
|
36
|
+
if (!isGhAvailable()) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
23
39
|
try {
|
|
24
|
-
//
|
|
25
|
-
const
|
|
40
|
+
// Use gh to get repo info - this is more reliable than parsing git remotes
|
|
41
|
+
const repoInfo = execSync('gh repo view --json nameWithOwner', {
|
|
26
42
|
cwd: WORKING_DIRECTORY,
|
|
27
43
|
encoding: 'utf-8',
|
|
28
44
|
stdio: 'pipe'
|
|
29
45
|
}).trim();
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
// HTTPS: https://github.com/owner/repo.git
|
|
33
|
-
// HTTPS no .git: https://github.com/owner/repo
|
|
34
|
-
let match = remoteUrl.match(/github\.com[:/]([^/]+\/[^/.]+)(\.git)?$/);
|
|
35
|
-
if (match) {
|
|
36
|
-
return match[1];
|
|
37
|
-
}
|
|
38
|
-
// Try without .git extension
|
|
39
|
-
match = remoteUrl.match(/github\.com[:/]([^/]+\/[^/]+)$/);
|
|
40
|
-
if (match) {
|
|
41
|
-
return match[1];
|
|
42
|
-
}
|
|
46
|
+
const parsed = JSON.parse(repoInfo);
|
|
47
|
+
return parsed.nameWithOwner;
|
|
43
48
|
}
|
|
44
49
|
catch (error) {
|
|
45
|
-
//
|
|
46
|
-
|
|
50
|
+
// gh command failed - might not be in a GitHub repo or not authenticated
|
|
51
|
+
return undefined;
|
|
47
52
|
}
|
|
48
|
-
return undefined;
|
|
49
53
|
}
|
|
50
|
-
// Helper function to check if Git operations are available
|
|
54
|
+
// Helper function to check if Git operations are available
|
|
51
55
|
function isGitAvailable() {
|
|
52
56
|
try {
|
|
53
57
|
execSync('git --version', {
|
|
@@ -60,9 +64,8 @@ function isGitAvailable() {
|
|
|
60
64
|
return false;
|
|
61
65
|
}
|
|
62
66
|
}
|
|
63
|
-
// Get GitHub configuration
|
|
67
|
+
// Get GitHub configuration - no token needed, gh CLI handles auth
|
|
64
68
|
const GITHUB_REPO = getGitHubRepo();
|
|
65
|
-
const GITHUB_TOKEN = process.env.GITHUB_TOKEN;
|
|
66
69
|
if (!FREESCOUT_URL || !FREESCOUT_API_KEY) {
|
|
67
70
|
console.error('Missing required environment variables: FREESCOUT_URL and FREESCOUT_API_KEY');
|
|
68
71
|
process.exit(1);
|
|
@@ -210,10 +213,28 @@ const tools = [
|
|
|
210
213
|
enum: ['active', 'pending', 'closed', 'spam', 'all'],
|
|
211
214
|
description: 'Filter by status (default: all)',
|
|
212
215
|
},
|
|
216
|
+
state: {
|
|
217
|
+
type: 'string',
|
|
218
|
+
enum: ['published', 'deleted'],
|
|
219
|
+
description: 'Filter by state (default: published to exclude deleted tickets)',
|
|
220
|
+
},
|
|
221
|
+
mailboxId: {
|
|
222
|
+
type: 'number',
|
|
223
|
+
description: 'Filter by mailbox ID (optional, searches all mailboxes if not specified)',
|
|
224
|
+
},
|
|
213
225
|
},
|
|
214
226
|
required: ['query'],
|
|
215
227
|
},
|
|
216
228
|
},
|
|
229
|
+
{
|
|
230
|
+
name: 'freescout_get_mailboxes',
|
|
231
|
+
description: 'Get list of available mailboxes',
|
|
232
|
+
inputSchema: {
|
|
233
|
+
type: 'object',
|
|
234
|
+
properties: {},
|
|
235
|
+
required: [],
|
|
236
|
+
},
|
|
237
|
+
},
|
|
217
238
|
{
|
|
218
239
|
name: 'git_create_worktree',
|
|
219
240
|
description: 'Create a Git worktree for working on a ticket',
|
|
@@ -444,7 +465,49 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
444
465
|
};
|
|
445
466
|
}
|
|
446
467
|
case 'freescout_search_tickets': {
|
|
447
|
-
|
|
468
|
+
// Always default to 'published' state unless user explicitly requests 'deleted'
|
|
469
|
+
const state = args.state || 'published';
|
|
470
|
+
const query = args.query;
|
|
471
|
+
let results;
|
|
472
|
+
// If searching for unassigned tickets, use the list endpoint which properly supports filtering
|
|
473
|
+
if (query.includes('assignee:null') || query.includes('unassigned')) {
|
|
474
|
+
results = await api.listConversations(args.status, state, null // null assignee for unassigned tickets
|
|
475
|
+
);
|
|
476
|
+
}
|
|
477
|
+
else {
|
|
478
|
+
// Use search for other queries
|
|
479
|
+
results = await api.searchConversations(query, args.status, state, args.mailboxId);
|
|
480
|
+
/**
|
|
481
|
+
* LIMITATION: The FreeScout searchConversations API endpoint does not respect
|
|
482
|
+
* the 'state' parameter (published/draft). Unlike the list endpoint, which
|
|
483
|
+
* correctly filters by state, the search endpoint ignores this parameter and
|
|
484
|
+
* returns all conversations regardless of state.
|
|
485
|
+
*
|
|
486
|
+
* WORKAROUND: We apply client-side filtering below when state='published'.
|
|
487
|
+
*
|
|
488
|
+
* PERFORMANCE IMPLICATIONS:
|
|
489
|
+
* - Client-side filtering may be expensive for large result sets
|
|
490
|
+
* - Pagination counts may be inaccurate (total_elements reflects filtered count)
|
|
491
|
+
* - Results may be incomplete if the API returns paginated data
|
|
492
|
+
*
|
|
493
|
+
* ACTION ITEM: Verify with FreeScout maintainers whether the searchConversations
|
|
494
|
+
* endpoint should accept the 'state' parameter or if API documentation only
|
|
495
|
+
* applies to the list endpoint. Consider filing an issue or feature request.
|
|
496
|
+
*/
|
|
497
|
+
if (state === 'published' && results._embedded?.conversations) {
|
|
498
|
+
const originalCount = results._embedded.conversations.length;
|
|
499
|
+
results._embedded.conversations = results._embedded.conversations.filter((conversation) => conversation.state === 'published');
|
|
500
|
+
const filteredCount = results._embedded.conversations.length;
|
|
501
|
+
console.error(`[WARNING] searchConversations endpoint does not respect 'state' parameter. ` +
|
|
502
|
+
`Applied client-side filtering for state='${state}'. ` +
|
|
503
|
+
`Original count: ${originalCount}, Filtered count: ${filteredCount}. ` +
|
|
504
|
+
`This may be expensive for large result sets and incomplete with pagination.`);
|
|
505
|
+
// Update the total count to reflect filtered results
|
|
506
|
+
if (results.page) {
|
|
507
|
+
results.page.total_elements = results._embedded.conversations.length;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
448
511
|
return {
|
|
449
512
|
content: [
|
|
450
513
|
{
|
|
@@ -454,6 +517,17 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
454
517
|
],
|
|
455
518
|
};
|
|
456
519
|
}
|
|
520
|
+
case 'freescout_get_mailboxes': {
|
|
521
|
+
const mailboxes = await api.getMailboxes();
|
|
522
|
+
return {
|
|
523
|
+
content: [
|
|
524
|
+
{
|
|
525
|
+
type: 'text',
|
|
526
|
+
text: JSON.stringify(mailboxes, null, 2),
|
|
527
|
+
},
|
|
528
|
+
],
|
|
529
|
+
};
|
|
530
|
+
}
|
|
457
531
|
case 'git_create_worktree': {
|
|
458
532
|
if (!isGitAvailable()) {
|
|
459
533
|
return {
|
|
@@ -556,12 +630,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
556
630
|
}
|
|
557
631
|
}
|
|
558
632
|
case 'github_create_pr': {
|
|
559
|
-
if (!
|
|
633
|
+
if (!isGhAvailable()) {
|
|
560
634
|
return {
|
|
561
635
|
content: [
|
|
562
636
|
{
|
|
563
637
|
type: 'text',
|
|
564
|
-
text: '⚠️ GitHub
|
|
638
|
+
text: '⚠️ GitHub CLI (gh) is not installed or available. Please install it from https://cli.github.com/ and ensure you are authenticated with `gh auth login`.',
|
|
565
639
|
},
|
|
566
640
|
],
|
|
567
641
|
};
|
|
@@ -571,7 +645,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
571
645
|
content: [
|
|
572
646
|
{
|
|
573
647
|
type: 'text',
|
|
574
|
-
text: '⚠️ Could not detect GitHub repository. Please ensure you are in a Git repository
|
|
648
|
+
text: '⚠️ Could not detect GitHub repository. Please ensure you are in a Git repository connected to GitHub, or set GITHUB_REPO environment variable.',
|
|
575
649
|
},
|
|
576
650
|
],
|
|
577
651
|
};
|
|
@@ -588,17 +662,24 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
588
662
|
if (ticketId) {
|
|
589
663
|
enhancedBody = `${body}\n\n---\n\nFreeScout Ticket: ${FREESCOUT_URL}/conversation/${ticketId}`;
|
|
590
664
|
}
|
|
591
|
-
// Create the PR using GitHub CLI
|
|
592
|
-
const
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
665
|
+
// Create the PR using GitHub CLI (no token needed - gh handles auth)
|
|
666
|
+
const args_array = ['pr', 'create'];
|
|
667
|
+
if (GITHUB_REPO) {
|
|
668
|
+
args_array.push('--repo', GITHUB_REPO);
|
|
669
|
+
}
|
|
670
|
+
args_array.push('--title', title);
|
|
671
|
+
args_array.push('--body', enhancedBody);
|
|
672
|
+
args_array.push('--base', baseBranch);
|
|
673
|
+
if (draft) {
|
|
674
|
+
args_array.push('--draft');
|
|
675
|
+
}
|
|
676
|
+
if (branch) {
|
|
677
|
+
args_array.push('--head', branch);
|
|
678
|
+
}
|
|
679
|
+
const result = execSync(`gh ${args_array.map(arg => `"${arg.replace(/"/g, '\\"')}"`).join(' ')}`, {
|
|
596
680
|
cwd: WORKING_DIRECTORY,
|
|
597
681
|
encoding: 'utf-8',
|
|
598
|
-
|
|
599
|
-
...process.env,
|
|
600
|
-
GH_TOKEN: GITHUB_TOKEN,
|
|
601
|
-
}
|
|
682
|
+
stdio: 'pipe'
|
|
602
683
|
}).trim();
|
|
603
684
|
return {
|
|
604
685
|
content: [
|
|
@@ -610,18 +691,25 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
610
691
|
};
|
|
611
692
|
}
|
|
612
693
|
catch (error) {
|
|
613
|
-
//
|
|
614
|
-
if (error.message.includes('
|
|
694
|
+
// Handle authentication errors
|
|
695
|
+
if (error.message.includes('not authenticated') || error.message.includes('authentication')) {
|
|
615
696
|
return {
|
|
616
697
|
content: [
|
|
617
698
|
{
|
|
618
699
|
type: 'text',
|
|
619
|
-
text: '⚠️ GitHub CLI
|
|
700
|
+
text: '⚠️ GitHub CLI is not authenticated. Please run `gh auth login` to authenticate with GitHub.',
|
|
620
701
|
},
|
|
621
702
|
],
|
|
622
703
|
};
|
|
623
704
|
}
|
|
624
|
-
|
|
705
|
+
return {
|
|
706
|
+
content: [
|
|
707
|
+
{
|
|
708
|
+
type: 'text',
|
|
709
|
+
text: `⚠️ Failed to create PR: ${error.message}\n\nPlease ensure:\n1. You are authenticated: \`gh auth login\`\n2. You are in a GitHub repository\n3. Your branch is pushed to GitHub`,
|
|
710
|
+
},
|
|
711
|
+
],
|
|
712
|
+
};
|
|
625
713
|
}
|
|
626
714
|
}
|
|
627
715
|
case 'freescout_implement_ticket': {
|
|
@@ -693,7 +781,7 @@ ${args.additionalContext ? `## Additional Context\n${args.additionalContext}` :
|
|
|
693
781
|
|
|
694
782
|
${worktreeInfo}
|
|
695
783
|
|
|
696
|
-
${GITHUB_REPO ? `## GitHub Repository\n- Repository: ${GITHUB_REPO}\n- Ready for PR creation with \`github_create_pr\` tool` : '## GitHub Repository\n- ⚠️ No GitHub repository detected
|
|
784
|
+
${GITHUB_REPO ? `## GitHub Repository\n- Repository: ${GITHUB_REPO}\n- Ready for PR creation with \`github_create_pr\` tool\n- Requires: GitHub CLI (\`gh\`) installed and authenticated` : '## GitHub Repository\n- ⚠️ No GitHub repository detected\n- Install GitHub CLI: \`gh\` and run \`gh auth login\`\n- Or set GITHUB_REPO environment variable'}
|
|
697
785
|
|
|
698
786
|
## Next Steps
|
|
699
787
|
1. Review the analysis above
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verygoodplugins/mcp-freescout",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "MCP server for FreeScout ticket management and workflow automation",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
|
-
"mcp-freescout": "
|
|
8
|
+
"mcp-freescout": "dist/index.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "tsc",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"license": "GPL-3.0",
|
|
30
30
|
"repository": {
|
|
31
31
|
"type": "git",
|
|
32
|
-
"url": "https://github.com/verygoodplugins/mcp-freescout.git"
|
|
32
|
+
"url": "git+https://github.com/verygoodplugins/mcp-freescout.git"
|
|
33
33
|
},
|
|
34
34
|
"homepage": "https://github.com/verygoodplugins/mcp-freescout#readme",
|
|
35
35
|
"bugs": {
|
|
@@ -37,9 +37,11 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@modelcontextprotocol/sdk": "^0.5.0",
|
|
40
|
+
"dotenv": "^16.3.1",
|
|
41
|
+
"isomorphic-dompurify": "^2.16.0",
|
|
42
|
+
"marked": "^17.0.0",
|
|
40
43
|
"node-fetch": "^3.3.2",
|
|
41
|
-
"zod": "^3.22.4"
|
|
42
|
-
"dotenv": "^16.3.1"
|
|
44
|
+
"zod": "^3.22.4"
|
|
43
45
|
},
|
|
44
46
|
"devDependencies": {
|
|
45
47
|
"@types/node": "^20.10.0",
|
|
@@ -51,4 +53,4 @@
|
|
|
51
53
|
"tsx": "^4.6.0",
|
|
52
54
|
"typescript": "^5.3.0"
|
|
53
55
|
}
|
|
54
|
-
}
|
|
56
|
+
}
|
|
@@ -1,422 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
allowed-tools: Bash(curl:*), Bash(jq:*), Bash(gh:*), Bash(find:*), Bash(grep:*), Bash(git:*), Bash(ls:*), Bash(mkdir:*), Bash(cp:*), Bash(awk:*), Bash(wc:*), Bash(tr:*), Bash(./vendor/bin/*), mcp_playwright_browser_navigate, mcp_playwright_browser_take_screenshot, mcp_playwright_browser_click, mcp_playwright_browser_type, mcp_playwright_browser_resize, mcp_playwright_browser_close
|
|
3
|
-
auto-approve: true
|
|
4
|
-
description: Implement FreeScout ticket with testing, PR creation, customer reply, and documentation updates
|
|
5
|
-
argument-hint: <ticket-number> [additional context] | <freescout-ticket-url> [additional context]
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Implement FreeScout Ticket with Full Workflow
|
|
9
|
-
|
|
10
|
-
Please implement the FreeScout ticket following this comprehensive workflow using structured XML tags for clarity.
|
|
11
|
-
|
|
12
|
-
<input>
|
|
13
|
-
$ARGUMENTS (FreeScout ticket ID or URL, with optional context)
|
|
14
|
-
</input>
|
|
15
|
-
|
|
16
|
-
<project_context>
|
|
17
|
-
**Note**: This workflow is plugin-agnostic. The AI will understand the specific project name, scope, and coding standards from the project's CLAUDE.md and instructions.md files. References to "the plugin" in this workflow refer to the current project being worked on.
|
|
18
|
-
</project_context>
|
|
19
|
-
|
|
20
|
-
<instructions>
|
|
21
|
-
## Interactive Setup
|
|
22
|
-
|
|
23
|
-
**IMPORTANT**: Before starting, check if $ARGUMENTS is empty or just contains whitespace.
|
|
24
|
-
|
|
25
|
-
If $ARGUMENTS is empty, STOP and ask the user:
|
|
26
|
-
<prompt_template>
|
|
27
|
-
"What FreeScout ticket would you like me to implement? Please provide:
|
|
28
|
-
- A ticket number (e.g., 12345)
|
|
29
|
-
- A FreeScout ticket URL
|
|
30
|
-
- Or the ticket ID
|
|
31
|
-
- Optionally include additional context or suggestions after the ticket ID"
|
|
32
|
-
</prompt_template>
|
|
33
|
-
|
|
34
|
-
Wait for their response before proceeding.
|
|
35
|
-
|
|
36
|
-
## Parse Arguments
|
|
37
|
-
<argument_parsing>
|
|
38
|
-
1. **Extract ticket ID**: First argument should be the ticket ID or URL
|
|
39
|
-
2. **Extract additional context**: Everything after the ticket ID is treated as additional context/suggestions
|
|
40
|
-
3. **Store context**: Save any additional context to reference during implementation
|
|
41
|
-
</argument_parsing>
|
|
42
|
-
</instructions>
|
|
43
|
-
|
|
44
|
-
<setup_steps>
|
|
45
|
-
## Setup Steps
|
|
46
|
-
|
|
47
|
-
<ticket_extraction>
|
|
48
|
-
4. **Extract ticket ID from argument**:
|
|
49
|
-
- If numeric: Use directly as ticket ID
|
|
50
|
-
- If URL: Extract ticket ID from URL pattern
|
|
51
|
-
</ticket_extraction>
|
|
52
|
-
|
|
53
|
-
<api_integration>
|
|
54
|
-
5. **Get ticket details via FreeScout API**:
|
|
55
|
-
```bash
|
|
56
|
-
# Get conversation with threads included
|
|
57
|
-
curl -s -H "X-FreeScout-API-Key: $FREESCOUT_API_KEY" \
|
|
58
|
-
"$FREESCOUT_URL/api/conversations/$TICKET_ID?embed=threads" | jq '.'
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
<api_response_structure>
|
|
62
|
-
**FreeScout API Response Structure**:
|
|
63
|
-
- `_embedded.threads[]`: Array of conversation messages
|
|
64
|
-
- `_embedded.threads[].type`: The type of message (note, customer, user)
|
|
65
|
-
- `_embedded.threads[].body`: HTML content of the message
|
|
66
|
-
- `_embedded.threads[].created_by_customer`: Boolean for customer messages
|
|
67
|
-
- `_embedded.customer`: Customer details (email, first_name, last_name)
|
|
68
|
-
- `status`: The status of the ticket (active, pending, closed, spam)
|
|
69
|
-
- `user_id`: Currently assigned user ID
|
|
70
|
-
</api_response_structure>
|
|
71
|
-
</api_integration>
|
|
72
|
-
|
|
73
|
-
<information_extraction>
|
|
74
|
-
6. **Extract key information**:
|
|
75
|
-
- Customer email and name from `_embedded.customer`
|
|
76
|
-
- Issue description from customer messages (type=customer)
|
|
77
|
-
- Any code snippets or error messages from thread bodies
|
|
78
|
-
- Check internal notes (type=note) for mentions of testing done by a team member
|
|
79
|
-
- Extract any attachment URLs from `_embedded.threads[].attachments[]`
|
|
80
|
-
</information_extraction>
|
|
81
|
-
|
|
82
|
-
<attachment_handling>
|
|
83
|
-
7. **Check for attachments**:
|
|
84
|
-
- If attachments exist, list them and ask user to provide local paths if needed
|
|
85
|
-
- Note any visual requirements or screenshots provided
|
|
86
|
-
</attachment_handling>
|
|
87
|
-
</setup_steps>
|
|
88
|
-
|
|
89
|
-
<testing_phase>
|
|
90
|
-
## Testing Phase
|
|
91
|
-
|
|
92
|
-
<testing_decision>
|
|
93
|
-
8. **Determine if testing is needed**:
|
|
94
|
-
- Skip if issue in ticket has already been confirmed reproducible by a team member
|
|
95
|
-
- Skip if customer provided their own code solution
|
|
96
|
-
- Otherwise, reproduce the issue:
|
|
97
|
-
<reproduction_steps>
|
|
98
|
-
a. Set up test environment based on ticket details
|
|
99
|
-
b. Use Playwright browser if UI testing is needed
|
|
100
|
-
c. Document reproduction steps
|
|
101
|
-
d. Take "before" screenshot if applicable
|
|
102
|
-
</reproduction_steps>
|
|
103
|
-
</testing_decision>
|
|
104
|
-
</testing_phase>
|
|
105
|
-
|
|
106
|
-
<analysis_and_planning>
|
|
107
|
-
## Analysis & Planning
|
|
108
|
-
|
|
109
|
-
<code_research>
|
|
110
|
-
9. **Search for related code**:
|
|
111
|
-
- Use ticket keywords to find relevant files
|
|
112
|
-
- For complex searches across multiple files, use Task tool to manage context
|
|
113
|
-
- Check for similar past issues or patterns
|
|
114
|
-
- Search for known limitations or third-party plugin conflicts
|
|
115
|
-
</code_research>
|
|
116
|
-
|
|
117
|
-
<issue_analysis>
|
|
118
|
-
10. **Analyze the issue and plan solution**:
|
|
119
|
-
- Review ticket details, customer messages, and any provided context
|
|
120
|
-
<bug_classification>
|
|
121
|
-
- **First determine if this is a bug we can fix**:
|
|
122
|
-
- Is it a third-party plugin limitation (like Elementor copy/paste issues)?
|
|
123
|
-
- Is it expected behavior that needs clarification?
|
|
124
|
-
- Is it a configuration issue rather than a bug?
|
|
125
|
-
</bug_classification>
|
|
126
|
-
- If it's NOT a bug, skip to drafting explanatory reply
|
|
127
|
-
- If it IS a bug, identify root cause and plan implementation
|
|
128
|
-
- Consider multiple solution approaches
|
|
129
|
-
- Factor in any additional context provided by user
|
|
130
|
-
- Plan implementation strategy
|
|
131
|
-
</issue_analysis>
|
|
132
|
-
|
|
133
|
-
<solution_review>
|
|
134
|
-
11. **Present solution for review**:
|
|
135
|
-
- STOP before implementing and present the proposed solution:
|
|
136
|
-
<solution_template>
|
|
137
|
-
```
|
|
138
|
-
"Based on the ticket analysis, here's my proposed solution:
|
|
139
|
-
|
|
140
|
-
## Issue Summary:
|
|
141
|
-
[Brief description of the problem]
|
|
142
|
-
|
|
143
|
-
## Root Cause:
|
|
144
|
-
[What's causing the issue]
|
|
145
|
-
|
|
146
|
-
## Proposed Solution:
|
|
147
|
-
[Detailed plan for the fix]
|
|
148
|
-
|
|
149
|
-
## Files to Modify:
|
|
150
|
-
[List of files that will be changed]
|
|
151
|
-
|
|
152
|
-
## Additional Context Considered:
|
|
153
|
-
[Reference any user-provided context]
|
|
154
|
-
|
|
155
|
-
## Alternative Approaches:
|
|
156
|
-
[Other options considered]
|
|
157
|
-
|
|
158
|
-
Would you like me to proceed with this implementation, or do you have feedback/modifications? (proceed/modify)"
|
|
159
|
-
```
|
|
160
|
-
</solution_template>
|
|
161
|
-
- Wait for user approval or feedback before continuing
|
|
162
|
-
- If user provides modifications, incorporate them into the plan
|
|
163
|
-
</solution_review>
|
|
164
|
-
</analysis_and_planning>
|
|
165
|
-
|
|
166
|
-
<alternative_workflow>
|
|
167
|
-
## Alternative: Explanatory Reply (No Code Changes Needed)
|
|
168
|
-
|
|
169
|
-
<explanatory_reply>
|
|
170
|
-
**If the issue is NOT a plugin bug that can be fixed**, skip implementation and go directly to:
|
|
171
|
-
|
|
172
|
-
11a. **Draft explanatory reply**:
|
|
173
|
-
<research_requirements>
|
|
174
|
-
- Research the actual cause (third-party limitations, expected behavior, etc.)
|
|
175
|
-
- Use WebSearch to find supporting evidence (GitHub issues, documentation, forums)
|
|
176
|
-
- Use WebFetch to examine specific issue pages or documentation
|
|
177
|
-
- Draft a clear explanation for the customer with specific evidence
|
|
178
|
-
- Include links to evidence and suggest workarounds if available
|
|
179
|
-
</research_requirements>
|
|
180
|
-
- Skip to step 18 to add the draft reply to FreeScout
|
|
181
|
-
</explanatory_reply>
|
|
182
|
-
</alternative_workflow>
|
|
183
|
-
|
|
184
|
-
<implementation>
|
|
185
|
-
## Implementation
|
|
186
|
-
|
|
187
|
-
<fix_implementation>
|
|
188
|
-
12. **Implement the fix** (only if this IS a plugin bug that can be fixed):
|
|
189
|
-
<implementation_requirements>
|
|
190
|
-
- Follow project coding standards (reference CLAUDE.md or instructions.md)
|
|
191
|
-
- Ensure backward compatibility
|
|
192
|
-
- Add appropriate error handling
|
|
193
|
-
</implementation_requirements>
|
|
194
|
-
|
|
195
|
-
<behavior_change_check>
|
|
196
|
-
- **Check for behavior changes**: If the implementation modifies existing functionality, STOP and ask:
|
|
197
|
-
<behavior_change_template>
|
|
198
|
-
```
|
|
199
|
-
"This fix/feature will change existing behavior:
|
|
200
|
-
- Current behavior: [describe current functionality]
|
|
201
|
-
- New behavior: [describe what will change]
|
|
202
|
-
- Affected users: [who might be impacted]
|
|
203
|
-
|
|
204
|
-
This could affect customers who rely on the current behavior.
|
|
205
|
-
Should I proceed with this change? (y/n)
|
|
206
|
-
|
|
207
|
-
Alternative: [suggest a backward-compatible approach if possible]"
|
|
208
|
-
```
|
|
209
|
-
</behavior_change_template>
|
|
210
|
-
- Only proceed with behavior changes after explicit approval
|
|
211
|
-
</behavior_change_check>
|
|
212
|
-
</fix_implementation>
|
|
213
|
-
|
|
214
|
-
<implementation_testing>
|
|
215
|
-
13. **Test the implementation**:
|
|
216
|
-
<testing_requirements>
|
|
217
|
-
- Verify the fix resolves the issue
|
|
218
|
-
- Check for side effects
|
|
219
|
-
- Take "after" screenshot if UI-related
|
|
220
|
-
- Run `phpcbf` and `phpcs` on any modified files
|
|
221
|
-
</testing_requirements>
|
|
222
|
-
</implementation_testing>
|
|
223
|
-
</implementation>
|
|
224
|
-
|
|
225
|
-
<git_workflow>
|
|
226
|
-
## Git Workflow with Worktrees
|
|
227
|
-
|
|
228
|
-
<worktree_setup>
|
|
229
|
-
14. **Create dedicated worktree for this ticket**:
|
|
230
|
-
```bash
|
|
231
|
-
# Create a new worktree WITHIN the project directory for Claude Code compatibility
|
|
232
|
-
BRANCH_NAME="fix/freescout-$TICKET_ID-brief-description"
|
|
233
|
-
WORKTREE_DIR="./worktrees/ticket-$TICKET_ID"
|
|
234
|
-
|
|
235
|
-
# Create worktrees directory if it doesn't exist
|
|
236
|
-
mkdir -p ./worktrees
|
|
237
|
-
|
|
238
|
-
# Create worktree from master branch within project directory
|
|
239
|
-
git worktree add "$WORKTREE_DIR" -b "$BRANCH_NAME" master
|
|
240
|
-
|
|
241
|
-
# Switch to the new worktree (staying within allowed directories)
|
|
242
|
-
cd "$WORKTREE_DIR"
|
|
243
|
-
|
|
244
|
-
echo "✅ Created worktree at: $WORKTREE_DIR"
|
|
245
|
-
echo "✅ Working on branch: $BRANCH_NAME"
|
|
246
|
-
echo "✅ This allows parallel development without affecting your main workspace"
|
|
247
|
-
echo "✅ Worktree is within project directory for Claude Code compatibility"
|
|
248
|
-
|
|
249
|
-
# Add worktrees directory to .gitignore if not already present
|
|
250
|
-
if ! grep -q "^worktrees/$" .gitignore 2>/dev/null; then
|
|
251
|
-
echo "worktrees/" >> .gitignore
|
|
252
|
-
echo "✅ Added worktrees/ to .gitignore"
|
|
253
|
-
fi
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
<worktree_benefits>
|
|
257
|
-
**Benefits of using worktrees**:
|
|
258
|
-
- Work on multiple tickets simultaneously without branch switching
|
|
259
|
-
- Keep your main workspace clean and unaffected
|
|
260
|
-
- Test changes in isolation
|
|
261
|
-
- Maintain separate development environments
|
|
262
|
-
- Compatible with Claude Code's directory restrictions
|
|
263
|
-
- Organized within project structure (`./worktrees/ticket-ID/`)
|
|
264
|
-
</worktree_benefits>
|
|
265
|
-
</worktree_setup>
|
|
266
|
-
</git_workflow>
|
|
267
|
-
|
|
268
|
-
<commit_and_pr>
|
|
269
|
-
15. **Commit changes with descriptive message**:
|
|
270
|
-
<commit_requirements>
|
|
271
|
-
- Reference the FreeScout ticket
|
|
272
|
-
- Describe what was fixed
|
|
273
|
-
- Include any breaking changes
|
|
274
|
-
- Include any areas that might need human testing
|
|
275
|
-
- Include any areas that might affect the functionality and require documentation updates
|
|
276
|
-
</commit_requirements>
|
|
277
|
-
|
|
278
|
-
16. **Create Pull Request**:
|
|
279
|
-
```bash
|
|
280
|
-
gh pr create --title "Fix: [Brief description] (FreeScout #$TICKET_ID)" \
|
|
281
|
-
--body "## Summary
|
|
282
|
-
Fixes issue reported in FreeScout ticket #$TICKET_ID: $FREESCOUT_URL/conversation/$TICKET_ID
|
|
283
|
-
|
|
284
|
-
## Changes
|
|
285
|
-
- [List changes made]
|
|
286
|
-
|
|
287
|
-
## Testing
|
|
288
|
-
- [Describe testing performed]
|
|
289
|
-
|
|
290
|
-
## Areas for Human Testing
|
|
291
|
-
- [List areas that might need human testing]
|
|
292
|
-
|
|
293
|
-
## Areas for Documentation Updates
|
|
294
|
-
- [List areas that might need documentation updates]
|
|
295
|
-
|
|
296
|
-
## Customer Context
|
|
297
|
-
[Brief summary of customer's issue]
|
|
298
|
-
|
|
299
|
-
🤖 Generated with Claude Code"
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
17. **Clean up worktree automatically**:
|
|
303
|
-
```bash
|
|
304
|
-
# Return to main workspace
|
|
305
|
-
cd ../../
|
|
306
|
-
|
|
307
|
-
# Remove the worktree (frees up the branch for normal Git workflow)
|
|
308
|
-
git worktree remove "./worktrees/ticket-$TICKET_ID"
|
|
309
|
-
|
|
310
|
-
echo "✅ Worktree cleaned up - you can now use normal Git workflow for PR revisions"
|
|
311
|
-
echo "💡 To make changes: git checkout fix/freescout-$TICKET_ID-brief-description"
|
|
312
|
-
```
|
|
313
|
-
</commit_and_pr>
|
|
314
|
-
|
|
315
|
-
<freescout_updates>
|
|
316
|
-
## FreeScout Updates
|
|
317
|
-
|
|
318
|
-
<customer_reply_draft>
|
|
319
|
-
18. **Draft customer reply**:
|
|
320
|
-
```bash
|
|
321
|
-
REPLY_BODY="Hi [Customer Name],
|
|
322
|
-
|
|
323
|
-
Thanks. We were able to reproduce it on our end. We've implemented a fix that [briefly describe what was fixed].
|
|
324
|
-
|
|
325
|
-
The fix has been submitted for review and will be included in the next plugin update. You'll receive the update through WordPress's automatic update system.
|
|
326
|
-
|
|
327
|
-
Here's what was changed:
|
|
328
|
-
- [List key changes in user-friendly terms]
|
|
329
|
-
|
|
330
|
-
Please let me know if you have any questions!
|
|
331
|
-
|
|
332
|
-
Best regards,
|
|
333
|
-
Jack"
|
|
334
|
-
```
|
|
335
|
-
</customer_reply_draft>
|
|
336
|
-
|
|
337
|
-
<api_updates>
|
|
338
|
-
19. **Update ticket via API**:
|
|
339
|
-
<api_operations>
|
|
340
|
-
- Add a note (internal thread) with draft reply for Jack to review
|
|
341
|
-
- Set status to "active"
|
|
342
|
-
- Assign to Jack (user_id: 1)
|
|
343
|
-
</api_operations>
|
|
344
|
-
|
|
345
|
-
```bash
|
|
346
|
-
# Add internal note with draft reply for Jack
|
|
347
|
-
# Use jq to properly format JSON with escaped characters
|
|
348
|
-
jq -n --arg text "Draft reply for customer:\n\n$REPLY_BODY" --argjson user 1 \
|
|
349
|
-
'{type: "note", text: $text, user: $user}' | \
|
|
350
|
-
curl -X POST -H "X-FreeScout-API-Key: $FREESCOUT_API_KEY" \
|
|
351
|
-
-H "Content-Type: application/json" \
|
|
352
|
-
"$FREESCOUT_URL/api/conversations/$TICKET_ID/threads" \
|
|
353
|
-
-d @-
|
|
354
|
-
|
|
355
|
-
# Update ticket status and assignment
|
|
356
|
-
curl -X PUT -H "X-FreeScout-API-Key: $FREESCOUT_API_KEY" \
|
|
357
|
-
-H "Content-Type: application/json" \
|
|
358
|
-
"$FREESCOUT_URL/api/conversations/$TICKET_ID" \
|
|
359
|
-
-d '{
|
|
360
|
-
"status": "active",
|
|
361
|
-
"assignTo": 1,
|
|
362
|
-
"byUser": 1
|
|
363
|
-
}'
|
|
364
|
-
```
|
|
365
|
-
</api_updates>
|
|
366
|
-
</freescout_updates>
|
|
367
|
-
|
|
368
|
-
<completion>
|
|
369
|
-
## Completion
|
|
370
|
-
|
|
371
|
-
<summary>
|
|
372
|
-
20. **Provide summary** with:
|
|
373
|
-
<summary_requirements>
|
|
374
|
-
- Link to created PR
|
|
375
|
-
- Brief description of changes
|
|
376
|
-
- Confirmation that FreeScout ticket was updated
|
|
377
|
-
- Any follow-up actions needed
|
|
378
|
-
</summary_requirements>
|
|
379
|
-
</summary>
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
<documentation_updates>
|
|
384
|
-
21. **Documentation Update Prompt**:
|
|
385
|
-
<documentation_scope>
|
|
386
|
-
- **Skip for bug fixes** - documentation updates are only needed for:
|
|
387
|
-
- New features or functionality
|
|
388
|
-
- Changes to existing behavior that affect how customers use the plugin
|
|
389
|
-
- Breaking changes (rare - should only happen with explicit user approval)
|
|
390
|
-
</documentation_scope>
|
|
391
|
-
|
|
392
|
-
- If this is a new feature or behavior change, ask user:
|
|
393
|
-
<documentation_prompt>
|
|
394
|
-
```
|
|
395
|
-
"Would you like to update the documentation for this feature? (y/n)
|
|
396
|
-
|
|
397
|
-
The following areas may need documentation updates:
|
|
398
|
-
- [List from PR body's "Areas for Documentation Updates"]
|
|
399
|
-
|
|
400
|
-
Feature implemented: [Brief description]
|
|
401
|
-
Component affected: [Integration/Module/Core feature name]
|
|
402
|
-
|
|
403
|
-
Note: Bug fixes typically don't require documentation updates."
|
|
404
|
-
```
|
|
405
|
-
</documentation_prompt>
|
|
406
|
-
|
|
407
|
-
- If user responds with 'y' or 'yes':
|
|
408
|
-
- Execute: `/update-docs [Component]: [Feature description] - [Relevant docs URL if known]`
|
|
409
|
-
- Example: `/update-docs MemberPress: Added support for course completion tags - [documentation URL]`
|
|
410
|
-
</documentation_updates>
|
|
411
|
-
</completion>
|
|
412
|
-
|
|
413
|
-
<implementation_notes>
|
|
414
|
-
## Implementation Notes
|
|
415
|
-
<guidelines>
|
|
416
|
-
- Consider edge cases and backward compatibility
|
|
417
|
-
- Use the project's logging system for debugging (if available)
|
|
418
|
-
- Follow the coding standards in CLAUDE.md
|
|
419
|
-
- Track documentation needs during implementation for the prompt
|
|
420
|
-
- Leverage worktrees for parallel development without disrupting your main workspace
|
|
421
|
-
</guidelines>
|
|
422
|
-
</implementation_notes>
|