@jawkx1999/opencr 0.1.0-alpha.0 → 0.1.0-alpha.3

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 (37) hide show
  1. package/README.md +8 -0
  2. package/dist/client/assets/index-BnzvJWAx.js +1974 -0
  3. package/dist/client/assets/index-FRegO2ve.css +1 -0
  4. package/dist/client/index.html +2 -2
  5. package/dist/server/cli/index.js +59 -5
  6. package/dist/server/cli/index.js.map +1 -1
  7. package/dist/server/cli/utils.js +1 -306
  8. package/dist/server/cli/utils.js.map +1 -1
  9. package/dist/server/core/reviewPayload.js +5 -1
  10. package/dist/server/core/reviewPayload.js.map +1 -1
  11. package/dist/server/core/reviewRequest.js +1 -5
  12. package/dist/server/core/reviewRequest.js.map +1 -1
  13. package/dist/server/core/reviewSource/commandErrors.js +24 -0
  14. package/dist/server/core/reviewSource/commandErrors.js.map +1 -0
  15. package/dist/server/core/reviewSource/commitish.js +107 -0
  16. package/dist/server/core/reviewSource/commitish.js.map +1 -0
  17. package/dist/server/core/reviewSource/contentSummary.js +13 -0
  18. package/dist/server/core/reviewSource/contentSummary.js.map +1 -0
  19. package/dist/server/core/reviewSource/gitDiff.js +92 -0
  20. package/dist/server/core/reviewSource/gitDiff.js.map +1 -0
  21. package/dist/server/core/reviewSource/githubPr.js +48 -0
  22. package/dist/server/core/reviewSource/githubPr.js.map +1 -0
  23. package/dist/server/core/reviewSource/index.js +6 -0
  24. package/dist/server/core/reviewSource/index.js.map +1 -0
  25. package/dist/server/core/reviewSource/stdin.js +32 -0
  26. package/dist/server/core/reviewSource/stdin.js.map +1 -0
  27. package/dist/server/core/server.js +25 -6
  28. package/dist/server/core/server.js.map +1 -1
  29. package/dist/server/core/workspace/identity.js +47 -0
  30. package/dist/server/core/workspace/identity.js.map +1 -0
  31. package/dist/server/core/workspace/repository.js +309 -0
  32. package/dist/server/core/workspace/repository.js.map +1 -0
  33. package/dist/server/server/app.js +47 -2
  34. package/dist/server/server/app.js.map +1 -1
  35. package/package.json +2 -1
  36. package/dist/client/assets/index-BISvyTuG.css +0 -1
  37. package/dist/client/assets/index-Co9fPoWo.js +0 -1970
@@ -1,5 +1,5 @@
1
1
  import { Data, Effect } from 'effect';
2
- import { buildContentSummary, detectStdinSource, determineDiffWatchMode, getGitRoot, getPrPatch, inferBaseCommitish, parseGitHubPrUrl, readStdin, shouldReadStdin, validateDiffArguments, } from '../cli/utils.js';
2
+ import { buildContentSummary, detectStdinSource, determineDiffWatchMode, getGitRoot, getPrPatch, inferBaseCommitish, parseGitHubPrUrl, readStdin, shouldReadStdin, validateDiffArguments, } from './reviewSource/index.js';
3
3
  export class ReviewRequestError extends Data.TaggedError('ReviewRequestError') {
4
4
  }
5
5
  const fail = (message) => Effect.fail(new ReviewRequestError({ message }));
@@ -23,9 +23,6 @@ const tryPromise = (thunk, message) => {
23
23
  };
