assisted-review 0.0.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 (110) hide show
  1. package/README.md +195 -0
  2. package/build/claude.js +154 -0
  3. package/build/claude.js.map +1 -0
  4. package/build/cli.js +95 -0
  5. package/build/cli.js.map +1 -0
  6. package/build/env.js +26 -0
  7. package/build/env.js.map +1 -0
  8. package/build/fetch.js +41 -0
  9. package/build/fetch.js.map +1 -0
  10. package/build/jira.js +119 -0
  11. package/build/jira.js.map +1 -0
  12. package/build/mock-ai.js +47 -0
  13. package/build/mock-ai.js.map +1 -0
  14. package/build/parse-diff.js +229 -0
  15. package/build/parse-diff.js.map +1 -0
  16. package/build/parse-ref.js +28 -0
  17. package/build/parse-ref.js.map +1 -0
  18. package/build/review.js +38 -0
  19. package/build/review.js.map +1 -0
  20. package/build/server.js +272 -0
  21. package/build/server.js.map +1 -0
  22. package/build/state.js +151 -0
  23. package/build/state.js.map +1 -0
  24. package/build/submit.js +123 -0
  25. package/build/submit.js.map +1 -0
  26. package/build/types.js +10 -0
  27. package/build/types.js.map +1 -0
  28. package/dist/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
  29. package/dist/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
  30. package/dist/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff +0 -0
  31. package/dist/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2 +0 -0
  32. package/dist/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
  33. package/dist/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
  34. package/dist/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff +0 -0
  35. package/dist/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2 +0 -0
  36. package/dist/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  37. package/dist/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  38. package/dist/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
  39. package/dist/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  40. package/dist/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
  41. package/dist/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
  42. package/dist/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2 +0 -0
  43. package/dist/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff +0 -0
  44. package/dist/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
  45. package/dist/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
  46. package/dist/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff +0 -0
  47. package/dist/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2 +0 -0
  48. package/dist/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff +0 -0
  49. package/dist/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2 +0 -0
  50. package/dist/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff +0 -0
  51. package/dist/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2 +0 -0
  52. package/dist/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2 +0 -0
  53. package/dist/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff +0 -0
  54. package/dist/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff +0 -0
  55. package/dist/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2 +0 -0
  56. package/dist/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2 +0 -0
  57. package/dist/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff +0 -0
  58. package/dist/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff +0 -0
  59. package/dist/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2 +0 -0
  60. package/dist/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff +0 -0
  61. package/dist/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2 +0 -0
  62. package/dist/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff +0 -0
  63. package/dist/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2 +0 -0
  64. package/dist/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff +0 -0
  65. package/dist/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2 +0 -0
  66. package/dist/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
  67. package/dist/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
  68. package/dist/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
  69. package/dist/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
  70. package/dist/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
  71. package/dist/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
  72. package/dist/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2 +0 -0
  73. package/dist/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff +0 -0
  74. package/dist/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff +0 -0
  75. package/dist/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2 +0 -0
  76. package/dist/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff +0 -0
  77. package/dist/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2 +0 -0
  78. package/dist/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2 +0 -0
  79. package/dist/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff +0 -0
  80. package/dist/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff +0 -0
  81. package/dist/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2 +0 -0
  82. package/dist/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff +0 -0
  83. package/dist/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2 +0 -0
  84. package/dist/assets/ibm-plex-serif-cyrillic-400-italic-C_ad97oI.woff2 +0 -0
  85. package/dist/assets/ibm-plex-serif-cyrillic-400-italic-CygxzOWU.woff +0 -0
  86. package/dist/assets/ibm-plex-serif-cyrillic-400-normal-C7IY3oUc.woff +0 -0
  87. package/dist/assets/ibm-plex-serif-cyrillic-400-normal-CPQ8oqB-.woff2 +0 -0
  88. package/dist/assets/ibm-plex-serif-cyrillic-ext-400-italic-CPw2or01.woff +0 -0
  89. package/dist/assets/ibm-plex-serif-cyrillic-ext-400-italic-o20Cx6Xj.woff2 +0 -0
  90. package/dist/assets/ibm-plex-serif-cyrillic-ext-400-normal-BcBv-TKp.woff +0 -0
  91. package/dist/assets/ibm-plex-serif-cyrillic-ext-400-normal-CxUI4jC_.woff2 +0 -0
  92. package/dist/assets/ibm-plex-serif-latin-400-italic-BCf4TsCA.woff2 +0 -0
  93. package/dist/assets/ibm-plex-serif-latin-400-italic-Dd68USph.woff +0 -0
  94. package/dist/assets/ibm-plex-serif-latin-400-normal-BB-zNvJB.woff +0 -0
  95. package/dist/assets/ibm-plex-serif-latin-400-normal-BIGslYFI.woff2 +0 -0
  96. package/dist/assets/ibm-plex-serif-latin-ext-400-italic-4IJS-XHX.woff +0 -0
  97. package/dist/assets/ibm-plex-serif-latin-ext-400-italic-hOoDEQwh.woff2 +0 -0
  98. package/dist/assets/ibm-plex-serif-latin-ext-400-normal-CNMooFZX.woff2 +0 -0
  99. package/dist/assets/ibm-plex-serif-latin-ext-400-normal-DwktX9jl.woff +0 -0
  100. package/dist/assets/ibm-plex-serif-vietnamese-400-italic-1VBVfWB7.woff +0 -0
  101. package/dist/assets/ibm-plex-serif-vietnamese-400-italic-BSp0Db6W.woff2 +0 -0
  102. package/dist/assets/ibm-plex-serif-vietnamese-400-normal-BY9Vij9A.woff +0 -0
  103. package/dist/assets/ibm-plex-serif-vietnamese-400-normal-DGubAMUE.woff2 +0 -0
  104. package/dist/assets/index-BAji2qJH.css +1 -0
  105. package/dist/assets/index-D9hEIdX7.js +326 -0
  106. package/dist/icon.svg +3 -0
  107. package/dist/index.html +14 -0
  108. package/dist/logo-dark.svg +22 -0
  109. package/dist/logo.svg +22 -0
  110. package/package.json +73 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/build/state.js ADDED
