@sentry/warden 0.13.0 → 0.15.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 (132) hide show
  1. package/agents.lock +7 -0
  2. package/dist/cli/args.d.ts +15 -12
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +61 -3
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/cli/commands/add.d.ts.map +1 -1
  7. package/dist/cli/commands/add.js +25 -33
  8. package/dist/cli/commands/add.js.map +1 -1
  9. package/dist/cli/commands/init.d.ts +0 -3
  10. package/dist/cli/commands/init.d.ts.map +1 -1
  11. package/dist/cli/commands/init.js +206 -19
  12. package/dist/cli/commands/init.js.map +1 -1
  13. package/dist/cli/commands/logs.d.ts +19 -0
  14. package/dist/cli/commands/logs.d.ts.map +1 -0
  15. package/dist/cli/commands/logs.js +412 -0
  16. package/dist/cli/commands/logs.js.map +1 -0
  17. package/dist/cli/commands/setup-app.d.ts.map +1 -1
  18. package/dist/cli/commands/setup-app.js +19 -15
  19. package/dist/cli/commands/setup-app.js.map +1 -1
  20. package/dist/cli/context.d.ts +2 -0
  21. package/dist/cli/context.d.ts.map +1 -1
  22. package/dist/cli/context.js +8 -2
  23. package/dist/cli/context.js.map +1 -1
  24. package/dist/cli/files.d.ts.map +1 -1
  25. package/dist/cli/files.js +27 -30
  26. package/dist/cli/files.js.map +1 -1
  27. package/dist/cli/git.d.ts +8 -3
  28. package/dist/cli/git.d.ts.map +1 -1
  29. package/dist/cli/git.js +24 -13
  30. package/dist/cli/git.js.map +1 -1
  31. package/dist/cli/index.js +10 -0
  32. package/dist/cli/index.js.map +1 -1
  33. package/dist/cli/input.d.ts +7 -0
  34. package/dist/cli/input.d.ts.map +1 -1
  35. package/dist/cli/input.js +13 -2
  36. package/dist/cli/input.js.map +1 -1
  37. package/dist/cli/main.d.ts.map +1 -1
  38. package/dist/cli/main.js +108 -32
  39. package/dist/cli/main.js.map +1 -1
  40. package/dist/cli/output/formatters.d.ts +2 -1
  41. package/dist/cli/output/formatters.d.ts.map +1 -1
  42. package/dist/cli/output/formatters.js +22 -19
  43. package/dist/cli/output/formatters.js.map +1 -1
  44. package/dist/cli/output/index.d.ts +1 -1
  45. package/dist/cli/output/index.d.ts.map +1 -1
  46. package/dist/cli/output/index.js +1 -1
  47. package/dist/cli/output/index.js.map +1 -1
  48. package/dist/cli/output/ink-runner.js +1 -1
  49. package/dist/cli/output/ink-runner.js.map +1 -1
  50. package/dist/cli/output/jsonl.d.ts +49 -13
  51. package/dist/cli/output/jsonl.d.ts.map +1 -1
  52. package/dist/cli/output/jsonl.js +137 -4
  53. package/dist/cli/output/jsonl.js.map +1 -1
  54. package/dist/cli/output/tasks.d.ts.map +1 -1
  55. package/dist/cli/output/tasks.js +1 -22
  56. package/dist/cli/output/tasks.js.map +1 -1
  57. package/dist/cli/terminal.d.ts.map +1 -1
  58. package/dist/cli/terminal.js +0 -2
  59. package/dist/cli/terminal.js.map +1 -1
  60. package/dist/config/schema.d.ts +49 -98
  61. package/dist/config/schema.d.ts.map +1 -1
  62. package/dist/config/schema.js +0 -12
  63. package/dist/config/schema.js.map +1 -1
  64. package/dist/config/writer.d.ts.map +1 -1
  65. package/dist/config/writer.js +18 -0
  66. package/dist/config/writer.js.map +1 -1
  67. package/dist/evals/index.js +1 -1
  68. package/dist/evals/index.js.map +1 -1
  69. package/dist/evals/runner.d.ts.map +1 -1
  70. package/dist/evals/runner.js +0 -1
  71. package/dist/evals/runner.js.map +1 -1
  72. package/dist/evals/types.d.ts +9 -15
  73. package/dist/evals/types.d.ts.map +1 -1
  74. package/dist/output/github-checks.d.ts +1 -1
  75. package/dist/output/github-checks.d.ts.map +1 -1
  76. package/dist/output/github-checks.js +2 -6
  77. package/dist/output/github-checks.js.map +1 -1
  78. package/dist/output/github-issues.d.ts.map +1 -1
  79. package/dist/output/github-issues.js +14 -8
  80. package/dist/output/github-issues.js.map +1 -1
  81. package/dist/output/issue-renderer.js +1 -1
  82. package/dist/output/issue-renderer.js.map +1 -1
  83. package/dist/sdk/analyze.d.ts.map +1 -1
  84. package/dist/sdk/analyze.js +14 -27
  85. package/dist/sdk/analyze.js.map +1 -1
  86. package/dist/sdk/auth.d.ts +16 -0
  87. package/dist/sdk/auth.d.ts.map +1 -0
  88. package/dist/sdk/auth.js +37 -0
  89. package/dist/sdk/auth.js.map +1 -0
  90. package/dist/sdk/errors.d.ts +8 -1
  91. package/dist/sdk/errors.d.ts.map +1 -1
  92. package/dist/sdk/errors.js +22 -2
  93. package/dist/sdk/errors.js.map +1 -1
  94. package/dist/sdk/prompt.js +1 -1
  95. package/dist/sdk/runner.d.ts +2 -1
  96. package/dist/sdk/runner.d.ts.map +1 -1
  97. package/dist/sdk/runner.js +3 -1
  98. package/dist/sdk/runner.js.map +1 -1
  99. package/dist/sdk/types.d.ts +0 -3
  100. package/dist/sdk/types.d.ts.map +1 -1
  101. package/dist/sdk/types.js.map +1 -1
  102. package/dist/skills/remote.js +1 -1
  103. package/dist/skills/remote.js.map +1 -1
  104. package/dist/types/index.d.ts +23 -24
  105. package/dist/types/index.d.ts.map +1 -1
  106. package/dist/types/index.js +19 -7
  107. package/dist/types/index.js.map +1 -1
  108. package/dist/utils/exec.d.ts +4 -1
  109. package/dist/utils/exec.d.ts.map +1 -1
  110. package/dist/utils/exec.js +6 -4
  111. package/dist/utils/exec.js.map +1 -1
  112. package/package.json +1 -1
  113. package/skills/warden/SKILL.md +76 -0
  114. package/skills/warden/references/cli-reference.md +142 -0
  115. package/skills/warden/references/config-schema.md +111 -0
  116. package/skills/warden/references/configuration.md +110 -0
  117. package/skills/warden/references/creating-skills.md +84 -0
  118. package/skills/warden-sweep/SKILL.md +400 -0
  119. package/skills/warden-sweep/references/patch-prompt.md +72 -0
  120. package/skills/warden-sweep/references/verify-prompt.md +25 -0
  121. package/skills/warden-sweep/scripts/_utils.py +99 -0
  122. package/skills/warden-sweep/scripts/create_issue.py +189 -0
  123. package/skills/warden-sweep/scripts/extract_findings.py +219 -0
  124. package/skills/warden-sweep/scripts/find_reviewers.py +114 -0
  125. package/skills/warden-sweep/scripts/generate_report.py +266 -0
  126. package/skills/warden-sweep/scripts/index_prs.py +187 -0
  127. package/skills/warden-sweep/scripts/organize.py +422 -0
  128. package/skills/warden-sweep/scripts/scan.py +584 -0
  129. package/dist/sdk/session.d.ts +0 -43
  130. package/dist/sdk/session.d.ts.map +0 -1
  131. package/dist/sdk/session.js +0 -105
  132. package/dist/sdk/session.js.map +0 -1
