hivecode-mcp 0.14.9 → 0.14.10
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/hive-gh-action.js +22 -3
- package/hive-github.js +1 -0
- package/package.json +1 -1
package/hive-gh-action.js
CHANGED
|
@@ -107,7 +107,9 @@ export async function roomDeps({ link, root, branch, github }) {
|
|
|
107
107
|
assignFix: async (text) => { const r = await openRoom(link); try { r.hive.assign('all', text) } finally { await r.close(1500) } },
|
|
108
108
|
say: (text) => RW.roomSay({ link, text }),
|
|
109
109
|
postIssue: (issue) => RM.postIssue({ link, issue, waysOfWorking: RW.WAYS_OF_WORKING, branch }),
|
|
110
|
-
|
|
110
|
+
// THE JOB'S TOKEN CANNOT READ /user (GitHub answers 403 "Resource not accessible by integration"),
|
|
111
|
+
// and the landing asks it as its login check. The token is the job's; there is no person to check.
|
|
112
|
+
landIssue: (o) => RM.landIssue({ link, root, branch, ...(github ? { github: { ...github, user: () => ({ login: 'github-actions[bot]' }) } } : {}), ...o }),
|
|
111
113
|
prFeedback: (o) => RM.postPrFeedback({ link, root, branch, quietMs: 0, ...o }),
|
|
112
114
|
bind: async () => {
|
|
113
115
|
const HB = await import('./hive-branch.js')
|
|
@@ -225,7 +227,24 @@ export async function runAction({ gh, deps, eventName = '', event = {}, branch,
|
|
|
225
227
|
const tasks = await deps.tasks()
|
|
226
228
|
const task = issueTasks(tasks, n)[0]
|
|
227
229
|
if (!task) { note(`#${n}: its task is not in the room (the relay lost the room?); nothing to land`); return { did } }
|
|
228
|
-
|
|
230
|
+
let openPr = pulls.find((p) => p.state === 'open' && closesOf(p.body) === n) || null
|
|
231
|
+
// A PULL REQUEST ON THE BRANCH THAT SOMEONE ELSE OPENED (an agent's hive_pr, a person) is this
|
|
232
|
+
// issue's: the room lands on one branch, one issue at a time. It is told so ("Closes #N" goes in
|
|
233
|
+
// first), so merging it closes the issue and the next run sees it as the issue's.
|
|
234
|
+
if (!openPr) {
|
|
235
|
+
const other = pulls.find((p) => p.state === 'open' && !closesOf(p.body))
|
|
236
|
+
if (other) {
|
|
237
|
+
try {
|
|
238
|
+
gh.updatePull(other.number, { body: `Closes #${n}\n\n${String(other.body || '')}` })
|
|
239
|
+
other.body = `Closes #${n}\n\n${String(other.body || '')}`
|
|
240
|
+
openPr = other
|
|
241
|
+
comment(n, `#${other.number} is this issue's pull request: it was opened on the room's branch, so Hivecode linked it.\n\n${MARK('adopted', { pr: other.number })}`)
|
|
242
|
+
await deps.say(`@all PR #${other.number} on the room's branch is now issue #${n}'s pull request (it closes #${n} when merged).`)
|
|
243
|
+
await tell(`PR #${other.number} is now the pull request for issue #${n}.`)
|
|
244
|
+
note(`#${n}: linked PR #${other.number}`)
|
|
245
|
+
} catch (e) { note(`#${n}: could not link PR #${other.number}: ${oneLine(e.message, 160)}`) }
|
|
246
|
+
}
|
|
247
|
+
}
|
|
229
248
|
const cs = commentsOf(n)
|
|
230
249
|
const lastLand = cs.map((c) => markOf(c.body, 'land')).filter(Boolean).pop() || null
|
|
231
250
|
if (task.status === 'done') {
|
|
@@ -368,7 +387,7 @@ export async function main(argv = [], { cwd = process.cwd(), env = process.env,
|
|
|
368
387
|
try { if (env.GITHUB_EVENT_PATH) event = JSON.parse(fs.readFileSync(env.GITHUB_EVENT_PATH, 'utf8')) } catch { }
|
|
369
388
|
let base = String(env.HIVE_BASE || '').trim()
|
|
370
389
|
if (!base) { try { base = gh.repoInfo().default_branch || '' } catch { } }
|
|
371
|
-
const deps = await roomDeps({ link, root, branch })
|
|
390
|
+
const deps = await roomDeps({ link, root, branch, github: gh })
|
|
372
391
|
try {
|
|
373
392
|
const W = await import('./hive-webhook.js')
|
|
374
393
|
const notify = W.makeNotifier(String(env.HIVE_NOTIFY_WEBHOOK || '').trim(), { log })
|
package/hive-github.js
CHANGED
|
@@ -159,6 +159,7 @@ export function makeGitHub({ call, owner, repo, now = () => Date.now() }) {
|
|
|
159
159
|
pull: (n) => req('GET', `${base}/pulls/${n}`),
|
|
160
160
|
pullsFor: (branch) => list(`${base}/pulls?state=all&head=${encodeURIComponent(`${owner}:${branch}`)}`),
|
|
161
161
|
createPull: (p) => req('POST', `${base}/pulls`, p),
|
|
162
|
+
updatePull: (n, p) => req('PATCH', `${base}/pulls/${n}`, p),
|
|
162
163
|
checkRuns: (sha) => (req('GET', `${base}/commits/${sha}/check-runs?per_page=100&filter=latest`) || {}).check_runs || [],
|
|
163
164
|
statuses: (sha) => (req('GET', `${base}/commits/${sha}/status`) || {}).statuses || [],
|
|
164
165
|
reviews: (n) => list(`${base}/pulls/${n}/reviews`),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hivecode-mcp",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.10",
|
|
4
4
|
"description": "MCP server that lets any AI coding agent join a Hivecode room — humans and multiple AI agents edit one live codebase with folder-scoped permissions and approval gates.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|