patchrelay 0.20.2 → 0.20.4

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "service": "patchrelay",
3
- "version": "0.20.2",
4
- "commit": "b04903921cbf",
5
- "builtAt": "2026-03-25T21:41:41.991Z"
3
+ "version": "0.20.4",
4
+ "commit": "0dfb01b26781",
5
+ "builtAt": "2026-03-25T22:05:26.938Z"
6
6
  }
@@ -29,11 +29,17 @@ async function postRetry(baseUrl, issueKey, bearerToken) {
29
29
  const headers = { "content-type": "application/json" };
30
30
  if (bearerToken)
31
31
  headers.authorization = `Bearer ${bearerToken}`;
32
- await fetch(new URL(`/api/issues/${encodeURIComponent(issueKey)}/retry`, baseUrl), {
33
- method: "POST",
34
- headers,
35
- signal: AbortSignal.timeout(5000),
36
- }).catch(() => { });
32
+ try {
33
+ const response = await fetch(new URL(`/api/issues/${encodeURIComponent(issueKey)}/retry`, baseUrl), {
34
+ method: "POST",
35
+ headers,
36
+ signal: AbortSignal.timeout(5000),
37
+ });
38
+ return await response.json();
39
+ }
40
+ catch {
41
+ return { reason: "request failed" };
42
+ }
37
43
  }
38
44
  export function App({ baseUrl, bearerToken, initialIssueKey }) {
39
45
  const { exit } = useApp();
@@ -48,9 +54,13 @@ export function App({ baseUrl, bearerToken, initialIssueKey }) {
48
54
  const [promptMode, setPromptMode] = useState(false);
49
55
  const [promptBuffer, setPromptBuffer] = useState("");
50
56
  const handleRetry = useCallback(() => {
51
- if (state.activeDetailKey) {
52
- void postRetry(baseUrl, state.activeDetailKey, bearerToken);
53
- }
57
+ if (!state.activeDetailKey)
58
+ return;
59
+ setPromptStatus("retrying...");
60
+ void postRetry(baseUrl, state.activeDetailKey, bearerToken).then((result) => {
61
+ setPromptStatus(result.ok ? "retry queued" : `retry failed: ${result.reason ?? "unknown"}`);
62
+ setTimeout(() => setPromptStatus(null), 3000);
63
+ });
54
64
  }, [baseUrl, bearerToken, state.activeDetailKey]);
55
65
  const [promptStatus, setPromptStatus] = useState(null);
56
66
  const handlePromptSubmit = useCallback(() => {
@@ -99,7 +99,9 @@ export class CodexAppServerClient extends EventEmitter {
99
99
  title: "PatchRelay",
100
100
  version: "0.1.0",
101
101
  },
102
- capabilities: null,
102
+ capabilities: {
103
+ experimentalApi: true,
104
+ },
103
105
  });
104
106
  const serverInfo = initializeResponse && typeof initializeResponse === "object" && "serverInfo" in initializeResponse
105
107
  ? initializeResponse.serverInfo
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "patchrelay",
3
- "version": "0.20.2",
3
+ "version": "0.20.4",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "repository": {