@freelancercom/phabricator-mcp 2.0.13 → 2.0.14

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.
@@ -32,7 +32,7 @@ export function registerDiffusionTools(server, client) {
32
32
  });
33
33
  // Search commits
34
34
  server.tool('phabricator_commit_search', 'Search Diffusion commits', {
35
- queryKey: z.string().optional().describe('Built-in query: "all", "authored"'),
35
+ queryKey: z.string().optional().describe('Built-in query: "all", "active", "authored", "audited"'),
36
36
  constraints: jsonCoerce(z.object({
37
37
  ids: z.array(z.coerce.number()).optional().describe('Commit IDs'),
38
38
  phids: z.array(z.string()).optional().describe('Commit PHIDs'),
@@ -22,7 +22,7 @@ export function registerHarbormasterTools(server, client) {
22
22
  });
23
23
  // Search builds
24
24
  server.tool('phabricator_build_search', 'Search Harbormaster builds (CI/build results)', {
25
- queryKey: z.string().optional().describe('Built-in query: "all"'),
25
+ queryKey: z.string().optional().describe('Built-in query: "all", "initiated", "waiting", "active", "completed"'),
26
26
  constraints: jsonCoerce(z.object({
27
27
  ids: z.array(z.coerce.number()).optional().describe('Build IDs'),
28
28
  phids: z.array(z.string()).optional().describe('Build PHIDs'),
@@ -93,13 +93,14 @@ export function registerHarbormasterTools(server, client) {
93
93
  duration: z.coerce.number().optional().describe('Duration in seconds'),
94
94
  path: z.string().optional().describe('File path related to the test'),
95
95
  coverage: z.record(z.string(), z.string()).optional().describe('Coverage data as {path: "NNCUUUC..."} where N=not executable, C=covered, U=uncovered'),
96
+ format: z.string().optional().describe('Format for details field: "text" (default) or "remarkup"'),
96
97
  details: z.string().optional().describe('Additional details or failure message'),
97
98
  }))).optional().describe('Unit test results to report'),
98
99
  lint: jsonCoerce(z.array(z.object({
99
100
  name: z.string().describe('Lint message name'),
100
101
  code: z.string().describe('Lint rule code'),
101
102
  severity: z.string().describe('Severity: "advice", "autofix", "warning", "error", "disabled"'),
102
- path: z.string().optional().describe('File path'),
103
+ path: z.string().describe('File path'),
103
104
  line: z.coerce.number().optional().describe('Line number'),
104
105
  char: z.coerce.number().optional().describe('Character offset'),
105
106
  description: z.string().optional().describe('Lint message description'),
@@ -3,7 +3,7 @@ import { jsonCoerce } from './coerce.js';
3
3
  export function registerManiphestTools(server, client) {
4
4
  // Search tasks
5
5
  server.tool('phabricator_task_search', 'Search Maniphest tasks with optional filters', {
6
- queryKey: z.string().optional().describe('Built-in query: "all", "open", "authored", "assigned"'),
6
+ queryKey: z.string().optional().describe('Built-in query: "all", "open", "authored", "assigned", "subscribed"'),
7
7
  constraints: jsonCoerce(z.object({
8
8
  ids: z.array(z.coerce.number()).optional().describe('Task IDs to search for'),
9
9
  phids: z.array(z.string()).optional().describe('Task PHIDs to search for'),
@@ -34,7 +34,7 @@ export function registerManiphestTools(server, client) {
34
34
  projects: z.boolean().optional().describe('Include project info'),
35
35
  subscribers: z.boolean().optional().describe('Include subscriber info'),
36
36
  })).optional().describe('Data attachments to include'),
37
- order: z.string().optional().describe('Result order: "priority", "updated", "newest", "oldest", "title", "relevance"'),
37
+ order: z.string().optional().describe('Result order: "priority", "updated", "outdated", "newest", "oldest", "closed", "title", "relevance"'),
38
38
  limit: z.coerce.number().max(100).optional().describe('Maximum results (max 100)'),
39
39
  after: z.string().optional().describe('Cursor for next-page pagination'),
40
40
  before: z.string().optional().describe('Cursor for previous-page pagination'),
@@ -54,6 +54,7 @@ export function registerManiphestTools(server, client) {
54
54
  subtype: z.string().optional().describe('Task subtype (e.g. "default", "incident")'),
55
55
  parentPHIDs: z.array(z.string()).optional().describe('Parent task PHIDs'),
56
56
  subtaskPHIDs: z.array(z.string()).optional().describe('Subtask PHIDs'),
57
+ commitPHIDs: z.array(z.string()).optional().describe('Commit PHIDs to associate'),
57
58
  points: z.coerce.number().nullable().optional().describe('Story points value (if points are enabled on this instance)'),
58
59
  space: z.string().optional().describe('Space PHID to place the task in (for multi-space installations)'),
59
60
  comment: z.string().optional().describe('Initial comment on the task (supports Remarkup)'),
@@ -89,6 +90,9 @@ export function registerManiphestTools(server, client) {
89
90
  if (params.subtaskPHIDs !== undefined) {
90
91
  transactions.push({ type: 'subtasks.set', value: params.subtaskPHIDs });
91
92
  }
93
+ if (params.commitPHIDs !== undefined) {
94
+ transactions.push({ type: 'commits.set', value: params.commitPHIDs });
95
+ }
92
96
  if (params.points !== undefined) {
93
97
  transactions.push({ type: 'points', value: params.points });
94
98
  }
@@ -123,6 +127,8 @@ export function registerManiphestTools(server, client) {
123
127
  removeParentPHIDs: z.array(z.string()).optional().describe('Parent task PHIDs to remove'),
124
128
  addSubtaskPHIDs: z.array(z.string()).optional().describe('Subtask PHIDs to add'),
125
129
  removeSubtaskPHIDs: z.array(z.string()).optional().describe('Subtask PHIDs to remove'),
130
+ addCommitPHIDs: z.array(z.string()).optional().describe('Commit PHIDs to associate'),
131
+ removeCommitPHIDs: z.array(z.string()).optional().describe('Commit PHIDs to disassociate'),
126
132
  points: z.coerce.number().nullable().optional().describe('Story points value (null to clear)'),
127
133
  columnPHID: z.string().optional().describe('Move to workboard column'),
128
134
  space: z.string().optional().describe('Space PHID to move the task to (for multi-space installations)'),
@@ -172,6 +178,12 @@ export function registerManiphestTools(server, client) {
172
178
  if (params.removeSubtaskPHIDs !== undefined) {
173
179
  transactions.push({ type: 'subtasks.remove', value: params.removeSubtaskPHIDs });
174
180
  }
181
+ if (params.addCommitPHIDs !== undefined) {
182
+ transactions.push({ type: 'commits.add', value: params.addCommitPHIDs });
183
+ }
184
+ if (params.removeCommitPHIDs !== undefined) {
185
+ transactions.push({ type: 'commits.remove', value: params.removeCommitPHIDs });
186
+ }
175
187
  if (params.points !== undefined) {
176
188
  transactions.push({ type: 'points', value: params.points });
177
189
  }
@@ -3,7 +3,7 @@ import { jsonCoerce } from './coerce.js';
3
3
  export function registerOwnersTools(server, client) {
4
4
  // Search code ownership packages
5
5
  server.tool('phabricator_owners_search', 'Search Owners packages (code ownership). Find who owns a code path or list ownership packages.', {
6
- queryKey: z.string().optional().describe('Built-in query: "all", "active"'),
6
+ queryKey: z.string().optional().describe('Built-in query: "all", "active", "authority"'),
7
7
  constraints: jsonCoerce(z.object({
8
8
  ids: z.array(z.coerce.number()).optional().describe('Package IDs'),
9
9
  phids: z.array(z.string()).optional().describe('Package PHIDs'),
@@ -3,7 +3,7 @@ import { jsonCoerce } from './coerce.js';
3
3
  export function registerPasteTools(server, client) {
4
4
  // Search pastes
5
5
  server.tool('phabricator_paste_search', 'Search Phabricator pastes', {
6
- queryKey: z.string().optional().describe('Built-in query: "all", "authored"'),
6
+ queryKey: z.string().optional().describe('Built-in query: "all", "active", "authored"'),
7
7
  constraints: jsonCoerce(z.object({
8
8
  ids: z.array(z.coerce.number()).optional().describe('Paste IDs'),
9
9
  phids: z.array(z.string()).optional().describe('Paste PHIDs'),
@@ -3,7 +3,7 @@ import { jsonCoerce } from './coerce.js';
3
3
  export function registerPhameTools(server, client) {
4
4
  // Search blogs
5
5
  server.tool('phabricator_blog_search', 'Search Phame blogs', {
6
- queryKey: z.string().optional().describe('Built-in query: "all", "active"'),
6
+ queryKey: z.string().optional().describe('Built-in query: "all", "active", "archived"'),
7
7
  constraints: jsonCoerce(z.object({
8
8
  ids: z.array(z.coerce.number()).optional().describe('Blog IDs'),
9
9
  phids: z.array(z.string()).optional().describe('Blog PHIDs'),
@@ -80,12 +80,12 @@ export function registerPhameTools(server, client) {
80
80
  });
81
81
  // Search blog posts
82
82
  server.tool('phabricator_blog_post_search', 'Search Phame blog posts', {
83
- queryKey: z.string().optional().describe('Built-in query: "all", "live"'),
83
+ queryKey: z.string().optional().describe('Built-in query: "all", "live", "draft", "archived"'),
84
84
  constraints: jsonCoerce(z.object({
85
85
  ids: z.array(z.coerce.number()).optional().describe('Post IDs'),
86
86
  phids: z.array(z.string()).optional().describe('Post PHIDs'),
87
87
  blogPHIDs: z.array(z.string()).optional().describe('Filter by blog PHIDs'),
88
- visibility: z.array(z.coerce.number()).optional().describe('Visibility values: 0 (draft), 1 (published), 2 (archived)'),
88
+ visibility: z.array(z.string()).optional().describe('Visibility values: "0" (draft), "1" (published), "2" (archived)'),
89
89
  subscribers: z.array(z.string()).optional().describe('Subscriber user/project PHIDs'),
90
90
  projects: z.array(z.string()).optional().describe('Project PHIDs'),
91
91
  query: z.string().optional().describe('Full-text search query'),
@@ -3,7 +3,7 @@ import { jsonCoerce } from './coerce.js';
3
3
  export function registerProjectTools(server, client) {
4
4
  // Search projects
5
5
  server.tool('phabricator_project_search', 'Search Phabricator projects', {
6
- queryKey: z.string().optional().describe('Built-in query: "all", "active", "joined"'),
6
+ queryKey: z.string().optional().describe('Built-in query: "all", "active", "joined", "watching"'),
7
7
  constraints: jsonCoerce(z.object({
8
8
  ids: z.array(z.coerce.number()).optional().describe('Project IDs'),
9
9
  phids: z.array(z.string()).optional().describe('Project PHIDs'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@freelancercom/phabricator-mcp",
3
- "version": "2.0.13",
3
+ "version": "2.0.14",
4
4
  "description": "MCP server for Phabricator Conduit API - manage tasks, code reviews, repositories, and more",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",