package/dist/cli/files.js CHANGED
@@ -3,6 +3,7 @@ import { resolve, relative, dirname, join } from 'node:path';
3
3
  import fg from 'fast-glob';
4
4
  import ignore from 'ignore';
5
5
  import { countPatchChunks } from '../types/index.js';
6
+ import { execGitNonInteractive } from '../utils/exec.js';
6
7
  /**
7
8
  * Normalize path separators to forward slashes for cross-platform consistency.
8
9
  * fast-glob always returns forward slashes, but Node.js path functions use
@@ -64,38 +65,34 @@ function prefixGitignorePatterns(content, prefix) {
64
65
  * - Negation patterns (!) work correctly
65
66
  * - Directory patterns with trailing / work correctly
66
67
  */
67
- async function loadGitignoreRules(gitRoot, cwd) {
68
+ function loadGitignoreRules(gitRoot) {
68
69
  const ig = ignore();
69
70
  // Always ignore .git directory
70
71
  ig.add('.git');
71
- // Normalize git root for consistent comparisons
72
- const normalizedGitRoot = normalizePath(gitRoot);
73
- // Find all .gitignore files in the repository
74
- // fast-glob always returns forward slashes
75
- const gitignoreFiles = await fg('**/.gitignore', {
76
- cwd: gitRoot,
77
- absolute: true,
78
- dot: true,
79
- ignore: ['**/.git/**'],
80
- });
81
- // Also check from cwd up to git root for any .gitignore files
82
- // that might be outside the search scope
83
- let current = resolve(cwd);
84
- while (current !== dirname(current)) {
85
- const gitignorePath = join(current, '.gitignore');
86
- // Normalize for comparison with fast-glob results
87
- const normalizedPath = normalizePath(gitignorePath);
88
- if (existsSync(gitignorePath) && !gitignoreFiles.includes(normalizedPath)) {
89
- gitignoreFiles.push(normalizedPath);
90
- }
91
- if (normalizePath(current) === normalizedGitRoot) {
92
- break;
93
- }
94
- current = dirname(current);
72
+ // Use git to discover .gitignore files. This naturally skips ignored
73
+ // directories (node_modules, .venv, vendor, etc.) without maintaining
74
+ // a hardcoded exclusion list.
75
+ let gitignoreFiles;
76
+ try {
77
+ const output = execGitNonInteractive(['ls-files', '--cached', '--others', '--exclude-standard', '.gitignore', '**/.gitignore'], { cwd: gitRoot });
78
+ gitignoreFiles = output
79
+ ? output.split('\n').map((f) => resolve(gitRoot, f))
80
+ : [];
81
+ }
82
+ catch {
83
+ // Not a real git repo or git not available. Walk directories manually,
84
+ // skipping common large directories that would never contain relevant
85
+ // .gitignore files.
86
+ gitignoreFiles = fg.sync('**/.gitignore', {
87
+ cwd: gitRoot,
88
+ absolute: true,
89
+ dot: true,
90
+ ignore: ['**/.git/**', '**/node_modules/**'],
91
+ });
95
92
  }
96
- // Sort by path depth (root first, then nested)
97
- // Use forward slashes for consistent depth counting
98
- gitignoreFiles.sort((a, b) => a.split('/').length - b.split('/').length);
93
+ // Sort by path depth (root first, then nested).
94
+ // Normalize to forward slashes so depth counting works on Windows too.
95
+ gitignoreFiles.sort((a, b) => normalizePath(a).split('/').length - normalizePath(b).split('/').length);
99
96
  // Process gitignore files from root down (parent rules apply first)
100
97
  for (const gitignorePath of gitignoreFiles) {
101
98
  try {
@@ -146,7 +143,7 @@ export async function expandFileGlobs(patterns, cwdOrOptions = process.cwd()) {
146
143
  return files.sort();
147
144
  }
148
145
  // Load and apply gitignore rules
149
- const ig = await loadGitignoreRules(gitRoot, cwd);
146
+ const ig = loadGitignoreRules(gitRoot);
150
147
  // Filter files using gitignore rules
151
148
  // Normalize paths to forward slashes for consistent matching
152
149
  const filteredFiles = files.filter((file) => {
@@ -179,7 +176,7 @@ export function createSyntheticFileChange(absolutePath, basePath) {
179
176
  const content = readFileSync(absolutePath, 'utf-8');
180
177
  const lines = content.split('\n');
181
178
  const lineCount = lines.length;
182
- const relativePath = relative(basePath, absolutePath);
179
+ const relativePath = normalizePath(relative(basePath, absolutePath));
183
180
  const patch = createPatchFromContent(content);
184
181
  return {
185
182
  filename: relativePath,
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/cli/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,MAAuB,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAUrD;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,SAAiB;IACpC,sEAAsE;IACtE,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEjC,OAAO,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,uBAAuB,CAAC,OAAe,EAAE,MAAc;IAC9D,OAAO,OAAO;SACX,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,2BAA2B;QAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAExD,uEAAuE;QACvE,uEAAuE;QACvE,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAE1E,MAAM,eAAe,GAAG,GAAG,MAAM,IAAI,YAAY,EAAE,CAAC;QACpD,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;IAC9D,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,GAAW;IAC5D,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAEpB,+BAA+B;IAC/B,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEf,gDAAgD;IAChD,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEjD,8CAA8C;IAC9C,2CAA2C;IAC3C,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,eAAe,EAAE;QAC/C,GAAG,EAAE,OAAO;QACZ,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,IAAI;QACT,MAAM,EAAE,CAAC,YAAY,CAAC;KACvB,CAAC,CAAC;IAEH,8DAA8D;IAC9D,yCAAyC;IACzC,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAClD,kDAAkD;QAClD,MAAM,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1E,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,iBAAiB,EAAE,CAAC;YACjD,MAAM;QACR,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,+CAA+C;IAC/C,oDAAoD;IACpD,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAEzE,oEAAoE;IACpE,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACrD,gDAAgD;YAChD,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAE7E,IAAI,WAAW,EAAE,CAAC;gBAChB,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAkB,EAClB,eAA2C,OAAO,CAAC,GAAG,EAAE;IAExD,MAAM,OAAO,GACX,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IAC1E,sEAAsE;IACtE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IAE/C,+BAA+B;IAC/B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,GAAG;QACH,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,KAAK;QACV,gCAAgC;QAChC,MAAM,EAAE,CAAC,YAAY,CAAC;KACvB,CAAC,CAAC;IAEH,+CAA+C;IAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,oEAAoE;IACpE,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,iCAAiC;IACjC,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAElD,qCAAqC;IACrC,6DAA6D;IAC7D,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1C,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;IAE/B,qBAAqB;IACrB,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;QAC5D,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,qDAAqD;IACrD,MAAM,UAAU,GAAG,CAAC,cAAc,SAAS,KAAK,CAAC,CAAC;IAElD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,YAAoB,EACpB,QAAgB;IAEhB,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;IAC/B,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAE9C,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,OAAO;QACf,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,CAAC;QACZ,KAAK;QACL,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC;KAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,aAAuB,EACvB,QAAgB;IAEhB,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,QAAkB,EAClB,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC3D,OAAO,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/cli/files.ts"],"names":[],"mappings":"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"}
package/dist/cli/git.d.ts CHANGED
@@ -41,19 +41,24 @@ export declare function getRepoName(cwd?: string): {
41
41
  * Returns null if the remote is not GitHub or not configured.
42
42
  */
43
43
  export declare function getGitHubRepoUrl(cwd?: string): string | null;
44
+ export interface DiffOptions {
45
+ /** Use --cached to diff only staged changes against HEAD */
46
+ staged?: boolean;
47
+ }
44
48
  /**
45
49
  * Get list of changed files between two refs.
46
50
  * If head is undefined, compares against the working tree.
51
+ * If options.staged is true, compares only staged changes against HEAD.
47
52
  */
48
- export declare function getChangedFiles(base: string, head?: string, cwd?: string): GitFileChange[];
53
+ export declare function getChangedFiles(base: string, head?: string, cwd?: string, options?: DiffOptions): GitFileChange[];
49
54
  /**
50
55
  * Get the patch for a specific file.
51
56
  */
52
- export declare function getFilePatch(base: string, head: string | undefined, filename: string, cwd?: string): string | undefined;
57
+ export declare function getFilePatch(base: string, head: string | undefined, filename: string, cwd?: string, options?: DiffOptions): string | undefined;
53
58
  /**
54
59
  * Get patches for all changed files in a single git command.
55
60
  */
56
- export declare function getChangedFilesWithPatches(base: string, head?: string, cwd?: string): GitFileChange[];
61
+ export declare function getChangedFilesWithPatches(base: string, head?: string, cwd?: string, options?: DiffOptions): GitFileChange[];
57
62
  /**
58
63
  * Check if there are uncommitted changes in the working tree.
59
64
  */
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/cli/git.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAeD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE9D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CA8CpE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAiBxF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAiB3E;AAsBD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,GAAE,MAAsB,GAC1B,aAAa,EAAE,CA8CjB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,MAAsB,GAC1B,MAAM,GAAG,SAAS,CAOpB;AA6BD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,GAAE,MAAsB,GAC1B,aAAa,EAAE,CA0BjB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAG1E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAO3E;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,aAAa,CAKxF"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/cli/git.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAeD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE9D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CA8CpE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAiBxF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAiB3E;AAsBD,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAqBD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,GAAE,MAAsB,EAC3B,OAAO,CAAC,EAAE,WAAW,GACpB,aAAa,EAAE,CA6CjB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,MAAsB,EAC3B,OAAO,CAAC,EAAE,WAAW,GACpB,MAAM,GAAG,SAAS,CAMpB;AA6BD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,GAAE,MAAsB,EAC3B,OAAO,CAAC,EAAE,WAAW,GACpB,aAAa,EAAE,CAyBjB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAG1E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAO3E;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,aAAa,CAKxF"}
package/dist/cli/git.js CHANGED
@@ -10,7 +10,7 @@ function git(args, cwd = process.cwd()) {
10
10
  }
11
11
  catch (error) {
12
12
  const message = error instanceof Error ? error.message : String(error);
13
- throw new Error(`Git command failed: git ${args.join(' ')}\n${message}`);
13
+ throw new Error(`Git command failed: git ${args.join(' ')}\n${message}`, { cause: error });
14
14
  }
15
15
  }
16
16
  /**
@@ -153,14 +153,27 @@ function mapStatus(status) {
153
153
  return 'modified';
154
154
  }
155
155
  }
156
+ /**
157
+ * Build the git diff arguments for a given base/head/staged configuration.
158
+ * Extra flags (e.g. '--name-status') are placed before the ref, matching
159
+ * the documented git-diff synopsis: git diff [<options>] [<commit>] ...
160
+ */
161
+ function buildDiffArgs(base, head, options, extraFlags) {
162
+ const flags = extraFlags ?? [];
163
+ if (options?.staged) {
164
+ return ['diff', ...flags, '--cached'];
165
+ }
166
+ const diffRef = head ? `${base}...${head}` : base;
167
+ return ['diff', ...flags, diffRef];
168
+ }
156
169
  /**
157
170
  * Get list of changed files between two refs.
158
171
  * If head is undefined, compares against the working tree.
172
+ * If options.staged is true, compares only staged changes against HEAD.
159
173
  */
160
- export function getChangedFiles(base, head, cwd = process.cwd()) {
174
+ export function getChangedFiles(base, head, cwd = process.cwd(), options) {
161
175
  // Get file statuses
162
- const diffRef = head ? `${base}...${head}` : base;
163
- const nameStatusOutput = git(['diff', '--name-status', diffRef], cwd);
176
+ const nameStatusOutput = git(buildDiffArgs(base, head, options, ['--name-status']), cwd);
164
177
  if (!nameStatusOutput) {
165
178
  return [];
166
179
  }
@@ -182,7 +195,7 @@ export function getChangedFiles(base, head, cwd = process.cwd()) {
182
195
  });
183
196
  }
184
197
  // Get numstat for additions/deletions
185
- const numstatOutput = git(['diff', '--numstat', diffRef], cwd);
198
+ const numstatOutput = git(buildDiffArgs(base, head, options, ['--numstat']), cwd);
186
199
  if (numstatOutput) {
187
200
  for (const line of numstatOutput.split('\n')) {
188
201
  if (!line.trim())
@@ -203,10 +216,9 @@ export function getChangedFiles(base, head, cwd = process.cwd()) {
203
216
  /**
204
217
  * Get the patch for a specific file.
205
218
  */
206
- export function getFilePatch(base, head, filename, cwd = process.cwd()) {
219
+ export function getFilePatch(base, head, filename, cwd = process.cwd(), options) {
207
220
  try {
208
- const diffRef = head ? `${base}...${head}` : base;
209
- return git(['diff', diffRef, '--', filename], cwd);
221
+ return git([...buildDiffArgs(base, head, options), '--', filename], cwd);
210
222
  }
211
223
  catch {
212
224
  return undefined;
@@ -239,15 +251,14 @@ function parseCombinedDiff(diffOutput) {
239
251
  /**
240
252
  * Get patches for all changed files in a single git command.
241
253
  */
242
- export function getChangedFilesWithPatches(base, head, cwd = process.cwd()) {
243
- const files = getChangedFiles(base, head, cwd);
254
+ export function getChangedFilesWithPatches(base, head, cwd = process.cwd(), options) {
255
+ const files = getChangedFiles(base, head, cwd, options);
244
256
  if (files.length === 0) {
245
257
  return files;
246
258
  }
247
259
  // Get all patches in a single git diff command
248
260
  try {
249
- const diffRef = head ? `${base}...${head}` : base;
250
- const combinedDiff = git(['diff', diffRef], cwd);
261
+ const combinedDiff = git(buildDiffArgs(base, head, options), cwd);
251
262
  const patches = parseCombinedDiff(combinedDiff);
252
263
  for (const file of files) {
253
264
  file.patch = patches.get(file.filename);
@@ -257,7 +268,7 @@ export function getChangedFilesWithPatches(base, head, cwd = process.cwd()) {
257
268
  catch {
258
269
  // Fall back to per-file patches if combined diff fails
259
270
  for (const file of files) {
260
- file.patch = getFilePatch(base, head, file.filename, cwd);
271
+ file.patch = getFilePatch(base, head, file.filename, cwd, options);
261
272
  file.chunks = countPatchChunks(file.patch);
262
273
  }
263
274
  }
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/cli/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/cli/git.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import { initSentry, Sentry, flushSentry } from '../sentry.js';
3
3
  initSentry('cli');
4
4
  import { main, abortController, interrupted } from './main.js';
5
+ import { UserAbortError } from './input.js';
5
6
  let interruptCount = 0;
6
7
  process.on('SIGINT', () => {
7
8
  interruptCount++;
@@ -16,6 +17,15 @@ process.on('SIGINT', () => {
16
17
  // via the abort signal listener -- no direct stderr writes needed here.
17
18
  });
18
19
  main().catch(async (error) => {
20
+ if (error instanceof UserAbortError) {
21
+ try {
22
+ await flushSentry();
23
+ }
24
+ catch {
25
+ // Best-effort flush - don't let Sentry errors prevent clean exit
26
+ }
27
+ process.exit(130);
28
+ }
19
29
  Sentry.captureException(error);
20
30
  await flushSentry();
21
31
  console.error('Fatal error:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/D,UAAU,CAAC,KAAK,CAAC,CAAC;AAElB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE/D,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,cAAc,EAAE,CAAC;IACjB,eAAe,CAAC,KAAK,EAAE,CAAC;IACxB,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;IAEzB,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACvB,wCAAwC;QACxC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,2DAA2D;IAC3D,uEAAuE;IACvE,wEAAwE;AAC1E,CAAC,CAAC,CAAC;AAEH,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IAC3B,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,WAAW,EAAE,CAAC;IACpB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/D,UAAU,CAAC,KAAK,CAAC,CAAC;AAElB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,cAAc,EAAE,CAAC;IACjB,eAAe,CAAC,KAAK,EAAE,CAAC;IACxB,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;IAEzB,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACvB,wCAAwC;QACxC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,2DAA2D;IAC3D,uEAAuE;IACvE,wEAAwE;AAC1E,CAAC,CAAC,CAAC;AAEH,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IAC3B,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,WAAW,EAAE,CAAC;IACpB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Custom error thrown when the user aborts via Ctrl+C during interactive input.
3
+ * Allows callers to handle cleanup (e.g. Sentry flush) before exiting.
4
+ */
5
+ export declare class UserAbortError extends Error {
6
+ constructor();
7
+ }
1
8
  /**
2
9
  * Read a single keypress from stdin in raw mode.
3
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/cli/input.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAuBrD"}
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/cli/input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;;CAKxC;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAwBrD"}
package/dist/cli/input.js CHANGED
@@ -1,8 +1,18 @@
1
+ /**
2
+ * Custom error thrown when the user aborts via Ctrl+C during interactive input.
3
+ * Allows callers to handle cleanup (e.g. Sentry flush) before exiting.
4
+ */
5
+ export class UserAbortError extends Error {
6
+ constructor() {
7
+ super('User aborted');
8
+ this.name = 'UserAbortError';
9
+ }
10
+ }
1
11
  /**
2
12
  * Read a single keypress from stdin in raw mode.
3
13
  */
4
14
  export async function readSingleKey() {
5
- return new Promise((resolve) => {
15
+ return new Promise((resolve, reject) => {
6
16
  const stdin = process.stdin;
7
17
  const wasRaw = stdin.isRaw;
8
18
  stdin.setRawMode(true);
@@ -14,7 +24,8 @@ export async function readSingleKey() {
14
24
  // Handle Ctrl+C
15
25
  if (key === '\x03') {
16
26
  process.stderr.write('\n');
17
- process.exit(130);
27
+ reject(new UserAbortError());
28
+ return;
18
29
  }
19
30
  resolve(key.toLowerCase());
20
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/cli/input.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAE3B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACzB,KAAK,CAAC,KAAK,EAAE,CAAC;YAEd,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE5B,gBAAgB;YAChB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/cli/input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC;QACE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAE3B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACzB,KAAK,CAAC,KAAK,EAAE,CAAC;YAEd,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE5B,gBAAgB;YAChB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AA0CA;;;GAGG;AACH,eAAO,MAAM,eAAe,iBAAwB,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,WAAW;;CAAmB,CAAC;AA6sB5C,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA4F1C"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AA4CA;;;GAGG;AACH,eAAO,MAAM,eAAe,iBAAwB,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,WAAW;;CAAmB,CAAC;AAmxB5C,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA4F1C"}