github-issue-tower-defence-management 1.127.0 → 1.128.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.
Files changed (64) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +3 -3
  3. package/bin/adapter/entry-points/console/ui-dist/assets/index-CufymFM1.js +103 -0
  4. package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
  5. package/bin/adapter/entry-points/console/webServer.js +56 -3
  6. package/bin/adapter/entry-points/console/webServer.js.map +1 -1
  7. package/bin/adapter/entry-points/handlers/InTmuxByHumanSessionTokenCountHandler.js +1 -0
  8. package/bin/adapter/entry-points/handlers/InTmuxByHumanSessionTokenCountHandler.js.map +1 -1
  9. package/bin/adapter/entry-points/handlers/LiveSessionOauthTokenSelectHandler.js +5 -0
  10. package/bin/adapter/entry-points/handlers/LiveSessionOauthTokenSelectHandler.js.map +1 -1
  11. package/bin/adapter/entry-points/handlers/OauthTokenSelectHandler.js +5 -0
  12. package/bin/adapter/entry-points/handlers/OauthTokenSelectHandler.js.map +1 -1
  13. package/bin/adapter/entry-points/handlers/tokenStatusWriter.js +1 -0
  14. package/bin/adapter/entry-points/handlers/tokenStatusWriter.js.map +1 -1
  15. package/bin/adapter/proxy/RateLimitCache.js +35 -4
  16. package/bin/adapter/proxy/RateLimitCache.js.map +1 -1
  17. package/bin/adapter/proxy/proxyEntry.js +48 -0
  18. package/bin/adapter/proxy/proxyEntry.js.map +1 -1
  19. package/bin/domain/usecases/OauthTokenSelectUseCase.js +5 -2
  20. package/bin/domain/usecases/OauthTokenSelectUseCase.js.map +1 -1
  21. package/package.json +1 -1
  22. package/src/adapter/entry-points/console/ui/src/features/console/components/content/ConsoleMarkdownContent.stories.tsx +1 -2
  23. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleCaches.ts +2 -4
  24. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleOperations.test.ts +7 -7
  25. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleOperations.ts +15 -18
  26. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleTabData.ts +2 -5
  27. package/src/adapter/entry-points/console/ui/src/features/console/lib/consoleApi.test.ts +22 -25
  28. package/src/adapter/entry-points/console/ui/src/features/console/lib/consoleApi.ts +12 -23
  29. package/src/adapter/entry-points/console/ui/src/features/console/lib/imageProxy.test.ts +7 -10
  30. package/src/adapter/entry-points/console/ui/src/features/console/lib/imageProxy.ts +2 -9
  31. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsoleItemDetailContainer.tsx +2 -4
  32. package/src/adapter/entry-points/console/ui-dist/assets/index-CufymFM1.js +103 -0
  33. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  34. package/src/adapter/entry-points/console/webServer.test.ts +283 -6
  35. package/src/adapter/entry-points/console/webServer.ts +64 -0
  36. package/src/adapter/entry-points/handlers/InTmuxByHumanSessionTokenCountHandler.ts +1 -0
  37. package/src/adapter/entry-points/handlers/LiveSessionOauthTokenSelectHandler.test.ts +49 -1
  38. package/src/adapter/entry-points/handlers/LiveSessionOauthTokenSelectHandler.ts +7 -1
  39. package/src/adapter/entry-points/handlers/OauthTokenSelectHandler.test.ts +65 -1
  40. package/src/adapter/entry-points/handlers/OauthTokenSelectHandler.ts +11 -1
  41. package/src/adapter/entry-points/handlers/tokenStatusWriter.ts +1 -0
  42. package/src/adapter/proxy/RateLimitCache.test.ts +148 -0
  43. package/src/adapter/proxy/RateLimitCache.ts +56 -3
  44. package/src/adapter/proxy/proxyEntry.test.ts +126 -0
  45. package/src/adapter/proxy/proxyEntry.ts +60 -0
  46. package/src/domain/usecases/InTmuxByHumanSessionTokenCountUseCase.test.ts +1 -0
  47. package/src/domain/usecases/LiveSessionOauthTokenSelectUseCase.test.ts +2 -0
  48. package/src/domain/usecases/OauthTokenSelectUseCase.test.ts +25 -0
  49. package/src/domain/usecases/OauthTokenSelectUseCase.ts +6 -0
  50. package/types/adapter/entry-points/console/webServer.d.ts +5 -1
  51. package/types/adapter/entry-points/console/webServer.d.ts.map +1 -1
  52. package/types/adapter/entry-points/handlers/InTmuxByHumanSessionTokenCountHandler.d.ts.map +1 -1
  53. package/types/adapter/entry-points/handlers/LiveSessionOauthTokenSelectHandler.d.ts.map +1 -1
  54. package/types/adapter/entry-points/handlers/OauthTokenSelectHandler.d.ts.map +1 -1
  55. package/types/adapter/entry-points/handlers/tokenStatusWriter.d.ts.map +1 -1
  56. package/types/adapter/proxy/RateLimitCache.d.ts +8 -0
  57. package/types/adapter/proxy/RateLimitCache.d.ts.map +1 -1
  58. package/types/adapter/proxy/proxyEntry.d.ts.map +1 -1
  59. package/types/domain/usecases/OauthTokenSelectUseCase.d.ts +1 -0
  60. package/types/domain/usecases/OauthTokenSelectUseCase.d.ts.map +1 -1
  61. package/bin/adapter/entry-points/console/ui-dist/assets/index-8H0HejYa.js +0 -103
  62. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleToken.test.ts +0 -41
  63. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleToken.ts +0 -64
  64. package/src/adapter/entry-points/console/ui-dist/assets/index-8H0HejYa.js +0 -103
