@sentry/warden 0.0.0 → 0.1.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.
- package/.github/workflows/ci.yml +1 -1
- package/.github/workflows/release.yml +6 -1
- package/.github/workflows/warden.yml +1 -1
- package/dist/action/159.index.js +523 -0
- package/dist/action/159.index.js.map +1 -0
- package/dist/action/action/index.d.ts +2 -0
- package/dist/action/action/index.d.ts.map +1 -0
- package/dist/action/action/main.d.ts +2 -0
- package/dist/action/action/main.d.ts.map +1 -0
- package/dist/action/cli/args.d.ts +74 -0
- package/dist/action/cli/args.d.ts.map +1 -0
- package/dist/action/cli/args.test.d.ts +2 -0
- package/dist/action/cli/args.test.d.ts.map +1 -0
- package/dist/action/cli/commands/add.d.ts +7 -0
- package/dist/action/cli/commands/add.d.ts.map +1 -0
- package/dist/action/cli/commands/init.d.ts +10 -0
- package/dist/action/cli/commands/init.d.ts.map +1 -0
- package/dist/action/cli/commands/init.test.d.ts +2 -0
- package/dist/action/cli/commands/init.test.d.ts.map +1 -0
- package/dist/action/cli/commands/setup-app/browser.d.ts +9 -0
- package/dist/action/cli/commands/setup-app/browser.d.ts.map +1 -0
- package/dist/action/cli/commands/setup-app/credentials.d.ts +15 -0
- package/dist/action/cli/commands/setup-app/credentials.d.ts.map +1 -0
- package/dist/action/cli/commands/setup-app/manifest.d.ts +24 -0
- package/dist/action/cli/commands/setup-app/manifest.d.ts.map +1 -0
- package/dist/action/cli/commands/setup-app/server.d.ts +28 -0
- package/dist/action/cli/commands/setup-app/server.d.ts.map +1 -0
- package/dist/action/cli/commands/setup-app.d.ts +11 -0
- package/dist/action/cli/commands/setup-app.d.ts.map +1 -0
- package/dist/action/cli/commands/sync.d.ts +9 -0
- package/dist/action/cli/commands/sync.d.ts.map +1 -0
- package/dist/action/cli/context.d.ts +27 -0
- package/dist/action/cli/context.d.ts.map +1 -0
- package/dist/action/cli/files.d.ts +22 -0
- package/dist/action/cli/files.d.ts.map +1 -0
- package/dist/action/cli/files.test.d.ts +2 -0
- package/dist/action/cli/files.test.d.ts.map +1 -0
- package/dist/action/cli/fix.d.ts +41 -0
- package/dist/action/cli/fix.d.ts.map +1 -0
- package/dist/action/cli/fix.test.d.ts +2 -0
- package/dist/action/cli/fix.test.d.ts.map +1 -0
- package/dist/action/cli/git.d.ts +73 -0
- package/dist/action/cli/git.d.ts.map +1 -0
- package/dist/action/cli/git.test.d.ts +2 -0
- package/dist/action/cli/git.test.d.ts.map +1 -0
- package/dist/action/cli/index.d.ts +3 -0
- package/dist/action/cli/index.d.ts.map +1 -0
- package/dist/action/cli/main.d.ts +7 -0
- package/dist/action/cli/main.d.ts.map +1 -0
- package/dist/action/cli/output/box.d.ts +75 -0
- package/dist/action/cli/output/box.d.ts.map +1 -0
- package/dist/action/cli/output/formatters.d.ts +90 -0
- package/dist/action/cli/output/formatters.d.ts.map +1 -0
- package/dist/action/cli/output/formatters.test.d.ts +2 -0
- package/dist/action/cli/output/formatters.test.d.ts.map +1 -0
- package/dist/action/cli/output/icons.d.ts +11 -0
- package/dist/action/cli/output/icons.d.ts.map +1 -0
- package/dist/action/cli/output/index.d.ts +10 -0
- package/dist/action/cli/output/index.d.ts.map +1 -0
- package/dist/action/cli/output/ink-runner.d.ts +9 -0
- package/dist/action/cli/output/ink-runner.d.ts.map +1 -0
- package/dist/action/cli/output/jsonl.d.ts +43 -0
- package/dist/action/cli/output/jsonl.d.ts.map +1 -0
- package/dist/action/cli/output/jsonl.test.d.ts +2 -0
- package/dist/action/cli/output/jsonl.test.d.ts.map +1 -0
- package/dist/action/cli/output/reporter.d.ts +108 -0
- package/dist/action/cli/output/reporter.d.ts.map +1 -0
- package/dist/action/cli/output/tasks.d.ts +89 -0
- package/dist/action/cli/output/tasks.d.ts.map +1 -0
- package/dist/action/cli/output/tty.d.ts +21 -0
- package/dist/action/cli/output/tty.d.ts.map +1 -0
- package/dist/action/cli/output/tty.test.d.ts +2 -0
- package/dist/action/cli/output/tty.test.d.ts.map +1 -0
- package/dist/action/cli/output/verbosity.d.ts +20 -0
- package/dist/action/cli/output/verbosity.d.ts.map +1 -0
- package/dist/action/cli/output/verbosity.test.d.ts +2 -0
- package/dist/action/cli/output/verbosity.test.d.ts.map +1 -0
- package/dist/action/cli/terminal.d.ts +19 -0
- package/dist/action/cli/terminal.d.ts.map +1 -0
- package/dist/action/cli/terminal.test.d.ts +2 -0
- package/dist/action/cli/terminal.test.d.ts.map +1 -0
- package/dist/action/config/index.d.ts +4 -0
- package/dist/action/config/index.d.ts.map +1 -0
- package/dist/action/config/loader.d.ts +27 -0
- package/dist/action/config/loader.d.ts.map +1 -0
- package/dist/action/config/loader.test.d.ts +2 -0
- package/dist/action/config/loader.test.d.ts.map +1 -0
- package/dist/action/config/schema.d.ts +318 -0
- package/dist/action/config/schema.d.ts.map +1 -0
- package/dist/action/config/writer.d.ts +11 -0
- package/dist/action/config/writer.d.ts.map +1 -0
- package/dist/action/config/writer.test.d.ts +2 -0
- package/dist/action/config/writer.test.d.ts.map +1 -0
- package/dist/action/diff/classify.d.ts +29 -0
- package/dist/action/diff/classify.d.ts.map +1 -0
- package/dist/action/diff/classify.test.d.ts +2 -0
- package/dist/action/diff/classify.test.d.ts.map +1 -0
- package/dist/action/diff/coalesce.d.ts +42 -0
- package/dist/action/diff/coalesce.d.ts.map +1 -0
- package/dist/action/diff/coalesce.test.d.ts +2 -0
- package/dist/action/diff/coalesce.test.d.ts.map +1 -0
- package/dist/action/diff/context.d.ts +30 -0
- package/dist/action/diff/context.d.ts.map +1 -0
- package/dist/action/diff/context.test.d.ts +2 -0
- package/dist/action/diff/context.test.d.ts.map +1 -0
- package/dist/action/diff/index.d.ts +5 -0
- package/dist/action/diff/index.d.ts.map +1 -0
- package/dist/action/diff/parser.d.ts +52 -0
- package/dist/action/diff/parser.d.ts.map +1 -0
- package/dist/action/diff/parser.test.d.ts +2 -0
- package/dist/action/diff/parser.test.d.ts.map +1 -0
- package/dist/action/event/context.d.ts +9 -0
- package/dist/action/event/context.d.ts.map +1 -0
- package/dist/action/event/index.d.ts +3 -0
- package/dist/action/event/index.d.ts.map +1 -0
- package/dist/action/event/schedule-context.d.ts +30 -0
- package/dist/action/event/schedule-context.d.ts.map +1 -0
- package/dist/action/examples/examples.integration.test.d.ts +2 -0
- package/dist/action/examples/examples.integration.test.d.ts.map +1 -0
- package/dist/action/examples/index.d.ts +50 -0
- package/dist/action/examples/index.d.ts.map +1 -0
- package/dist/action/examples/index.test.d.ts +2 -0
- package/dist/action/examples/index.test.d.ts.map +1 -0
- package/dist/action/examples/setup.d.ts +2 -0
- package/dist/action/examples/setup.d.ts.map +1 -0
- package/dist/action/index.d.ts +11 -0
- package/dist/action/index.d.ts.map +1 -0
- package/dist/action/index.js +38231 -0
- package/dist/action/index.js.map +1 -0
- package/dist/action/licenses.txt +992 -0
- package/dist/action/main.d.ts +2 -0
- package/dist/action/main.d.ts.map +1 -0
- package/dist/action/main.js +707 -0
- package/dist/action/main.js.map +1 -0
- package/dist/action/output/dedup.d.ts +153 -0
- package/dist/action/output/dedup.d.ts.map +1 -0
- package/dist/action/output/dedup.test.d.ts +2 -0
- package/dist/action/output/dedup.test.d.ts.map +1 -0
- package/dist/action/output/github-checks.d.ts +106 -0
- package/dist/action/output/github-checks.d.ts.map +1 -0
- package/dist/action/output/github-checks.test.d.ts +2 -0
- package/dist/action/output/github-checks.test.d.ts.map +1 -0
- package/dist/action/output/github-issues.d.ts +35 -0
- package/dist/action/output/github-issues.d.ts.map +1 -0
- package/dist/action/output/index.d.ts +6 -0
- package/dist/action/output/index.d.ts.map +1 -0
- package/dist/action/output/issue-renderer.d.ts +20 -0
- package/dist/action/output/issue-renderer.d.ts.map +1 -0
- package/dist/action/output/renderer.d.ts +4 -0
- package/dist/action/output/renderer.d.ts.map +1 -0
- package/dist/action/output/renderer.test.d.ts +2 -0
- package/dist/action/output/renderer.test.d.ts.map +1 -0
- package/dist/action/output/stale.d.ts +31 -0
- package/dist/action/output/stale.d.ts.map +1 -0
- package/dist/action/output/stale.test.d.ts +2 -0
- package/dist/action/output/stale.test.d.ts.map +1 -0
- package/dist/action/output/types.d.ts +31 -0
- package/dist/action/output/types.d.ts.map +1 -0
- package/dist/action/package.json +3 -0
- package/dist/action/sdk/index.d.ts +2 -0
- package/dist/action/sdk/index.d.ts.map +1 -0
- package/dist/action/sdk/runner.d.ts +202 -0
- package/dist/action/sdk/runner.d.ts.map +1 -0
- package/dist/action/sdk/runner.test.d.ts +2 -0
- package/dist/action/sdk/runner.test.d.ts.map +1 -0
- package/dist/action/skills/index.d.ts +5 -0
- package/dist/action/skills/index.d.ts.map +1 -0
- package/dist/action/skills/loader.d.ts +111 -0
- package/dist/action/skills/loader.d.ts.map +1 -0
- package/dist/action/skills/loader.test.d.ts +2 -0
- package/dist/action/skills/loader.test.d.ts.map +1 -0
- package/dist/action/skills/remote.d.ts +117 -0
- package/dist/action/skills/remote.d.ts.map +1 -0
- package/dist/action/skills/remote.test.d.ts +2 -0
- package/dist/action/skills/remote.test.d.ts.map +1 -0
- package/dist/action/sourcemap-register.cjs +1 -0
- package/dist/action/triggers/matcher.d.ts +30 -0
- package/dist/action/triggers/matcher.d.ts.map +1 -0
- package/dist/action/triggers/matcher.test.d.ts +2 -0
- package/dist/action/triggers/matcher.test.d.ts.map +1 -0
- package/dist/action/types/index.d.ts +269 -0
- package/dist/action/types/index.d.ts.map +1 -0
- package/dist/action/utils/async.d.ts +5 -0
- package/dist/action/utils/async.d.ts.map +1 -0
- package/dist/action/utils/index.d.ts +16 -0
- package/dist/action/utils/index.d.ts.map +1 -0
- package/dist/action/utils/index.test.d.ts +2 -0
- package/dist/action/utils/index.test.d.ts.map +1 -0
- package/dist/action/utils/version.d.ts +3 -0
- package/dist/action/utils/version.d.ts.map +1 -0
- package/dist/cli/args.d.ts +74 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +359 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/args.test.d.ts +2 -0
- package/dist/cli/args.test.d.ts.map +1 -0
- package/dist/cli/args.test.js +392 -0
- package/dist/cli/args.test.js.map +1 -0
- package/dist/cli/commands/add.d.ts +7 -0
- package/dist/cli/commands/add.d.ts.map +1 -0
- package/dist/cli/commands/add.js +380 -0
- package/dist/cli/commands/add.js.map +1 -0
- package/dist/cli/commands/init.d.ts +10 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +113 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/init.test.d.ts +2 -0
- package/dist/cli/commands/init.test.d.ts.map +1 -0
- package/dist/cli/commands/init.test.js +117 -0
- package/dist/cli/commands/init.test.js.map +1 -0
- package/dist/cli/commands/setup-app/browser.d.ts +9 -0
- package/dist/cli/commands/setup-app/browser.d.ts.map +1 -0
- package/dist/cli/commands/setup-app/browser.js +36 -0
- package/dist/cli/commands/setup-app/browser.js.map +1 -0
- package/dist/cli/commands/setup-app/credentials.d.ts +15 -0
- package/dist/cli/commands/setup-app/credentials.d.ts.map +1 -0
- package/dist/cli/commands/setup-app/credentials.js +29 -0
- package/dist/cli/commands/setup-app/credentials.js.map +1 -0
- package/dist/cli/commands/setup-app/manifest.d.ts +24 -0
- package/dist/cli/commands/setup-app/manifest.d.ts.map +1 -0
- package/dist/cli/commands/setup-app/manifest.js +29 -0
- package/dist/cli/commands/setup-app/manifest.js.map +1 -0
- package/dist/cli/commands/setup-app/server.d.ts +28 -0
- package/dist/cli/commands/setup-app/server.d.ts.map +1 -0
- package/dist/cli/commands/setup-app/server.js +136 -0
- package/dist/cli/commands/setup-app/server.js.map +1 -0
- package/dist/cli/commands/setup-app.d.ts +11 -0
- package/dist/cli/commands/setup-app.d.ts.map +1 -0
- package/dist/cli/commands/setup-app.js +139 -0
- package/dist/cli/commands/setup-app.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +9 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +96 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/context.d.ts +27 -0
- package/dist/cli/context.d.ts.map +1 -0
- package/dist/cli/context.js +101 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/files.d.ts +22 -0
- package/dist/cli/files.d.ts.map +1 -0
- package/dist/cli/files.js +66 -0
- package/dist/cli/files.js.map +1 -0
- package/dist/cli/files.test.d.ts +2 -0
- package/dist/cli/files.test.d.ts.map +1 -0
- package/dist/cli/files.test.js +117 -0
- package/dist/cli/files.test.js.map +1 -0
- package/dist/cli/fix.d.ts +41 -0
- package/dist/cli/fix.d.ts.map +1 -0
- package/dist/cli/fix.js +320 -0
- package/dist/cli/fix.js.map +1 -0
- package/dist/cli/fix.test.d.ts +2 -0
- package/dist/cli/fix.test.d.ts.map +1 -0
- package/dist/cli/fix.test.js +251 -0
- package/dist/cli/fix.test.js.map +1 -0
- package/dist/cli/git.d.ts +73 -0
- package/dist/cli/git.d.ts.map +1 -0
- package/dist/cli/git.js +267 -0
- package/dist/cli/git.js.map +1 -0
- package/dist/cli/git.test.d.ts +2 -0
- package/dist/cli/git.test.d.ts.map +1 -0
- package/dist/cli/git.test.js +96 -0
- package/dist/cli/git.test.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +13 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/main.d.ts +7 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +560 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/output/box.d.ts +75 -0
- package/dist/cli/output/box.d.ts.map +1 -0
- package/dist/cli/output/box.js +191 -0
- package/dist/cli/output/box.js.map +1 -0
- package/dist/cli/output/formatters.d.ts +90 -0
- package/dist/cli/output/formatters.d.ts.map +1 -0
- package/dist/cli/output/formatters.js +248 -0
- package/dist/cli/output/formatters.js.map +1 -0
- package/dist/cli/output/formatters.test.d.ts +2 -0
- package/dist/cli/output/formatters.test.d.ts.map +1 -0
- package/dist/cli/output/formatters.test.js +152 -0
- package/dist/cli/output/formatters.test.js.map +1 -0
- package/dist/cli/output/icons.d.ts +11 -0
- package/dist/cli/output/icons.d.ts.map +1 -0
- package/dist/cli/output/icons.js +11 -0
- package/dist/cli/output/icons.js.map +1 -0
- package/dist/cli/output/index.d.ts +10 -0
- package/dist/cli/output/index.d.ts.map +1 -0
- package/dist/cli/output/index.js +10 -0
- package/dist/cli/output/index.js.map +1 -0
- package/dist/cli/output/ink-runner.d.ts +9 -0
- package/dist/cli/output/ink-runner.d.ts.map +1 -0
- package/dist/cli/output/ink-runner.js +207 -0
- package/dist/cli/output/ink-runner.js.map +1 -0
- package/dist/cli/output/jsonl.d.ts +43 -0
- package/dist/cli/output/jsonl.d.ts.map +1 -0
- package/dist/cli/output/jsonl.js +89 -0
- package/dist/cli/output/jsonl.js.map +1 -0
- package/dist/cli/output/jsonl.test.d.ts +2 -0
- package/dist/cli/output/jsonl.test.d.ts.map +1 -0
- package/dist/cli/output/jsonl.test.js +284 -0
- package/dist/cli/output/jsonl.test.js.map +1 -0
- package/dist/cli/output/reporter.d.ts +108 -0
- package/dist/cli/output/reporter.d.ts.map +1 -0
- package/dist/cli/output/reporter.js +378 -0
- package/dist/cli/output/reporter.js.map +1 -0
- package/dist/cli/output/tasks.d.ts +89 -0
- package/dist/cli/output/tasks.d.ts.map +1 -0
- package/dist/cli/output/tasks.js +251 -0
- package/dist/cli/output/tasks.js.map +1 -0
- package/dist/cli/output/tty.d.ts +21 -0
- package/dist/cli/output/tty.d.ts.map +1 -0
- package/dist/cli/output/tty.js +44 -0
- package/dist/cli/output/tty.js.map +1 -0
- package/dist/cli/output/tty.test.d.ts +2 -0
- package/dist/cli/output/tty.test.d.ts.map +1 -0
- package/dist/cli/output/tty.test.js +105 -0
- package/dist/cli/output/tty.test.js.map +1 -0
- package/dist/cli/output/verbosity.d.ts +20 -0
- package/dist/cli/output/verbosity.d.ts.map +1 -0
- package/dist/cli/output/verbosity.js +32 -0
- package/dist/cli/output/verbosity.js.map +1 -0
- package/dist/cli/output/verbosity.test.d.ts +2 -0
- package/dist/cli/output/verbosity.test.d.ts.map +1 -0
- package/dist/cli/output/verbosity.test.js +35 -0
- package/dist/cli/output/verbosity.test.js.map +1 -0
- package/dist/cli/terminal.d.ts +19 -0
- package/dist/cli/terminal.d.ts.map +1 -0
- package/dist/cli/terminal.js +247 -0
- package/dist/cli/terminal.js.map +1 -0
- package/dist/cli/terminal.test.d.ts +2 -0
- package/dist/cli/terminal.test.d.ts.map +1 -0
- package/dist/cli/terminal.test.js +123 -0
- package/dist/cli/terminal.test.js.map +1 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +27 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +77 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/loader.test.d.ts +2 -0
- package/dist/config/loader.test.d.ts.map +1 -0
- package/dist/config/loader.test.js +263 -0
- package/dist/config/loader.test.js.map +1 -0
- package/dist/config/schema.d.ts +318 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +137 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/writer.d.ts +11 -0
- package/dist/config/writer.d.ts.map +1 -0
- package/dist/config/writer.js +74 -0
- package/dist/config/writer.js.map +1 -0
- package/dist/config/writer.test.d.ts +2 -0
- package/dist/config/writer.test.d.ts.map +1 -0
- package/dist/config/writer.test.js +98 -0
- package/dist/config/writer.test.js.map +1 -0
- package/dist/diff/classify.d.ts +29 -0
- package/dist/diff/classify.d.ts.map +1 -0
- package/dist/diff/classify.js +74 -0
- package/dist/diff/classify.js.map +1 -0
- package/dist/diff/classify.test.d.ts +2 -0
- package/dist/diff/classify.test.d.ts.map +1 -0
- package/dist/diff/classify.test.js +140 -0
- package/dist/diff/classify.test.js.map +1 -0
- package/dist/diff/coalesce.d.ts +42 -0
- package/dist/diff/coalesce.d.ts.map +1 -0
- package/dist/diff/coalesce.js +104 -0
- package/dist/diff/coalesce.js.map +1 -0
- package/dist/diff/coalesce.test.d.ts +2 -0
- package/dist/diff/coalesce.test.d.ts.map +1 -0
- package/dist/diff/coalesce.test.js +159 -0
- package/dist/diff/coalesce.test.js.map +1 -0
- package/dist/diff/context.d.ts +30 -0
- package/dist/diff/context.d.ts.map +1 -0
- package/dist/diff/context.js +144 -0
- package/dist/diff/context.js.map +1 -0
- package/dist/diff/context.test.d.ts +2 -0
- package/dist/diff/context.test.d.ts.map +1 -0
- package/dist/diff/context.test.js +190 -0
- package/dist/diff/context.test.js.map +1 -0
- package/dist/diff/index.d.ts +5 -0
- package/dist/diff/index.d.ts.map +1 -0
- package/dist/diff/index.js +5 -0
- package/dist/diff/index.js.map +1 -0
- package/dist/diff/parser.d.ts +52 -0
- package/dist/diff/parser.d.ts.map +1 -0
- package/dist/diff/parser.js +95 -0
- package/dist/diff/parser.js.map +1 -0
- package/dist/diff/parser.test.d.ts +2 -0
- package/dist/diff/parser.test.d.ts.map +1 -0
- package/dist/diff/parser.test.js +178 -0
- package/dist/diff/parser.test.js.map +1 -0
- package/dist/event/context.d.ts +9 -0
- package/dist/event/context.d.ts.map +1 -0
- package/dist/event/context.js +94 -0
- package/dist/event/context.js.map +1 -0
- package/dist/event/index.d.ts +3 -0
- package/dist/event/index.d.ts.map +1 -0
- package/dist/event/index.js +3 -0
- package/dist/event/index.js.map +1 -0
- package/dist/event/schedule-context.d.ts +30 -0
- package/dist/event/schedule-context.d.ts.map +1 -0
- package/dist/event/schedule-context.js +57 -0
- package/dist/event/schedule-context.js.map +1 -0
- package/dist/examples/examples.integration.test.d.ts +2 -0
- package/dist/examples/examples.integration.test.d.ts.map +1 -0
- package/dist/examples/examples.integration.test.js +55 -0
- package/dist/examples/examples.integration.test.js.map +1 -0
- package/dist/examples/index.d.ts +50 -0
- package/dist/examples/index.d.ts.map +1 -0
- package/dist/examples/index.js +104 -0
- package/dist/examples/index.js.map +1 -0
- package/dist/examples/index.test.d.ts +2 -0
- package/dist/examples/index.test.d.ts.map +1 -0
- package/dist/examples/index.test.js +88 -0
- package/dist/examples/index.test.js.map +1 -0
- package/dist/examples/setup.d.ts +2 -0
- package/dist/examples/setup.d.ts.map +1 -0
- package/dist/examples/setup.js +22 -0
- package/dist/examples/setup.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/output/dedup.d.ts +153 -0
- package/dist/output/dedup.d.ts.map +1 -0
- package/dist/output/dedup.js +416 -0
- package/dist/output/dedup.js.map +1 -0
- package/dist/output/dedup.test.d.ts +2 -0
- package/dist/output/dedup.test.d.ts.map +1 -0
- package/dist/output/dedup.test.js +357 -0
- package/dist/output/dedup.test.js.map +1 -0
- package/dist/output/github-checks.d.ts +106 -0
- package/dist/output/github-checks.d.ts.map +1 -0
- package/dist/output/github-checks.js +321 -0
- package/dist/output/github-checks.js.map +1 -0
- package/dist/output/github-checks.test.d.ts +2 -0
- package/dist/output/github-checks.test.d.ts.map +1 -0
- package/dist/output/github-checks.test.js +255 -0
- package/dist/output/github-checks.test.js.map +1 -0
- package/dist/output/github-issues.d.ts +35 -0
- package/dist/output/github-issues.d.ts.map +1 -0
- package/dist/output/github-issues.js +246 -0
- package/dist/output/github-issues.js.map +1 -0
- package/dist/output/index.d.ts +6 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +6 -0
- package/dist/output/index.js.map +1 -0
- package/dist/output/issue-renderer.d.ts +20 -0
- package/dist/output/issue-renderer.d.ts.map +1 -0
- package/dist/output/issue-renderer.js +154 -0
- package/dist/output/issue-renderer.js.map +1 -0
- package/dist/output/renderer.d.ts +4 -0
- package/dist/output/renderer.d.ts.map +1 -0
- package/dist/output/renderer.js +168 -0
- package/dist/output/renderer.js.map +1 -0
- package/dist/output/renderer.test.d.ts +2 -0
- package/dist/output/renderer.test.d.ts.map +1 -0
- package/dist/output/renderer.test.js +645 -0
- package/dist/output/renderer.test.js.map +1 -0
- package/dist/output/stale.d.ts +31 -0
- package/dist/output/stale.d.ts.map +1 -0
- package/dist/output/stale.js +114 -0
- package/dist/output/stale.js.map +1 -0
- package/dist/output/stale.test.d.ts +2 -0
- package/dist/output/stale.test.d.ts.map +1 -0
- package/dist/output/stale.test.js +330 -0
- package/dist/output/stale.test.js.map +1 -0
- package/dist/output/types.d.ts +31 -0
- package/dist/output/types.d.ts.map +1 -0
- package/dist/output/types.js +2 -0
- package/dist/output/types.js.map +1 -0
- package/dist/sdk/index.d.ts +2 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +2 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/runner.d.ts +202 -0
- package/dist/sdk/runner.d.ts.map +1 -0
- package/dist/sdk/runner.js +888 -0
- package/dist/sdk/runner.js.map +1 -0
- package/dist/sdk/runner.test.d.ts +2 -0
- package/dist/sdk/runner.test.d.ts.map +1 -0
- package/dist/sdk/runner.test.js +677 -0
- package/dist/sdk/runner.test.js.map +1 -0
- package/dist/skills/index.d.ts +5 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +3 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/loader.d.ts +111 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +319 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/loader.test.d.ts +2 -0
- package/dist/skills/loader.test.d.ts.map +1 -0
- package/dist/skills/loader.test.js +241 -0
- package/dist/skills/loader.test.js.map +1 -0
- package/dist/skills/remote.d.ts +117 -0
- package/dist/skills/remote.d.ts.map +1 -0
- package/dist/skills/remote.js +496 -0
- package/dist/skills/remote.js.map +1 -0
- package/dist/skills/remote.test.d.ts +2 -0
- package/dist/skills/remote.test.d.ts.map +1 -0
- package/dist/skills/remote.test.js +582 -0
- package/dist/skills/remote.test.js.map +1 -0
- package/dist/triggers/matcher.d.ts +30 -0
- package/dist/triggers/matcher.d.ts.map +1 -0
- package/dist/triggers/matcher.js +122 -0
- package/dist/triggers/matcher.js.map +1 -0
- package/dist/triggers/matcher.test.d.ts +2 -0
- package/dist/triggers/matcher.test.d.ts.map +1 -0
- package/dist/triggers/matcher.test.js +234 -0
- package/dist/triggers/matcher.test.js.map +1 -0
- package/dist/types/index.d.ts +269 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +162 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/async.d.ts +5 -0
- package/dist/utils/async.d.ts.map +1 -0
- package/dist/utils/async.js +13 -0
- package/dist/utils/async.js.map +1 -0
- package/dist/utils/index.d.ts +16 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +44 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.test.d.ts +2 -0
- package/dist/utils/index.test.d.ts.map +1 -0
- package/dist/utils/index.test.js +68 -0
- package/dist/utils/index.test.js.map +1 -0
- package/dist/utils/version.d.ts +3 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +16 -0
- package/dist/utils/version.js.map +1 -0
- package/docs/src/pages/config.astro +2 -1
- package/docs/src/pages/guide.astro +2 -1
- package/docs/src/utils/version.ts +6 -0
- package/package.json +12 -2
- package/src/cli/args.ts +2 -3
- package/src/cli/commands/init.test.ts +2 -1
- package/src/cli/commands/init.ts +3 -1
- package/src/cli/output/reporter.ts +3 -4
- package/src/utils/index.ts +1 -0
- package/src/utils/version.ts +17 -0
- package/.claude/settings.local.json +0 -88
- package/docs/.claude/settings.local.json +0 -11
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hunk coalescing - merges nearby hunks into fewer, larger chunks
|
|
3
|
+
* to reduce the number of LLM API calls while keeping chunk sizes manageable.
|
|
4
|
+
*/
|
|
5
|
+
import type { DiffHunk } from './parser.js';
|
|
6
|
+
/** Default maximum gap in lines between hunks to merge */
|
|
7
|
+
export declare const DEFAULT_MAX_GAP_LINES = 30;
|
|
8
|
+
/** Default maximum chunk size in characters */
|
|
9
|
+
export declare const DEFAULT_MAX_CHUNK_SIZE = 8000;
|
|
10
|
+
/**
|
|
11
|
+
* Options for coalescing hunks.
|
|
12
|
+
*/
|
|
13
|
+
export interface CoalesceOptions {
|
|
14
|
+
/** Max lines gap between hunks to merge (default: 30) */
|
|
15
|
+
maxGapLines?: number;
|
|
16
|
+
/** Target max size per chunk in characters (default: 8000) */
|
|
17
|
+
maxChunkSize?: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Coalesce hunks that are close together into larger chunks.
|
|
21
|
+
*
|
|
22
|
+
* This reduces the number of LLM API calls by merging nearby hunks,
|
|
23
|
+
* while respecting size limits to keep chunks manageable.
|
|
24
|
+
*
|
|
25
|
+
* @param hunks - Array of hunks to coalesce
|
|
26
|
+
* @param options - Coalescing options (maxGapLines, maxChunkSize)
|
|
27
|
+
* @returns Array of coalesced hunks (may be smaller than input)
|
|
28
|
+
*
|
|
29
|
+
* Algorithm:
|
|
30
|
+
* 1. Sort hunks by start line
|
|
31
|
+
* 2. For each hunk, check if it can be merged with the previous:
|
|
32
|
+
* - Gap between hunks <= maxGapLines
|
|
33
|
+
* - Combined size <= maxChunkSize
|
|
34
|
+
* 3. If both conditions are met, merge; otherwise start a new chunk
|
|
35
|
+
*/
|
|
36
|
+
export declare function coalesceHunks(hunks: DiffHunk[], options?: CoalesceOptions): DiffHunk[];
|
|
37
|
+
/**
|
|
38
|
+
* Check if coalescing would reduce the number of hunks.
|
|
39
|
+
* Useful for deciding whether to show coalescing stats.
|
|
40
|
+
*/
|
|
41
|
+
export declare function wouldCoalesceReduce(hunks: DiffHunk[], options?: CoalesceOptions): boolean;
|
|
42
|
+
//# sourceMappingURL=coalesce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coalesce.d.ts","sourceRoot":"","sources":["../../src/diff/coalesce.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,+CAA+C;AAC/C,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA4CD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,GAAE,eAAoB,GAC5B,QAAQ,EAAE,CAkCZ;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAIT"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hunk coalescing - merges nearby hunks into fewer, larger chunks
|
|
3
|
+
* to reduce the number of LLM API calls while keeping chunk sizes manageable.
|
|
4
|
+
*/
|
|
5
|
+
/** Default maximum gap in lines between hunks to merge */
|
|
6
|
+
export const DEFAULT_MAX_GAP_LINES = 30;
|
|
7
|
+
/** Default maximum chunk size in characters */
|
|
8
|
+
export const DEFAULT_MAX_CHUNK_SIZE = 8000;
|
|
9
|
+
/**
|
|
10
|
+
* Merge two adjacent hunks into one.
|
|
11
|
+
*
|
|
12
|
+
* The merged hunk spans from the start of the first hunk to the end of the second,
|
|
13
|
+
* with content combined using '...' as a visual separator. When both hunks have
|
|
14
|
+
* different headers (indicating different function/class scopes), both are preserved.
|
|
15
|
+
*/
|
|
16
|
+
function mergeHunks(a, b) {
|
|
17
|
+
// Calculate the new range that spans both hunks
|
|
18
|
+
const newStart = Math.min(a.newStart, b.newStart);
|
|
19
|
+
const newEnd = Math.max(a.newStart + a.newCount, b.newStart + b.newCount);
|
|
20
|
+
const oldStart = Math.min(a.oldStart, b.oldStart);
|
|
21
|
+
const oldEnd = Math.max(a.oldStart + a.oldCount, b.oldStart + b.oldCount);
|
|
22
|
+
// Combine headers when both exist and are different
|
|
23
|
+
let header;
|
|
24
|
+
if (a.header && b.header && a.header !== b.header) {
|
|
25
|
+
header = `${a.header} → ${b.header}`;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
header = a.header ?? b.header;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
oldStart,
|
|
32
|
+
oldCount: oldEnd - oldStart,
|
|
33
|
+
newStart,
|
|
34
|
+
newCount: newEnd - newStart,
|
|
35
|
+
header,
|
|
36
|
+
content: a.content + '\n...\n' + b.content,
|
|
37
|
+
lines: [...a.lines, ...b.lines],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Calculate the gap in lines between two hunks.
|
|
42
|
+
* Returns the number of lines between the end of hunk A and the start of hunk B.
|
|
43
|
+
*/
|
|
44
|
+
function calculateGap(a, b) {
|
|
45
|
+
const aEnd = a.newStart + a.newCount;
|
|
46
|
+
return b.newStart - aEnd;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Coalesce hunks that are close together into larger chunks.
|
|
50
|
+
*
|
|
51
|
+
* This reduces the number of LLM API calls by merging nearby hunks,
|
|
52
|
+
* while respecting size limits to keep chunks manageable.
|
|
53
|
+
*
|
|
54
|
+
* @param hunks - Array of hunks to coalesce
|
|
55
|
+
* @param options - Coalescing options (maxGapLines, maxChunkSize)
|
|
56
|
+
* @returns Array of coalesced hunks (may be smaller than input)
|
|
57
|
+
*
|
|
58
|
+
* Algorithm:
|
|
59
|
+
* 1. Sort hunks by start line
|
|
60
|
+
* 2. For each hunk, check if it can be merged with the previous:
|
|
61
|
+
* - Gap between hunks <= maxGapLines
|
|
62
|
+
* - Combined size <= maxChunkSize
|
|
63
|
+
* 3. If both conditions are met, merge; otherwise start a new chunk
|
|
64
|
+
*/
|
|
65
|
+
export function coalesceHunks(hunks, options = {}) {
|
|
66
|
+
const { maxGapLines = DEFAULT_MAX_GAP_LINES, maxChunkSize = DEFAULT_MAX_CHUNK_SIZE } = options;
|
|
67
|
+
// Nothing to coalesce with 0 or 1 hunks
|
|
68
|
+
if (hunks.length <= 1) {
|
|
69
|
+
return hunks;
|
|
70
|
+
}
|
|
71
|
+
// Sort hunks by start line to ensure we process them in order
|
|
72
|
+
const sorted = [...hunks].sort((a, b) => a.newStart - b.newStart);
|
|
73
|
+
const result = [];
|
|
74
|
+
// sorted[0] is guaranteed to exist since we checked hunks.length > 1 above
|
|
75
|
+
let current = sorted[0];
|
|
76
|
+
for (let i = 1; i < sorted.length; i++) {
|
|
77
|
+
const next = sorted[i];
|
|
78
|
+
const gap = calculateGap(current, next);
|
|
79
|
+
const combinedSize = current.content.length + next.content.length;
|
|
80
|
+
// Merge if: close enough AND combined size under limit
|
|
81
|
+
if (gap <= maxGapLines && combinedSize <= maxChunkSize) {
|
|
82
|
+
current = mergeHunks(current, next);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Can't merge - save current and start a new chunk
|
|
86
|
+
result.push(current);
|
|
87
|
+
current = next;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Don't forget the last chunk
|
|
91
|
+
result.push(current);
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Check if coalescing would reduce the number of hunks.
|
|
96
|
+
* Useful for deciding whether to show coalescing stats.
|
|
97
|
+
*/
|
|
98
|
+
export function wouldCoalesceReduce(hunks, options = {}) {
|
|
99
|
+
if (hunks.length <= 1)
|
|
100
|
+
return false;
|
|
101
|
+
const coalesced = coalesceHunks(hunks, options);
|
|
102
|
+
return coalesced.length < hunks.length;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=coalesce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coalesce.js","sourceRoot":"","sources":["../../src/diff/coalesce.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coalesce.test.d.ts","sourceRoot":"","sources":["../../src/diff/coalesce.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { coalesceHunks, wouldCoalesceReduce } from './coalesce.js';
|
|
3
|
+
function makeHunk(newStart, newCount, content, options = {}) {
|
|
4
|
+
const { oldStart = newStart, oldCount = newCount, header } = options;
|
|
5
|
+
return {
|
|
6
|
+
oldStart,
|
|
7
|
+
oldCount,
|
|
8
|
+
newStart,
|
|
9
|
+
newCount,
|
|
10
|
+
content,
|
|
11
|
+
lines: content.split('\n'),
|
|
12
|
+
header,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
describe('coalesceHunks', () => {
|
|
16
|
+
describe('edge cases', () => {
|
|
17
|
+
it('returns empty array for empty input', () => {
|
|
18
|
+
expect(coalesceHunks([])).toEqual([]);
|
|
19
|
+
});
|
|
20
|
+
it('returns single hunk unchanged', () => {
|
|
21
|
+
const hunk = makeHunk(1, 5, 'test content');
|
|
22
|
+
expect(coalesceHunks([hunk])).toEqual([hunk]);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe('merging nearby hunks', () => {
|
|
26
|
+
it('merges two adjacent hunks within gap limit', () => {
|
|
27
|
+
const hunk1 = makeHunk(1, 5, 'first');
|
|
28
|
+
const hunk2 = makeHunk(10, 5, 'second');
|
|
29
|
+
const result = coalesceHunks([hunk1, hunk2], { maxGapLines: 10 });
|
|
30
|
+
const [merged] = result;
|
|
31
|
+
expect(result).toHaveLength(1);
|
|
32
|
+
expect(merged.newStart).toBe(1);
|
|
33
|
+
expect(merged.newCount).toBe(14);
|
|
34
|
+
expect(merged.content).toContain('first');
|
|
35
|
+
expect(merged.content).toContain('...');
|
|
36
|
+
expect(merged.content).toContain('second');
|
|
37
|
+
});
|
|
38
|
+
it('does not merge hunks beyond gap limit', () => {
|
|
39
|
+
const hunk1 = makeHunk(1, 5, 'first');
|
|
40
|
+
const hunk2 = makeHunk(50, 5, 'second');
|
|
41
|
+
const result = coalesceHunks([hunk1, hunk2], { maxGapLines: 30 });
|
|
42
|
+
expect(result).toHaveLength(2);
|
|
43
|
+
});
|
|
44
|
+
it('does not merge when combined size exceeds limit', () => {
|
|
45
|
+
const hunk1 = makeHunk(1, 5, 'a'.repeat(5000));
|
|
46
|
+
const hunk2 = makeHunk(10, 5, 'b'.repeat(5000));
|
|
47
|
+
const result = coalesceHunks([hunk1, hunk2], { maxChunkSize: 8000 });
|
|
48
|
+
expect(result).toHaveLength(2);
|
|
49
|
+
});
|
|
50
|
+
it('merges multiple hunks into one when all within limits', () => {
|
|
51
|
+
const hunks = [
|
|
52
|
+
makeHunk(1, 3, 'a'),
|
|
53
|
+
makeHunk(10, 3, 'b'),
|
|
54
|
+
makeHunk(20, 3, 'c'),
|
|
55
|
+
makeHunk(30, 3, 'd'),
|
|
56
|
+
];
|
|
57
|
+
const result = coalesceHunks(hunks, { maxGapLines: 15, maxChunkSize: 10000 });
|
|
58
|
+
expect(result).toHaveLength(1);
|
|
59
|
+
expect(result[0].content).toContain('a');
|
|
60
|
+
expect(result[0].content).toContain('d');
|
|
61
|
+
});
|
|
62
|
+
it('creates multiple chunks when limits are reached', () => {
|
|
63
|
+
const hunks = [
|
|
64
|
+
makeHunk(1, 3, 'a'.repeat(3000)),
|
|
65
|
+
makeHunk(10, 3, 'b'.repeat(3000)),
|
|
66
|
+
makeHunk(20, 3, 'c'.repeat(3000)),
|
|
67
|
+
makeHunk(30, 3, 'd'.repeat(3000)),
|
|
68
|
+
];
|
|
69
|
+
const result = coalesceHunks(hunks, { maxGapLines: 15, maxChunkSize: 8000 });
|
|
70
|
+
// First two can merge (6000 chars), third can't fit (9000 > 8000)
|
|
71
|
+
// So result should be: [a+b], [c+d]
|
|
72
|
+
expect(result).toHaveLength(2);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe('sorting', () => {
|
|
76
|
+
it('sorts hunks by start line before merging', () => {
|
|
77
|
+
const hunks = [
|
|
78
|
+
makeHunk(20, 3, 'third'),
|
|
79
|
+
makeHunk(1, 3, 'first'),
|
|
80
|
+
makeHunk(10, 3, 'second'),
|
|
81
|
+
];
|
|
82
|
+
const result = coalesceHunks(hunks, { maxGapLines: 15, maxChunkSize: 10000 });
|
|
83
|
+
expect(result).toHaveLength(1);
|
|
84
|
+
// Should be merged in order: first, second, third
|
|
85
|
+
const content = result[0].content;
|
|
86
|
+
const firstPos = content.indexOf('first');
|
|
87
|
+
const secondPos = content.indexOf('second');
|
|
88
|
+
const thirdPos = content.indexOf('third');
|
|
89
|
+
expect(firstPos).toBeLessThan(secondPos);
|
|
90
|
+
expect(secondPos).toBeLessThan(thirdPos);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
describe('merged hunk properties', () => {
|
|
94
|
+
it('calculates correct line ranges', () => {
|
|
95
|
+
const hunk1 = makeHunk(10, 5, 'first', { oldStart: 8, oldCount: 5 });
|
|
96
|
+
const hunk2 = makeHunk(25, 10, 'second', { oldStart: 23, oldCount: 10 });
|
|
97
|
+
const result = coalesceHunks([hunk1, hunk2], { maxGapLines: 20 });
|
|
98
|
+
expect(result).toHaveLength(1);
|
|
99
|
+
expect(result[0].newStart).toBe(10);
|
|
100
|
+
expect(result[0].newCount).toBe(25); // 10 to 35 (25 + 10)
|
|
101
|
+
expect(result[0].oldStart).toBe(8);
|
|
102
|
+
expect(result[0].oldCount).toBe(25); // 8 to 33 (23 + 10)
|
|
103
|
+
});
|
|
104
|
+
it('combines different headers from both hunks', () => {
|
|
105
|
+
const hunk1 = makeHunk(1, 3, 'first', { header: 'function foo()' });
|
|
106
|
+
const hunk2 = makeHunk(10, 3, 'second', { header: 'function bar()' });
|
|
107
|
+
const result = coalesceHunks([hunk1, hunk2], { maxGapLines: 20 });
|
|
108
|
+
expect(result[0].header).toBe('function foo() → function bar()');
|
|
109
|
+
});
|
|
110
|
+
it('preserves single header when only first hunk has one', () => {
|
|
111
|
+
const hunk1 = makeHunk(1, 3, 'first', { header: 'function foo()' });
|
|
112
|
+
const hunk2 = makeHunk(10, 3, 'second');
|
|
113
|
+
const result = coalesceHunks([hunk1, hunk2], { maxGapLines: 20 });
|
|
114
|
+
expect(result[0].header).toBe('function foo()');
|
|
115
|
+
});
|
|
116
|
+
it('preserves single header when only second hunk has one', () => {
|
|
117
|
+
const hunk1 = makeHunk(1, 3, 'first');
|
|
118
|
+
const hunk2 = makeHunk(10, 3, 'second', { header: 'function bar()' });
|
|
119
|
+
const result = coalesceHunks([hunk1, hunk2], { maxGapLines: 20 });
|
|
120
|
+
expect(result[0].header).toBe('function bar()');
|
|
121
|
+
});
|
|
122
|
+
it('preserves header when both hunks have identical headers', () => {
|
|
123
|
+
const hunk1 = makeHunk(1, 3, 'first', { header: 'function foo()' });
|
|
124
|
+
const hunk2 = makeHunk(10, 3, 'second', { header: 'function foo()' });
|
|
125
|
+
const result = coalesceHunks([hunk1, hunk2], { maxGapLines: 20 });
|
|
126
|
+
expect(result[0].header).toBe('function foo()');
|
|
127
|
+
});
|
|
128
|
+
it('combines lines from all merged hunks', () => {
|
|
129
|
+
const hunk1 = makeHunk(1, 3, 'line1\nline2');
|
|
130
|
+
const hunk2 = makeHunk(10, 3, 'line3\nline4');
|
|
131
|
+
const result = coalesceHunks([hunk1, hunk2], { maxGapLines: 20 });
|
|
132
|
+
expect(result[0].lines).toEqual(['line1', 'line2', 'line3', 'line4']);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
describe('wouldCoalesceReduce', () => {
|
|
137
|
+
it('returns false for empty array', () => {
|
|
138
|
+
expect(wouldCoalesceReduce([])).toBe(false);
|
|
139
|
+
});
|
|
140
|
+
it('returns false for single hunk', () => {
|
|
141
|
+
const hunk = makeHunk(1, 5, 'test');
|
|
142
|
+
expect(wouldCoalesceReduce([hunk])).toBe(false);
|
|
143
|
+
});
|
|
144
|
+
it('returns true when coalescing would reduce count', () => {
|
|
145
|
+
const hunks = [
|
|
146
|
+
makeHunk(1, 3, 'a'),
|
|
147
|
+
makeHunk(10, 3, 'b'),
|
|
148
|
+
];
|
|
149
|
+
expect(wouldCoalesceReduce(hunks, { maxGapLines: 20 })).toBe(true);
|
|
150
|
+
});
|
|
151
|
+
it('returns false when coalescing would not reduce count', () => {
|
|
152
|
+
const hunks = [
|
|
153
|
+
makeHunk(1, 3, 'a'),
|
|
154
|
+
makeHunk(100, 3, 'b'), // Too far apart
|
|
155
|
+
];
|
|
156
|
+
expect(wouldCoalesceReduce(hunks, { maxGapLines: 10 })).toBe(false);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
//# sourceMappingURL=coalesce.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coalesce.test.js","sourceRoot":"","sources":["../../src/diff/coalesce.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { DiffHunk, ParsedDiff } from './parser.js';
|
|
2
|
+
/** Clear the file cache (useful for testing or long-running processes) */
|
|
3
|
+
export declare function clearFileCache(): void;
|
|
4
|
+
export interface HunkWithContext {
|
|
5
|
+
/** File path */
|
|
6
|
+
filename: string;
|
|
7
|
+
/** The hunk being analyzed */
|
|
8
|
+
hunk: DiffHunk;
|
|
9
|
+
/** Lines before the hunk (from actual file) */
|
|
10
|
+
contextBefore: string[];
|
|
11
|
+
/** Lines after the hunk (from actual file) */
|
|
12
|
+
contextAfter: string[];
|
|
13
|
+
/** Start line of contextBefore */
|
|
14
|
+
contextStartLine: number;
|
|
15
|
+
/** Detected language from file extension */
|
|
16
|
+
language: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Expand a hunk with surrounding context from the actual file.
|
|
20
|
+
*/
|
|
21
|
+
export declare function expandHunkContext(repoPath: string, filename: string, hunk: DiffHunk, contextLines?: number): HunkWithContext;
|
|
22
|
+
/**
|
|
23
|
+
* Expand all hunks in a parsed diff with context.
|
|
24
|
+
*/
|
|
25
|
+
export declare function expandDiffContext(repoPath: string, diff: ParsedDiff, contextLines?: number): HunkWithContext[];
|
|
26
|
+
/**
|
|
27
|
+
* Format a hunk with context for LLM analysis.
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatHunkForAnalysis(hunkCtx: HunkWithContext): string;
|
|
30
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/diff/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMxD,0EAA0E;AAC1E,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAyBD,MAAM,WAAW,eAAe;IAC9B,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,+CAA+C;IAC/C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;CAClB;AA2DD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,EACd,YAAY,SAAK,GAChB,eAAe,CA0BjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,YAAY,SAAK,GAChB,eAAe,EAAE,CAInB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAwCtE"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { getExpandedLineRange } from './parser.js';
|
|
4
|
+
/** Cache for file contents to avoid repeated reads */
|
|
5
|
+
const fileCache = new Map();
|
|
6
|
+
/** Clear the file cache (useful for testing or long-running processes) */
|
|
7
|
+
export function clearFileCache() {
|
|
8
|
+
fileCache.clear();
|
|
9
|
+
}
|
|
10
|
+
/** Get cached file lines or read and cache them */
|
|
11
|
+
function getCachedFileLines(filePath) {
|
|
12
|
+
if (fileCache.has(filePath)) {
|
|
13
|
+
return fileCache.get(filePath) ?? null;
|
|
14
|
+
}
|
|
15
|
+
if (!existsSync(filePath)) {
|
|
16
|
+
fileCache.set(filePath, null);
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
21
|
+
const lines = content.split('\n');
|
|
22
|
+
fileCache.set(filePath, lines);
|
|
23
|
+
return lines;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Binary file or read error
|
|
27
|
+
fileCache.set(filePath, null);
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Detect language from filename.
|
|
33
|
+
*/
|
|
34
|
+
function detectLanguage(filename) {
|
|
35
|
+
const ext = filename.split('.').pop()?.toLowerCase() ?? '';
|
|
36
|
+
const languageMap = {
|
|
37
|
+
ts: 'typescript',
|
|
38
|
+
tsx: 'typescript',
|
|
39
|
+
js: 'javascript',
|
|
40
|
+
jsx: 'javascript',
|
|
41
|
+
py: 'python',
|
|
42
|
+
rb: 'ruby',
|
|
43
|
+
go: 'go',
|
|
44
|
+
rs: 'rust',
|
|
45
|
+
java: 'java',
|
|
46
|
+
kt: 'kotlin',
|
|
47
|
+
cs: 'csharp',
|
|
48
|
+
cpp: 'cpp',
|
|
49
|
+
c: 'c',
|
|
50
|
+
h: 'c',
|
|
51
|
+
hpp: 'cpp',
|
|
52
|
+
swift: 'swift',
|
|
53
|
+
php: 'php',
|
|
54
|
+
sh: 'bash',
|
|
55
|
+
bash: 'bash',
|
|
56
|
+
zsh: 'bash',
|
|
57
|
+
yml: 'yaml',
|
|
58
|
+
yaml: 'yaml',
|
|
59
|
+
json: 'json',
|
|
60
|
+
toml: 'toml',
|
|
61
|
+
md: 'markdown',
|
|
62
|
+
sql: 'sql',
|
|
63
|
+
html: 'html',
|
|
64
|
+
css: 'css',
|
|
65
|
+
scss: 'scss',
|
|
66
|
+
less: 'less',
|
|
67
|
+
};
|
|
68
|
+
return languageMap[ext] ?? ext;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Read specific lines from a file using the cache.
|
|
72
|
+
* Returns empty array if file doesn't exist or is binary.
|
|
73
|
+
*/
|
|
74
|
+
function readFileLines(filePath, startLine, endLine) {
|
|
75
|
+
const lines = getCachedFileLines(filePath);
|
|
76
|
+
if (!lines) {
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
// Lines are 1-indexed, arrays are 0-indexed
|
|
80
|
+
return lines.slice(startLine - 1, endLine);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Expand a hunk with surrounding context from the actual file.
|
|
84
|
+
*/
|
|
85
|
+
export function expandHunkContext(repoPath, filename, hunk, contextLines = 20) {
|
|
86
|
+
const filePath = join(repoPath, filename);
|
|
87
|
+
const expandedRange = getExpandedLineRange(hunk, contextLines);
|
|
88
|
+
// Read context before the hunk
|
|
89
|
+
const contextBefore = readFileLines(filePath, expandedRange.start, hunk.newStart - 1);
|
|
90
|
+
// Read context after the hunk
|
|
91
|
+
const contextAfter = readFileLines(filePath, hunk.newStart + hunk.newCount, expandedRange.end);
|
|
92
|
+
return {
|
|
93
|
+
filename,
|
|
94
|
+
hunk,
|
|
95
|
+
contextBefore,
|
|
96
|
+
contextAfter,
|
|
97
|
+
contextStartLine: expandedRange.start,
|
|
98
|
+
language: detectLanguage(filename),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Expand all hunks in a parsed diff with context.
|
|
103
|
+
*/
|
|
104
|
+
export function expandDiffContext(repoPath, diff, contextLines = 20) {
|
|
105
|
+
return diff.hunks.map((hunk) => expandHunkContext(repoPath, diff.filename, hunk, contextLines));
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Format a hunk with context for LLM analysis.
|
|
109
|
+
*/
|
|
110
|
+
export function formatHunkForAnalysis(hunkCtx) {
|
|
111
|
+
const lines = [];
|
|
112
|
+
lines.push(`## File: ${hunkCtx.filename}`);
|
|
113
|
+
lines.push(`## Language: ${hunkCtx.language}`);
|
|
114
|
+
lines.push(`## Hunk: lines ${hunkCtx.hunk.newStart}-${hunkCtx.hunk.newStart + hunkCtx.hunk.newCount - 1}`);
|
|
115
|
+
if (hunkCtx.hunk.header) {
|
|
116
|
+
lines.push(`## Scope: ${hunkCtx.hunk.header}`);
|
|
117
|
+
}
|
|
118
|
+
lines.push('');
|
|
119
|
+
// Context before
|
|
120
|
+
if (hunkCtx.contextBefore.length > 0) {
|
|
121
|
+
lines.push(`### Context Before (lines ${hunkCtx.contextStartLine}-${hunkCtx.hunk.newStart - 1})`);
|
|
122
|
+
lines.push('```' + hunkCtx.language);
|
|
123
|
+
lines.push(hunkCtx.contextBefore.join('\n'));
|
|
124
|
+
lines.push('```');
|
|
125
|
+
lines.push('');
|
|
126
|
+
}
|
|
127
|
+
// The actual changes
|
|
128
|
+
lines.push(`### Changes`);
|
|
129
|
+
lines.push('```diff');
|
|
130
|
+
lines.push(hunkCtx.hunk.content);
|
|
131
|
+
lines.push('```');
|
|
132
|
+
lines.push('');
|
|
133
|
+
// Context after
|
|
134
|
+
if (hunkCtx.contextAfter.length > 0) {
|
|
135
|
+
const afterStart = hunkCtx.hunk.newStart + hunkCtx.hunk.newCount;
|
|
136
|
+
const afterEnd = afterStart + hunkCtx.contextAfter.length - 1;
|
|
137
|
+
lines.push(`### Context After (lines ${afterStart}-${afterEnd})`);
|
|
138
|
+
lines.push('```' + hunkCtx.language);
|
|
139
|
+
lines.push(hunkCtx.contextAfter.join('\n'));
|
|
140
|
+
lines.push('```');
|
|
141
|
+
}
|
|
142
|
+
return lines.join('\n');
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/diff/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.test.d.ts","sourceRoot":"","sources":["../../src/diff/context.test.ts"],"names":[],"mappings":""}
|