edsger 0.40.0 → 0.41.0

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 (44) hide show
  1. package/dist/commands/pr-resolve/index.d.ts +10 -0
  2. package/dist/commands/pr-resolve/index.js +44 -0
  3. package/dist/commands/pr-review/index.d.ts +10 -0
  4. package/dist/commands/pr-review/index.js +43 -0
  5. package/dist/index.js +38 -0
  6. package/dist/phases/code-review/__tests__/diff-utils.test.d.ts +1 -0
  7. package/dist/phases/code-review/__tests__/diff-utils.test.js +101 -0
  8. package/dist/phases/code-review/diff-utils.d.ts +36 -0
  9. package/dist/phases/code-review/diff-utils.js +100 -0
  10. package/dist/phases/code-review/index.js +17 -153
  11. package/dist/phases/pr-execution/file-assigner.d.ts +12 -0
  12. package/dist/phases/pr-execution/file-assigner.js +34 -0
  13. package/dist/phases/pr-execution/index.js +25 -8
  14. package/dist/phases/pr-resolve/__tests__/prompts.test.d.ts +1 -0
  15. package/dist/phases/pr-resolve/__tests__/prompts.test.js +116 -0
  16. package/dist/phases/pr-resolve/__tests__/resolve-mapping.test.d.ts +1 -0
  17. package/dist/phases/pr-resolve/__tests__/resolve-mapping.test.js +138 -0
  18. package/dist/phases/pr-resolve/__tests__/workspace.test.d.ts +1 -0
  19. package/dist/phases/pr-resolve/__tests__/workspace.test.js +111 -0
  20. package/dist/phases/pr-resolve/github-reply.d.ts +13 -0
  21. package/dist/phases/pr-resolve/github-reply.js +59 -0
  22. package/dist/phases/pr-resolve/index.d.ts +27 -0
  23. package/dist/phases/pr-resolve/index.js +213 -0
  24. package/dist/phases/pr-resolve/prompts.d.ts +17 -0
  25. package/dist/phases/pr-resolve/prompts.js +106 -0
  26. package/dist/phases/pr-resolve/workspace.d.ts +29 -0
  27. package/dist/phases/pr-resolve/workspace.js +145 -0
  28. package/dist/phases/pr-review/__tests__/prompts.test.d.ts +1 -0
  29. package/dist/phases/pr-review/__tests__/prompts.test.js +49 -0
  30. package/dist/phases/pr-review/__tests__/review-comments.test.d.ts +1 -0
  31. package/dist/phases/pr-review/__tests__/review-comments.test.js +108 -0
  32. package/dist/phases/pr-review/index.d.ts +25 -0
  33. package/dist/phases/pr-review/index.js +213 -0
  34. package/dist/phases/pr-review/prompts.d.ts +5 -0
  35. package/dist/phases/pr-review/prompts.js +87 -0
  36. package/dist/phases/pr-shared/__tests__/agent-utils.test.d.ts +1 -0
  37. package/dist/phases/pr-shared/__tests__/agent-utils.test.js +91 -0
  38. package/dist/phases/pr-shared/__tests__/context.test.d.ts +1 -0
  39. package/dist/phases/pr-shared/__tests__/context.test.js +94 -0
  40. package/dist/phases/pr-shared/agent-utils.d.ts +39 -0
  41. package/dist/phases/pr-shared/agent-utils.js +69 -0
  42. package/dist/phases/pr-shared/context.d.ts +24 -0
  43. package/dist/phases/pr-shared/context.js +78 -0
  44. package/package.json +1 -1
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Shared context builder for standalone PR operations.
3
+ * Reuses GitHub API utilities from code-review/context.ts without feature dependencies.
4
+ */
5
+ import { Octokit } from '@octokit/rest';
6
+ import { logDebug } from '../../utils/logger.js';
7
+ import { fetchPRCommits, fetchPRDetails, fetchPRFiles, parsePullRequestUrl, } from '../code-review/context.js';
8
+ export { parsePullRequestUrl } from '../code-review/context.js';
9
+ /**
10
+ * Fetch PR context for standalone review/resolve (no feature dependency).
11
+ */
12
+ export async function fetchStandalonePRContext(pullRequestUrl, githubToken, verbose) {
13
+ const prInfo = parsePullRequestUrl(pullRequestUrl);
14
+ if (!prInfo) {
15
+ throw new Error(`Invalid pull request URL: ${pullRequestUrl}. Expected format: https://github.com/owner/repo/pull/123`);
16
+ }
17
+ const { owner, repo, prNumber } = prInfo;
18
+ const octokit = new Octokit({ auth: githubToken });
19
+ const [prData, files, commits] = await Promise.all([
20
+ fetchPRDetails(octokit, owner, repo, prNumber, verbose),
21
+ fetchPRFiles(octokit, owner, repo, prNumber, verbose),
22
+ fetchPRCommits(octokit, owner, repo, prNumber, verbose),
23
+ ]);
24
+ logDebug(`Summary: ${files.length} files changed across ${commits.length} commits`, verbose);
25
+ return {
26
+ pullRequestUrl,
27
+ pullRequestNumber: prNumber,
28
+ owner,
29
+ repo,
30
+ prData,
31
+ files,
32
+ commits,
33
+ };
34
+ }
35
+ /**
36
+ * Format standalone PR context for prompts (no feature/design context).
37
+ */
38
+ export function formatStandalonePRContextForPrompt(context) {
39
+ const sections = [];
40
+ sections.push(`# Pull Request Information`);
41
+ sections.push(`**Pull Request**: ${context.pullRequestUrl} (#${context.pullRequestNumber})`);
42
+ sections.push('');
43
+ sections.push(`## Pull Request Details`);
44
+ sections.push(`**Title**: ${context.prData.title}`);
45
+ sections.push(`**Author**: @${context.prData.user.login}`);
46
+ sections.push(`**Base Branch**: ${context.prData.base.ref}`);
47
+ sections.push(`**Head Branch**: ${context.prData.head.ref}`);
48
+ if (context.prData.body) {
49
+ sections.push(`**Description**:`);
50
+ sections.push(context.prData.body);
51
+ }
52
+ sections.push('');
53
+ if (context.commits.length > 0) {
54
+ sections.push(`## Commits (${context.commits.length})`);
55
+ sections.push('');
56
+ for (const commit of context.commits) {
57
+ sections.push(`- **${commit.sha.substring(0, 7)}**: ${commit.commit.message}`);
58
+ }
59
+ sections.push('');
60
+ }
61
+ if (context.files.length > 0) {
62
+ sections.push(`## Changed Files (${context.files.length})`);
63
+ sections.push('');
64
+ for (const file of context.files) {
65
+ sections.push(`### ${file.filename}`);
66
+ sections.push(`**Status**: ${file.status}`);
67
+ sections.push(`**Changes**: +${file.additions} -${file.deletions}`);
68
+ if (file.patch) {
69
+ sections.push(`**Diff**:`);
70
+ sections.push('```diff');
71
+ sections.push(file.patch);
72
+ sections.push('```');
73
+ }
74
+ sections.push('');
75
+ }
76
+ }
77
+ return sections.join('\n');
78
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edsger",
3
- "version": "0.40.0",
3
+ "version": "0.41.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "edsger": "dist/index.js"