@@ -1 +1 @@
1
- {"version":3,"file":"OauthTokenSelectUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/OauthTokenSelectUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OauthTokenSelectUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/OauthTokenSelectUseCase.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.127.0",
3
+ "version": "1.128.1",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -35,8 +35,7 @@ export const WithCodeFence: Story = {
35
35
  export const WithProxiedGitHubImages: Story = {
36
36
  args: {
37
37
  body: consoleMarkdownImageBodyFixture,
38
- buildImageProxyUrl: (src) =>
39
- buildImageProxyUrl(src, 'console-token-fixture'),
38
+ buildImageProxyUrl: (src) => buildImageProxyUrl(src),
40
39
  },
41
40
  };
42
41
 
@@ -12,7 +12,6 @@ import type {
12
12
  ConsolePullRequestStatus,
13
13
  ConsoleRelatedPullRequest,
14
14
  } from '../logic/types';
15
- import { useConsoleToken } from './useConsoleToken';
16
15
 
17
16
  export type ConsoleCaches = {
18
17
  body: ResourceCache<string>;
@@ -26,9 +25,8 @@ export type ConsoleCaches = {
26
25
  };
27
26
 
28
27
  export const useConsoleCaches = (): ConsoleCaches => {
29
- const { appendToken } = useConsoleToken();
30
28
  return useMemo(() => {
31
- const client = createConsoleApiClient(appendToken);
29
+ const client = createConsoleApiClient();
32
30
  return {
33
31
  client,
34
32
  body: new ResourceCache<string>(client.fetchItemBody),
@@ -43,5 +41,5 @@ export const useConsoleCaches = (): ConsoleCaches => {
43
41
  client.fetchPullRequestStatus,
44
42
  ),
45
43
  };
46
- }, [appendToken]);
44
+ }, []);
47
45
  };
@@ -63,7 +63,7 @@ describe('useConsoleOperations', () => {
63
63
  'totally_wrong',
64
64
  );
65
65
  });