24
24
  export function resolveReviewRequest(input) {
25
25
  return Effect.gen(function* () {
26
- if (input.options.tuiRequested) {
27
- return yield* fail('--tui is not implemented yet. opencr currently supports the WebUI pipeline only.');
28
- }
29
26
  const behavior = {
30
27
  ...(input.options.preferredPort === undefined
31
28
  ? {}
@@ -77,7 +74,6 @@ export function resolveReviewRequest(input) {
77
74
  commitish: input.commitish,
78
75
  hasPositionalArgs: input.hasPositionalArgs,
79
76
  hasPrOption: false,
80
- hasTuiOption: false,
81
77
  stdinSource,
82
78
  });
83
79
  if (shouldConsumeStdin) {
@@ -1 +1 @@
1
- {"version":3,"file":"reviewRequest.js","sourceRoot":"","sources":["../../../src/core/reviewRequest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reviewRequest.js","sourceRoot":"","sources":["../../../src/core/reviewRequest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export function getCommandErrorText(error) {
2
+ const stderr = error.stderr;
3
+ if (typeof stderr === 'string') {
4
+ return stderr.trim();
5
+ }
6
+ if (Buffer.isBuffer(stderr)) {
7
+ return stderr.toString('utf8').trim();
8
+ }
9
+ if (error instanceof Error) {
10
+ return error.message;
11
+ }
12
+ return String(error);
13
+ }
14
+ export function getCommandOutputText(error) {
15
+ const stdout = error.stdout;
16
+ if (typeof stdout === 'string') {
17
+ return stdout;
18
+ }
19
+ if (Buffer.isBuffer(stdout)) {
20
+ return stdout.toString('utf8');
21
+ }
22
+ return '';
23
+ }
24
+ //# sourceMappingURL=commandErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandErrors.js","sourceRoot":"","sources":["../../../../src/core/reviewSource/commandErrors.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,MAAM,MAAM,GAAI,KAAsC,CAAC,MAAM,CAAC;IAC9D,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,MAAM,MAAM,GAAI,KAAsC,CAAC,MAAM,CAAC;IAC9D,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,107 @@
1
+ function isSpecialArg(arg) {
2
+ return arg === 'working' || arg === 'staged' || arg === '.';
3
+ }
4
+ export function inferBaseCommitish(targetCommitish, compareWith) {
5
+ if (compareWith) {
6
+ return compareWith;
7
+ }
8
+ if (targetCommitish === 'working') {
9
+ return 'staged';
10
+ }
11
+ if (isSpecialArg(targetCommitish)) {
12
+ return 'HEAD';
13
+ }
14
+ return `${targetCommitish}^`;
15
+ }
16
+ export function determineDiffWatchMode(targetCommitish, compareWith) {
17
+ if (compareWith && targetCommitish !== 'HEAD' && targetCommitish !== '.') {
18
+ return 'specific';
19
+ }
20
+ if (targetCommitish === 'working') {
21
+ return 'working';
22
+ }
23
+ if (targetCommitish === 'staged') {
24
+ return 'staged';
25
+ }
26
+ if (targetCommitish === '.') {
27
+ return 'dot';
28
+ }
29
+ return 'default';
30
+ }
31
+ export function validateCommitish(commitish) {
32
+ const trimmed = commitish.trim();
33
+ if (trimmed.length === 0 || trimmed === 'HEAD~') {
34
+ return false;
35
+ }
36
+ if (isSpecialArg(trimmed)) {
37
+ return true;
38
+ }
39
+ const validPatterns = [
40
+ /^[a-f0-9]{4,40}$/i,
41
+ /^[a-f0-9]{4,40}\^+$/i,
42
+ /^[a-f0-9]{4,40}~\d+$/i,
43
+ /^HEAD(~\d+|\^\d*)*$/,
44
+ /^@(~\d+|\^\d*)*$/,
45
+ ];
46
+ if (validPatterns.some((pattern) => pattern.test(trimmed))) {
47
+ return true;
48
+ }
49
+ return isValidBranchName(trimmed);
50
+ }
51
+ function isValidBranchName(name) {
52
+ if (name.startsWith('-') || name.endsWith('.') || name.includes('..')) {
53
+ return false;
54
+ }
55
+ if (name.includes('@{') || name.includes('//')) {
56
+ return false;
57
+ }
58
+ if (name.startsWith('/') || name.endsWith('/') || name.endsWith('.lock')) {
59
+ return false;
60
+ }
61
+ for (const character of name) {
62
+ const codePoint = character.codePointAt(0);
63
+ if (codePoint === undefined) {
64
+ continue;
65
+ }
66
+ if ('~^:?*[\\'.includes(character) || codePoint <= 0x20 || codePoint === 0x7f) {
67
+ return false;
68
+ }
69
+ }
70
+ return name.split('/').every((component) => {
71
+ return component.length > 0 && !component.startsWith('.') && !component.endsWith('.lock');
72
+ });
73
+ }
74
+ export function validateDiffArguments(targetCommitish, baseCommitish) {
75
+ if (!validateCommitish(targetCommitish)) {
76
+ return { valid: false, error: 'Invalid target commit-ish format' };
77
+ }
78
+ if (baseCommitish !== undefined && !validateCommitish(baseCommitish)) {
79
+ return { valid: false, error: 'Invalid base commit-ish format' };
80
+ }
81
+ const specialArgs = ['working', 'staged', '.'];
82
+ if (baseCommitish && specialArgs.includes(baseCommitish)) {
83
+ if (!(baseCommitish === 'staged' && targetCommitish === 'working')) {
84
+ return {
85
+ valid: false,
86
+ error: `Special arguments (working, staged, .) are only allowed as target, not base. Got base: ${baseCommitish}`,
87
+ };
88
+ }
89
+ }
90
+ if (targetCommitish === baseCommitish) {
91
+ return {
92
+ valid: false,
93
+ error: `Cannot compare ${targetCommitish} with itself`,
94
+ };
95
+ }
96
+ if (targetCommitish === 'working' && baseCommitish && baseCommitish !== 'staged') {
97
+ return {
98
+ valid: false,
99
+ error: '"working" shows unstaged changes and cannot be compared with another commit. Use "." instead to compare all uncommitted changes with a specific commit.',
100
+ };
101
+ }
102
+ return { valid: true };
103
+ }
104
+ export function createCommitRangeString(baseCommitish, targetCommitish) {
105
+ return `${baseCommitish}...${targetCommitish}`;
106
+ }
107
+ //# sourceMappingURL=commitish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commitish.js","sourceRoot":"","sources":["../../../../src/core/reviewSource/commitish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { createHash } from 'node:crypto';
2
+ export function buildContentSummary(content, maxPreviewLength = 4000) {
3
+ const normalized = content.replace(/\r\n/g, '\n');
4
+ const preview = normalized.slice(0, maxPreviewLength);
5
+ return {
6
+ bytes: Buffer.byteLength(content, 'utf8'),
7
+ lineCount: normalized.length === 0 ? 0 : normalized.split('\n').length,
8
+ sha256: createHash('sha256').update(content).digest('hex'),
9
+ preview,
10
+ truncated: normalized.length > preview.length,
11
+ };
12
+ }
13
+ //# sourceMappingURL=contentSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentSummary.js","sourceRoot":"","sources":["../../../../src/core/reviewSource/contentSummary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,gBAAgB,GAAG,IAAI;IAC1E,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAEtD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;QACzC,SAAS,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;QACtE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1D,OAAO;QACP,SAAS,EAAE,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;KAC9C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,92 @@
1
+ import { execFileSync, execSync } from 'node:child_process';
2
+ import { createCommitRangeString } from './commitish.js';
3
+ import { getCommandErrorText, getCommandOutputText } from './commandErrors.js';
4
+ const NULL_DEVICE_PATH = process.platform === 'win32' ? 'NUL' : '/dev/null';
5
+ export function getGitRoot() {
6
+ const result = execSync('git rev-parse --show-toplevel', {
7
+ encoding: 'utf8',
8
+ stdio: 'pipe',
9
+ });
10
+ return result.trim();
11
+ }
12
+ export function getGitDiffPatch(options) {
13
+ const args = ['diff'];
14
+ if (options.targetCommitish === 'working') {
15
+ // no extra args; git diff shows unstaged changes
16
+ }
17
+ else if (options.targetCommitish === 'staged') {
18
+ args.push('--cached', options.baseCommitish);
19
+ }
20
+ else if (options.targetCommitish === '.') {
21
+ args.push(options.baseCommitish);
22
+ }
23
+ else {
24
+ args.push(createCommitRangeString(options.baseCommitish, options.targetCommitish));
25
+ }
26
+ args.push('--no-ext-diff', '--color=never');
27
+ try {
28
+ const patch = execFileSync('git', args, {
29
+ cwd: options.repositoryPath,
30
+ encoding: 'utf8',
31
+ stdio: ['ignore', 'pipe', 'pipe'],
32
+ });
33
+ if (!shouldIncludeUntrackedFiles(options)) {
34
+ return patch;
35
+ }
36
+ const untrackedPatch = buildUntrackedFilesPatch(options.repositoryPath);
37
+ return joinPatchSegments([patch, untrackedPatch]);
38
+ }
39
+ catch (error) {
40
+ throw new Error(getCommandErrorText(error) || 'Unknown error while running git diff', {
41
+ cause: error,
42
+ });
43
+ }
44
+ }
45
+ function shouldIncludeUntrackedFiles(options) {
46
+ if (!options.includeUntracked) {
47
+ return false;
48
+ }
49
+ return options.targetCommitish === 'working' || options.targetCommitish === '.';
50
+ }
51
+ function buildUntrackedFilesPatch(repositoryPath) {
52
+ const untrackedFiles = listUntrackedFiles(repositoryPath);
53
+ if (untrackedFiles.length === 0) {
54
+ return '';
55
+ }
56
+ return joinPatchSegments(untrackedFiles.map((filePath) => getUntrackedFilePatch(repositoryPath, filePath)));
57
+ }
58
+ function listUntrackedFiles(repositoryPath) {
59
+ const output = execFileSync('git', ['ls-files', '--others', '--exclude-standard', '-z'], {
60
+ cwd: repositoryPath,
61
+ encoding: 'utf8',
62
+ stdio: ['ignore', 'pipe', 'pipe'],
63
+ });
64
+ return output.split('\0').filter((filePath) => filePath.length > 0);
65
+ }
66
+ function getUntrackedFilePatch(repositoryPath, filePath) {
67
+ try {
68
+ return execFileSync('git', ['diff', '--no-index', '--no-ext-diff', '--color=never', '--', NULL_DEVICE_PATH, filePath], {
69
+ cwd: repositoryPath,
70
+ encoding: 'utf8',
71
+ stdio: ['ignore', 'pipe', 'pipe'],
72
+ });
73
+ }
74
+ catch (error) {
75
+ const exitStatus = error.status;
76
+ const stdout = getCommandOutputText(error);
77
+ if (exitStatus === 1 && stdout.trim().length > 0) {
78
+ return stdout;
79
+ }
80
+ throw new Error(getCommandErrorText(error) || `Unknown error while diffing untracked file ${filePath}`, {
81
+ cause: error,
82
+ });
83
+ }
84
+ }
85
+ function joinPatchSegments(segments) {
86
+ const nonEmptySegments = segments.filter((segment) => segment.trim().length > 0);
87
+ if (nonEmptySegments.length === 0) {
88
+ return '';
89
+ }
90
+ return nonEmptySegments.join('\n');
91
+ }
92
+ //# sourceMappingURL=gitDiff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitDiff.js","sourceRoot":"","sources":["../../../../src/core/reviewSource/gitDiff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { getCommandErrorText } from './commandErrors.js';
3
+ export function parseGitHubPrUrl(url) {
4
+ try {
5
+ const urlObject = new URL(url);
6
+ const pathParts = urlObject.pathname.split('/').filter(Boolean);
7
+ if (pathParts.length < 4 || pathParts[2] !== 'pull') {
8
+ return null;
9
+ }
10
+ const pullNumber = Number.parseInt(pathParts[3] ?? '', 10);
11
+ if (Number.isNaN(pullNumber)) {
12
+ return null;
13
+ }
14
+ const owner = pathParts[0];
15
+ const repo = pathParts[1];
16
+ if (!owner || !repo) {
17
+ return null;
18
+ }
19
+ return {
20
+ owner,
21
+ repo,
22
+ pullNumber,
23
+ hostname: urlObject.hostname,
24
+ };
25
+ }
26
+ catch {
27
+ return null;
28
+ }
29
+ }
30
+ export function getPrPatch(prUrl) {
31
+ try {
32
+ const patch = execFileSync('gh', ['pr', 'diff', prUrl], {
33
+ encoding: 'utf8',
34
+ stdio: ['ignore', 'pipe', 'pipe'],
35
+ });
36
+ if (!patch.trim()) {
37
+ throw new Error('No diff content returned from gh pr diff');
38
+ }
39
+ return patch;
40
+ }
41
+ catch (error) {
42
+ const message = getCommandErrorText(error) || 'Unknown error while running gh';
43
+ throw new Error(`${message}\nTry: gh auth login`, {
44
+ cause: error,
45
+ });
46
+ }
47
+ }
48
+ //# sourceMappingURL=githubPr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"githubPr.js","sourceRoot":"","sources":["../../../../src/core/reviewSource/githubPr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AASzD,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEhE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,KAAK;YACL,IAAI;YACJ,UAAU;YACV,QAAQ,EAAE,SAAS,CAAC,QAAQ;SAC7B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;YACtD,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,gCAAgC,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,sBAAsB,EAAE;YAChD,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { buildContentSummary } from './contentSummary.js';
2
+ export { createCommitRangeString, determineDiffWatchMode, inferBaseCommitish, validateCommitish, validateDiffArguments, } from './commitish.js';
3
+ export { getGitDiffPatch, getGitRoot } from './gitDiff.js';
4
+ export { getPrPatch, parseGitHubPrUrl } from './githubPr.js';
5
+ export { detectStdinSource, readStdin, shouldReadStdin } from './stdin.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/reviewSource/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { fstatSync } from 'node:fs';
2
+ export function detectStdinSource(stdinStat = fstatSync(0)) {
3
+ if (stdinStat.isFIFO()) {
4
+ return 'pipe';
5
+ }
6
+ if (stdinStat.isFile()) {
7
+ return 'file';
8
+ }
9
+ if (stdinStat.isSocket()) {
10
+ return 'socket';
11
+ }
12
+ return 'tty';
13
+ }
14
+ export function shouldReadStdin(options) {
15
+ if (options.commitish === '-') {
16
+ return true;
17
+ }
18
+ if (options.hasPositionalArgs || options.hasPrOption) {
19
+ return false;
20
+ }
21
+ const stdinSource = options.stdinSource ?? detectStdinSource();
22
+ return stdinSource === 'pipe' || stdinSource === 'file' || stdinSource === 'socket';
23
+ }
24
+ export async function readStdin() {
25
+ process.stdin.setEncoding('utf8');
26
+ let content = '';
27
+ for await (const chunk of process.stdin) {
28
+ content += chunk;
29
+ }
30
+ return content;
31
+ }
32
+ //# sourceMappingURL=stdin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdin.js","sourceRoot":"","sources":["../../../../src/core/reviewSource/stdin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAc,MAAM,SAAS,CAAC;AAahD,MAAM,UAAU,iBAAiB,CAAC,YAAuB,SAAS,CAAC,CAAC,CAAC;IACnE,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA+B;IAC7D,IAAI,OAAO,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,iBAAiB,EAAE,CAAC;IAC/D,OAAO,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,QAAQ,CAAC;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAElC,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,OAAO,IAAI,KAAK,CAAC;IACnB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -6,6 +6,7 @@ export class ServerStartError extends Error {
6
6
  this.name = 'ServerStartError';
7
7
  }
8
8
  }
9
+ const AUTO_SHUTDOWN_DELAY_MS = 1500;
9
10
  const toErrorMessage = (error) => {
10
11
  if (error instanceof Error) {
11
12
  return error.message;
@@ -49,10 +50,28 @@ export async function startDebugServer(input) {
49
50
  };
50
51
  let app;
51
52
  let isShuttingDown = false;
53
+ let pendingShutdownTimer = null;
54
+ const clearPendingShutdown = () => {
55
+ if (pendingShutdownTimer == null) {
56
+ return;
57
+ }
58
+ clearTimeout(pendingShutdownTimer);
59
+ pendingShutdownTimer = null;
60
+ };
61
+ const scheduleShutdown = () => {
62
+ clearPendingShutdown();
63
+ pendingShutdownTimer = setTimeout(() => {
64
+ pendingShutdownTimer = null;
65
+ void stop().finally(() => {
66
+ process.exit(0);
67
+ });
68
+ }, AUTO_SHUTDOWN_DELAY_MS);
69
+ };
52
70
  const stop = async () => {
53
71
  if (isShuttingDown) {
54
72
  return;
55
73
  }
74
+ clearPendingShutdown();
56
75
  isShuttingDown = true;
57
76
  if (app) {
58
77
  await app.close();
@@ -61,13 +80,13 @@ export async function startDebugServer(input) {
61
80
  try {
62
81
  app = await createApp({
63
82
  debugState,
64
- reviewPayload: input.reviewPayload,
83
+ getReviewPayload: input.getReviewPayload,
84
+ saveWorkspace: input.saveWorkspace,
85
+ onHeartbeatClientConnected: () => {
86
+ clearPendingShutdown();
87
+ },
65
88
  onLastClientDisconnected: () => {
66
- setTimeout(() => {
67
- void stop().finally(() => {
68
- process.exit(0);
69
- });
70
- }, 100);
89
+ scheduleShutdown();
71
90
  },
72
91
  });
73
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/core/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/core/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { createHash } from 'node:crypto';
2
+ const hashString = (input) => {
3
+ return createHash('sha256').update(input).digest('hex');
4
+ };
5
+ const buildTargetSeed = (request) => {
6
+ switch (request.source.kind) {
7
+ case 'git':
8
+ return [
9
+ 'git',
10
+ request.source.repositoryPath,
11
+ request.source.baseCommitish,
12
+ request.source.targetCommitish,
13
+ request.source.diffWatchMode,
14
+ request.behavior.includeUntracked ? 'include-untracked' : 'tracked-only',
15
+ ].join('|');
16
+ case 'pull-request':
17
+ return [
18
+ 'pull-request',
19
+ request.source.hostname,
20
+ request.source.owner,
21
+ request.source.repo,
22
+ String(request.source.pullNumber),
23
+ ].join('|');
24
+ case 'stdin':
25
+ return ['stdin', request.source.summary.sha256].join('|');
26
+ }
27
+ };
28
+ const countPatchLines = (patch) => {
29
+ if (patch.length === 0) {
30
+ return 0;
31
+ }
32
+ return patch.replace(/\r\n/g, '\n').split('\n').length;
33
+ };
34
+ export const buildReviewIdentity = (request, patch) => {
35
+ const snapshotId = hashString(patch);
36
+ const targetId = request.source.kind === 'stdin' ? snapshotId : hashString(buildTargetSeed(request));
37
+ return {
38
+ targetId,
39
+ snapshotId,
40
+ sourceKind: request.source.kind,
41
+ sourceLabel: request.reviewLabel,
42
+ sourceJson: JSON.stringify(request.source),
43
+ patchBytes: Buffer.byteLength(patch, 'utf8'),
44
+ patchLineCount: countPatchLines(patch),
45
+ };
46
+ };
47
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../../src/core/workspace/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAczC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE;IAC3C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,OAAsB,EAAU,EAAE;IACzD,QAAQ,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5B,KAAK,KAAK;YACR,OAAO;gBACL,KAAK;gBACL,OAAO,CAAC,MAAM,CAAC,cAAc;gBAC7B,OAAO,CAAC,MAAM,CAAC,aAAa;gBAC5B,OAAO,CAAC,MAAM,CAAC,eAAe;gBAC9B,OAAO,CAAC,MAAM,CAAC,aAAa;gBAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc;aACzE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACd,KAAK,cAAc;YACjB,OAAO;gBACL,cAAc;gBACd,OAAO,CAAC,MAAM,CAAC,QAAQ;gBACvB,OAAO,CAAC,MAAM,CAAC,KAAK;gBACpB,OAAO,CAAC,MAAM,CAAC,IAAI;gBACnB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;aAClC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACd,KAAK,OAAO;YACV,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAa,EAAU,EAAE;IAChD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAsB,EAAE,KAAa,EAAkB,EAAE;IAC3F,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAErG,OAAO;QACL,QAAQ;QACR,UAAU;QACV,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;QAC/B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1C,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;QAC5C,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC;KACvC,CAAC;AACJ,CAAC,CAAC"}