@@ -0,0 +1,151 @@
1
+ // Persistent review state: load on start (resume), mutate via actions, save
2
+ // after every mutation. One file per PR under ~/.assisted-review (override with
3
+ // ASSISTED_REVIEW_STATE_DIR). Single local user/process, so no locking needed.
4
+ import { homedir } from 'node:os';
5
+ import { join } from 'node:path';
6
+ import { mkdir, readFile, writeFile, rename, unlink, readdir, } from 'node:fs/promises';
7
+ import { randomUUID } from 'node:crypto';
8
+ import { STATE_VERSION } from './types.js';
9
+ const STATE_DIR = process.env.ASSISTED_REVIEW_STATE_DIR || join(homedir(), '.assisted-review');
10
+ function statePath(pr) {
11
+ return join(STATE_DIR, `${pr.owner}-${pr.repo}-${pr.number}.json`);
12
+ }
13
+ function emptyState(pr, headSha) {
14
+ return {
15
+ version: STATE_VERSION,
16
+ pr,
17
+ head_sha: headSha,
18
+ started_at: new Date().toISOString(),
19
+ comments: [],
20
+ flagged: [],
21
+ viewed: [],
22
+ notes: [],
23
+ };
24
+ }
25
+ // Migrate raw parsed JSON from any prior version to the current ReviewState shape.
26
+ // v0 (no version field): original format, notes array may be absent
27
+ // v1: added version + guaranteed notes array
28
+ export function migrate(raw) {
29
+ const s = { ...raw };
30
+ if (typeof s.version !== 'number') {
31
+ if (!Array.isArray(s.notes))
32
+ s.notes = [];
33
+ s.version = STATE_VERSION;
34
+ }
35
+ return s;
36
+ }
37
+ export async function loadState(pr, headSha) {
38
+ try {
39
+ const raw = await readFile(statePath(pr), 'utf8');
40
+ const state = migrate(JSON.parse(raw));
41
+ // Keep the persisted state; just refresh head_sha (staleness handling is a
42
+ // later slice — for now we surface the latest sha we fetched).
43
+ state.head_sha = headSha;
44
+ return state;
45
+ }
46
+ catch {
47
+ return emptyState(pr, headSha);
48
+ }
49
+ }
50
+ export async function saveState(state) {
51
+ await mkdir(STATE_DIR, { recursive: true });
52
+ const path = statePath(state.pr);
53
+ const tmp = `${path}.tmp`;
54
+ await writeFile(tmp, JSON.stringify(state, null, 2));
55
+ await rename(tmp, path); // atomic replace
56
+ }
57
+ export function applyAction(state, action) {
58
+ const now = new Date().toISOString();
59
+ switch (action.type) {
60
+ case 'add_comment': {
61
+ const comment = {
62
+ id: randomUUID(),
63
+ chunk_id: action.chunk_id,
64
+ side: action.side,
65
+ line: action.line,
66
+ body: action.body,
67
+ created_at: now,
68
+ updated_at: now,
69
+ };
70
+ return { ...state, comments: [...state.comments, comment] };
71
+ }
72
+ case 'update_comment':
73
+ return {
74
+ ...state,
75
+ comments: state.comments.map((c) => c.id === action.id ? { ...c, body: action.body, updated_at: now } : c),
76
+ };
77
+ case 'delete_comment':
78
+ return {
79
+ ...state,
80
+ comments: state.comments.filter((c) => c.id !== action.id),
81
+ };
82
+ case 'toggle_flag':
83
+ return {
84
+ ...state,
85
+ flagged: state.flagged.includes(action.chunk_id)
86
+ ? state.flagged.filter((id) => id !== action.chunk_id)
87
+ : [...state.flagged, action.chunk_id],
88
+ };
89
+ case 'set_viewed':
90
+ return {
91
+ ...state,
92
+ viewed: action.viewed
93
+ ? [...new Set([...state.viewed, action.chunk_id])]
94
+ : state.viewed.filter((id) => id !== action.chunk_id),
95
+ };
96
+ case 'add_note': {
97
+ const note = {
98
+ id: randomUUID(),
99
+ chunk_id: action.chunk_id,
100
+ kind: action.kind,
101
+ prompt: action.prompt,
102
+ body: action.body,
103
+ suggested_action: action.suggested_action,
104
+ created_at: now,
105
+ };
106
+ return { ...state, notes: [...state.notes, note] };
107
+ }
108
+ case 'delete_note':
109
+ return { ...state, notes: state.notes.filter((n) => n.id !== action.id) };
110
+ default:
111
+ return state;
112
+ }
113
+ }
114
+ export async function listReviews() {
115
+ try {
116
+ const files = await readdir(STATE_DIR);
117
+ const summaries = [];
118
+ for (const f of files) {
119
+ if (!f.endsWith('.json') || f.endsWith('.tmp.json'))
120
+ continue;
121
+ try {
122
+ const raw = await readFile(join(STATE_DIR, f), 'utf8');
123
+ const state = migrate(JSON.parse(raw));
124
+ if (!state.pr)
125
+ continue;
126
+ summaries.push({
127
+ pr: state.pr,
128
+ meta: state.meta,
129
+ head_sha: state.head_sha,
130
+ started_at: state.started_at,
131
+ comment_count: state.comments.length,
132
+ flagged_count: state.flagged.length,
133
+ viewed_count: state.viewed.length,
134
+ submitted: state.submitted,
135
+ });
136
+ }
137
+ catch {
138
+ // Skip unparseable or malformed files
139
+ }
140
+ }
141
+ return summaries.sort((a, b) => b.started_at.localeCompare(a.started_at));
142
+ }
143
+ catch {
144
+ return [];
145
+ }
146
+ }
147
+ export async function deleteReview(pr) {
148
+ await unlink(statePath(pr));
149
+ }
150
+ export { statePath };
151
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ // Publish drafted comments as a real GitHub PR review via `gh api`.
2
+ //
3
+ // Ports the essential behavior of the assisted-review `submit-review.sh`:
4
+ // - assemble a single review payload {event, body, commit_id, comments}
5
+ // - pre-flight stale-SHA detection (head_sha must still be on the PR's
6
+ // commit list; a force-push orphans it and inline anchors 422)
7
+ // - catch the "Path could not be resolved" 422 the pre-flight can miss
8
+ // - POST the whole payload as one JSON document on stdin (`--input -`);
9
+ // gh's -f/--raw-field would encode `comments` as a string and the API
10
+ // rejects that with "not an array".
11
+ //
12
+ // Our model has no replies (every draft is a new inline comment) and no
13
+ // start/end ranges, so the reply pass and multi-line shaping are dropped.
14
+ import { spawn } from 'node:child_process';
15
+ export { VERDICTS } from './types.js';
16
+ /**
17
+ * Resolve a draft comment's GitHub anchor. A line-anchored comment uses its own
18
+ * side/line; a whole-chunk comment (line null) anchors to the chunk's last
19
+ * line — RIGHT if the hunk has any new-side content, else LEFT (pure deletion).
20
+ */
21
+ export function commentAnchor(c, chunk) {
22
+ if (c.line != null && c.side != null)
23
+ return { side: c.side, line: c.line };
24
+ const hasNewSide = chunk.diff.split('\n').some((l) => l.startsWith('+') || l.startsWith(' '));
25
+ return hasNewSide
26
+ ? { side: 'RIGHT', line: chunk.new_range[1] }
27
+ : { side: 'LEFT', line: chunk.old_range[1] };
28
+ }
29
+ /** Assemble the GitHub review payload from drafts. Orphaned drafts (whose chunk
30
+ * is no longer present) are skipped. */
31
+ export function buildReviewPayload(chunks, comments, verdict, body, headSha) {
32
+ const byId = new Map(chunks.map((c) => [c.id, c]));
33
+ const reviewComments = [];
34
+ for (const c of comments) {
35
+ const chunk = byId.get(c.chunk_id);
36
+ if (!chunk)
37
+ continue;
38
+ const { side, line } = commentAnchor(c, chunk);
39
+ reviewComments.push({ path: chunk.file, body: c.body, side, line });
40
+ }
41
+ return { event: verdict, body, commit_id: headSha, comments: reviewComments };
42
+ }
43
+ /** Run `gh` with optional stdin (execFile drops `input`, so we spawn). */
44
+ function gh(args, input) {
45
+ return new Promise((resolve, reject) => {
46
+ const child = spawn('gh', args, { stdio: ['pipe', 'pipe', 'pipe'] });
47
+ let stdout = '';
48
+ let stderr = '';
49
+ child.stdout.on('data', (d) => (stdout += d));
50
+ child.stderr.on('data', (d) => (stderr += d));
51
+ child.on('error', reject);
52
+ child.on('close', (code) => resolve({ code: code ?? 0, stdout, stderr }));
53
+ if (input != null)
54
+ child.stdin.write(input);
55
+ child.stdin.end();
56
+ });
57
+ }
58
+ function repoPath({ owner, repo }) {
59
+ return `repos/${owner}/${repo}`;
60
+ }
61
+ /** Fetch the PR's current head SHA (for stale-SHA reporting). */
62
+ async function currentHeadSha(ref) {
63
+ const { code, stdout } = await gh(['api', `${repoPath(ref)}/pulls/${ref.number}`, '-q', '.head.sha']);
64
+ return code === 0 ? stdout.trim() : 'unknown';
65
+ }
66
+ /**
67
+ * Is `sha` still on the PR's commit list? Returns null if the lookup itself
68
+ * failed (network/permissions) — caller should not block submission on null.
69
+ */
70
+ async function shaOnPr(ref, sha) {
71
+ const { code, stdout } = await gh([
72
+ 'api',
73
+ '--paginate',
74
+ `${repoPath(ref)}/pulls/${ref.number}/commits`,
75
+ '-q',
76
+ '.[].sha',
77
+ ]);
78
+ if (code !== 0)
79
+ return null;
80
+ const shas = stdout.split('\n').map((s) => s.trim()).filter(Boolean);
81
+ return shas.includes(sha);
82
+ }
83
+ const STALE_RE = /Path could not be resolved/i;
84
+ /** Submit the assembled review. Posts the whole payload as one document. */
85
+ export async function submitReview(ref, payload) {
86
+ // Pre-flight: a stale head SHA only matters when we have inline anchors.
87
+ if (payload.comments.length > 0) {
88
+ const present = await shaOnPr(ref, payload.commit_id);
89
+ if (present === false) {
90
+ return {
91
+ ok: false,
92
+ stale: {
93
+ old: payload.commit_id,
94
+ new_head: await currentHeadSha(ref),
95
+ inline_count: payload.comments.length,
96
+ },
97
+ };
98
+ }
99
+ }
100
+ const { code, stdout, stderr } = await gh(['api', `${repoPath(ref)}/pulls/${ref.number}/reviews`, '-X', 'POST', '--input', '-'], JSON.stringify(payload));
101
+ if (code !== 0) {
102
+ if (STALE_RE.test(stderr)) {
103
+ return {
104
+ ok: false,
105
+ stale: {
106
+ old: payload.commit_id,
107
+ new_head: await currentHeadSha(ref),
108
+ inline_count: payload.comments.length,
109
+ },
110
+ };
111
+ }
112
+ return { ok: false, error: stderr.trim() || `gh exited with code ${code}`, payload };
113
+ }
114
+ let html_url;
115
+ try {
116
+ html_url = JSON.parse(stdout).html_url;
117
+ }
118
+ catch {
119
+ /* response wasn't JSON; success without a URL */
120
+ }
121
+ return { ok: true, html_url };
122
+ }
123
+ //# sourceMappingURL=submit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit.js","sourceRoot":"","sources":["../src/submit.ts"],"names":[],"mappings":"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"}
package/build/types.js ADDED
@@ -0,0 +1,10 @@
1
+ // Shared types for the backend and (via `import type`) the web UI.
2
+ /** Pseudo-chunk id for notes/summary attached to the overview page. */
3
+ export const OVERVIEW_ID = '__overview__';
4
+ export const VERDICTS = [
5
+ 'APPROVE',
6
+ 'COMMENT',
7
+ 'REQUEST_CHANGES',
8
+ ];
9
+ export const STATE_VERSION = 1;
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,mEAAmE;AA0FnE,uEAAuE;AACvE,MAAM,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC;AAM1C,MAAM,CAAC,MAAM,QAAQ,GAAuB;IAC1C,SAAS;IACT,SAAS;IACT,iBAAiB;CAClB,CAAC;AAwBF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC"}