hivecode-mcp 0.14.10 → 0.14.12
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/docs/GITHUB_WORKFLOW.md +2 -1
- package/hive-gh-action.js +12 -4
- package/hive-room-mode.js +4 -0
- package/package.json +1 -1
package/docs/GITHUB_WORKFLOW.md
CHANGED
|
@@ -185,7 +185,8 @@ short job on each event and every 10 minutes, with the token it gives the job.
|
|
|
185
185
|
|---|---|
|
|
186
186
|
| A person who can push labels an issue `hivecode` | Posts it into the room as one task for @all, quoted as data, and comments on the issue who is in the room. Another labelled issue waits, and is told so. |
|
|
187
187
|
| The room marks the task done, with every file reviewed by someone who did not write it | The next run lands it: the tests on the exact commit, a push to the branch, and the pull request (`<title> (#N)`, `Closes #N`). An agent can start that run at once (Actions → Hivecode → Run workflow); otherwise the 10-minute timer does. |
|
|
188
|
-
| A
|
|
188
|
+
| A comment on the issue or the pull request, or a review, from someone who can push | One task for @all with the comments, quoted as data. Each comment is sent once. Comments from bots and from people who cannot push are left out. |
|
|
189
|
+
| A failed check on the pull request | One task for @all naming the checks, once per commit. |
|
|
189
190
|
| The room fixes it | The next run pushes the fix to the same pull request. |
|
|
190
191
|
| The pull request is merged or closed | The room is told, the label comes off, and the next labelled issue comes in. |
|
|
191
192
|
| The issue is closed or unlabelled mid-work | The room is told to stop. Labelling it again sends it again, as a new attempt. |
|
package/hive-gh-action.js
CHANGED
|
@@ -278,15 +278,22 @@ export async function runAction({ gh, deps, eventName = '', event = {}, branch,
|
|
|
278
278
|
} else note(`#${n}: not ready to land: ${oneLine(r && r.why, 200)}`)
|
|
279
279
|
} else note(`#${n}: task ${task.id} is ${task.status}; waiting for the room`)
|
|
280
280
|
|
|
281
|
-
// ── 6.
|
|
281
|
+
// ── 6. comments back to the room: every comment on the issue from someone who can push, and
|
|
282
|
+
// once its pull request is open, the reviews and comments there too; failed checks ──────
|
|
283
|
+
{
|
|
284
|
+
const fb = await deps.prFeedback({ gh, issueNumber: n, prNumber: openPr ? openPr.number : 0, state: { seen: seenFromTasks(tasks), allComments: true } })
|
|
285
|
+
const where = openPr ? `PR #${openPr.number} and issue #${n}` : `issue #${n}`
|
|
286
|
+
if (fb && fb.ok && fb.items && fb.items.length && !fb.already) { note(`${where}: ${fb.items.length} comment(s) sent to the room`); await tell(`${fb.items.length} comment(s) on ${where} went to the room.`) }
|
|
287
|
+
}
|
|
282
288
|
if (openPr) {
|
|
283
|
-
const fb = await deps.prFeedback({ gh, issueNumber: n, prNumber: openPr.number, state: { seen: seenFromTasks(tasks) } })
|
|
284
|
-
if (fb && fb.ok && fb.items && fb.items.length && !fb.already) { note(`PR #${openPr.number}: ${fb.items.length} review comment(s) sent to the room`); await tell(`${fb.items.length} review comment(s) on PR #${openPr.number} went to the room.`) }
|
|
285
289
|
const sha = openPr.head && openPr.head.sha
|
|
286
290
|
if (sha) {
|
|
287
291
|
const GH = await import('./hive-github.js')
|
|
288
292
|
// The job's own run is not a check on the pull request; the rest are.
|
|
289
|
-
|
|
293
|
+
// A check that cannot be read (an older workflow file without `statuses: read`) is said in the
|
|
294
|
+
// log, never a failed run: everything before it already happened.
|
|
295
|
+
let v = { state: 'none', failed: [] }
|
|
296
|
+
try { v = GH.ciVerdict(gh.checkRuns(sha), gh.statuses(sha)) } catch (e) { note(`PR #${openPr.number}: the checks could not be read (${oneLine(e.message, 160)}); add "statuses: read" and "checks: read" to the workflow's permissions`) }
|
|
290
297
|
const short = String(sha).slice(0, 7)
|
|
291
298
|
const marker = `Fix the failing checks on PR #${openPr.number} at ${short}`
|
|
292
299
|
if (v.state === 'failure' && !tasks.some((t) => t && t.by === 'GitHub' && String(t.text || '').startsWith(marker))) {
|
|
@@ -326,6 +333,7 @@ permissions:
|
|
|
326
333
|
issues: write
|
|
327
334
|
pull-requests: write
|
|
328
335
|
checks: read
|
|
336
|
+
statuses: read
|
|
329
337
|
|
|
330
338
|
# One run at a time: two runs never post the same issue or land twice.
|
|
331
339
|
concurrency:
|
package/hive-room-mode.js
CHANGED
|
@@ -1398,6 +1398,10 @@ function askOfPrComment(key, c, state = {}) {
|
|
|
1398
1398
|
}
|
|
1399
1399
|
const m = body.match(/^\/hivecode\b\s*([\s\S]*)$/i)
|
|
1400
1400
|
if (m) return /^(stop|retry)\b/i.test(m[1].trim()) ? '' : m[1].trim()
|
|
1401
|
+
// EVERY COMMENT (the GitHub Action, 0.14.12): a plain comment on the issue or the pull request,
|
|
1402
|
+
// from someone who can push, goes to the room too. The watcher leaves this off, so "thanks" there
|
|
1403
|
+
// still spends no run.
|
|
1404
|
+
if (state.allComments && (key === 'ic' || key === 'pc')) return body
|
|
1401
1405
|
return key === 'ic' && state.question ? body : ''
|
|
1402
1406
|
}
|
|
1403
1407
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hivecode-mcp",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.12",
|
|
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",
|