limn-review 0.1.123
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/LICENSE +110 -0
- package/README.md +133 -0
- package/dist/ai/runtime.js +535 -0
- package/dist/api/plugins/auth.js +169 -0
- package/dist/api/plugins/error-handler.js +114 -0
- package/dist/api/plugins/rate-limit.js +855 -0
- package/dist/api/plugins/security.js +321 -0
- package/dist/api/routes/activity.js +103 -0
- package/dist/api/routes/ai-runtime.js +67 -0
- package/dist/api/routes/auth.js +194 -0
- package/dist/api/routes/billing.js +209 -0
- package/dist/api/routes/bot-triage.js +1289 -0
- package/dist/api/routes/conflicts.js +730 -0
- package/dist/api/routes/contact.js +318 -0
- package/dist/api/routes/daily-brief.js +58 -0
- package/dist/api/routes/flow.js +71 -0
- package/dist/api/routes/health.js +7 -0
- package/dist/api/routes/insights.js +200 -0
- package/dist/api/routes/me.js +458 -0
- package/dist/api/routes/mentions.js +22 -0
- package/dist/api/routes/mergers.js +8 -0
- package/dist/api/routes/ml-labels.js +109 -0
- package/dist/api/routes/open-prs.js +35 -0
- package/dist/api/routes/prs.js +1633 -0
- package/dist/api/routes/reactions.js +217 -0
- package/dist/api/routes/repos.js +563 -0
- package/dist/api/routes/search.js +41 -0
- package/dist/api/routes/threads.js +118 -0
- package/dist/api/routes/timeline.js +150 -0
- package/dist/api/routes/users.js +67 -0
- package/dist/api/routes/webhooks.js +181 -0
- package/dist/api/routes/workspaces.js +322 -0
- package/dist/app.js +274 -0
- package/dist/ascii.js +19 -0
- package/dist/auth/account.js +482 -0
- package/dist/auth/crypto.js +46 -0
- package/dist/bot-triage/resolve.js +59 -0
- package/dist/cli.js +388 -0
- package/dist/coding/activity.js +80 -0
- package/dist/coding/agent.js +288 -0
- package/dist/coding/ai-fix/auto-fix.js +212 -0
- package/dist/coding/ai-fix/manager.js +370 -0
- package/dist/coding/ai-fix/persist.js +213 -0
- package/dist/coding/ai-fix/pr-context.js +58 -0
- package/dist/coding/ai-fix/prompts.js +138 -0
- package/dist/coding/ai-fix/review-seed.js +357 -0
- package/dist/coding/ai-fix/routes.js +425 -0
- package/dist/coding/git-ops.js +321 -0
- package/dist/coding/git.js +184 -0
- package/dist/coding/merge.js +262 -0
- package/dist/coding/safe-path.js +75 -0
- package/dist/coding/schema.js +43 -0
- package/dist/config.js +648 -0
- package/dist/conflict/diff.js +304 -0
- package/dist/conflict/git.js +118 -0
- package/dist/conflict/hash.js +73 -0
- package/dist/conflict/janitor.js +218 -0
- package/dist/conflict/land.js +675 -0
- package/dist/conflict/model-types.js +2 -0
- package/dist/conflict/model.js +1081 -0
- package/dist/conflict/parse.js +142 -0
- package/dist/conflict/seam.js +136 -0
- package/dist/conflict/session.js +532 -0
- package/dist/conflict/suggestion.js +398 -0
- package/dist/conflict/tokens.js +72 -0
- package/dist/data-dir.js +112 -0
- package/dist/db/actor-lanes.js +213 -0
- package/dist/db/automation-ids.js +97 -0
- package/dist/db/automation-output.js +349 -0
- package/dist/db/blast-radius-query.js +36 -0
- package/dist/db/blast-radius.js +226 -0
- package/dist/db/bot-dormancy.js +115 -0
- package/dist/db/bot-overlap.js +579 -0
- package/dist/db/bot-volume.js +722 -0
- package/dist/db/bot-window.js +35 -0
- package/dist/db/branch-queries.js +310 -0
- package/dist/db/change-shape.js +243 -0
- package/dist/db/changepoint.js +75 -0
- package/dist/db/cleanup.js +36 -0
- package/dist/db/client.js +102 -0
- package/dist/db/code-loc.js +388 -0
- package/dist/db/credits.js +79 -0
- package/dist/db/daily-brief.js +406 -0
- package/dist/db/dependency-cards.js +145 -0
- package/dist/db/erase-account.js +255 -0
- package/dist/db/export-account.js +189 -0
- package/dist/db/failing-checks.js +124 -0
- package/dist/db/file-coupling.js +197 -0
- package/dist/db/flow-detail.js +661 -0
- package/dist/db/flow-pointers.js +197 -0
- package/dist/db/flow-settings.js +67 -0
- package/dist/db/forecast.js +114 -0
- package/dist/db/line-overlap.js +81 -0
- package/dist/db/merge-queue.js +189 -0
- package/dist/db/migrate.js +17 -0
- package/dist/db/migrations/0000_purple_ben_grimm.sql +155 -0
- package/dist/db/migrations/0001_colorful_ozymandias.sql +31 -0
- package/dist/db/migrations/0002_famous_sersi.sql +9 -0
- package/dist/db/migrations/0003_clever_shinobi_shaw.sql +3 -0
- package/dist/db/migrations/0004_pale_scalphunter.sql +1 -0
- package/dist/db/migrations/0005_daffy_guardian.sql +2 -0
- package/dist/db/migrations/0006_cute_violations.sql +45 -0
- package/dist/db/migrations/0007_dark_anthem.sql +2 -0
- package/dist/db/migrations/0008_multitenant_accounts.sql +44 -0
- package/dist/db/migrations/0009_lean_bodies.sql +13 -0
- package/dist/db/migrations/0010_lean_bodies_nullable.sql +56 -0
- package/dist/db/migrations/0011_pr_diff_size.sql +10 -0
- package/dist/db/migrations/0012_findings_included_default.sql +7 -0
- package/dist/db/migrations/0013_review_routing.sql +9 -0
- package/dist/db/migrations/0014_account_last_active.sql +6 -0
- package/dist/db/migrations/0015_repos_inbox_watch.sql +9 -0
- package/dist/db/migrations/0016_repo_viewer_permission.sql +7 -0
- package/dist/db/migrations/0017_account_display_name.sql +7 -0
- package/dist/db/migrations/0018_finding_comment_kind.sql +7 -0
- package/dist/db/migrations/0019_finding_file_in_diff.sql +7 -0
- package/dist/db/migrations/0020_claude_review_cost_telemetry.sql +11 -0
- package/dist/db/migrations/0021_account_feed_last_seen.sql +7 -0
- package/dist/db/migrations/0022_ci_status_events.sql +21 -0
- package/dist/db/migrations/0023_ai_usage.sql +21 -0
- package/dist/db/migrations/0024_pr_head_ref_name.sql +6 -0
- package/dist/db/migrations/0025_account_billing.sql +7 -0
- package/dist/db/migrations/0026_ai_credit_allowance.sql +5 -0
- package/dist/db/migrations/0027_user_github_type.sql +6 -0
- package/dist/db/migrations/0028_bot_review_classification.sql +21 -0
- package/dist/db/migrations/0029_bot_mute_rules.sql +19 -0
- package/dist/db/migrations/0030_teams.sql +32 -0
- package/dist/db/migrations/0031_events_pr_idx.sql +7 -0
- package/dist/db/migrations/0032_benchmark_contributions.sql +29 -0
- package/dist/db/migrations/0033_thread_addressed_confidence.sql +9 -0
- package/dist/db/migrations/0034_thread_resolved_at.sql +6 -0
- package/dist/db/migrations/0035_pr_first_review_requested_at.sql +5 -0
- package/dist/db/migrations/0036_search_index.sql +25 -0
- package/dist/db/migrations/0037_author_indexes.sql +15 -0
- package/dist/db/migrations/0038_auto_merge_requests.sql +37 -0
- package/dist/db/migrations/0039_branch_status.sql +44 -0
- package/dist/db/migrations/0040_pr_review_decision.sql +10 -0
- package/dist/db/migrations/0041_branch_commit_detail.sql +38 -0
- package/dist/db/migrations/0042_repo_reviewers.sql +176 -0
- package/dist/db/migrations/0043_account_reviewers.sql +131 -0
- package/dist/db/migrations/0044_workspaces.sql +138 -0
- package/dist/db/migrations/0045_workspace_reviewers.sql +180 -0
- package/dist/db/migrations/0046_drop_inbox_watch.sql +25 -0
- package/dist/db/migrations/0047_ml_comment_labels.sql +40 -0
- package/dist/db/migrations/0048_ml_vendor_severity.sql +31 -0
- package/dist/db/migrations/0049_seat_pricing_repo_description.sql +21 -0
- package/dist/db/migrations/0050_users_app_slug.sql +12 -0
- package/dist/db/migrations/0051_auto_merge_queue.sql +17 -0
- package/dist/db/migrations/0052_trunk_ci_status_events.sql +43 -0
- package/dist/db/migrations/0053_automation_roles.sql +79 -0
- package/dist/db/migrations/0054_automation_vendor_kinds.sql +514 -0
- package/dist/db/migrations/0055_auto_merge_phase.sql +12 -0
- package/dist/db/migrations/0056_pr_mentions.sql +22 -0
- package/dist/db/migrations/0057_large_pr_threshold.sql +14 -0
- package/dist/db/migrations/0058_pending_mute.sql +53 -0
- package/dist/db/migrations/0059_merge_queue_state.sql +33 -0
- package/dist/db/migrations/0060_drop_my_turn_dismissals.sql +33 -0
- package/dist/db/migrations/0061_auto_merge_durable_anchors.sql +27 -0
- package/dist/db/migrations/0062_blast_radius_config.sql +21 -0
- package/dist/db/migrations/0063_repo_file_coupling.sql +33 -0
- package/dist/db/migrations/0064_pr_content_kind.sql +21 -0
- package/dist/db/migrations/0065_workspace_flow_settings.sql +13 -0
- package/dist/db/migrations/0066_review_request_events.sql +31 -0
- package/dist/db/migrations/0067_pr_security_signals.sql +86 -0
- package/dist/db/migrations/0068_my_turn_settings.sql +18 -0
- package/dist/db/migrations/0069_my_turn_dismissals.sql +41 -0
- package/dist/db/migrations/0070_claude_review_follow_up_ticket.sql +22 -0
- package/dist/db/migrations/0071_claude_review_trigger.sql +11 -0
- package/dist/db/migrations/0072_commit_message_headline.sql +13 -0
- package/dist/db/migrations/0073_claude_review_chat.sql +31 -0
- package/dist/db/migrations/0074_adopt_agentic_tables.sql +98 -0
- package/dist/db/migrations/0075_review_lens_drop_learnings.sql +15 -0
- package/dist/db/migrations/0076_claude_review_threads.sql +17 -0
- package/dist/db/migrations/0077_claude_review_ci_failures.sql +10 -0
- package/dist/db/migrations/0078_ai_fix_change_report.sql +17 -0
- package/dist/db/migrations/0079_claude_finding_story.sql +16 -0
- package/dist/db/migrations/meta/0000_snapshot.json +1116 -0
- package/dist/db/migrations/meta/0001_snapshot.json +1321 -0
- package/dist/db/migrations/meta/0002_snapshot.json +1375 -0
- package/dist/db/migrations/meta/0003_snapshot.json +1396 -0
- package/dist/db/migrations/meta/0004_snapshot.json +1416 -0
- package/dist/db/migrations/meta/0005_snapshot.json +1430 -0
- package/dist/db/migrations/meta/0006_snapshot.json +1745 -0
- package/dist/db/migrations/meta/0007_snapshot.json +1759 -0
- package/dist/db/migrations/meta/_journal.json +566 -0
- package/dist/db/migrations-pg/0000_tired_alex_power.sql +268 -0
- package/dist/db/migrations-pg/0001_dizzy_mockingbird.sql +3 -0
- package/dist/db/migrations-pg/0002_glorious_ikaris.sql +4 -0
- package/dist/db/migrations-pg/0003_melted_secret_warriors.sql +2 -0
- package/dist/db/migrations-pg/0004_numerous_triton.sql +1 -0
- package/dist/db/migrations-pg/0005_thick_blockbuster.sql +2 -0
- package/dist/db/migrations-pg/0006_majestic_dracula.sql +1 -0
- package/dist/db/migrations-pg/0007_same_human_torch.sql +2 -0
- package/dist/db/migrations-pg/0008_slimy_toxin.sql +1 -0
- package/dist/db/migrations-pg/0009_fuzzy_jubilee.sql +4 -0
- package/dist/db/migrations-pg/0010_late_hammerhead.sql +1 -0
- package/dist/db/migrations-pg/0011_happy_leech.sql +16 -0
- package/dist/db/migrations-pg/0012_woozy_captain_midlands.sql +16 -0
- package/dist/db/migrations-pg/0013_yielding_nicolaos.sql +1 -0
- package/dist/db/migrations-pg/0014_wakeful_bill_hollister.sql +2 -0
- package/dist/db/migrations-pg/0015_aspiring_black_tom.sql +1 -0
- package/dist/db/migrations-pg/0016_cute_ghost_rider.sql +30 -0
- package/dist/db/migrations-pg/0017_far_changeling.sql +24 -0
- package/dist/db/migrations-pg/0018_fancy_miss_america.sql +1 -0
- package/dist/db/migrations-pg/0019_benchmark_contributions.sql +22 -0
- package/dist/db/migrations-pg/0020_majestic_edwin_jarvis.sql +3 -0
- package/dist/db/migrations-pg/0021_green_salo.sql +1 -0
- package/dist/db/migrations-pg/0022_wise_baron_strucker.sql +1 -0
- package/dist/db/migrations-pg/0023_search_index.sql +19 -0
- package/dist/db/migrations-pg/0024_author_indexes.sql +9 -0
- package/dist/db/migrations-pg/0025_auto_merge_requests.sql +26 -0
- package/dist/db/migrations-pg/0026_branch_status.sql +32 -0
- package/dist/db/migrations-pg/0027_pr_review_decision.sql +5 -0
- package/dist/db/migrations-pg/0028_branch_commit_detail.sql +9 -0
- package/dist/db/migrations-pg/0029_repo_reviewers.sql +127 -0
- package/dist/db/migrations-pg/0030_account_reviewers.sql +77 -0
- package/dist/db/migrations-pg/0031_workspaces.sql +131 -0
- package/dist/db/migrations-pg/0032_workspace_reviewers.sql +165 -0
- package/dist/db/migrations-pg/0033_drop_inbox_watch.sql +14 -0
- package/dist/db/migrations-pg/0034_ml_comment_labels.sql +33 -0
- package/dist/db/migrations-pg/0035_ml_vendor_severity.sql +16 -0
- package/dist/db/migrations-pg/0036_seat_pricing_repo_description.sql +12 -0
- package/dist/db/migrations-pg/0037_users_app_slug.sql +9 -0
- package/dist/db/migrations-pg/0038_auto_merge_queue.sql +10 -0
- package/dist/db/migrations-pg/0039_trunk_ci_status_events.sql +27 -0
- package/dist/db/migrations-pg/0040_automation_roles.sql +63 -0
- package/dist/db/migrations-pg/0041_automation_vendor_kinds.sql +488 -0
- package/dist/db/migrations-pg/0042_auto_merge_phase.sql +8 -0
- package/dist/db/migrations-pg/0043_pr_mentions.sql +19 -0
- package/dist/db/migrations-pg/0044_large_pr_threshold.sql +6 -0
- package/dist/db/migrations-pg/0045_pending_mute.sql +26 -0
- package/dist/db/migrations-pg/0046_merge_queue_state.sql +18 -0
- package/dist/db/migrations-pg/0047_drop_my_turn_dismissals.sql +21 -0
- package/dist/db/migrations-pg/0048_auto_merge_durable_anchors.sql +27 -0
- package/dist/db/migrations-pg/0049_blast_radius_config.sql +8 -0
- package/dist/db/migrations-pg/0050_repo_file_coupling.sql +13 -0
- package/dist/db/migrations-pg/0051_pr_content_kind.sql +6 -0
- package/dist/db/migrations-pg/0052_workspace_flow_settings.sql +4 -0
- package/dist/db/migrations-pg/0053_review_request_events.sql +18 -0
- package/dist/db/migrations-pg/0054_pr_security_signals.sql +59 -0
- package/dist/db/migrations-pg/0055_my_turn_settings.sql +6 -0
- package/dist/db/migrations-pg/0056_my_turn_dismissals.sql +21 -0
- package/dist/db/migrations-pg/0057_claude_review_follow_up_ticket.sql +8 -0
- package/dist/db/migrations-pg/0058_claude_review_trigger.sql +4 -0
- package/dist/db/migrations-pg/0059_commit_message_headline.sql +3 -0
- package/dist/db/migrations-pg/0060_claude_review_chat.sql +24 -0
- package/dist/db/migrations-pg/0061_adopt_agentic_tables.sql +79 -0
- package/dist/db/migrations-pg/0062_review_lens_drop_learnings.sql +5 -0
- package/dist/db/migrations-pg/0063_claude_review_threads.sql +7 -0
- package/dist/db/migrations-pg/0064_claude_review_ci_failures.sql +4 -0
- package/dist/db/migrations-pg/0065_ai_fix_change_report.sql +9 -0
- package/dist/db/migrations-pg/0066_claude_finding_story.sql +7 -0
- package/dist/db/migrations-pg/meta/0000_snapshot.json +2137 -0
- package/dist/db/migrations-pg/meta/0001_snapshot.json +2143 -0
- package/dist/db/migrations-pg/meta/0002_snapshot.json +2170 -0
- package/dist/db/migrations-pg/meta/0003_snapshot.json +2182 -0
- package/dist/db/migrations-pg/meta/0004_snapshot.json +2188 -0
- package/dist/db/migrations-pg/meta/0005_snapshot.json +2201 -0
- package/dist/db/migrations-pg/meta/0006_snapshot.json +2207 -0
- package/dist/db/migrations-pg/meta/0007_snapshot.json +2219 -0
- package/dist/db/migrations-pg/meta/0008_snapshot.json +2226 -0
- package/dist/db/migrations-pg/meta/0009_snapshot.json +2250 -0
- package/dist/db/migrations-pg/meta/0010_snapshot.json +2256 -0
- package/dist/db/migrations-pg/meta/0011_snapshot.json +2412 -0
- package/dist/db/migrations-pg/meta/0012_snapshot.json +2528 -0
- package/dist/db/migrations-pg/meta/0013_snapshot.json +2534 -0
- package/dist/db/migrations-pg/meta/0014_snapshot.json +2547 -0
- package/dist/db/migrations-pg/meta/0015_snapshot.json +2553 -0
- package/dist/db/migrations-pg/meta/0016_snapshot.json +2774 -0
- package/dist/db/migrations-pg/meta/0017_snapshot.json +2999 -0
- package/dist/db/migrations-pg/meta/0018_snapshot.json +3020 -0
- package/dist/db/migrations-pg/meta/0020_snapshot.json +3228 -0
- package/dist/db/migrations-pg/meta/0021_snapshot.json +3234 -0
- package/dist/db/migrations-pg/meta/0022_snapshot.json +3240 -0
- package/dist/db/migrations-pg/meta/_journal.json +475 -0
- package/dist/db/ml-labels.js +1666 -0
- package/dist/db/my-turn-dismissals.js +343 -0
- package/dist/db/my-turn-settings.js +34 -0
- package/dist/db/pending-classify.js +46 -0
- package/dist/db/pending-mute.js +171 -0
- package/dist/db/pending-tabs.js +238 -0
- package/dist/db/period-metrics.js +820 -0
- package/dist/db/person-period.js +763 -0
- package/dist/db/pr-intervals.js +930 -0
- package/dist/db/pr-liveness.js +240 -0
- package/dist/db/pr-mentions.js +279 -0
- package/dist/db/pr-merge-queue-stamp.js +91 -0
- package/dist/db/queries.js +14631 -0
- package/dist/db/reaction-targets.js +94 -0
- package/dist/db/repo-activity.js +171 -0
- package/dist/db/retention.js +138 -0
- package/dist/db/review-threads-for-review.js +240 -0
- package/dist/db/run-migrations.js +24 -0
- package/dist/db/schema.pg.js +1220 -0
- package/dist/db/schema.sqlite.js +1801 -0
- package/dist/db/search.js +317 -0
- package/dist/db/security-alerts.js +218 -0
- package/dist/db/synthesis-input.js +565 -0
- package/dist/db/triage.js +320 -0
- package/dist/db/usage.js +63 -0
- package/dist/db/work-plan.js +1086 -0
- package/dist/db/working-hours.js +161 -0
- package/dist/feed/my-turn.js +122 -0
- package/dist/github/actions-logs.js +397 -0
- package/dist/github/auth.js +86 -0
- package/dist/github/branch-queries.js +229 -0
- package/dist/github/client.js +454 -0
- package/dist/github/codeowners.js +221 -0
- package/dist/github/commit-checks.js +105 -0
- package/dist/github/compare.js +110 -0
- package/dist/github/diff-anchor.js +227 -0
- package/dist/github/mutations.js +706 -0
- package/dist/github/pr-file-content.js +254 -0
- package/dist/github/pr-liveness.js +161 -0
- package/dist/github/queries.js +875 -0
- package/dist/github/rate-budget.js +129 -0
- package/dist/github/reactions.js +161 -0
- package/dist/github/reviewer-suggest.js +104 -0
- package/dist/github/team-reviewers.js +96 -0
- package/dist/index.js +184 -0
- package/dist/merge/auto-merge-runner.js +960 -0
- package/dist/ml/severity-client.js +218 -0
- package/dist/pr/detail-enricher.js +26 -0
- package/dist/pro/bind.js +302 -0
- package/dist/pro/contract.js +37 -0
- package/dist/pro/migrate.js +64 -0
- package/dist/review/agent-context.js +127 -0
- package/dist/review/agent.js +385 -0
- package/dist/review/agentic.js +59 -0
- package/dist/review/auth.js +94 -0
- package/dist/review/chat-agent.js +179 -0
- package/dist/review/claude-review/ai-ready.js +16 -0
- package/dist/review/claude-review/auto-settings.js +139 -0
- package/dist/review/claude-review/auto.js +244 -0
- package/dist/review/claude-review/chat.js +489 -0
- package/dist/review/claude-review/ci-failures.js +350 -0
- package/dist/review/claude-review/follow-up.js +310 -0
- package/dist/review/claude-review/manager.js +686 -0
- package/dist/review/claude-review/persist.js +996 -0
- package/dist/review/claude-review/prompts.js +357 -0
- package/dist/review/claude-review/routes.js +518 -0
- package/dist/review/claude-review/routing.js +61 -0
- package/dist/review/claude-review/specialists.js +190 -0
- package/dist/review/claude-review/threads.js +265 -0
- package/dist/review/claude-review/ticket.js +282 -0
- package/dist/review/clone-hygiene.js +380 -0
- package/dist/review/clone-manager.js +367 -0
- package/dist/review/llm.js +113 -0
- package/dist/review/model-options.js +48 -0
- package/dist/review/plugin-providers.js +12 -0
- package/dist/review/post-review.js +216 -0
- package/dist/review/post-seam.js +161 -0
- package/dist/review/prepare.js +168 -0
- package/dist/review/pricing.js +17 -0
- package/dist/review/schema.js +156 -0
- package/dist/review/submit-map.js +41 -0
- package/dist/review/usage.js +90 -0
- package/dist/shared/claude-review.js +335 -0
- package/dist/shared/conflict-fold.js +151 -0
- package/dist/shared/conflicts.js +30 -0
- package/dist/shared/flow-settings.js +191 -0
- package/dist/shared/index.js +8 -0
- package/dist/shared/my-turn-settings.js +238 -0
- package/dist/shared/pending-rules.js +281 -0
- package/dist/shared/product.js +54 -0
- package/dist/shared/types.js +896 -0
- package/dist/status.js +386 -0
- package/dist/sync/adaptive.js +185 -0
- package/dist/sync/app-attribution.js +66 -0
- package/dist/sync/auth-notices.js +36 -0
- package/dist/sync/backfill-ci-history.js +315 -0
- package/dist/sync/backfill-commit-headlines.js +136 -0
- package/dist/sync/backfill-pr-security.js +175 -0
- package/dist/sync/backfill-review-requests.js +97 -0
- package/dist/sync/benchmark-rollup.js +50 -0
- package/dist/sync/bot-detection.js +309 -0
- package/dist/sync/bot-resolution-markers.js +30 -0
- package/dist/sync/branch-status.js +634 -0
- package/dist/sync/classify-change-shape.js +150 -0
- package/dist/sync/commit-files.js +74 -0
- package/dist/sync/derive-thread-state.js +99 -0
- package/dist/sync/drain-review-threads.js +212 -0
- package/dist/sync/hydrate-detail.js +482 -0
- package/dist/sync/mention-scan.js +89 -0
- package/dist/sync/ml-enrichment.js +478 -0
- package/dist/sync/pr-change-signal.js +96 -0
- package/dist/sync/pr-liveness-sweep.js +139 -0
- package/dist/sync/pr-settle.js +381 -0
- package/dist/sync/refresh-pr.js +163 -0
- package/dist/sync/reparse-vendor-badges.js +495 -0
- package/dist/sync/resync-after-write.js +280 -0
- package/dist/sync/review-fingerprint.js +117 -0
- package/dist/sync/reviewer-behavior.js +103 -0
- package/dist/sync/reviewer-classify.js +503 -0
- package/dist/sync/routing-files.js +97 -0
- package/dist/sync/scheduled-jobs.js +12 -0
- package/dist/sync/scheduler.js +159 -0
- package/dist/sync/security-detect.js +521 -0
- package/dist/sync/sync-manager.js +750 -0
- package/dist/sync/sync-one-pr.js +205 -0
- package/dist/sync/sync-repo.js +400 -0
- package/dist/sync/unsettled-prs.js +506 -0
- package/dist/sync/upsert.js +1190 -0
- package/package.json +56 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/assets/AiFixTab-CQP6PT5u.js +2 -0
- package/public/assets/ClaudeReviewTab-DQJ-58ZA.js +8 -0
- package/public/assets/PrBotBehaviourTab-CCnFrWbC.js +1 -0
- package/public/assets/archivo-latin-600-BN-JkNrl.woff2 +0 -0
- package/public/assets/highlight-BEHUn5zE.css +10 -0
- package/public/assets/highlight-CIIZLa6Z.js +12 -0
- package/public/assets/index-BDnYs6zg.js +73 -0
- package/public/assets/index-mCuI--RC.css +1 -0
- package/public/assets/markdown-I_JLLVAZ.js +32 -0
- package/public/assets/perfProbe-Da13EhTE.js +1 -0
- package/public/assets/tanstack-5qsxxaLe.js +17 -0
- package/public/assets/vis-C3BCkP5U.js +1280 -0
- package/public/assets/vis-ziCVehMy.css +1 -0
- package/public/favicon-16.png +0 -0
- package/public/favicon-32.png +0 -0
- package/public/favicon-48.png +0 -0
- package/public/favicon.svg +5 -0
- package/public/index.html +41 -0
- package/public-landing/apple-touch-icon.png +0 -0
- package/public-landing/assets/archivo-latin-500-BWmvx2Mg.woff2 +0 -0
- package/public-landing/assets/archivo-latin-600-BN-JkNrl.woff2 +0 -0
- package/public-landing/assets/index-CA3eEGXO.js +40 -0
- package/public-landing/assets/index-naQrQ6Fe.css +1 -0
- package/public-landing/assets/jetbrains-mono-latin-400-RruCX7RW.woff2 +0 -0
- package/public-landing/assets/newsreader-latin-400-DExrRRrN.woff2 +0 -0
- package/public-landing/assets/newsreader-latin-400-italic-b0I-AwbV.woff2 +0 -0
- package/public-landing/bots/index.html +156 -0
- package/public-landing/contact/index.html +156 -0
- package/public-landing/cookies/index.html +156 -0
- package/public-landing/demo/limn-walkthrough-poster.jpg +0 -0
- package/public-landing/demo/limn-walkthrough.cues.json +44 -0
- package/public-landing/demo/limn-walkthrough.mp4 +0 -0
- package/public-landing/favicon-16.png +0 -0
- package/public-landing/favicon-32.png +0 -0
- package/public-landing/favicon-48.png +0 -0
- package/public-landing/favicon.svg +5 -0
- package/public-landing/features/index.html +156 -0
- package/public-landing/for-developers/index.html +156 -0
- package/public-landing/for-managers/index.html +156 -0
- package/public-landing/how-it-works/index.html +156 -0
- package/public-landing/how-we-measure/index.html +156 -0
- package/public-landing/icon-192.png +0 -0
- package/public-landing/icon-512.png +0 -0
- package/public-landing/index.html +156 -0
- package/public-landing/insights/index.html +156 -0
- package/public-landing/og-image.png +0 -0
- package/public-landing/pricing/index.html +156 -0
- package/public-landing/privacy/index.html +156 -0
- package/public-landing/pro/index.html +156 -0
- package/public-landing/reviews/index.html +156 -0
- package/public-landing/robots.txt +8 -0
- package/public-landing/shots/benchmark.png +0 -0
- package/public-landing/shots/bot-roi.png +0 -0
- package/public-landing/shots/bot-settings.png +0 -0
- package/public-landing/shots/chronology.png +0 -0
- package/public-landing/shots/feed.png +0 -0
- package/public-landing/shots/flow-metrics.png +0 -0
- package/public-landing/shots/free-reports.png +0 -0
- package/public-landing/shots/pending-board.png +0 -0
- package/public-landing/shots/pending-card.png +0 -0
- package/public-landing/shots/period-report.png +0 -0
- package/public-landing/shots/pr-detail.png +0 -0
- package/public-landing/shots/pr-threads.png +0 -0
- package/public-landing/shots/reach.png +0 -0
- package/public-landing/shots/repo-rows.png +0 -0
- package/public-landing/shots/severity-findings.png +0 -0
- package/public-landing/shots/severity-strip.png +0 -0
- package/public-landing/site.webmanifest +14 -0
- package/public-landing/sitemap.xml +51 -0
- package/public-landing/terms/index.html +156 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { execFile, execFileSync } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
const execFileAsync = promisify(execFile);
|
|
4
|
+
const NOT_AUTHED_MESSAGE = 'gh CLI not authenticated. Run `gh auth login` first, then restart the app.\n' +
|
|
5
|
+
'For org repos behind SSO you may also need:\n' +
|
|
6
|
+
' gh auth refresh -h github.com -s read:org';
|
|
7
|
+
// ---- Token cache ----
|
|
8
|
+
// `gh auth token` shells out to a child process that takes 50–300ms (longer when the OS
|
|
9
|
+
// keyring prompts or the token is being refreshed), and getAccessToken() calls it for the
|
|
10
|
+
// local account on EVERY request that needs a token: every PR-detail hydration, every repo
|
|
11
|
+
// search, every write action. Uncached and synchronous, that both forked a process per
|
|
12
|
+
// request and BLOCKED the event loop for its whole duration — so a burst of requests pinned
|
|
13
|
+
// the server at 100% CPU behind a queue of `gh` processes and the dashboard stopped
|
|
14
|
+
// responding.
|
|
15
|
+
//
|
|
16
|
+
// Caching is safe: local mode has exactly one account and one ambient gh session. The TTL is
|
|
17
|
+
// short so a `gh auth refresh` / re-login is picked up without restarting, and the in-flight
|
|
18
|
+
// promise collapses a concurrent burst into a single child process.
|
|
19
|
+
const TOKEN_TTL_MS = 5 * 60 * 1000;
|
|
20
|
+
let cached = null;
|
|
21
|
+
let inFlight = null;
|
|
22
|
+
/**
|
|
23
|
+
* The gh CLI token, cached with a short TTL. Prefer this everywhere on a request path — it
|
|
24
|
+
* never blocks the event loop.
|
|
25
|
+
*/
|
|
26
|
+
export async function getGithubTokenAsync() {
|
|
27
|
+
const now = Date.now();
|
|
28
|
+
if (cached && now - cached.at < TOKEN_TTL_MS)
|
|
29
|
+
return cached.token;
|
|
30
|
+
// A concurrent burst (e.g. the SPA opening several PRs at once) shares one `gh` invocation
|
|
31
|
+
// rather than forking one process each.
|
|
32
|
+
inFlight ??= (async () => {
|
|
33
|
+
try {
|
|
34
|
+
const { stdout } = await execFileAsync('gh', ['auth', 'token'], {
|
|
35
|
+
encoding: 'utf-8',
|
|
36
|
+
});
|
|
37
|
+
const token = stdout.trim();
|
|
38
|
+
if (!token)
|
|
39
|
+
throw new Error('empty token');
|
|
40
|
+
cached = { token, at: Date.now() };
|
|
41
|
+
return token;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
throw new Error(NOT_AUTHED_MESSAGE);
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
inFlight = null;
|
|
48
|
+
}
|
|
49
|
+
})();
|
|
50
|
+
return inFlight;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Synchronous variant. Kept for the STARTUP path (`cli.ts`'s pre-flight check and
|
|
54
|
+
* `ensureLocalAccount`) and for the few local-only helpers that are not on a request path,
|
|
55
|
+
* where blocking once is fine and threading async through would be churn for no gain.
|
|
56
|
+
* Shares the cache with the async form, so a request path that has already warmed it never
|
|
57
|
+
* forks a process here either.
|
|
58
|
+
*
|
|
59
|
+
* Do NOT call this from a request handler — use `getGithubTokenAsync`.
|
|
60
|
+
*/
|
|
61
|
+
export function getGithubToken() {
|
|
62
|
+
const now = Date.now();
|
|
63
|
+
if (cached && now - cached.at < TOKEN_TTL_MS)
|
|
64
|
+
return cached.token;
|
|
65
|
+
try {
|
|
66
|
+
const token = execFileSync('gh', ['auth', 'token'], {
|
|
67
|
+
encoding: 'utf-8',
|
|
68
|
+
}).trim();
|
|
69
|
+
if (!token)
|
|
70
|
+
throw new Error('empty token');
|
|
71
|
+
cached = { token, at: Date.now() };
|
|
72
|
+
return token;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
throw new Error(NOT_AUTHED_MESSAGE);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Drop the cached token. Call after GitHub rejects it with a 401 so the next request
|
|
80
|
+
* re-reads it from `gh` (which may have refreshed it) instead of retrying a dead token for
|
|
81
|
+
* up to the TTL.
|
|
82
|
+
*/
|
|
83
|
+
export function invalidateGithubToken() {
|
|
84
|
+
cached = null;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
// Default-branch ("is trunk green?") GraphQL.
|
|
2
|
+
//
|
|
3
|
+
// Deliberately its OWN file rather than an addition to `github/queries.ts`: that module is the
|
|
4
|
+
// PR-shaped activity walk (one fat query, lean-gated field interpolation, shared PR node
|
|
5
|
+
// fields), and this query shares none of it. Keeping them apart means a change to the trunk
|
|
6
|
+
// snapshot can never perturb the backfill's page shape.
|
|
7
|
+
//
|
|
8
|
+
// Cost: ~4 rate-limit points per repo per sync at the 100-commit window — still the whole point
|
|
9
|
+
// of asking for the commit history AND its per-commit rollup in a single round trip.
|
|
10
|
+
//
|
|
11
|
+
// Nullability, verified field-by-field against GitHub's published SDL (every one of these is a
|
|
12
|
+
// real runtime case, not defensive noise):
|
|
13
|
+
// • `Repository.defaultBranchRef` is nullable — an empty repo has no default branch.
|
|
14
|
+
// • `Ref.target` is nullable AND an interface (`GitObject`), so the `... on Commit` inline
|
|
15
|
+
// fragment is MANDATORY; a branch pointing at a tag object yields `{}` here.
|
|
16
|
+
// • `Commit.statusCheckRollup` is nullable — a commit no CI ever ran on. It IS defined on
|
|
17
|
+
// Commit directly (not only reachable via a PR).
|
|
18
|
+
// • `Commit.author` is a nullable `GitActor`, and its `user` is null whenever the commit's
|
|
19
|
+
// email maps to no GitHub account (the classic "committed from a laptop with a personal
|
|
20
|
+
// email" case) — so `author.name` is the only identity such a commit carries.
|
|
21
|
+
// • `Commit.associatedPullRequests` is a NON-NULL connection in the SDL, and so are its
|
|
22
|
+
// nodes' `number` / `merged` / `baseRefName` / `repository`. They are nonetheless typed
|
|
23
|
+
// optional below for one specific reason: `graphqlTolerant` (github/client.ts) hands back
|
|
24
|
+
// `err.data` on a PARTIAL GraphQL error, where forbidden fields arrive NULLED regardless of
|
|
25
|
+
// their declared nullability. Everything a partial response can null must be optional here,
|
|
26
|
+
// or the mapper would trust a field TypeScript merely believes is present. The connection's
|
|
27
|
+
// `nodes` elements are `[PullRequest]` — genuinely nullable even on a clean response.
|
|
28
|
+
//
|
|
29
|
+
// COST, and why this file is structured in two phases:
|
|
30
|
+
// GitHub scores a GraphQL call from the nodes its connection arguments request (multiply nested
|
|
31
|
+
// first/last down each path, sum, then ceil(total/100), min 1). Phase 1 below asks for
|
|
32
|
+
// history(first: 100) × associatedPullRequests(first: 3) = 100 + 300 = 400 nodes ⇒ FOUR points,
|
|
33
|
+
// which is what the "~4 points per repo per sync" promise above means (the widening from 20 to
|
|
34
|
+
// 100 — 80 nodes, one point — is an accepted cost; it feeds the branch-trends charts). Nesting
|
|
35
|
+
// `statusCheckRollup.contexts(first: 100)` under that history would be 100 + 100×100 = 10100
|
|
36
|
+
// nodes ⇒ ~102 points on EVERY walk of EVERY repo, green or red, on a call adaptive polling
|
|
37
|
+
// re-fires every 120s for a hot repo. So the failing-check DETAIL is a SECOND query
|
|
38
|
+
// (`buildCommitChecksQuery`) issued only for the commits whose rollup phase 1 already reported
|
|
39
|
+
// as failure/error/pending. A green trunk therefore costs exactly the phase-1 walk.
|
|
40
|
+
// One trunk-commit node, shared VERBATIM between the live snapshot query and the history
|
|
41
|
+
// backfill below — the two walks must store identical rows, so the selection is written once.
|
|
42
|
+
//
|
|
43
|
+
// On `associatedPullRequests`: first:3 rather than 1 because the connection has NO documented
|
|
44
|
+
// ordering, so first:1 would be a non-deterministic pick that could FLIP between syncs; and
|
|
45
|
+
// rather than 10 because 3 keeps the node budget described above at N + 3N (4 points at the
|
|
46
|
+
// 100-commit window, vs 11 for first:10). merged + baseRefName are the ranking inputs (see
|
|
47
|
+
// pickAssociatedPrNumber in sync/branch-status.ts); repository.nameWithOwner exists because
|
|
48
|
+
// this connection spans the repo NETWORK, so a fork's own PR can appear and its number would
|
|
49
|
+
// resolve against the WRONG repo at read time.
|
|
50
|
+
const BRANCH_COMMIT_FIELDS = /* GraphQL */ `
|
|
51
|
+
oid
|
|
52
|
+
messageHeadline
|
|
53
|
+
committedDate
|
|
54
|
+
statusCheckRollup {
|
|
55
|
+
state
|
|
56
|
+
}
|
|
57
|
+
author {
|
|
58
|
+
name
|
|
59
|
+
avatarUrl
|
|
60
|
+
user {
|
|
61
|
+
login
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
associatedPullRequests(first: 3) {
|
|
65
|
+
nodes {
|
|
66
|
+
number
|
|
67
|
+
merged
|
|
68
|
+
baseRefName
|
|
69
|
+
repository {
|
|
70
|
+
nameWithOwner
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
`;
|
|
75
|
+
// `StatusState` (SUCCESS | FAILURE | PENDING | ERROR | EXPECTED) is exactly the enum the
|
|
76
|
+
// existing PR rollup mapper already switches on, so the persist layer reuses that mapping
|
|
77
|
+
// rather than inventing a second vocabulary.
|
|
78
|
+
export const DEFAULT_BRANCH_QUERY = /* GraphQL */ `
|
|
79
|
+
query DefaultBranchStatus($owner: String!, $name: String!, $first: Int!) {
|
|
80
|
+
rateLimit {
|
|
81
|
+
cost
|
|
82
|
+
remaining
|
|
83
|
+
}
|
|
84
|
+
repository(owner: $owner, name: $name) {
|
|
85
|
+
defaultBranchRef {
|
|
86
|
+
name
|
|
87
|
+
target {
|
|
88
|
+
... on Commit {
|
|
89
|
+
oid
|
|
90
|
+
statusCheckRollup {
|
|
91
|
+
state
|
|
92
|
+
}
|
|
93
|
+
history(first: $first) {
|
|
94
|
+
nodes {
|
|
95
|
+
${BRANCH_COMMIT_FIELDS}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
`;
|
|
104
|
+
// The one-time HISTORY BACKFILL twin of the snapshot query: the same commit nodes, but
|
|
105
|
+
// paginated (`after`) and server-bounded to the trend window (`since` — GitTimestamp, filters
|
|
106
|
+
// on committer date). Same 4-points-per-page cost as the snapshot; the caller caps pages.
|
|
107
|
+
// `since` means an exhausted walk ends at the window edge with hasNextPage:false rather than
|
|
108
|
+
// crawling into ancient history.
|
|
109
|
+
export const DEFAULT_BRANCH_HISTORY_QUERY = /* GraphQL */ `
|
|
110
|
+
query DefaultBranchHistory(
|
|
111
|
+
$owner: String!
|
|
112
|
+
$name: String!
|
|
113
|
+
$first: Int!
|
|
114
|
+
$since: GitTimestamp!
|
|
115
|
+
$after: String
|
|
116
|
+
) {
|
|
117
|
+
rateLimit {
|
|
118
|
+
cost
|
|
119
|
+
remaining
|
|
120
|
+
}
|
|
121
|
+
repository(owner: $owner, name: $name) {
|
|
122
|
+
defaultBranchRef {
|
|
123
|
+
name
|
|
124
|
+
target {
|
|
125
|
+
... on Commit {
|
|
126
|
+
history(first: $first, since: $since, after: $after) {
|
|
127
|
+
pageInfo {
|
|
128
|
+
hasNextPage
|
|
129
|
+
endCursor
|
|
130
|
+
}
|
|
131
|
+
nodes {
|
|
132
|
+
${BRANCH_COMMIT_FIELDS}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
`;
|
|
141
|
+
// The failure-detail selection. `contexts` is a UNION (CheckRun | StatusContext), so both inline
|
|
142
|
+
// fragments are MANDATORY and `__typename` is what the mapper switches on — byte-identical to
|
|
143
|
+
// the PR walk's headCommit selection plus the workflow name.
|
|
144
|
+
//
|
|
145
|
+
// `first: 100` deliberately matches the PR walk. Do NOT lower it: `contexts` has no documented
|
|
146
|
+
// ordering that puts failures first, so a smaller page can return 100 green contexts on a commit
|
|
147
|
+
// whose rollup says FAILURE — i.e. an empty failures array on a red commit, a caret with nothing
|
|
148
|
+
// behind it. checkSuite/workflowRun/workflow are plain OBJECTS, not connections, so they add zero
|
|
149
|
+
// nodes and therefore zero rate-limit cost.
|
|
150
|
+
const COMMIT_CHECKS_SELECTION = /* GraphQL */ `
|
|
151
|
+
oid
|
|
152
|
+
statusCheckRollup {
|
|
153
|
+
state
|
|
154
|
+
contexts(first: 100) {
|
|
155
|
+
nodes {
|
|
156
|
+
__typename
|
|
157
|
+
... on CheckRun {
|
|
158
|
+
name
|
|
159
|
+
status
|
|
160
|
+
conclusion
|
|
161
|
+
detailsUrl
|
|
162
|
+
checkSuite {
|
|
163
|
+
workflowRun {
|
|
164
|
+
workflow {
|
|
165
|
+
name
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
... on StatusContext {
|
|
171
|
+
context
|
|
172
|
+
state
|
|
173
|
+
targetUrl
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
`;
|
|
179
|
+
// How many commits one phase-2 call will ask about. Most commits anyone ever expands are the
|
|
180
|
+
// newest few, and capping the alias count caps the worst case (a 100-commit all-red window) at
|
|
181
|
+
// ~10 points instead of ~100 — the pathological case is precisely the one where you don't need
|
|
182
|
+
// 100 carets to know trunk is broken.
|
|
183
|
+
export const COMMIT_CHECKS_ALIAS_CAP = 10;
|
|
184
|
+
/**
|
|
185
|
+
* One query with `count` aliased `repository.object(oid:)` lookups, each selecting that commit's
|
|
186
|
+
* check contexts.
|
|
187
|
+
*
|
|
188
|
+
* The shas ride as GraphQL VARIABLES (`$s0`…`$sN` of type `GitObjectID!`), never interpolated
|
|
189
|
+
* into the query text: the only generated part is the alias names, and those are INDEX-derived
|
|
190
|
+
* (`c0`, `c1`, …), never data-derived. Cost is `count` nodes for the objects plus 100 contexts
|
|
191
|
+
* each ⇒ ceil((count × 101)/100) ≈ `count` points, which is why the caller only ever passes the
|
|
192
|
+
* commits phase 1 already reported as non-green.
|
|
193
|
+
*/
|
|
194
|
+
export function buildCommitChecksQuery(count) {
|
|
195
|
+
const vars = Array.from({ length: count }, (_, i) => `$s${i}: GitObjectID!`).join(', ');
|
|
196
|
+
const aliases = Array.from({ length: count }, (_, i) => ` c${i}: object(oid: $s${i}) { ... on Commit { ${COMMIT_CHECKS_SELECTION} } }`).join('\n');
|
|
197
|
+
return `query CommitChecks($owner: String!, $name: String!, ${vars}) {
|
|
198
|
+
rateLimit {
|
|
199
|
+
cost
|
|
200
|
+
remaining
|
|
201
|
+
}
|
|
202
|
+
repository(owner: $owner, name: $name) {
|
|
203
|
+
${aliases}
|
|
204
|
+
}
|
|
205
|
+
}`;
|
|
206
|
+
}
|
|
207
|
+
// ---- Per-commit rollup STATE, in bulk (the PR CI-history backfill) ------------------------
|
|
208
|
+
//
|
|
209
|
+
// The state-only sibling of `buildCommitChecksQuery`: one aliased `object(oid:)` per sha,
|
|
210
|
+
// selecting nothing but the rollup state. No connection arguments anywhere in the selection, so
|
|
211
|
+
// the whole call costs ~1 rate-limit point regardless of alias count — which is what makes a
|
|
212
|
+
// 100-per-call cap affordable where the contexts query must stop at 10.
|
|
213
|
+
export const COMMIT_STATES_ALIAS_CAP = 100;
|
|
214
|
+
/** Same alias/variable discipline as `buildCommitChecksQuery`: index-derived alias names, shas as
|
|
215
|
+
* `GitObjectID!` variables, never interpolated into the query text. */
|
|
216
|
+
export function buildCommitStatesQuery(count) {
|
|
217
|
+
const vars = Array.from({ length: count }, (_, i) => `$s${i}: GitObjectID!`).join(', ');
|
|
218
|
+
const aliases = Array.from({ length: count }, (_, i) => ` c${i}: object(oid: $s${i}) { ... on Commit { oid statusCheckRollup { state } } }`).join('\n');
|
|
219
|
+
return `query CommitStates($owner: String!, $name: String!, ${vars}) {
|
|
220
|
+
rateLimit {
|
|
221
|
+
cost
|
|
222
|
+
remaining
|
|
223
|
+
}
|
|
224
|
+
repository(owner: $owner, name: $name) {
|
|
225
|
+
${aliases}
|
|
226
|
+
}
|
|
227
|
+
}`;
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=branch-queries.js.map
|