@oss-autopilot/mcp 1.0.2 → 1.0.3

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/README.md ADDED
@@ -0,0 +1,159 @@
1
+ # @oss-autopilot/mcp
2
+
3
+ MCP server for [OSS Autopilot](https://github.com/costajohnt/oss-autopilot) — exposes PR tracking, issue discovery, and contribution management as MCP tools for any MCP-compatible client.
4
+
5
+ [![npm](https://img.shields.io/npm/v/@oss-autopilot/mcp)](https://www.npmjs.com/package/@oss-autopilot/mcp)
6
+ ![Node](https://img.shields.io/badge/node-%3E%3D20-brightgreen)
7
+ ![License](https://img.shields.io/badge/license-MIT-green)
8
+
9
+ ## What It Provides
10
+
11
+ | Feature | Count | Description |
12
+ |---------|-------|-------------|
13
+ | **Tools** | 21 | `daily`, `status`, `search`, `vet`, `track`, `untrack`, `read`, `comments`, `post`, `claim`, `config`, `init`, `setup`, `check-setup`, `startup`, `shelve`, `unshelve`, `dismiss`, `undismiss`, `snooze`, `unsnooze` |
14
+ | **Resources** | 5 | `oss://status`, `oss://config`, `oss://prs`, `oss://prs/shelved`, `oss://pr/{owner}/{repo}/{number}` |
15
+ | **Prompts** | 3 | `triage` (PR prioritization), `respond-to-pr` (draft response), `find-issues` (discover issues) |
16
+
17
+ Supports **stdio** (default) and **Streamable HTTP** transports.
18
+
19
+ ## Prerequisites
20
+
21
+ - Node.js 20+
22
+ - [GitHub CLI](https://cli.github.com/) authenticated (`gh auth login`)
23
+
24
+ ## Quick Start
25
+
26
+ ```bash
27
+ # 1. Initialize with your GitHub username
28
+ npx @oss-autopilot/mcp@latest --init <your-github-username>
29
+
30
+ # 2. Add the server to your MCP client (see config examples below)
31
+
32
+ # 3. Use the tools — e.g. "daily" to check your PRs, "search" to find issues
33
+ ```
34
+
35
+ ## Client Configuration
36
+
37
+ ### Claude Desktop
38
+
39
+ Add to your `claude_desktop_config.json`:
40
+
41
+ ```json
42
+ {
43
+ "mcpServers": {
44
+ "oss-autopilot": {
45
+ "command": "npx",
46
+ "args": ["@oss-autopilot/mcp@latest"]
47
+ }
48
+ }
49
+ }
50
+ ```
51
+
52
+ ### Cursor
53
+
54
+ Add to `.cursor/mcp.json` in your project or global config:
55
+
56
+ ```json
57
+ {
58
+ "mcpServers": {
59
+ "oss-autopilot": {
60
+ "command": "npx",
61
+ "args": ["@oss-autopilot/mcp@latest"]
62
+ }
63
+ }
64
+ }
65
+ ```
66
+
67
+ ### Codex CLI
68
+
69
+ ```bash
70
+ codex mcp add oss -- npx @oss-autopilot/mcp@latest
71
+ ```
72
+
73
+ ### Windsurf
74
+
75
+ Add to your Windsurf MCP config:
76
+
77
+ ```json
78
+ {
79
+ "mcpServers": {
80
+ "oss-autopilot": {
81
+ "command": "npx",
82
+ "args": ["@oss-autopilot/mcp@latest"]
83
+ }
84
+ }
85
+ }
86
+ ```
87
+
88
+ ### Streamable HTTP (any client)
89
+
90
+ Run the server in HTTP mode instead of stdio:
91
+
92
+ ```bash
93
+ npx @oss-autopilot/mcp@latest --http --port 3001
94
+ ```
95
+
96
+ The server listens at `http://127.0.0.1:3001/mcp` and accepts POST requests.
97
+
98
+ ## Tools Reference
99
+
100
+ | Tool | Description | Read-only |
101
+ |------|-------------|-----------|
102
+ | `daily` | Run daily PR monitoring check with prioritized summary | No |
103
+ | `status` | Show current PR tracking status | Yes |
104
+ | `search` | Search GitHub for contributable issues | Yes |
105
+ | `vet` | Analyze an issue for contribution suitability | Yes |
106
+ | `track` | Start tracking a pull request | No |
107
+ | `untrack` | Stop tracking a pull request | No |
108
+ | `read` | Mark PR notifications as read | No |
109
+ | `comments` | Fetch and display PR comments | Yes |
110
+ | `post` | Post a comment on an issue or PR | No |
111
+ | `claim` | Claim an issue by posting a comment | No |
112
+ | `config` | Get or set configuration values | No |
113
+ | `init` | Initialize with a GitHub username | No |
114
+ | `setup` | Configure preferences (languages, interests) | No |
115
+ | `check-setup` | Check if setup is complete | Yes |
116
+ | `startup` | Run startup checks (auth, state, config) | No |
117
+ | `shelve` | Temporarily hide a PR from daily checks | No |
118
+ | `unshelve` | Return a shelved PR to active monitoring | No |
119
+ | `dismiss` | Dismiss an issue or PR from notifications | No |
120
+ | `undismiss` | Re-enable notifications for a dismissed item | No |
121
+ | `snooze` | Snooze a PR for a number of days | No |
122
+ | `unsnooze` | Unsnooze a PR immediately | No |
123
+
124
+ ## Resources Reference
125
+
126
+ | Resource URI | Description |
127
+ |-------------|-------------|
128
+ | `oss://status` | PR tracking status (cached local state) |
129
+ | `oss://config` | Current configuration |
130
+ | `oss://prs` | Active open PRs from last daily digest |
131
+ | `oss://prs/shelved` | Shelved PRs |
132
+ | `oss://pr/{owner}/{repo}/{number}` | Detail for a specific PR |
133
+
134
+ ## Prompts Reference
135
+
136
+ | Prompt | Args | Description |
137
+ |--------|------|-------------|
138
+ | `triage` | none | Fetches daily digest and builds a prioritized triage list |
139
+ | `respond-to-pr` | `prUrl` | Fetches PR comments and context for drafting a response |
140
+ | `find-issues` | `maxResults?` | Searches for issues ranked by viability score |
141
+
142
+ ## Programmatic Usage
143
+
144
+ The server can also be imported and used as a library:
145
+
146
+ ```typescript
147
+ import { createServer } from '@oss-autopilot/mcp';
148
+
149
+ const server = createServer();
150
+ // Connect to your own transport
151
+ ```
152
+
153
+ ## More Information
154
+
155
+ See the [main repository README](https://github.com/costajohnt/oss-autopilot) for the full documentation, including the Claude Code plugin, CLI usage, dashboard, and contributing guide.
156
+
157
+ ## License
158
+
159
+ MIT
@@ -30303,7 +30303,7 @@ var init_pr_monitor = __esm({
30303
30303
  init_checklist_analysis();
30304
30304
  MODULE7 = "pr-monitor";
30305
30305
  MAX_CONCURRENT_REQUESTS = DEFAULT_CONCURRENCY;
30306
- PRMonitor = class {
30306
+ PRMonitor = class _PRMonitor {
30307
30307
  octokit;
30308
30308
  stateManager;
30309
30309
  constructor(githubToken) {
@@ -30446,7 +30446,11 @@ var init_pr_monitor = __esm({
30446
30446
  const { hasUnrespondedComment, lastMaintainerComment } = checkUnrespondedComments(comments, reviews, reviewComments, config2.githubUsername);
30447
30447
  const ciPromise = this.getCIStatus(owner, repo, ghPR.head.sha);
30448
30448
  const needCommitDate = hasUnrespondedComment || reviewDecision === "changes_requested";
30449
- const commitDatePromise = needCommitDate ? this.octokit.repos.getCommit({ owner, repo, ref: ghPR.head.sha }).then((res) => res.data.commit.author?.date).catch((err2) => {
30449
+ const commitInfoPromise = needCommitDate ? this.octokit.repos.getCommit({ owner, repo, ref: ghPR.head.sha }).then((res) => ({
30450
+ date: res.data.commit.author?.date,
30451
+ // GitHub user login of the commit author (may differ from git author)
30452
+ author: res.data.author?.login
30453
+ })).catch((err2) => {
30450
30454
  const status2 = getHttpStatusCode(err2);
30451
30455
  if (status2 === 429)
30452
30456
  throw err2;
@@ -30460,10 +30464,12 @@ var init_pr_monitor = __esm({
30460
30464
  warn("pr-monitor", `Failed to fetch commit date for ${owner}/${repo}@${ghPR.head.sha.slice(0, 7)}: ${errorMessage(err2)}`);
30461
30465
  return void 0;
30462
30466
  }) : Promise.resolve(void 0);
30463
- const [{ status: ciStatus, failingCheckNames, failingCheckConclusions }, latestCommitDate] = await Promise.all([
30467
+ const [{ status: ciStatus, failingCheckNames, failingCheckConclusions }, commitInfo] = await Promise.all([
30464
30468
  ciPromise,
30465
- commitDatePromise
30469
+ commitInfoPromise
30466
30470
  ]);
30471
+ const latestCommitDate = commitInfo?.date;
30472
+ const latestCommitAuthor = commitInfo?.author;
30467
30473
  const { hasIncompleteChecklist, checklistStats } = analyzeChecklist(ghPR.body || "");
30468
30474
  const maintainerActionHints = extractMaintainerActionHints(lastMaintainerComment?.body, reviewDecision);
30469
30475
  const daysSinceActivity = daysBetween(new Date(ghPR.updated_at), /* @__PURE__ */ new Date());
@@ -30480,6 +30486,8 @@ var init_pr_monitor = __esm({
30480
30486
  dormantThreshold: config2.dormantThresholdDays,
30481
30487
  approachingThreshold: config2.approachingDormantDays,
30482
30488
  latestCommitDate,
30489
+ latestCommitAuthor,
30490
+ contributorUsername: config2.githubUsername,
30483
30491
  lastMaintainerCommentDate: lastMaintainerComment?.createdAt,
30484
30492
  latestChangesRequestedDate,
30485
30493
  hasActionableCIFailure
@@ -30528,9 +30536,10 @@ var init_pr_monitor = __esm({
30528
30536
  * Determine the overall status of a PR
30529
30537
  */
30530
30538
  determineStatus(input) {
30531
- const { ciStatus, hasMergeConflict, hasUnrespondedComment, hasIncompleteChecklist, reviewDecision, daysSinceActivity, dormantThreshold, approachingThreshold, latestCommitDate, lastMaintainerCommentDate, latestChangesRequestedDate, hasActionableCIFailure = true } = input;
30539
+ const { ciStatus, hasMergeConflict, hasUnrespondedComment, hasIncompleteChecklist, reviewDecision, daysSinceActivity, dormantThreshold, approachingThreshold, latestCommitDate: rawCommitDate, latestCommitAuthor, contributorUsername, lastMaintainerCommentDate, latestChangesRequestedDate, hasActionableCIFailure = true } = input;
30540
+ const latestCommitDate = rawCommitDate && this.isContributorCommit(latestCommitAuthor, contributorUsername) ? rawCommitDate : void 0;
30532
30541
  if (hasUnrespondedComment) {
30533
- if (latestCommitDate && lastMaintainerCommentDate && latestCommitDate > lastMaintainerCommentDate) {
30542
+ if (latestCommitDate && lastMaintainerCommentDate && this.isCommitAfterComment(latestCommitDate, lastMaintainerCommentDate)) {
30534
30543
  if (latestChangesRequestedDate && latestCommitDate < latestChangesRequestedDate) {
30535
30544
  return "needs_response";
30536
30545
  }
@@ -30571,6 +30580,33 @@ var init_pr_monitor = __esm({
30571
30580
  }
30572
30581
  return "healthy";
30573
30582
  }
30583
+ /**
30584
+ * Check whether the HEAD commit was authored by the contributor (#547).
30585
+ * Returns true when the author matches or when author info is unavailable
30586
+ * (graceful degradation — don't break existing behavior if the API omits it).
30587
+ */
30588
+ isContributorCommit(commitAuthor, contributorUsername) {
30589
+ if (!commitAuthor || !contributorUsername)
30590
+ return true;
30591
+ return commitAuthor.toLowerCase() === contributorUsername.toLowerCase();
30592
+ }
30593
+ /** Minimum gap (ms) between maintainer comment and contributor commit for
30594
+ * the commit to count as "addressing" the feedback (#547). Prevents false
30595
+ * positives from race conditions, clock skew, and in-flight pushes. */
30596
+ static MIN_RESPONSE_GAP_MS = 2 * 60 * 1e3;
30597
+ // 2 minutes
30598
+ /**
30599
+ * Check whether the contributor's commit is meaningfully after the maintainer's
30600
+ * comment — i.e. the commit timestamp is at least MIN_RESPONSE_GAP_MS later (#547).
30601
+ */
30602
+ isCommitAfterComment(commitDate, commentDate) {
30603
+ const commitMs = new Date(commitDate).getTime();
30604
+ const commentMs = new Date(commentDate).getTime();
30605
+ if (Number.isNaN(commitMs) || Number.isNaN(commentMs)) {
30606
+ return commitDate > commentDate;
30607
+ }
30608
+ return commitMs - commentMs >= _PRMonitor.MIN_RESPONSE_GAP_MS;
30609
+ }
30574
30610
  /**
30575
30611
  * Check if PR has merge conflict
30576
30612
  */
@@ -32924,7 +32960,7 @@ function readDashboardServerInfo() {
32924
32960
  try {
32925
32961
  const content = fs5.readFileSync(getDashboardPidPath(), "utf-8");
32926
32962
  const parsed = JSON.parse(content);
32927
- if (typeof parsed !== "object" || parsed === null || typeof parsed.pid !== "number" || typeof parsed.port !== "number" || typeof parsed.startedAt !== "string") {
32963
+ if (typeof parsed !== "object" || parsed === null || typeof parsed.pid !== "number" || !Number.isInteger(parsed.pid) || parsed.pid <= 0 || typeof parsed.port !== "number" || typeof parsed.startedAt !== "string") {
32928
32964
  warn(MODULE13, "PID file has invalid structure, ignoring");
32929
32965
  return null;
32930
32966
  }
@@ -34633,7 +34669,31 @@ async function launchDashboardServer(options) {
34633
34669
  }
34634
34670
  const existing = await findRunningDashboardServer();
34635
34671
  if (existing) {
34636
- return { url: existing.url, port: existing.port, alreadyRunning: true };
34672
+ const info2 = readDashboardServerInfo();
34673
+ const currentVersion = getCLIVersion();
34674
+ if (!info2) {
34675
+ } else if (info2.version && currentVersion !== "0.0.0" && info2.version !== currentVersion) {
34676
+ console.error(`[STARTUP] Dashboard server version mismatch (running: ${info2.version}, current: ${currentVersion}). Restarting...`);
34677
+ let killed = false;
34678
+ try {
34679
+ process.kill(info2.pid, "SIGTERM");
34680
+ killed = true;
34681
+ } catch (err2) {
34682
+ const code = err2.code;
34683
+ if (code === "ESRCH") {
34684
+ killed = true;
34685
+ } else {
34686
+ console.error(`[STARTUP] Could not kill outdated dashboard (PID ${info2.pid}): ${err2.message}`);
34687
+ }
34688
+ }
34689
+ if (killed) {
34690
+ removeDashboardServerInfo();
34691
+ } else {
34692
+ return { url: existing.url, port: existing.port, alreadyRunning: true };
34693
+ }
34694
+ } else {
34695
+ return { url: existing.url, port: existing.port, alreadyRunning: true };
34696
+ }
34637
34697
  }
34638
34698
  const port = options?.port ?? DEFAULT_PORT;
34639
34699
  const cliPath = process.argv[1];
@@ -34686,6 +34746,7 @@ var init_dashboard_lifecycle = __esm({
34686
34746
  import_child_process2 = require("child_process");
34687
34747
  init_dashboard_server();
34688
34748
  init_dashboard();
34749
+ init_core3();
34689
34750
  DEFAULT_PORT = 3e3;
34690
34751
  POLL_INTERVAL_MS = 200;
34691
34752
  MAX_POLL_ATTEMPTS = 25;
@@ -45137,7 +45198,17 @@ function registerTools(server) {
45137
45198
  },
45138
45199
  annotations: { readOnlyHint: true }
45139
45200
  },
45140
- wrapTool((args) => runSearch({ maxResults: args.maxResults ?? 5 }))
45201
+ wrapTool((args) => {
45202
+ const MAX_SEARCH_RESULTS = 100;
45203
+ let maxResults = args.maxResults ?? 5;
45204
+ if (!Number.isInteger(maxResults) || maxResults < 1) {
45205
+ throw new Error(`Invalid maxResults: ${maxResults}. Must be a positive integer.`);
45206
+ }
45207
+ if (maxResults > MAX_SEARCH_RESULTS) {
45208
+ maxResults = MAX_SEARCH_RESULTS;
45209
+ }
45210
+ return runSearch({ maxResults });
45211
+ })
45141
45212
  );
45142
45213
  server.registerTool(
45143
45214
  "vet",
@@ -45535,7 +45606,11 @@ Please help me draft a thoughtful response addressing the feedback.`
45535
45606
  },
45536
45607
  async ({ maxResults }) => {
45537
45608
  try {
45538
- const data = await runSearch({ maxResults: maxResults ?? 5 });
45609
+ const MAX_SEARCH_RESULTS = 100;
45610
+ let capped = maxResults ?? 5;
45611
+ if (!Number.isInteger(capped) || capped < 1) capped = 5;
45612
+ if (capped > MAX_SEARCH_RESULTS) capped = MAX_SEARCH_RESULTS;
45613
+ const data = await runSearch({ maxResults: capped });
45539
45614
  const candidateList = data.candidates.map(
45540
45615
  (c, i) => `${i + 1}. [${c.recommendation.toUpperCase()}] ${c.issue.repo}#${c.issue.number}: ${c.issue.title}
45541
45616
  URL: ${c.issue.url}
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBzE;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyEvD"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBzE;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6EvD"}
package/dist/prompts.js CHANGED
@@ -56,7 +56,13 @@ export function registerPrompts(server) {
56
56
  },
57
57
  }, async ({ maxResults }) => {
58
58
  try {
59
- const data = await runSearch({ maxResults: maxResults ?? 5 });
59
+ const MAX_SEARCH_RESULTS = 100;
60
+ let capped = maxResults ?? 5;
61
+ if (!Number.isInteger(capped) || capped < 1)
62
+ capped = 5;
63
+ if (capped > MAX_SEARCH_RESULTS)
64
+ capped = MAX_SEARCH_RESULTS;
65
+ const data = await runSearch({ maxResults: capped });
60
66
  const candidateList = data.candidates
61
67
  .map((c, i) => `${i + 1}. [${c.recommendation.toUpperCase()}] ${c.issue.repo}#${c.issue.number}: ${c.issue.title}\n URL: ${c.issue.url}\n Score: ${c.viabilityScore}/100\n Approve: ${c.reasonsToApprove.join(', ') || 'None'}\n Skip: ${c.reasonsToSkip.join(', ') || 'None'}`)
62
68
  .join('\n\n');
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqDzE;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmSrD"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqDzE;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6SrD"}
package/dist/tools.js CHANGED
@@ -62,7 +62,17 @@ export function registerTools(server) {
62
62
  maxResults: z.number().optional().describe('Maximum number of issues to return (default: 5)'),
63
63
  },
64
64
  annotations: { readOnlyHint: true },
65
- }, wrapTool((args) => runSearch({ maxResults: args.maxResults ?? 5 })));
65
+ }, wrapTool((args) => {
66
+ const MAX_SEARCH_RESULTS = 100;
67
+ let maxResults = args.maxResults ?? 5;
68
+ if (!Number.isInteger(maxResults) || maxResults < 1) {
69
+ throw new Error(`Invalid maxResults: ${maxResults}. Must be a positive integer.`);
70
+ }
71
+ if (maxResults > MAX_SEARCH_RESULTS) {
72
+ maxResults = MAX_SEARCH_RESULTS;
73
+ }
74
+ return runSearch({ maxResults });
75
+ }));
66
76
  // 4. vet — Vet an issue for contribution suitability
67
77
  server.registerTool('vet', {
68
78
  description: 'Analyze a GitHub issue to determine if it is a good candidate for contribution. Checks for clarity, scope, existing assignees, and staleness.',
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,QAAQ,EACR,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,UAAU,EACV,OAAO,EACP,WAAW,EACX,OAAO,EACP,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,aAAa,EACb,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAAS,EACT,WAAW,GACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,wCAAwC;AACxC,SAAS,EAAE,CAAC,IAAa;IACvB,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;KACpF,CAAC;AACJ,CAAC;AAED,iCAAiC;AACjC,SAAS,GAAG,CAAC,CAAU;IACrB,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,OAAO,EAAE,IAAa;KACvB,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,SAAS,QAAQ,CAAI,EAAiC;IACpD,OAAO,KAAK,EAAE,IAAO,EAAE,EAAE;QACvB,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;YACtC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAiB;IAC7C,gCAAgC;IAChC,MAAM,CAAC,YAAY,CACjB,OAAO,EACP;QACE,WAAW,EACT,2IAA2I;QAC7I,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,QAAQ,CAAC,CACnB,CAAC;IAEF,mCAAmC;IACnC,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,WAAW,EACT,qGAAqG;QACvG,WAAW,EAAE;YACX,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,sEAAsE,CAAC;SACpF;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,QAAQ,CAAC,SAAS,CAAC,CACpB,CAAC;IAEF,8CAA8C;IAC9C,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,WAAW,EACT,sIAAsI;QACxI,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;SAC9F;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,QAAQ,CAAC,CAAC,IAA6B,EAAE,EAAE;QACzC,MAAM,kBAAkB,GAAG,GAAG,CAAC;QAC/B,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,+BAA+B,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,UAAU,GAAG,kBAAkB,EAAE,CAAC;YACpC,UAAU,GAAG,kBAAkB,CAAC;QAClC,CAAC;QACD,OAAO,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CACH,CAAC;IAEF,qDAAqD;IACrD,MAAM,CAAC,YAAY,CACjB,KAAK,EACL;QACE,WAAW,EACT,+IAA+I;QACjJ,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;SAC9G;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,QAAQ,CAAC,MAAM,CAAC,CACjB,CAAC;IAEF,wBAAwB;IACxB,MAAM,CAAC,YAAY,CACjB,OAAO,EACP;QACE,WAAW,EACT,qHAAqH;QACvH,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2EAA2E,CAAC;SACxG;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,QAAQ,CAAC,CACnB,CAAC;IAEF,kCAAkC;IAClC,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,WAAW,EAAE,wEAAwE;QACrF,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;SAC1G;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D,EACD,QAAQ,CAAC,UAAU,CAAC,CACrB,CAAC;IAEF,uCAAuC;IACvC,MAAM,CAAC,YAAY,CACjB,MAAM,EACN;QACE,WAAW,EAAE,8EAA8E;QAC3F,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;YACvG,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SACtE;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,OAAO,CAAC,CAClB,CAAC;IAEF,iCAAiC;IACjC,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,WAAW,EAAE,6FAA6F;QAC1G,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACtE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;SACzF;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,QAAQ,CAAC,WAAW,CAAC,CACtB,CAAC;IAEF,2BAA2B;IAC3B,MAAM,CAAC,YAAY,CACjB,MAAM,EACN;QACE,WAAW,EAAE,mDAAmD;QAChE,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;SACzD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,OAAO,CAAC,CAClB,CAAC;IAEF,6BAA6B;IAC7B,MAAM,CAAC,YAAY,CACjB,OAAO,EACP;QACE,WAAW,EAAE,4EAA4E;QACzF,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAC/D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;SACxG;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,QAAQ,CAAC,CACnB,CAAC;IAEF,wCAAwC;IACxC,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,WAAW,EACT,oHAAoH;QACtH,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;YACrG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;SACzG;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE;KAC3D,EACD,QAAQ,CAAC,SAAS,CAAC,CACpB,CAAC;IAEF,6CAA6C;IAC7C,MAAM,CAAC,YAAY,CACjB,MAAM,EACN;QACE,WAAW,EACT,4GAA4G;QAC9G,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;SACtD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,OAAO,CAAC,CAClB,CAAC;IAEF,gCAAgC;IAChC,MAAM,CAAC,YAAY,CACjB,OAAO,EACP;QACE,WAAW,EACT,qGAAqG;QACvG,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;YACzG,GAAG,EAAE,CAAC;iBACH,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,2FAA2F,CAAC;SACzG;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,QAAQ,CAAC,CACnB,CAAC;IAEF,+CAA+C;IAC/C,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EACT,oHAAoH;QACtH,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,QAAQ,CAAC,aAAa,CAAC,CACxB,CAAC;IAEF,mCAAmC;IACnC,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,WAAW,EACT,yGAAyG;QAC3G,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,UAAU,CAAC,CACrB,CAAC;IAEF,2BAA2B;IAC3B,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,WAAW,EAAE,gGAAgG;QAC7G,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;SAC3D;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,SAAS,CAAC,CACpB,CAAC;IAEF,+BAA+B;IAC/B,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,WAAW,EAAE,sEAAsE;QACnF,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;SAC7D;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,WAAW,CAAC,CACtB,CAAC;IAEF,uCAAuC;IACvC,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,WAAW,EAAE,wEAAwE;QACrF,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;SACnE;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,UAAU,CAAC,CACrB,CAAC;IAEF,2CAA2C;IAC3C,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,WAAW,EAAE,0EAA0E;QACvF,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;SACrE;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,YAAY,CAAC,CACvB,CAAC;IAEF,2BAA2B;IAC3B,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,WAAW,EAAE,sFAAsF;QACnG,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAC1D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;YACtG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;SAC5F;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,SAAS,CAAC,CACpB,CAAC;IAEF,+BAA+B;IAC/B,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,WAAW,EAAE,kFAAkF;QAC/F,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;SAC7D;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,QAAQ,CAAC,WAAW,CAAC,CACtB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oss-autopilot/mcp",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "MCP server for OSS Autopilot — exposes PR tracking, issue discovery, and contribution management as MCP tools",
5
5
  "type": "module",
6
6
  "bin": {
@@ -18,7 +18,7 @@
18
18
  "dependencies": {
19
19
  "@modelcontextprotocol/sdk": "^1.27.1",
20
20
  "zod": "^4.3.6",
21
- "@oss-autopilot/core": "0.44.6"
21
+ "@oss-autopilot/core": "0.44.7"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/node": "^25.3.3",