patchrelay 0.53.2 → 0.54.1
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 +3 -3
- package/config/patchrelay.example.json +1 -1
- package/dist/build-info.json +3 -3
- package/dist/cli/watch/IssueListView.js +1 -1
- package/dist/cli/watch/IssueRow.js +1 -1
- package/dist/cli/watch/StateHistoryView.js +1 -1
- package/dist/config.js +1 -1
- package/dist/hook-runner.js +4 -4
- package/dist/runtime-paths.js +1 -1
- package/package.json +16 -17
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ Common setups:
|
|
|
21
21
|
### What this buys you
|
|
22
22
|
|
|
23
23
|
- **PRs ship tested against the latest `main`.** The queue re-validates on the integrated SHA at admission time, and retries if `main` moves during validation. No more "green yesterday, broken today."
|
|
24
|
-
- **Many PR failures have mechanical fixes an agent can handle.** Requested changes like a rename, a missing null check, a new test
|
|
24
|
+
- **Many PR failures have mechanical fixes an agent can handle.** Requested changes like a rename, a missing null check, a new test, refreshing against `main`, resolving a conflict surfaced by speculation, or rerunning a flaky job. Both services publish structured failure reasons (inline review comments, failing check names, queue incidents) an agent can act on directly.
|
|
25
25
|
- **No prerequisites beyond GitHub.** A GitHub App, a webhook, and `npm install -g` per service.
|
|
26
26
|
|
|
27
27
|
## Use with your own agent
|
|
@@ -99,7 +99,7 @@ See the [review-quill package README](./packages/review-quill/README.md) for the
|
|
|
99
99
|
|
|
100
100
|
### merge-steward
|
|
101
101
|
|
|
102
|
-
Serial merge queue with speculative integration.
|
|
102
|
+
Serial merge queue with speculative integration. Builds a speculative merge branch for each approved PR on top of the current queue base, runs CI on that integrated SHA, and fast-forwards `main` only when the tested result is still valid. Evictions produce a durable incident and a GitHub check run — the signal an agent uses to trigger a repair.
|
|
103
103
|
|
|
104
104
|
```bash
|
|
105
105
|
merge-steward init https://queue.example.com
|
|
@@ -119,7 +119,7 @@ See the [merge-steward package README](./packages/merge-steward/README.md) for t
|
|
|
119
119
|
- [Prompting](./docs/prompting.md) — how workflow files and the built-in scaffold compose
|
|
120
120
|
- [Secrets](./docs/secrets.md) — systemd credentials, resolution order
|
|
121
121
|
- [review-quill reference](./docs/review-quill.md) · [merge-steward reference](./docs/merge-steward.md)
|
|
122
|
-
- [Product
|
|
122
|
+
- [Product brief](./docs/product-specs/patchrelay.md) · [Dashboard guidance](./docs/dashboard-guidance.md) · [Design docs](./docs/design-docs/index.md)
|
|
123
123
|
- [Contributing](./CONTRIBUTING.md) · [Security policy](./SECURITY.md)
|
|
124
124
|
|
|
125
125
|
## Status
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"runner": {
|
|
6
6
|
"git_bin": "git",
|
|
7
7
|
"codex": {
|
|
8
|
-
"model": "gpt-5.
|
|
8
|
+
"model": "gpt-5.5",
|
|
9
9
|
"reasoning_effort": "high",
|
|
10
10
|
"developer_instructions": "Keep the public API stable for this installation unless the task explicitly requires a breaking change."
|
|
11
11
|
}
|
package/dist/build-info.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useReducer } from "react";
|
|
3
3
|
import { Box, Text, useStdout } from "ink";
|
|
4
4
|
import { IssueRow } from "./IssueRow.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
3
|
import { issueTokenFor, prTokenFor } from "./issue-token.js";
|
|
4
4
|
import { formatIssueAge, truncate } from "./format-utils.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
3
|
import { planStepSymbol, planStepColor } from "./plan-helpers.js";
|
|
4
4
|
// ─── Formatting helpers ──────────────────────────────────────────
|
package/dist/config.js
CHANGED
|
@@ -158,7 +158,7 @@ const configSchema = z.object({
|
|
|
158
158
|
shell_bin: z.string().optional(),
|
|
159
159
|
source_bashrc: z.boolean().default(true),
|
|
160
160
|
request_timeout_ms: z.number().int().positive().default(30000),
|
|
161
|
-
model: z.string().
|
|
161
|
+
model: z.string().default("gpt-5.5"),
|
|
162
162
|
model_provider: z.string().optional(),
|
|
163
163
|
reasoning_effort: z.enum(["low", "medium", "high"]).optional(),
|
|
164
164
|
service_name: z.string().default("patchrelay"),
|
package/dist/hook-runner.js
CHANGED
|
@@ -18,10 +18,10 @@ export async function runProjectHook(repoPath, hookName, options) {
|
|
|
18
18
|
stderr: result.stderr,
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
//
|
|
22
|
-
// in
|
|
23
|
-
// surface is
|
|
24
|
-
// variables that would leak
|
|
21
|
+
// PatchRelay runs as a service with NODE_ENV=production, which can make package
|
|
22
|
+
// manager installs in project hooks silently omit devDependencies. The subject
|
|
23
|
+
// project's install surface is separate from PatchRelay's own runtime, so scrub
|
|
24
|
+
// variables that would leak PatchRelay's production posture into the hook.
|
|
25
25
|
const STRIPPED_PARENT_ENV_VARS = [
|
|
26
26
|
"NODE_ENV",
|
|
27
27
|
"NPM_CONFIG_PRODUCTION",
|
package/dist/runtime-paths.js
CHANGED
|
@@ -75,7 +75,7 @@ export function readBundledAsset(relativePath) {
|
|
|
75
75
|
export function getBuiltCliEntryPath() {
|
|
76
76
|
const entryPath = getBundledAssetPath("dist/index.js");
|
|
77
77
|
if (!existsSync(entryPath)) {
|
|
78
|
-
throw new Error(`Built PatchRelay entrypoint not found: ${entryPath}. Run
|
|
78
|
+
throw new Error(`Built PatchRelay entrypoint not found: ${entryPath}. Run pnpm build before installing the service.`);
|
|
79
79
|
}
|
|
80
80
|
return entryPath;
|
|
81
81
|
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "patchrelay",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.54.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"packageManager": "pnpm@10.28.2",
|
|
6
7
|
"repository": {
|
|
7
8
|
"type": "git",
|
|
8
9
|
"url": "git+https://github.com/krasnoperov/patchrelay.git"
|
|
@@ -30,33 +31,31 @@
|
|
|
30
31
|
],
|
|
31
32
|
"scripts": {
|
|
32
33
|
"dev": "node --watch --experimental-transform-types src/index.ts",
|
|
33
|
-
"build": "rm -rf dist &&
|
|
34
|
-
"prepack": "
|
|
34
|
+
"build": "rm -rf dist && tsgo -p tsconfig.json && chmod +x dist/index.js && node scripts/write-build-info.mjs",
|
|
35
|
+
"prepack": "pnpm build",
|
|
35
36
|
"start": "node dist/index.js serve",
|
|
36
37
|
"doctor": "node dist/index.js doctor",
|
|
37
38
|
"restart": "node dist/index.js service restart",
|
|
38
|
-
"deploy": "
|
|
39
|
-
"lint": "
|
|
40
|
-
"typecheck": "
|
|
41
|
-
"check": "
|
|
39
|
+
"deploy": "pnpm build && npm install -g . && node dist/index.js service restart",
|
|
40
|
+
"lint": "oxlint --ignore-path .gitignore .",
|
|
41
|
+
"typecheck": "tsgo -p tsconfig.json --noEmit",
|
|
42
|
+
"check": "pnpm typecheck",
|
|
42
43
|
"test": "node --experimental-transform-types --test 'test/**/*.test.ts'",
|
|
43
|
-
"ci": "
|
|
44
|
+
"ci": "pnpm lint && pnpm check && pnpm test && pnpm build"
|
|
44
45
|
},
|
|
45
46
|
"dependencies": {
|
|
46
|
-
"fastify": "^5.8.
|
|
47
|
+
"fastify": "^5.8.5",
|
|
47
48
|
"fastify-raw-body": "^5.0.0",
|
|
48
|
-
"ink": "^
|
|
49
|
+
"ink": "^7.0.1",
|
|
49
50
|
"pino": "^10.3.1",
|
|
50
|
-
"pino-logfmt": "^1.1.
|
|
51
|
-
"react": "^19.2.
|
|
51
|
+
"pino-logfmt": "^1.1.4",
|
|
52
|
+
"react": "^19.2.5",
|
|
52
53
|
"zod": "^4.3.6"
|
|
53
54
|
},
|
|
54
55
|
"devDependencies": {
|
|
55
|
-
"@
|
|
56
|
-
"@types/node": "^25.5.0",
|
|
56
|
+
"@types/node": "^25.6.0",
|
|
57
57
|
"@types/react": "^19.2.14",
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"typescript-eslint": "^8.58.0"
|
|
58
|
+
"@typescript/native-preview": "7.0.0-dev.20260427.1",
|
|
59
|
+
"oxlint": "^1.62.0"
|
|
61
60
|
}
|
|
62
61
|
}
|