66
- expect(fetchMock.mock.calls[0][0]).toBe('/api/review?k=token');
66
+ expect(fetchMock.mock.calls[0][0]).toBe('/api/review');
67
67
  expect(lastBody(fetchMock)).toMatchObject({
68
68
  pjcode: 'umino',
69
69
  action: 'close',
@@ -113,7 +113,7 @@ describe('useConsoleOperations', () => {
113
113
  'close_not_planned',
114
114
  );
115
115
  });
116
- expect(fetchMock.mock.calls[0][0]).toBe('/api/triage?k=token');
116
+ expect(fetchMock.mock.calls[0][0]).toBe('/api/triage');
117
117
  expect(lastBody(fetchMock)).toMatchObject({
118
118
  pjcode: 'umino',
119
119
  action: 'close_not_planned',
@@ -127,7 +127,7 @@ describe('useConsoleOperations', () => {
127
127
  await act(async () => {
128
128
  await result.current.operations.closeIssue(prItem, 'close');
129
129
  });
130
- expect(fetchMock.mock.calls[0][0]).toBe('/api/triage?k=token');
130
+ expect(fetchMock.mock.calls[0][0]).toBe('/api/triage');
131
131
  expect(lastBody(fetchMock)).toMatchObject({
132
132
  pjcode: 'umino',
133
133
  action: 'close',
@@ -164,7 +164,7 @@ describe('useConsoleOperations', () => {
164
164
  await act(async () => {
165
165
  await result.current.operations.setInTmuxByHuman(issueItem, option);
166
166
  });
167
- expect(fetchMock.mock.calls[0][0]).toBe('/api/intmux?k=token');
167
+ expect(fetchMock.mock.calls[0][0]).toBe('/api/intmux');
168
168
  expect(lastBody(fetchMock)).toMatchObject({
169
169
  pjcode: 'umino',
170
170
  action: 'set_intmux',
@@ -239,7 +239,7 @@ describe('useConsoleOperations', () => {
239
239
  'Thanks for the parity fix.',
240
240
  );
241
241
  });
242
- expect(fetchMock.mock.calls[0][0]).toBe('/api/comment?k=token');
242
+ expect(fetchMock.mock.calls[0][0]).toBe('/api/comment');
243
243
  expect(lastBody(fetchMock)).toMatchObject({
244
244
  pjcode: 'umino',
245
245
  url: issueItem.url,
@@ -264,7 +264,7 @@ describe('useConsoleOperations', () => {
264
264
  'Consider extracting this into a helper.',
265
265
  );
266
266
  });
267
- expect(fetchMock.mock.calls[0][0]).toBe('/api/reviewcomment?k=token');
267
+ expect(fetchMock.mock.calls[0][0]).toBe('/api/reviewcomment');
268
268
  expect(lastBody(fetchMock)).toEqual({
269
269
  pjcode: 'umino',
270
270
  url: prItem.url,
@@ -293,7 +293,7 @@ describe('useConsoleOperations', () => {
293
293
  ],
294
294
  );
295
295
  });
296
- expect(fetchMock.mock.calls[0][0]).toBe('/api/review?k=token');
296
+ expect(fetchMock.mock.calls[0][0]).toBe('/api/review');
297
297
  expect(lastBody(fetchMock)).toMatchObject({
298
298
  pjcode: 'umino',
299
299
  action: 'request_changes',
@@ -26,7 +26,6 @@ import type {
26
26
  } from '../logic/types';
27
27
  import type { ConsoleCaches } from './useConsoleCaches';
28
28
  import type { ConsoleOverlayState } from './useConsoleOverlay';
29
- import { useConsoleToken } from './useConsoleToken';
30
29
 
31
30
  export const REVIEW_OPERATION_PATH = '/api/review';
32
31
  export const TRIAGE_OPERATION_PATH = '/api/triage';
@@ -128,7 +127,6 @@ export const useConsoleOperations = (
128
127
  overlayState: ConsoleOverlayState,
129
128
  caches?: ConsoleCaches,
130
129
  ): ConsoleOperationsApi => {
131
- const { appendToken } = useConsoleToken();
132
130
  const { patchOverlay } = overlayState;
133
131
 
134
132
  const invalidateItemContent = useCallback(
@@ -162,13 +160,12 @@ export const useConsoleOperations = (
162
160
  throw missingPjcodeError();
163
161
  }
164
162
  await postConsoleOperation(
165
- appendToken,
166
163
  REVIEW_OPERATION_PATH,
167
164
  reviewRequest(pjcode, item, prUrl, action, pendingReviewComments),
168
165
  );
169
166
  markDone(item);
170
167
  },
171
- [pjcode, appendToken, markDone],
168
+ [pjcode, markDone],
172
169
  );
173
170
 
174
171
  const setNextActionDate = useCallback(
@@ -182,10 +179,10 @@ export const useConsoleOperations = (
182
179
  issueUrl: item.url,
183
180
  projectItemId: item.projectItemId,
184
181
  };
185
- await postConsoleOperation(appendToken, TRIAGE_OPERATION_PATH, request);
182
+ await postConsoleOperation(TRIAGE_OPERATION_PATH, request);
186
183
  markDone(item);
187
184
  },
188
- [pjcode, appendToken, markDone],
185
+ [pjcode, markDone],
189
186
  );
190
187
 
191
188
  const setStory = useCallback(
@@ -200,7 +197,7 @@ export const useConsoleOperations = (
200
197
  projectItemId: item.projectItemId,
201
198
  storyOptionId: option.id,
202
199
  };
203
- await postConsoleOperation(appendToken, TRIAGE_OPERATION_PATH, request);
200
+ await postConsoleOperation(TRIAGE_OPERATION_PATH, request);
204
201
  invalidateItemContent(item);
205
202
  patchOverlay(
206
203
  overlayKeyForItem(item),
@@ -208,7 +205,7 @@ export const useConsoleOperations = (
208
205
  mode,
209
206
  );
210
207
  },
211
- [pjcode, appendToken, invalidateItemContent, patchOverlay, mode],
208
+ [pjcode, invalidateItemContent, patchOverlay, mode],
212
209
  );
213
210
 
214
211
  const setStatus = useCallback(
@@ -223,7 +220,7 @@ export const useConsoleOperations = (
223
220
  projectItemId: item.projectItemId,
224
221
  statusName: option.name,
225
222
  };
226
- await postConsoleOperation(appendToken, TRIAGE_OPERATION_PATH, request);
223
+ await postConsoleOperation(TRIAGE_OPERATION_PATH, request);
227
224
  invalidateItemContent(item);
228
225
  patchOverlay(
229
226
  overlayKeyForItem(item),
@@ -231,7 +228,7 @@ export const useConsoleOperations = (
231
228
  mode,
232
229
  );
233
230
  },
234
- [pjcode, appendToken, invalidateItemContent, patchOverlay, mode],
231
+ [pjcode, invalidateItemContent, patchOverlay, mode],
235
232
  );
236
233
 
237
234
  const setInTmuxByHuman = useCallback(
@@ -245,7 +242,7 @@ export const useConsoleOperations = (
245
242
  issueUrl: item.url,
246
243
  projectItemId: item.projectItemId,
247
244
  };
248
- await postConsoleOperation(appendToken, INTMUX_OPERATION_PATH, request);
245
+ await postConsoleOperation(INTMUX_OPERATION_PATH, request);
249
246
  invalidateItemContent(item);
250
247
  patchOverlay(
251
248
  overlayKeyForItem(item),
@@ -253,7 +250,7 @@ export const useConsoleOperations = (
253
250
  mode,
254
251
  );
255
252
  },
256
- [pjcode, appendToken, invalidateItemContent, patchOverlay, mode],
253
+ [pjcode, invalidateItemContent, patchOverlay, mode],
257
254
  );
258
255
 
259
256
  const closeIssue = useCallback(
@@ -267,10 +264,10 @@ export const useConsoleOperations = (
267
264
  issueUrl: item.url,
268
265
  projectItemId: item.projectItemId,
269
266
  };
270
- await postConsoleOperation(appendToken, TRIAGE_OPERATION_PATH, request);
267
+ await postConsoleOperation(TRIAGE_OPERATION_PATH, request);
271
268
  markDone(item);
272
269
  },
273
- [pjcode, appendToken, markDone],
270
+ [pjcode, markDone],
274
271
  );
275
272
 
276
273
  const addComment = useCallback(
@@ -278,7 +275,7 @@ export const useConsoleOperations = (
278
275
  if (pjcode === null) {
279
276
  throw missingPjcodeError();
280
277
  }
281
- const comment = await postConsoleComment(appendToken, {
278
+ const comment = await postConsoleComment({
282
279
  pjcode,
283
280
  url: item.url,
284
281
  body,
@@ -286,7 +283,7 @@ export const useConsoleOperations = (
286
283
  invalidateItemContent(item);
287
284
  return comment;
288
285
  },
289
- [pjcode, appendToken, invalidateItemContent],
286
+ [pjcode, invalidateItemContent],
290
287
  );
291
288
 
292
289
  const addInlineReviewComment = useCallback(
@@ -300,7 +297,7 @@ export const useConsoleOperations = (
300
297
  if (pjcode === null) {
301
298
  throw missingPjcodeError();
302
299
  }
303
- await postConsoleReviewComment(appendToken, {
300
+ await postConsoleReviewComment({
304
301
  pjcode,
305
302
  url: prUrl,
306
303
  path,
@@ -309,7 +306,7 @@ export const useConsoleOperations = (
309
306
  body,
310
307
  });
311
308
  },
312
- [pjcode, appendToken],
309
+ [pjcode],
313
310
  );
314
311
 
315
312
  return {
@@ -6,7 +6,6 @@ import type {
6
6
  ConsoleTabName,
7
7
  } from '../logic/types';
8
8
  import { CONSOLE_TABS } from '../logic/types';
9
- import { useConsoleToken } from './useConsoleToken';
10
9
 
11
10
  export type ConsoleTabSnapshot = {
12
11
  items: ConsoleListItem[];
@@ -70,7 +69,6 @@ const buildListUrl = (pjcode: string, tab: ConsoleTabName): string =>
70
69
  export const useConsoleTabData = (
71
70
  pjcode: string | null,
72
71
  ): ConsoleTabDataState => {
73
- const { appendToken } = useConsoleToken();
74
72
  const [snapshots, setSnapshots] =
75
73
  useState<Record<ConsoleTabName, ConsoleTabSnapshot | null>>(emptySnapshots);
76
74
  const [isLoading, setIsLoading] = useState<boolean>(true);
@@ -92,8 +90,7 @@ export const useConsoleTabData = (
92
90
 
93
91
  Promise.all(
94
92
  CONSOLE_TABS.map(async (tab) => {
95
- const url = appendToken(buildListUrl(pjcode, tab.name));
96
- const response = await fetch(url);
93
+ const response = await fetch(buildListUrl(pjcode, tab.name));
97
94
  if (!response.ok) {
98
95
  throw new Error(`HTTP ${response.status}`);
99
96
  }
@@ -123,7 +120,7 @@ export const useConsoleTabData = (
123
120
  return () => {
124
121
  cancelled = true;
125
122
  };
126
- }, [pjcode, appendToken]);
123
+ }, [pjcode]);
127
124
 
128
125
  return { snapshots, isLoading, error };
129
126
  };
@@ -4,9 +4,6 @@ import {
4
4
  postConsoleReviewComment,
5
5
  } from './consoleApi';
6
6
 
7
- const appendToken = (url: string): string =>
8
- url.includes('?') ? `${url}&k=token` : `${url}?k=token`;
9
-
10
7
  const mockFetchOnce = (body: unknown, ok = true): jest.Mock => {
11
8
  const fetchMock = jest.fn().mockResolvedValue({
12
9
  ok,
@@ -29,19 +26,19 @@ const mockFetchFailureOnce = (status: number, rawBody: string): jest.Mock => {
29
26
  };
30
27
 
31
28
  describe('createConsoleApiClient', () => {
32
- it('reads the item body and appends the token to the url query', async () => {
29
+ it('reads the item body from the api root without a token query', async () => {
33
30
  const fetchMock = mockFetchOnce({ body: '# Title' });
34
- const client = createConsoleApiClient(appendToken);
31
+ const client = createConsoleApiClient();
35
32
  const body = await client.fetchItemBody('https://github.com/o/r/issues/1');
36
33
  expect(body).toBe('# Title');
37
34
  const requested = fetchMock.mock.calls[0][0] as string;
38
35
  expect(requested).toContain('/api/itembody?url=');
39
- expect(requested).toContain('&k=token');
36
+ expect(requested).not.toContain('k=');
40
37
  });
41
38
 
42
39
  it('anchors every read endpoint at the server root regardless of route', async () => {
43
40
  const readers: ((url: string) => Promise<unknown>)[] = [];
44
- const client = createConsoleApiClient(appendToken);
41
+ const client = createConsoleApiClient();
45
42
  readers.push((url) => client.fetchItemBody(url));
46
43
  readers.push((url) => client.fetchComments(url));
47
44
  readers.push((url) => client.fetchPrFiles(url));
@@ -75,7 +72,7 @@ describe('createConsoleApiClient', () => {
75
72
  { author: 'a', body: 'hello', createdAt: '2026-06-19T00:00:00.000Z' },
76
73
  ],
77
74
  });
78
- const client = createConsoleApiClient(appendToken);
75
+ const client = createConsoleApiClient();
79
76
  const comments = await client.fetchComments(
80
77
  'https://github.com/o/r/issues/1',
81
78
  );
@@ -91,14 +88,14 @@ describe('createConsoleApiClient', () => {
91
88
  { filename: 'b.ts', additions: 9, deletions: 0, status: 'added' },
92
89
  ],
93
90
  });
94
- const client = createConsoleApiClient(appendToken);
91
+ const client = createConsoleApiClient();
95
92
  const files = await client.fetchPrFiles('https://github.com/o/r/pull/1');
96
93
  expect(files.map((file) => file.path)).toEqual(['a.ts', 'b.ts']);
97
94
  });
98
95
 
99
96
  it('returns no files when the response files array is null', async () => {
100
97
  mockFetchOnce({ files: null });
101
- const client = createConsoleApiClient(appendToken);
98
+ const client = createConsoleApiClient();
102
99
  expect(await client.fetchPrFiles('https://github.com/o/r/pull/1')).toEqual(
103
100
  [],
104
101
  );
@@ -111,7 +108,7 @@ describe('createConsoleApiClient', () => {
111
108
  isPullRequest: true,
112
109
  title: 'Decorate PR links',
113
110
  });
114
- const client = createConsoleApiClient(appendToken);
111
+ const client = createConsoleApiClient();
115
112
  expect(
116
113
  await client.fetchIssueState('https://github.com/o/r/pull/1'),
117
114
  ).toEqual({
@@ -124,7 +121,7 @@ describe('createConsoleApiClient', () => {
124
121
 
125
122
  it('defaults the title to an empty string when absent', async () => {
126
123
  mockFetchOnce({ state: 'open', merged: false, isPullRequest: false });
127
- const client = createConsoleApiClient(appendToken);
124
+ const client = createConsoleApiClient();
128
125
  expect(
129
126
  await client.fetchIssueState('https://github.com/o/r/issues/1'),
130
127
  ).toEqual({
@@ -146,7 +143,7 @@ describe('createConsoleApiClient', () => {
146
143
  },
147
144
  ],
148
145
  });
149
- const client = createConsoleApiClient(appendToken);
146
+ const client = createConsoleApiClient();
150
147
  const commits = await client.fetchPrCommits(
151
148
  'https://github.com/o/r/pull/1',
152
149
  );
@@ -177,7 +174,7 @@ describe('createConsoleApiClient', () => {
177
174
  },
178
175
  ],
179
176
  });
180
- const client = createConsoleApiClient(appendToken);
177
+ const client = createConsoleApiClient();
181
178
  const related = await client.fetchRelatedPrs(
182
179
  'https://github.com/o/r/issues/1',
183
180
  );
@@ -198,7 +195,7 @@ describe('createConsoleApiClient', () => {
198
195
  missingRequiredCheckNames: ['build', 'test'],
199
196
  },
200
197
  });
201
- const client = createConsoleApiClient(appendToken);
198
+ const client = createConsoleApiClient();
202
199
  expect(
203
200
  await client.fetchPullRequestStatus('https://github.com/o/r/pull/1'),
204
201
  ).toEqual({
@@ -223,7 +220,7 @@ describe('createConsoleApiClient', () => {
223
220
  missingRequiredCheckNames: [],
224
221
  },
225
222
  });
226
- const client = createConsoleApiClient(appendToken);
223
+ const client = createConsoleApiClient();
227
224
  const status = await client.fetchPullRequestStatus(
228
225
  'https://github.com/o/r/pull/1',
229
226
  );
@@ -232,7 +229,7 @@ describe('createConsoleApiClient', () => {
232
229
 
233
230
  it('returns a not-found pull request status when the server reports none', async () => {
234
231
  mockFetchOnce({ found: false, status: null });
235
- const client = createConsoleApiClient(appendToken);
232
+ const client = createConsoleApiClient();
236
233
  expect(
237
234
  await client.fetchPullRequestStatus('https://github.com/o/r/pull/1'),
238
235
  ).toEqual({
@@ -248,7 +245,7 @@ describe('createConsoleApiClient', () => {
248
245
 
249
246
  it('throws on a non-ok response', async () => {
250
247
  mockFetchOnce({}, false);
251
- const client = createConsoleApiClient(appendToken);
248
+ const client = createConsoleApiClient();
252
249
  await expect(
253
250
  client.fetchComments('https://github.com/o/r/issues/1'),
254
251
  ).rejects.toThrow('HTTP 500');
@@ -256,21 +253,21 @@ describe('createConsoleApiClient', () => {
256
253
  });
257
254
 
258
255
  describe('postConsoleOperation', () => {
259
- it('posts a JSON body and appends the token', async () => {
256
+ it('posts a JSON body to the operation endpoint', async () => {
260
257
  const fetchMock = mockFetchOnce({ ok: true });
261
- await postConsoleOperation(appendToken, '/api/review', {
258
+ await postConsoleOperation('/api/review', {
262
259
  pjcode: 'umino',
263
260
  action: 'approve',
264
261
  prUrl: 'https://github.com/o/r/pull/1',
265
262
  projectItemId: 'PVTI_1',
266
263
  });
267
264
  const [url, init] = fetchMock.mock.calls[0];
268
- expect(url).toBe('/api/review?k=token');
265
+ expect(url).toBe('/api/review');
269
266
  expect(init).toMatchObject({ method: 'POST' });
270
267
  });
271
268
 
272
269
  const failingReview = (): Promise<void> =>
273
- postConsoleOperation(appendToken, '/api/review', {
270
+ postConsoleOperation('/api/review', {
274
271
  pjcode: 'umino',
275
272
  action: 'approve',
276
273
  prUrl: 'https://github.com/o/r/pull/1',
@@ -301,7 +298,7 @@ describe('postConsoleOperation', () => {
301
298
  describe('postConsoleReviewComment', () => {
302
299
  it('posts the inline review comment body to the reviewcomment endpoint', async () => {
303
300
  const fetchMock = mockFetchOnce({ ok: true });
304
- await postConsoleReviewComment(appendToken, {
301
+ await postConsoleReviewComment({
305
302
  pjcode: 'umino',
306
303
  url: 'https://github.com/o/r/pull/1',
307
304
  path: 'src/index.ts',
@@ -310,7 +307,7 @@ describe('postConsoleReviewComment', () => {
310
307
  body: 'Consider extracting this into a helper.',
311
308
  });
312
309
  const [url, init] = fetchMock.mock.calls[0];
313
- expect(url).toBe('/api/reviewcomment?k=token');
310
+ expect(url).toBe('/api/reviewcomment');
314
311
  expect(init).toMatchObject({ method: 'POST' });
315
312
  expect(JSON.parse((init as { body: string }).body)).toEqual({
316
313
  pjcode: 'umino',
@@ -331,7 +328,7 @@ describe('postConsoleReviewComment', () => {
331
328
  }),
332
329
  );
333
330
  await expect(
334
- postConsoleReviewComment(appendToken, {
331
+ postConsoleReviewComment({
335
332
  pjcode: 'umino',
336
333
  url: 'https://github.com/o/r/pull/1',
337
334
  path: 'src/index.ts',
@@ -57,8 +57,6 @@ export type ConsoleReviewCommentRequest = {
57
57
  body: string;
58
58
  };
59
59
 
60
- type AppendToken = (url: string) => string;
61
-
62
60
  const isRecord = (value: unknown): value is Record<string, unknown> =>
63
61
  value !== null && typeof value === 'object' && !Array.isArray(value);
64
62
 
@@ -71,14 +69,12 @@ const getNumber = (value: unknown): number =>
71
69
  const getBoolean = (value: unknown): boolean => value === true;
72
70
 
73
71
  const requestJson = async (
74
- appendToken: AppendToken,
75
72
  apiPath: string,
76
73
  resourceUrl: string,
77
74
  ): Promise<unknown> => {
78
- const target = appendToken(
75
+ const response = await fetch(
79
76
  `${apiPath}?url=${encodeURIComponent(resourceUrl)}`,
80
77
  );
81
- const response = await fetch(target);
82
78
  if (!response.ok) {
83
79
  throw new Error(`HTTP ${response.status}`);
84
80
  }
@@ -207,27 +203,23 @@ const parseState = (payload: unknown): ConsoleIssueState => {
207
203
  };
208
204
  };
209
205
 
210
- export const createConsoleApiClient = (
211
- appendToken: AppendToken,
212
- ): ConsoleApiClient => ({
206
+ export const createConsoleApiClient = (): ConsoleApiClient => ({
213
207
  fetchItemBody: async (url) => {
214
- const payload = await requestJson(appendToken, '/api/itembody', url);
208
+ const payload = await requestJson('/api/itembody', url);
215
209
  return isRecord(payload) ? getString(payload.body) : '';
216
210
  },
217
211
  fetchComments: async (url) =>
218
- parseComments(await requestJson(appendToken, '/api/comments', url)),
212
+ parseComments(await requestJson('/api/comments', url)),
219
213
  fetchPrFiles: async (url) =>
220
- parseFiles(await requestJson(appendToken, '/api/prfiles', url)),
214
+ parseFiles(await requestJson('/api/prfiles', url)),
221
215
  fetchPrCommits: async (url) =>
222
- parseCommits(await requestJson(appendToken, '/api/prcommits', url)),
216
+ parseCommits(await requestJson('/api/prcommits', url)),
223
217
  fetchRelatedPrs: async (url) =>
224
- parseRelatedPrs(await requestJson(appendToken, '/api/relatedprs', url)),
218
+ parseRelatedPrs(await requestJson('/api/relatedprs', url)),
225
219
  fetchIssueState: async (url) =>
226
- parseState(await requestJson(appendToken, '/api/issuetitle', url)),
220
+ parseState(await requestJson('/api/issuetitle', url)),
227
221
  fetchPullRequestStatus: async (url) =>
228
- parsePullRequestStatus(
229
- await requestJson(appendToken, '/api/pullrequeststatus', url),
230
- ),
222
+ parsePullRequestStatus(await requestJson('/api/pullrequeststatus', url)),
231
223
  });
232
224
 
233
225
  const readOperationErrorReason = async (
@@ -249,11 +241,10 @@ const readOperationErrorReason = async (
249
241
  };
250
242
 
251
243
  export const postConsoleOperation = async (
252
- appendToken: AppendToken,
253
244
  apiPath: string,
254
245
  body: ConsoleReviewRequest | ConsoleTriageRequest | ConsoleIntmuxRequest,
255
246
  ): Promise<void> => {
256
- const response = await fetch(appendToken(apiPath), {
247
+ const response = await fetch(apiPath, {
257
248
  method: 'POST',
258
249
  headers: { 'Content-Type': 'application/json' },
259
250
  body: JSON.stringify(body),
@@ -283,10 +274,9 @@ const parsePostedComment = (payload: unknown): ConsoleComment => {
283
274
  };
284
275
 
285
276
  export const postConsoleComment = async (
286
- appendToken: AppendToken,
287
277
  request: ConsoleCommentRequest,
288
278
  ): Promise<ConsoleComment> => {
289
- const response = await fetch(appendToken(COMMENT_OPERATION_PATH), {
279
+ const response = await fetch(COMMENT_OPERATION_PATH, {
290
280
  method: 'POST',
291
281
  headers: { 'Content-Type': 'application/json' },
292
282
  body: JSON.stringify(request),
@@ -300,10 +290,9 @@ export const postConsoleComment = async (
300
290
  export const REVIEW_COMMENT_OPERATION_PATH = '/api/reviewcomment';
301
291
 
302
292
  export const postConsoleReviewComment = async (
303
- appendToken: AppendToken,
304
293
  request: ConsoleReviewCommentRequest,
305
294
  ): Promise<void> => {
306
- const response = await fetch(appendToken(REVIEW_COMMENT_OPERATION_PATH), {
295
+ const response = await fetch(REVIEW_COMMENT_OPERATION_PATH, {
307
296
  method: 'POST',
308
297
  headers: { 'Content-Type': 'application/json' },
309
298
  body: JSON.stringify(request),
@@ -27,31 +27,28 @@ describe('isProxyableImageUrl', () => {
27
27
  });
28
28
 
29
29
  describe('buildImageProxyUrl', () => {
30
- it('encodes the source url and appends the token', () => {
30
+ it('encodes the source url without appending a token', () => {
31
31
  const src = 'https://github.com/user-attachments/assets/abc?x=1';
32
- expect(buildImageProxyUrl(src, 'tk')).toBe(
33
- `/api/img?url=${encodeURIComponent(src)}&k=tk`,
32
+ expect(buildImageProxyUrl(src)).toBe(
33
+ `/api/img?url=${encodeURIComponent(src)}`,
34
34
  );
35
35
  });
36
36
 
37
- it('omits the token when it is null', () => {
37
+ it('does not include a token query parameter', () => {
38
38
  const src = 'https://github.com/user-attachments/assets/abc';
39
- expect(buildImageProxyUrl(src, null)).toBe(
40
- `/api/img?url=${encodeURIComponent(src)}`,
41
- );
39
+ expect(buildImageProxyUrl(src)).not.toContain('k=');
42
40
  });
43
41
  });
44
42
 
45
43
  describe('rewriteGitHubImageSources', () => {
46
- const buildProxyUrl = (src: string): string =>
47
- buildImageProxyUrl(src, 'console-token');
44
+ const buildProxyUrl = (src: string): string => buildImageProxyUrl(src);
48
45
 
49
46
  it('rewrites an allow-listed github image src to the proxy url', () => {
50
47
  const githubSrc = 'https://github.com/user-attachments/assets/abc';
51
48
  const html = `<p><img src="${githubSrc}" alt="shot" /></p>`;
52
49
  const result = rewriteGitHubImageSources(html, buildProxyUrl);
53
50
  expect(result).toContain(`/api/img?url=${encodeURIComponent(githubSrc)}`);
54
- expect(result).toContain('k=console-token');
51
+ expect(result).not.toContain('k=');
55
52
  expect(result).not.toContain(`src="${githubSrc}"`);
56
53
  });
57
54
 
@@ -6,15 +6,8 @@ export const isProxyableImageUrl = (src: string): boolean =>
6
6
 
7
7
  export type ImageProxyUrlBuilder = (src: string) => string;
8
8
 
9
- export const buildImageProxyUrl = (
10
- src: string,
11
- token: string | null,
12
- ): string => {
13
- if (token === null) {
14
- return `/api/img?url=${encodeURIComponent(src)}`;
15
- }
16
- return `/api/img?url=${encodeURIComponent(src)}&k=${encodeURIComponent(token)}`;
17
- };
9
+ export const buildImageProxyUrl = (src: string): string =>
10
+ `/api/img?url=${encodeURIComponent(src)}`;
18
11
 
19
12
  export const rewriteGitHubImageSources = (
20
13
  html: string,
@@ -6,7 +6,6 @@ import { ConsoleOperationMenu } from '../components/operations/ConsoleOperationM
6
6
  import type { ConsoleCaches } from '../hooks/useConsoleCaches';
7
7
  import { useConsoleItemDetailData } from '../hooks/useConsoleItemDetailData';
8
8
  import type { ConsoleOperationsApi } from '../hooks/useConsoleOperations';
9
- import { useConsoleToken } from '../hooks/useConsoleToken';
10
9
  import { buildImageProxyUrl } from '../lib/imageProxy';
11
10
  import type { ConsoleActionKind } from '../logic/actionToast';
12
11
  import { resolveStoryColorEnum } from '../logic/grouping';
@@ -58,10 +57,9 @@ export const ConsoleItemDetailContainer = ({
58
57
  onQueueAction,
59
58
  }: ConsoleItemDetailContainerProps) => {
60
59
  const detail = useConsoleItemDetailData(caches, item);
61
- const { token } = useConsoleToken();
62
60
  const resolveImageProxyUrl = useCallback(
63
- (src: string): string => buildImageProxyUrl(src, token),
64
- [token],
61
+ (src: string): string => buildImageProxyUrl(src),
62
+ [],
65
63
  );
66
64
  const renderReferenceLink = useCallback(
67
65
  (href: string, fallbackText: string) => (