ensemble-review 0.0.0-stage → 1.0.35
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 +129 -0
- package/README.md +167 -2
- package/THIRD_PARTY_NOTICES.md +21 -0
- package/dist/ai/active-runtime.js +11 -0
- package/dist/ai/agent-isolation.js +51 -0
- package/dist/ai/auto-install.js +81 -0
- package/dist/ai/budget.js +394 -0
- package/dist/ai/check-tool.js +6 -0
- package/dist/ai/codex/app-server.js +449 -0
- package/dist/ai/codex/config.js +292 -0
- package/dist/ai/codex/detect.js +88 -0
- package/dist/ai/codex/entry.js +27 -0
- package/dist/ai/codex/events.js +290 -0
- package/dist/ai/codex/home.js +165 -0
- package/dist/ai/codex/hook-rule.js +171 -0
- package/dist/ai/codex/hook.js +199 -0
- package/dist/ai/codex/kinds/docs.js +10 -0
- package/dist/ai/codex/kinds/fix.js +5 -0
- package/dist/ai/codex/kinds/review.js +2 -0
- package/dist/ai/codex/kinds/story-build.js +2 -0
- package/dist/ai/codex/kinds/story-chat.js +2 -0
- package/dist/ai/codex/kinds/tickets.js +2 -0
- package/dist/ai/codex/linear-regex.js +539 -0
- package/dist/ai/codex/login.js +155 -0
- package/dist/ai/codex/path-guard-hook-main.js +59 -0
- package/dist/ai/codex/readings.js +148 -0
- package/dist/ai/codex/rollouts.js +146 -0
- package/dist/ai/codex/run.js +210 -0
- package/dist/ai/codex/specialists.js +140 -0
- package/dist/ai/codex/threads.js +359 -0
- package/dist/ai/codex/types.js +5 -0
- package/dist/ai/codex/workspace-files.js +470 -0
- package/dist/ai/codex/workspace-mcp-main.js +13 -0
- package/dist/ai/codex/workspace-mcp.js +160 -0
- package/dist/ai/credentials.js +224 -0
- package/dist/ai/effort.js +109 -0
- package/dist/ai/prompt-tools.js +57 -0
- package/dist/ai/provider-setting.js +176 -0
- package/dist/ai/provider-store.js +91 -0
- package/dist/ai/provider.js +70 -0
- package/dist/ai/providers/claude-activity.js +178 -0
- package/dist/ai/providers/claude-usage.js +162 -0
- package/dist/ai/providers/claude.js +587 -0
- package/dist/ai/providers/codex.js +707 -0
- package/dist/ai/result-schemas.js +152 -0
- package/dist/ai/run-choice.js +95 -0
- package/dist/ai/runtime-errors.js +16 -0
- package/dist/ai/runtime.js +1019 -0
- package/dist/ai/session-litter.js +231 -0
- package/dist/ai/usage-lockout.js +108 -0
- package/dist/ai/writing-rules.js +53 -0
- package/dist/api/plugins/auth.js +25 -0
- package/dist/api/plugins/error-handler.js +52 -0
- package/dist/api/plugins/rate-limit.js +1093 -0
- package/dist/api/plugins/security.js +241 -0
- package/dist/api/routes/activity.js +106 -0
- package/dist/api/routes/ai-budget.js +54 -0
- package/dist/api/routes/ai-codex.js +48 -0
- package/dist/api/routes/ai-provider.js +77 -0
- package/dist/api/routes/ai-runtime.js +76 -0
- package/dist/api/routes/ai-usage-report.js +49 -0
- package/dist/api/routes/auth.js +194 -0
- package/dist/api/routes/billing.js +209 -0
- package/dist/api/routes/bot-triage.js +992 -0
- package/dist/api/routes/claude-review.js +522 -0
- package/dist/api/routes/conflicts.js +745 -0
- package/dist/api/routes/contact.js +318 -0
- package/dist/api/routes/daily-brief.js +58 -0
- package/dist/api/routes/dependency-merge.js +163 -0
- package/dist/api/routes/feed.js +21 -0
- package/dist/api/routes/flow.js +73 -0
- package/dist/api/routes/health.js +7 -0
- package/dist/api/routes/inbox.js +45 -0
- package/dist/api/routes/insights.js +275 -0
- package/dist/api/routes/me.js +465 -0
- package/dist/api/routes/mentions.js +22 -0
- package/dist/api/routes/mergers.js +8 -0
- package/dist/api/routes/ml-labels.js +108 -0
- package/dist/api/routes/ml-runtime.js +64 -0
- package/dist/api/routes/open-prs.js +70 -0
- package/dist/api/routes/pr-refs.js +41 -0
- package/dist/api/routes/pr-tab-summaries.js +32 -0
- package/dist/api/routes/prs.js +1719 -0
- package/dist/api/routes/push-summaries.js +22 -0
- package/dist/api/routes/reactions.js +217 -0
- package/dist/api/routes/repos.js +570 -0
- package/dist/api/routes/sandbox-settings.js +188 -0
- package/dist/api/routes/search.js +46 -0
- package/dist/api/routes/sprint-stories.js +80 -0
- package/dist/api/routes/storage.js +9 -0
- package/dist/api/routes/teams.js +150 -0
- package/dist/api/routes/threads.js +119 -0
- package/dist/api/routes/timeline.js +151 -0
- package/dist/api/routes/users.js +67 -0
- package/dist/api/routes/webhooks.js +181 -0
- package/dist/api/routes/workspaces.js +493 -0
- package/dist/app.js +249 -0
- package/dist/ascii.js +19 -0
- package/dist/auth/account.js +358 -0
- package/dist/auth/crypto.js +45 -0
- package/dist/bot-triage/resolve.js +61 -0
- package/dist/cli.js +564 -0
- package/dist/coding/activity.js +80 -0
- package/dist/coding/agent.js +147 -0
- package/dist/coding/ai-fix/auto-fix-queue.js +351 -0
- package/dist/coding/ai-fix/auto-fix-routes.js +117 -0
- package/dist/coding/ai-fix/auto-fix.js +298 -0
- package/dist/coding/ai-fix/auto-push.js +146 -0
- package/dist/coding/ai-fix/cap-diff.js +45 -0
- package/dist/coding/ai-fix/checks-preview.js +58 -0
- package/dist/coding/ai-fix/comment-seed.js +519 -0
- package/dist/coding/ai-fix/manager.js +501 -0
- package/dist/coding/ai-fix/merge-host.js +61 -0
- package/dist/coding/ai-fix/merge-verify.js +240 -0
- package/dist/coding/ai-fix/persist.js +238 -0
- package/dist/coding/ai-fix/plan.js +65 -0
- package/dist/coding/ai-fix/pr-context.js +98 -0
- package/dist/coding/ai-fix/prompts.js +283 -0
- package/dist/coding/ai-fix/push-guard.js +17 -0
- package/dist/coding/ai-fix/push.js +132 -0
- package/dist/coding/ai-fix/review-seed.js +706 -0
- package/dist/coding/ai-fix/routes.js +680 -0
- package/dist/coding/ai-fix/start-queue.js +158 -0
- package/dist/coding/ai-fix/stream.js +31 -0
- package/dist/coding/ai-fix/thread-candidates.js +77 -0
- package/dist/coding/ai-resolve/prompt.js +161 -0
- package/dist/coding/ai-resolve/routes.js +97 -0
- package/dist/coding/ai-resolve/run.js +343 -0
- package/dist/coding/ai-resolve/schema.js +26 -0
- package/dist/coding/ai-resolve/validate.js +136 -0
- package/dist/coding/checks/deny-scan.js +75 -0
- package/dist/coding/checks/discover.js +541 -0
- package/dist/coding/checks/docker.js +38 -0
- package/dist/coding/checks/env.js +88 -0
- package/dist/coding/checks/hooks.js +91 -0
- package/dist/coding/checks/index.js +8 -0
- package/dist/coding/checks/local.js +40 -0
- package/dist/coding/checks/sandbox.js +206 -0
- package/dist/coding/checks/session.js +518 -0
- package/dist/coding/checks/spawn.js +123 -0
- package/dist/coding/checks/spec.js +140 -0
- package/dist/coding/checks/types.js +6 -0
- package/dist/coding/git-ops.js +537 -0
- package/dist/coding/git.js +197 -0
- package/dist/coding/merge.js +272 -0
- package/dist/coding/partial-spend.js +19 -0
- package/dist/coding/safe-path.js +75 -0
- package/dist/coding/schema.js +43 -0
- package/dist/coding/story-build/auto-push.js +182 -0
- package/dist/coding/story-build/base-refs.js +158 -0
- package/dist/coding/story-build/build-claim-flow.js +324 -0
- package/dist/coding/story-build/build-claim-github.js +126 -0
- package/dist/coding/story-build/build-claim-ledger.js +122 -0
- package/dist/coding/story-build/build-claim-release.js +249 -0
- package/dist/coding/story-build/build-claim.js +153 -0
- package/dist/coding/story-build/build-prompts.js +178 -0
- package/dist/coding/story-build/build.js +332 -0
- package/dist/coding/story-build/candidates.js +74 -0
- package/dist/coding/story-build/checkouts.js +66 -0
- package/dist/coding/story-build/coverage.js +39 -0
- package/dist/coding/story-build/docs-runner.js +178 -0
- package/dist/coding/story-build/docs.js +334 -0
- package/dist/coding/story-build/end-to-end.js +305 -0
- package/dist/coding/story-build/inputs.js +106 -0
- package/dist/coding/story-build/kept-worktree.js +16 -0
- package/dist/coding/story-build/legacy.js +95 -0
- package/dist/coding/story-build/limits.js +22 -0
- package/dist/coding/story-build/loop/branch-review.js +128 -0
- package/dist/coding/story-build/loop/driver.js +1256 -0
- package/dist/coding/story-build/loop/persist.js +200 -0
- package/dist/coding/story-build/loop/pr-body.js +34 -0
- package/dist/coding/story-build/loop/pr-facts.js +75 -0
- package/dist/coding/story-build/loop/review-lines.js +103 -0
- package/dist/coding/story-build/loop/review-on-pr.js +67 -0
- package/dist/coding/story-build/loop/routes.js +119 -0
- package/dist/coding/story-build/loop/seams.js +104 -0
- package/dist/coding/story-build/loop/seed.js +122 -0
- package/dist/coding/story-build/loop/story-check.js +166 -0
- package/dist/coding/story-build/loop/targets.js +104 -0
- package/dist/coding/story-build/loop/wire.js +372 -0
- package/dist/coding/story-build/manager.js +999 -0
- package/dist/coding/story-build/persist.js +301 -0
- package/dist/coding/story-build/plan-agent.js +190 -0
- package/dist/coding/story-build/plan-blobs.js +47 -0
- package/dist/coding/story-build/plan-persist.js +258 -0
- package/dist/coding/story-build/plan-verify.js +281 -0
- package/dist/coding/story-build/plan.js +338 -0
- package/dist/coding/story-build/prompts.js +147 -0
- package/dist/coding/story-build/push-stack.js +361 -0
- package/dist/coding/story-build/push.js +407 -0
- package/dist/coding/story-build/routes-build.js +265 -0
- package/dist/coding/story-build/routes-docs.js +113 -0
- package/dist/coding/story-build/routes.js +295 -0
- package/dist/coding/story-build/schema.js +53 -0
- package/dist/coding/story-build/seams.js +2 -0
- package/dist/coding/story-build/stack-verify.js +273 -0
- package/dist/config.js +548 -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 +684 -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 +150 -0
- package/dist/db/actor-lanes.js +223 -0
- package/dist/db/ai-reviews-seen.js +180 -0
- package/dist/db/ai-usage-report.js +610 -0
- package/dist/db/auto-retry-at-head.js +39 -0
- package/dist/db/automation-ids.js +97 -0
- package/dist/db/automation-output.js +349 -0
- package/dist/db/blast-radius-query.js +56 -0
- package/dist/db/blast-radius.js +226 -0
- package/dist/db/bot-dormancy.js +107 -0
- package/dist/db/bot-overlap.js +586 -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 +78 -0
- package/dist/db/ci-review-prune.js +22 -0
- package/dist/db/claude-review-seen.js +36 -0
- package/dist/db/cleanup.js +36 -0
- package/dist/db/client.js +91 -0
- package/dist/db/code-loc.js +392 -0
- package/dist/db/credits.js +79 -0
- package/dist/db/daily-brief.js +403 -0
- package/dist/db/dependency-cards.js +145 -0
- package/dist/db/erase-account.js +570 -0
- package/dist/db/export-account.js +540 -0
- package/dist/db/external-repos.js +281 -0
- package/dist/db/failing-checks.js +124 -0
- package/dist/db/feature-gates.js +80 -0
- package/dist/db/file-coupling.js +197 -0
- package/dist/db/flaky-checks.js +148 -0
- package/dist/db/flow-detail.js +706 -0
- package/dist/db/flow-pointers.js +209 -0
- package/dist/db/flow-settings.js +125 -0
- package/dist/db/flow-trend.js +585 -0
- package/dist/db/forecast.js +114 -0
- package/dist/db/instance-id.js +38 -0
- package/dist/db/limn-actions.js +343 -0
- package/dist/db/limn-bots.js +575 -0
- package/dist/db/limn-discharged-requests.js +69 -0
- package/dist/db/limn-finding-labels.js +173 -0
- package/dist/db/limn-finding-severity.js +142 -0
- package/dist/db/limn-history-backfill.js +625 -0
- package/dist/db/line-overlap.js +81 -0
- package/dist/db/merge-queue.js +193 -0
- package/dist/db/merged-prs.js +50 -0
- package/dist/db/merged-reach.js +83 -0
- package/dist/db/migrate.js +15 -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/0080_ticket_reviews.sql +88 -0
- package/dist/db/migrations/0081_review_request_requester.sql +22 -0
- package/dist/db/migrations/0082_ci_reviews.sql +73 -0
- package/dist/db/migrations/0083_workspace_auto_fix.sql +9 -0
- package/dist/db/migrations/0084_auto_fix_off_by_default.sql +7 -0
- package/dist/db/migrations/0085_auto_review_daily_cap.sql +6 -0
- package/dist/db/migrations/0086_ticket_review_pr_cards.sql +24 -0
- package/dist/db/migrations/0087_auto_post.sql +21 -0
- package/dist/db/migrations/0088_issue_tracker.sql +109 -0
- package/dist/db/migrations/0089_github_issue_links.sql +18 -0
- package/dist/db/migrations/0090_linear_links.sql +22 -0
- package/dist/db/migrations/0091_auto_post_verdict_resolve_fix.sql +24 -0
- package/dist/db/migrations/0092_finding_pushback.sql +9 -0
- package/dist/db/migrations/0093_dependency_auto_merge.sql +25 -0
- package/dist/db/migrations/0094_repo_uses_github_issues.sql +26 -0
- package/dist/db/migrations/0095_review_chat_explain.sql +14 -0
- package/dist/db/migrations/0096_workspace_setting_events.sql +27 -0
- package/dist/db/migrations/0097_story_reports.sql +40 -0
- package/dist/db/migrations/0098_tracker_ticket_dates.sql +11 -0
- package/dist/db/migrations/0099_story_labels.sql +29 -0
- package/dist/db/migrations/0100_sprint_stories.sql +141 -0
- package/dist/db/migrations/0101_sprint_reads_api_root.sql +6 -0
- package/dist/db/migrations/0102_workspace_sprint_checks.sql +5 -0
- package/dist/db/migrations/0103_sprint_statuses_and_blockers.sql +26 -0
- package/dist/db/migrations/0104_sprint_ticket_repos_saved.sql +7 -0
- package/dist/db/migrations/0105_sprint_assessment_mode.sql +8 -0
- package/dist/db/migrations/0106_sprint_ref_tickets.sql +27 -0
- package/dist/db/migrations/0107_sprint_graph.sql +47 -0
- package/dist/db/migrations/0108_sprint_themes.sql +24 -0
- package/dist/db/migrations/0109_sprint_story.sql +23 -0
- package/dist/db/migrations/0110_finding_reminder.sql +7 -0
- package/dist/db/migrations/0111_sprint_dates_story_attempt.sql +19 -0
- package/dist/db/migrations/0112_sprint_view_snapshots.sql +20 -0
- package/dist/db/migrations/0113_ai_fix_plan.sql +27 -0
- package/dist/db/migrations/0114_sonarcloud.sql +42 -0
- package/dist/db/migrations/0115_sequence_diagrams.sql +40 -0
- package/dist/db/migrations/0116_reference_docs.sql +64 -0
- package/dist/db/migrations/0117_review_doc_references.sql +11 -0
- package/dist/db/migrations/0118_sequence_diagram_runs.sql +10 -0
- package/dist/db/migrations/0119_design_diagrams.sql +7 -0
- package/dist/db/migrations/0120_sprint_paths.sql +33 -0
- package/dist/db/migrations/0121_story_docs_alignments.sql +42 -0
- package/dist/db/migrations/0122_claude_thread_checks.sql +42 -0
- package/dist/db/migrations/0123_sprint_brief_one_liner.sql +5 -0
- package/dist/db/migrations/0124_reference_doc_crawl.sql +8 -0
- package/dist/db/migrations/0125_account_ai_budget.sql +10 -0
- package/dist/db/migrations/0126_workspace_auto_diagrams.sql +8 -0
- package/dist/db/migrations/0127_ai_usage_provider.sql +11 -0
- package/dist/db/migrations/0128_ai_provider_labels.sql +44 -0
- package/dist/db/migrations/0129_cheap_run_provider.sql +10 -0
- package/dist/db/migrations/0130_ai_effort.sql +13 -0
- package/dist/db/migrations/0131_related_repos.sql +23 -0
- package/dist/db/migrations/0132_sprint_code_judgements.sql +24 -0
- package/dist/db/migrations/0133_review_fresh.sql +4 -0
- package/dist/db/migrations/0134_team_claims.sql +10 -0
- package/dist/db/migrations/0135_review_pairs.sql +12 -0
- package/dist/db/migrations/0136_review_kind.sql +5 -0
- package/dist/db/migrations/0137_review_pair_consolidation.sql +8 -0
- package/dist/db/migrations/0138_team_claim_lines.sql +55 -0
- package/dist/db/migrations/0139_instance_meta.sql +8 -0
- package/dist/db/migrations/0140_reference_doc_wiki.sql +62 -0
- package/dist/db/migrations/0141_tracker_ticket_comments.sql +20 -0
- package/dist/db/migrations/0142_ticket_review_comments_seen.sql +4 -0
- package/dist/db/migrations/0143_reference_doc_figures.sql +25 -0
- package/dist/db/migrations/0144_workspace_tracker_notion.sql +3 -0
- package/dist/db/migrations/0145_verdict_strictness.sql +14 -0
- package/dist/db/migrations/0146_worktree_ledger.sql +30 -0
- package/dist/db/migrations/0147_dependency_automation.sql +41 -0
- package/dist/db/migrations/0148_ai_fix_checks.sql +5 -0
- package/dist/db/migrations/0149_story_builds.sql +116 -0
- package/dist/db/migrations/0150_review_coverage.sql +5 -0
- package/dist/db/migrations/0151_limn_finding_bots.sql +10 -0
- package/dist/db/migrations/0152_reference_doc_chunks.sql +45 -0
- package/dist/db/migrations/0153_feature_visibility.sql +16 -0
- package/dist/db/migrations/0154_first_landing.sql +15 -0
- package/dist/db/migrations/0155_repo_docs_offers.sql +36 -0
- package/dist/db/migrations/0156_ci_history_pending.sql +9 -0
- package/dist/db/migrations/0157_sprint_source_probe.sql +17 -0
- package/dist/db/migrations/0158_repo_docs_unreadable.sql +12 -0
- package/dist/db/migrations/0159_team_claims_default_on.sql +21 -0
- package/dist/db/migrations/0160_teammate_reviews.sql +21 -0
- package/dist/db/migrations/0161_review_post_on_finish.sql +7 -0
- package/dist/db/migrations/0162_dependency_ai_fix.sql +12 -0
- package/dist/db/migrations/0163_pr_cross_repository.sql +5 -0
- package/dist/db/migrations/0164_teammate_block_lift.sql +7 -0
- package/dist/db/migrations/0165_withdraw_approval_on_push.sql +6 -0
- package/dist/db/migrations/0166_team_claim_skip_lines.sql +20 -0
- package/dist/db/migrations/0167_ai_reviews_seen.sql +4 -0
- package/dist/db/migrations/0168_ai_review_seen_per_run.sql +12 -0
- package/dist/db/migrations/0169_approved_merged_since.sql +6 -0
- package/dist/db/migrations/0170_claude_still_open_posts.sql +35 -0
- package/dist/db/migrations/0171_open_points.sql +25 -0
- package/dist/db/migrations/0172_push_summaries.sql +12 -0
- package/dist/db/migrations/0173_sandbox_allowed_hosts.sql +17 -0
- package/dist/db/migrations/0174_sandbox_workspace_settings.sql +25 -0
- package/dist/db/migrations/0175_sandbox_services.sql +7 -0
- package/dist/db/migrations/0176_sandbox_sessions.sql +36 -0
- package/dist/db/migrations/0177_ai_fix_sessions.sql +30 -0
- package/dist/db/migrations/0178_ai_fix_merge.sql +12 -0
- package/dist/db/migrations/0179_story_build_plans.sql +97 -0
- package/dist/db/migrations/0180_limn_actions.sql +63 -0
- package/dist/db/migrations/0181_workspace_flow_view.sql +9 -0
- package/dist/db/migrations/0182_ticket_auto_clock.sql +24 -0
- package/dist/db/migrations/0183_review_dismissals.sql +14 -0
- package/dist/db/migrations/0184_ai_use_api_key.sql +5 -0
- package/dist/db/migrations/0185_story_build_auto_push.sql +19 -0
- package/dist/db/migrations/0186_story_build_review_loop.sql +185 -0
- package/dist/db/migrations/0187_story_build_auto_approve.sql +14 -0
- package/dist/db/migrations/0188_workspace_repo_external.sql +7 -0
- package/dist/db/migrations/0189_story_build_end_to_end.sql +12 -0
- package/dist/db/migrations/0190_ai_fix_push_when_done.sql +5 -0
- package/dist/db/migrations/0191_workspace_external_repos.sql +21 -0
- package/dist/db/migrations/0192_story_chats.sql +41 -0
- package/dist/db/migrations/0193_dependency_automation_on.sql +50 -0
- package/dist/db/migrations/0194_story_build_claims.sql +38 -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 +1371 -0
- package/dist/db/ml-labels.js +1692 -0
- package/dist/db/my-turn-card-facts.js +398 -0
- package/dist/db/my-turn-dismissals.js +290 -0
- package/dist/db/my-turn-floor.js +18 -0
- package/dist/db/my-turn-pushed-since.js +78 -0
- package/dist/db/my-turn-settings.js +34 -0
- package/dist/db/pending-classify.js +46 -0
- package/dist/db/pending-first-landing.js +179 -0
- package/dist/db/pending-mute.js +171 -0
- package/dist/db/pending-tabs.js +356 -0
- package/dist/db/period-metrics.js +791 -0
- package/dist/db/person-period.js +763 -0
- package/dist/db/pr-chips.js +32 -0
- package/dist/db/pr-criteria.js +110 -0
- package/dist/db/pr-intervals.js +1034 -0
- package/dist/db/pr-liveness.js +256 -0
- package/dist/db/pr-mentions.js +279 -0
- package/dist/db/pr-merge-queue-stamp.js +91 -0
- package/dist/db/pr-refs.js +64 -0
- package/dist/db/pr-stacks.js +151 -0
- package/dist/db/pr-tab-summaries.js +66 -0
- package/dist/db/push-summaries.js +49 -0
- package/dist/db/queries.js +13906 -0
- package/dist/db/reaction-targets.js +94 -0
- package/dist/db/related-repos.js +128 -0
- package/dist/db/repo-activity.js +164 -0
- package/dist/db/reporting-window.js +56 -0
- package/dist/db/retention.js +173 -0
- package/dist/db/review-threads-for-review.js +493 -0
- package/dist/db/review-waits.js +136 -0
- package/dist/db/run-migrations.js +9 -0
- package/dist/db/sandbox-allowed-hosts.js +48 -0
- package/dist/db/sandbox-settings.js +180 -0
- package/dist/db/schema.js +321 -0
- package/dist/db/schema.pg.js +2197 -0
- package/dist/db/schema.sqlite.js +4856 -0
- package/dist/db/search.js +419 -0
- package/dist/db/security-alerts.js +218 -0
- package/dist/db/sequence-diagram-prune.js +54 -0
- package/dist/db/setting-event-write.js +29 -0
- package/dist/db/sprint-briefs.js +169 -0
- package/dist/db/sprint-builds.js +72 -0
- package/dist/db/sprint-code-judgements.js +100 -0
- package/dist/db/sprint-graph-fold.js +223 -0
- package/dist/db/sprint-graph.js +529 -0
- package/dist/db/sprint-pass-flights.js +22 -0
- package/dist/db/sprint-paths.js +481 -0
- package/dist/db/sprint-repo-suggest.js +257 -0
- package/dist/db/sprint-signals.js +276 -0
- package/dist/db/sprint-status-layout.js +443 -0
- package/dist/db/sprint-status-settings.js +261 -0
- package/dist/db/sprint-store.js +106 -0
- package/dist/db/sprint-stories.js +42 -0
- package/dist/db/sprint-story.js +505 -0
- package/dist/db/sprint-themes.js +121 -0
- package/dist/db/sprint-ticket-checks.js +171 -0
- package/dist/db/sprint-ticket-repos.js +195 -0
- package/dist/db/still-open-threads.js +68 -0
- package/dist/db/stories.js +310 -0
- package/dist/db/story-criteria.js +175 -0
- package/dist/db/story-health-fold.js +21 -0
- package/dist/db/story-health.js +219 -0
- package/dist/db/story-issue-input.js +155 -0
- package/dist/db/story-label-input.js +51 -0
- package/dist/db/story-selection.js +270 -0
- package/dist/db/synthesis-input.js +219 -0
- package/dist/db/team-claim-lines-delete.js +33 -0
- package/dist/db/team-comparison.js +124 -0
- package/dist/db/teammate-reviews-import.js +300 -0
- package/dist/db/teammate-reviews.js +235 -0
- package/dist/db/teammate-verdict-pickup.js +88 -0
- package/dist/db/teammate-verdict-wait.js +90 -0
- package/dist/db/ticket-comments-prune.js +20 -0
- package/dist/db/ticket-review-prune.js +51 -0
- package/dist/db/triage.js +316 -0
- package/dist/db/true-author.js +26 -0
- package/dist/db/usage.js +69 -0
- package/dist/db/work-plan.js +717 -0
- package/dist/db/working-hours.js +190 -0
- package/dist/db/workspace-comparison.js +98 -0
- package/dist/db/workspace-setting-events.js +52 -0
- package/dist/env-name.js +68 -0
- package/dist/feed/fyi-provider.js +10 -0
- package/dist/feed/my-turn.js +149 -0
- package/dist/github/actions-logs.js +397 -0
- package/dist/github/auth.js +86 -0
- package/dist/github/branch-queries.js +243 -0
- package/dist/github/check-context-state.js +42 -0
- package/dist/github/client.js +441 -0
- package/dist/github/codeowners.js +221 -0
- package/dist/github/commit-checks.js +116 -0
- package/dist/github/compare.js +110 -0
- package/dist/github/diff-anchor.js +227 -0
- package/dist/github/local-user.js +92 -0
- package/dist/github/mutations.js +1005 -0
- package/dist/github/pr-file-content.js +254 -0
- package/dist/github/pr-liveness.js +161 -0
- package/dist/github/queries.js +961 -0
- package/dist/github/rate-budget.js +144 -0
- package/dist/github/reactions.js +161 -0
- package/dist/github/repo-files.js +26 -0
- package/dist/github/reviewer-suggest.js +104 -0
- package/dist/github/settle-query.js +93 -0
- package/dist/github/team-reviewers.js +96 -0
- package/dist/github/write-origin.js +111 -0
- package/dist/index.js +333 -0
- package/dist/instance-lock.js +170 -0
- package/dist/merge/arm-intent.js +88 -0
- package/dist/merge/auto-merge-runner.js +1146 -0
- package/dist/merge/dependency-automation.js +1208 -0
- package/dist/merge/dependency-policy.js +429 -0
- package/dist/merge/dependency-rules.js +302 -0
- package/dist/merge/deps-claim-ledger.js +134 -0
- package/dist/merge/deps-claim-release.js +278 -0
- package/dist/merge/deps-claim.js +633 -0
- package/dist/ml/blake2b.js +142 -0
- package/dist/ml/decode.js +121 -0
- package/dist/ml/local-scorer.js +183 -0
- package/dist/ml/markers.js +770 -0
- package/dist/ml/model.js +88 -0
- package/dist/ml/onnx-head.js +129 -0
- package/dist/ml/power.js +59 -0
- package/dist/ml/runtime.js +378 -0
- package/dist/ml/scorer-process.js +44 -0
- package/dist/ml/scorer.js +107 -0
- package/dist/ml/severity-client.js +218 -0
- package/dist/ml/throttle.js +34 -0
- package/dist/ml/worker.js +31 -0
- package/dist/platform/activity-digest/schema.sqlite.js +33 -0
- package/dist/platform/advisor/discovery/tier2.js +88 -0
- package/dist/platform/advisor/discovery/tier3.js +57 -0
- package/dist/platform/advisor/emitters/adapter.js +5 -0
- package/dist/platform/advisor/emitters/coderabbit.js +175 -0
- package/dist/platform/advisor/emitters/copilot-prose.js +118 -0
- package/dist/platform/advisor/emitters/greptile.js +176 -0
- package/dist/platform/advisor/emitters/lint.js +37 -0
- package/dist/platform/advisor/emitters/manifest.js +239 -0
- package/dist/platform/advisor/emitters/prose.js +183 -0
- package/dist/platform/advisor/emitters/registry.js +20 -0
- package/dist/platform/advisor/emitters/yaml-doc.js +95 -0
- package/dist/platform/advisor/evidence.js +79 -0
- package/dist/platform/advisor/findings.js +15 -0
- package/dist/platform/advisor/intents.js +269 -0
- package/dist/platform/advisor/measure/effect.js +18 -0
- package/dist/platform/advisor/outputs/brief.js +68 -0
- package/dist/platform/advisor/outputs/config-pr.js +156 -0
- package/dist/platform/advisor/refine/diff-guard.js +38 -0
- package/dist/platform/advisor/refine/refine.js +35 -0
- package/dist/platform/advisor/retro-check.js +98 -0
- package/dist/platform/advisor/routes.js +648 -0
- package/dist/platform/advisor/schema.sqlite.js +107 -0
- package/dist/platform/advisor/store.js +321 -0
- package/dist/platform/advisor/taxonomy.js +67 -0
- package/dist/platform/ai-fix/schema.sqlite.js +32 -0
- package/dist/platform/annotations/prompts.js +84 -0
- package/dist/platform/annotations/routes.js +86 -0
- package/dist/platform/annotations/runner.js +234 -0
- package/dist/platform/annotations/schema.sqlite.js +60 -0
- package/dist/platform/annotations/targets.js +203 -0
- package/dist/platform/bot-themes/build.js +222 -0
- package/dist/platform/bot-themes/prompt.js +220 -0
- package/dist/platform/bot-themes/routes.js +313 -0
- package/dist/platform/bot-themes/schema.sqlite.js +39 -0
- package/dist/platform/bots/behaviour-routes.js +65 -0
- package/dist/platform/bots/benchmark/anomalies.js +140 -0
- package/dist/platform/bots/benchmark/artifact.js +214 -0
- package/dist/platform/bots/benchmark/collect.js +571 -0
- package/dist/platform/bots/benchmark/cost.js +658 -0
- package/dist/platform/bots/benchmark/fold.js +513 -0
- package/dist/platform/bots/benchmark/map.js +374 -0
- package/dist/platform/bots/benchmark/percentile.js +101 -0
- package/dist/platform/bots/benchmark/place.js +184 -0
- package/dist/platform/bots/benchmark/placement-routes.js +742 -0
- package/dist/platform/bots/benchmark/rollup.js +670 -0
- package/dist/platform/bots/benchmark-routes.js +153 -0
- package/dist/platform/context.js +193 -0
- package/dist/platform/contract.js +2 -0
- package/dist/platform/data/benchmark/benchmark-fit.json +1 -0
- package/dist/platform/db.js +51 -0
- package/dist/platform/event-hooks.js +49 -0
- package/dist/platform/flow-pointers/hash.js +89 -0
- package/dist/platform/flow-pointers/prompt.js +244 -0
- package/dist/platform/flow-pointers/routes.js +283 -0
- package/dist/platform/flow-pointers/schema.sqlite.js +44 -0
- package/dist/platform/human-themes/schema.sqlite.js +32 -0
- package/dist/platform/index.js +75 -0
- package/dist/platform/insights/grounded-figures.js +162 -0
- package/dist/platform/insights/period-questions.js +235 -0
- package/dist/platform/insights/period-report.js +388 -0
- package/dist/platform/insights/period-routes.js +53 -0
- package/dist/platform/insights/period-schema.sqlite.js +117 -0
- package/dist/platform/insights/pr-refs.js +107 -0
- package/dist/platform/insights/pr-token.js +22 -0
- package/dist/platform/insights/routes.js +70 -0
- package/dist/platform/insights/schema.sqlite.js +125 -0
- package/dist/platform/insights/sprint-report.js +627 -0
- package/dist/platform/insights/workspace-request.js +64 -0
- package/dist/platform/insights/workspace-scope.js +77 -0
- package/dist/platform/llm/gate.js +22 -0
- package/dist/platform/llm/seam.js +58 -0
- package/dist/platform/migrate.js +15 -0
- package/dist/platform/migration-files.js +36 -0
- package/dist/platform/migrations/0001_init.sql +23 -0
- package/dist/platform/migrations/0002_ai_fix.sql +25 -0
- package/dist/platform/migrations/0003_ai_fix_resolve.sql +19 -0
- package/dist/platform/migrations/0004_sprint_report.sql +19 -0
- package/dist/platform/migrations/0005_pro_settings.sql +26 -0
- package/dist/platform/migrations/0006_issue_project_keys.sql +7 -0
- package/dist/platform/migrations/0007_comparison_mode.sql +8 -0
- package/dist/platform/migrations/0008_retro_report.sql +19 -0
- package/dist/platform/migrations/0009_bot_settings.sql +17 -0
- package/dist/platform/migrations/0010_team_scope.sql +33 -0
- package/dist/platform/migrations/0011_comment_assess.sql +22 -0
- package/dist/platform/migrations/0012_resolution_check.sql +23 -0
- package/dist/platform/migrations/0013_pinned_prompts.sql +19 -0
- package/dist/platform/migrations/0014_bot_themes.sql +24 -0
- package/dist/platform/migrations/0015_human_themes.sql +23 -0
- package/dist/platform/migrations/0016_sprint_chat_history.sql +24 -0
- package/dist/platform/migrations/0017_pr_comment_annotations.sql +63 -0
- package/dist/platform/migrations/0018_drop_retro_reports.sql +19 -0
- package/dist/platform/migrations/0019_bot_cost_to_account_reviewers.sql +258 -0
- package/dist/platform/migrations/0020_workspace_scope_keys.sql +235 -0
- package/dist/platform/migrations/0021_bot_advisor.sql +82 -0
- package/dist/platform/migrations/0022_annotation_evidence.sql +32 -0
- package/dist/platform/migrations/0023_chat_answer_window.sql +30 -0
- package/dist/platform/migrations/0024_ai_fix_comment_seed.sql +44 -0
- package/dist/platform/migrations/0025_period_reports.sql +100 -0
- package/dist/platform/migrations/0026_period_lanes.sql +19 -0
- package/dist/platform/migrations/0027_synthesis.sql +57 -0
- package/dist/platform/migrations/0028_work_plan.sql +66 -0
- package/dist/platform/migrations/0029_workspace_sprint_cadence.sql +73 -0
- package/dist/platform/migrations/0030_workspace_slack_targets.sql +127 -0
- package/dist/platform/migrations/0031_workspace_issue_tracker.sql +116 -0
- package/dist/platform/migrations/0032_workspace_comparison_mode.sql +77 -0
- package/dist/platform/migrations/0033_slack_target_bot_digest.sql +47 -0
- package/dist/platform/migrations/0034_flow_pointers.sql +32 -0
- package/dist/platform/migrations/0035_workspace_jira_api.sql +28 -0
- package/dist/platform/migrations/0036_workspace_auto_review.sql +19 -0
- package/dist/platform/migrations/0037_auto_review_to_core.sql +31 -0
- package/dist/platform/migrations/0038_pr_jira_tickets.sql +13 -0
- package/dist/platform/migrations/0039_jira_ticket_peers.sql +8 -0
- package/dist/platform/migrations/0040_slack_event_signals.sql +24 -0
- package/dist/platform/migrations/0041_workspace_hourly_cost.sql +11 -0
- package/dist/platform/migrations/0042_ai_provider_labels.sql +17 -0
- package/dist/platform/migrations/0043_period_report_ran_on.sql +13 -0
- package/dist/platform/resolution-check/schema.sqlite.js +35 -0
- package/dist/platform/retention.js +158 -0
- package/dist/platform/review-assess/schema.sqlite.js +32 -0
- package/dist/platform/settings/routes.js +167 -0
- package/dist/platform/settings/schema.sqlite.js +253 -0
- package/dist/platform/settings/store.js +498 -0
- package/dist/platform/slack/cron.js +195 -0
- package/dist/platform/slack/format.js +335 -0
- package/dist/platform/slack/links.js +124 -0
- package/dist/platform/slack/pending-blocks.js +220 -0
- package/dist/platform/slack/report.js +235 -0
- package/dist/platform/slack/routes.js +127 -0
- package/dist/platform/slack/schema.sqlite.js +24 -0
- package/dist/platform/slack/send.js +39 -0
- package/dist/platform/slack/signals.js +261 -0
- package/dist/platform/slack/targets.js +237 -0
- package/dist/platform/slack/tones.js +89 -0
- package/dist/platform/synthesis/hash.js +44 -0
- package/dist/platform/synthesis/prompt.js +110 -0
- package/dist/platform/synthesis/routes.js +305 -0
- package/dist/platform/synthesis/schema.sqlite.js +50 -0
- package/dist/platform/synthesis/scope.js +159 -0
- package/dist/platform/themes/resolve.js +90 -0
- package/dist/platform/work-plan/hash.js +99 -0
- package/dist/platform/work-plan/prompt.js +209 -0
- package/dist/platform/work-plan/routes.js +350 -0
- package/dist/platform/work-plan/schema.sqlite.js +80 -0
- package/dist/pr/detail-enricher.js +18 -0
- package/dist/pro/bind.js +309 -0
- package/dist/pro/contract.js +36 -0
- package/dist/pro/event-hooks.js +37 -0
- package/dist/pro/migrate.js +64 -0
- package/dist/reference-docs/agent.js +397 -0
- package/dist/reference-docs/assemble.js +62 -0
- package/dist/reference-docs/build-judge.js +130 -0
- package/dist/reference-docs/chat-quotes.js +229 -0
- package/dist/reference-docs/chat.js +175 -0
- package/dist/reference-docs/chunks.js +162 -0
- package/dist/reference-docs/context.js +66 -0
- package/dist/reference-docs/convert.js +395 -0
- package/dist/reference-docs/crawl-rank.js +108 -0
- package/dist/reference-docs/crawl.js +639 -0
- package/dist/reference-docs/diagram-outline.js +236 -0
- package/dist/reference-docs/figure-cache.js +34 -0
- package/dist/reference-docs/figure-describer.js +91 -0
- package/dist/reference-docs/figure-fetch.js +66 -0
- package/dist/reference-docs/figures.js +317 -0
- package/dist/reference-docs/library.js +208 -0
- package/dist/reference-docs/manager.js +560 -0
- package/dist/reference-docs/owner.js +144 -0
- package/dist/reference-docs/paths.js +135 -0
- package/dist/reference-docs/prompts.js +200 -0
- package/dist/reference-docs/render.js +211 -0
- package/dist/reference-docs/repo-offers-routes.js +129 -0
- package/dist/reference-docs/repo-offers-store.js +283 -0
- package/dist/reference-docs/repo-offers.js +235 -0
- package/dist/reference-docs/retrieve.js +110 -0
- package/dist/reference-docs/review-refs.js +267 -0
- package/dist/reference-docs/robots.js +127 -0
- package/dist/reference-docs/routes.js +544 -0
- package/dist/reference-docs/schema.js +39 -0
- package/dist/reference-docs/search.js +335 -0
- package/dist/reference-docs/split.js +397 -0
- package/dist/reference-docs/startup.js +33 -0
- package/dist/reference-docs/store.js +479 -0
- package/dist/reference-docs/url-fetch.js +177 -0
- package/dist/reference-docs/wiki/build.js +274 -0
- package/dist/reference-docs/wiki/confluence-storage.js +454 -0
- package/dist/reference-docs/wiki/confluence.js +543 -0
- package/dist/reference-docs/wiki/credentials.js +178 -0
- package/dist/reference-docs/wiki/fake-wiki.js +99 -0
- package/dist/reference-docs/wiki/github.js +445 -0
- package/dist/reference-docs/wiki/notion-blocks.js +270 -0
- package/dist/reference-docs/wiki/notion.js +460 -0
- package/dist/reference-docs/wiki/pages.js +103 -0
- package/dist/reference-docs/wiki/refresh.js +103 -0
- package/dist/reference-docs/wiki/register.js +14 -0
- package/dist/reference-docs/wiki/routes.js +458 -0
- package/dist/reference-docs/wiki/source.js +109 -0
- package/dist/reference-docs/wiki/sync.js +206 -0
- package/dist/review/agent-context.js +112 -0
- package/dist/review/agent.js +475 -0
- package/dist/review/agentic.js +211 -0
- package/dist/review/auth.js +109 -0
- package/dist/review/budget-gate.js +23 -0
- package/dist/review/chat-agent.js +236 -0
- package/dist/review/cheap-usage.js +21 -0
- package/dist/review/ci-review/agent.js +141 -0
- package/dist/review/ci-review/auto-post.js +228 -0
- package/dist/review/ci-review/currency.js +143 -0
- package/dist/review/ci-review/manager.js +398 -0
- package/dist/review/ci-review/persist.js +526 -0
- package/dist/review/ci-review/prepare.js +95 -0
- package/dist/review/ci-review/prompts.js +111 -0
- package/dist/review/ci-review/reconcile.js +78 -0
- package/dist/review/ci-review/routes.js +193 -0
- package/dist/review/ci-review/schema.js +50 -0
- package/dist/review/ci-review/sweep.js +181 -0
- package/dist/review/ci-review/with-review.js +37 -0
- package/dist/review/claude-review/ai-ready.js +20 -0
- package/dist/review/claude-review/approval-withdraw.js +141 -0
- package/dist/review/claude-review/auto-post.js +1408 -0
- package/dist/review/claude-review/auto-pushback.js +169 -0
- package/dist/review/claude-review/auto-resolve.js +324 -0
- package/dist/review/claude-review/auto-retry.js +152 -0
- package/dist/review/claude-review/auto-settings.js +745 -0
- package/dist/review/claude-review/auto-verdict.js +425 -0
- package/dist/review/claude-review/auto.js +881 -0
- package/dist/review/claude-review/chat-explain.js +225 -0
- package/dist/review/claude-review/chat.js +749 -0
- package/dist/review/claude-review/ci-failures.js +428 -0
- package/dist/review/claude-review/earlier-open.js +139 -0
- package/dist/review/claude-review/finding-facts.js +27 -0
- package/dist/review/claude-review/finding-replies.js +506 -0
- package/dist/review/claude-review/finding-thread.js +62 -0
- package/dist/review/claude-review/follow-up.js +518 -0
- package/dist/review/claude-review/manager.js +1927 -0
- package/dist/review/claude-review/manual-reply.js +396 -0
- package/dist/review/claude-review/not-approved.js +71 -0
- package/dist/review/claude-review/open-point-prose.js +116 -0
- package/dist/review/claude-review/open-points.js +187 -0
- package/dist/review/claude-review/pair-consolidate.js +410 -0
- package/dist/review/claude-review/pair-view.js +252 -0
- package/dist/review/claude-review/pair.js +132 -0
- package/dist/review/claude-review/persist.js +2284 -0
- package/dist/review/claude-review/post-meta.js +128 -0
- package/dist/review/claude-review/posted-state.js +236 -0
- package/dist/review/claude-review/pr-level-writes.js +231 -0
- package/dist/review/claude-review/prompts.js +838 -0
- package/dist/review/claude-review/push-summary.js +77 -0
- package/dist/review/claude-review/related-repos.js +203 -0
- package/dist/review/claude-review/replies-check-agent.js +155 -0
- package/dist/review/claude-review/replies-check-prompt.js +256 -0
- package/dist/review/claude-review/replies-check-routes.js +76 -0
- package/dist/review/claude-review/replies-check-schema.js +52 -0
- package/dist/review/claude-review/replies-check.js +1087 -0
- package/dist/review/claude-review/replies-linked-prs.js +197 -0
- package/dist/review/claude-review/replies-outcome.js +437 -0
- package/dist/review/claude-review/replies-pass.js +389 -0
- package/dist/review/claude-review/reply-text.js +91 -0
- package/dist/review/claude-review/routes.js +942 -0
- package/dist/review/claude-review/routing.js +61 -0
- package/dist/review/claude-review/run-watchdog.js +50 -0
- package/dist/review/claude-review/settled-by-reply.js +138 -0
- package/dist/review/claude-review/specialists.js +195 -0
- package/dist/review/claude-review/still-open.js +616 -0
- package/dist/review/claude-review/team-claim-ledger.js +135 -0
- package/dist/review/claude-review/team-claim-manual.js +108 -0
- package/dist/review/claude-review/team-claim-release.js +328 -0
- package/dist/review/claude-review/team-claim-seen.js +76 -0
- package/dist/review/claude-review/team-claim-skip.js +208 -0
- package/dist/review/claude-review/team-claim.js +992 -0
- package/dist/review/claude-review/team-view.js +1009 -0
- package/dist/review/claude-review/teammate-anchor.js +198 -0
- package/dist/review/claude-review/teammate-lift.js +442 -0
- package/dist/review/claude-review/teammate-reminder.js +137 -0
- package/dist/review/claude-review/teammate-resolve.js +294 -0
- package/dist/review/claude-review/thread-check-agent.js +166 -0
- package/dist/review/claude-review/thread-check-persist.js +199 -0
- package/dist/review/claude-review/thread-check-routes.js +101 -0
- package/dist/review/claude-review/thread-check-schema.js +10 -0
- package/dist/review/claude-review/thread-check.js +431 -0
- package/dist/review/claude-review/thread-judgements.js +723 -0
- package/dist/review/claude-review/threads.js +289 -0
- package/dist/review/claude-review/ticket.js +151 -0
- package/dist/review/clone-hygiene.js +339 -0
- package/dist/review/clone-manager.js +541 -0
- package/dist/review/codex-review.js +106 -0
- package/dist/review/codex-wording.js +192 -0
- package/dist/review/diagrams/agent.js +188 -0
- package/dist/review/diagrams/fingerprint.js +63 -0
- package/dist/review/diagrams/manager.js +388 -0
- package/dist/review/diagrams/persist.js +331 -0
- package/dist/review/diagrams/precheck.js +100 -0
- package/dist/review/diagrams/prompts.js +161 -0
- package/dist/review/diagrams/routes.js +203 -0
- package/dist/review/diagrams/schema.js +47 -0
- package/dist/review/diagrams/trigger.js +283 -0
- package/dist/review/diagrams/validate.js +242 -0
- package/dist/review/diff-rank.js +99 -0
- package/dist/review/events.js +24 -0
- package/dist/review/llm.js +37 -0
- package/dist/review/local-settings.js +78 -0
- package/dist/review/memory/capture.js +0 -0
- package/dist/review/memory/retrieval.js +272 -0
- package/dist/review/memory/routes.js +78 -0
- package/dist/review/model-options.js +23 -0
- package/dist/review/path-guard.js +156 -0
- package/dist/review/peer-checkouts.js +39 -0
- package/dist/review/persist.js +203 -0
- package/dist/review/plugin-providers.js +12 -0
- package/dist/review/post-review.js +347 -0
- package/dist/review/post-seam.js +264 -0
- package/dist/review/prepare.js +184 -0
- package/dist/review/pricing.js +17 -0
- package/dist/review/prompt.js +264 -0
- package/dist/review/review-manager.js +259 -0
- package/dist/review/routing.js +164 -0
- package/dist/review/run-provider.js +23 -0
- package/dist/review/schema.js +181 -0
- package/dist/review/sprint-ask/prompt.js +99 -0
- package/dist/review/sprint-ask/routes.js +98 -0
- package/dist/review/sprint-assess/agent.js +145 -0
- package/dist/review/sprint-assess/manager.js +382 -0
- package/dist/review/sprint-assess/prompts.js +99 -0
- package/dist/review/sprint-assess/routes.js +109 -0
- package/dist/review/sprint-assess/schema.js +70 -0
- package/dist/review/sprint-assess/validate.js +180 -0
- package/dist/review/sprint-briefs/index.js +49 -0
- package/dist/review/sprint-briefs/manager.js +195 -0
- package/dist/review/sprint-briefs/prompt.js +55 -0
- package/dist/review/sprint-briefs/validate.js +96 -0
- package/dist/review/sprint-code/manager.js +94 -0
- package/dist/review/sprint-code/prompt.js +33 -0
- package/dist/review/sprint-code/validate.js +66 -0
- package/dist/review/sprint-paths/agent.js +167 -0
- package/dist/review/sprint-paths/manager.js +119 -0
- package/dist/review/sprint-paths/prompt.js +37 -0
- package/dist/review/sprint-paths/schema.js +17 -0
- package/dist/review/sprint-paths/validate.js +116 -0
- package/dist/review/sprint-story/manager.js +98 -0
- package/dist/review/sprint-story/prompt.js +45 -0
- package/dist/review/sprint-story/validate.js +127 -0
- package/dist/review/sprint-themes/manager.js +95 -0
- package/dist/review/sprint-themes/prompt.js +31 -0
- package/dist/review/sprint-themes/validate.js +82 -0
- package/dist/review/story-docs/agent.js +183 -0
- package/dist/review/story-docs/build-prompts.js +153 -0
- package/dist/review/story-docs/build-validate.js +162 -0
- package/dist/review/story-docs/candidates.js +33 -0
- package/dist/review/story-docs/fingerprint.js +50 -0
- package/dist/review/story-docs/inputs.js +110 -0
- package/dist/review/story-docs/manager.js +321 -0
- package/dist/review/story-docs/persist.js +166 -0
- package/dist/review/story-docs/prompts.js +158 -0
- package/dist/review/story-docs/routes.js +113 -0
- package/dist/review/story-docs/schema.js +46 -0
- package/dist/review/story-docs/shortlist.js +319 -0
- package/dist/review/story-docs/validate.js +266 -0
- package/dist/review/story-labels/manager.js +279 -0
- package/dist/review/story-labels/prompt.js +70 -0
- package/dist/review/story-labels/routes.js +70 -0
- package/dist/review/story-labels/validate.js +198 -0
- package/dist/review/story-report/agent.js +203 -0
- package/dist/review/story-report/fingerprint.js +45 -0
- package/dist/review/story-report/manager.js +287 -0
- package/dist/review/story-report/routes.js +154 -0
- package/dist/review/story-report/story-detail.js +148 -0
- package/dist/review/story-report/validate.js +105 -0
- package/dist/review/submit-map.js +47 -0
- package/dist/review/ticket-review/agent.js +144 -0
- package/dist/review/ticket-review/auto-inputs.js +195 -0
- package/dist/review/ticket-review/auto-plan.js +84 -0
- package/dist/review/ticket-review/auto-post.js +287 -0
- package/dist/review/ticket-review/cards.js +272 -0
- package/dist/review/ticket-review/fingerprint.js +169 -0
- package/dist/review/ticket-review/manager.js +611 -0
- package/dist/review/ticket-review/persist.js +654 -0
- package/dist/review/ticket-review/post-item.js +288 -0
- package/dist/review/ticket-review/prepare.js +223 -0
- package/dist/review/ticket-review/prepass.js +266 -0
- package/dist/review/ticket-review/prompts.js +380 -0
- package/dist/review/ticket-review/reconcile.js +283 -0
- package/dist/review/ticket-review/routes.js +421 -0
- package/dist/review/ticket-review/schema.js +134 -0
- package/dist/review/ticket-review/sprint-checks.js +150 -0
- package/dist/review/ticket-review/sweep-waits.js +20 -0
- package/dist/review/ticket-review/sweep.js +351 -0
- package/dist/review/usage.js +90 -0
- package/dist/review/worktree-gc-policy.js +111 -0
- package/dist/review/worktree-gc.js +585 -0
- package/dist/review/worktree-ledger.js +67 -0
- package/dist/review/worktree-owner.js +11 -0
- package/dist/review/write-deny.js +170 -0
- package/dist/sandbox/drivers/claude-parse.js +203 -0
- package/dist/sandbox/drivers/claude.js +240 -0
- package/dist/sandbox/drivers/codex-parse.js +170 -0
- package/dist/sandbox/drivers/codex.js +247 -0
- package/dist/sandbox/drivers/common.js +128 -0
- package/dist/sandbox/drivers/index.js +21 -0
- package/dist/sandbox/drivers/types.js +15 -0
- package/dist/sandbox/proxy/allow-list.js +71 -0
- package/dist/sandbox/proxy/credentials.js +227 -0
- package/dist/sandbox/proxy/egress.js +158 -0
- package/dist/sandbox/proxy/log.js +129 -0
- package/dist/sandbox/proxy/server.js +611 -0
- package/dist/sandbox/proxy/source.js +56 -0
- package/dist/sandbox/runtime/cli.js +132 -0
- package/dist/sandbox/runtime/detect.js +100 -0
- package/dist/sandbox/runtime/docker.js +545 -0
- package/dist/sandbox/runtime/dockerfile.js +294 -0
- package/dist/sandbox/runtime/fake.js +297 -0
- package/dist/sandbox/runtime/host-env.js +38 -0
- package/dist/sandbox/runtime/image.js +131 -0
- package/dist/sandbox/runtime/index.js +228 -0
- package/dist/sandbox/runtime/labels.js +76 -0
- package/dist/sandbox/runtime/microsandbox.js +515 -0
- package/dist/sandbox/runtime/msb-spec.js +335 -0
- package/dist/sandbox/runtime/spec.js +207 -0
- package/dist/sandbox/runtime/tar.js +53 -0
- package/dist/sandbox/runtime/types.js +18 -0
- package/dist/sandbox/services/compose-files.js +66 -0
- package/dist/sandbox/services/controller.js +649 -0
- package/dist/sandbox/services/dind.js +85 -0
- package/dist/sandbox/services/index.js +60 -0
- package/dist/sandbox/services/policy.js +457 -0
- package/dist/sandbox/services/relay.js +128 -0
- package/dist/sandbox/services/run-log.js +88 -0
- package/dist/sandbox/session/fix-merge.js +323 -0
- package/dist/sandbox/session/fix.js +884 -0
- package/dist/sandbox/session/janitor.js +81 -0
- package/dist/sandbox/session/limits.js +36 -0
- package/dist/sandbox/session/manager.js +1940 -0
- package/dist/sandbox/session/patches.js +147 -0
- package/dist/sandbox/session/plan-block.js +63 -0
- package/dist/sandbox/session/plan.js +495 -0
- package/dist/sandbox/session/routes.js +497 -0
- package/dist/sandbox/session/stack-turn.js +184 -0
- package/dist/sandbox/session/stack.js +128 -0
- package/dist/sandbox/session/state.js +194 -0
- package/dist/sandbox/session/subject.js +2 -0
- package/dist/sandbox/workspace/build-report.js +134 -0
- package/dist/sandbox/workspace/check.js +96 -0
- package/dist/sandbox/workspace/discover.js +182 -0
- package/dist/sandbox/workspace/docs-choose.js +40 -0
- package/dist/sandbox/workspace/docs.js +111 -0
- package/dist/sandbox/workspace/fix-report.js +165 -0
- package/dist/sandbox/workspace/index.js +114 -0
- package/dist/sandbox/workspace/layout.js +167 -0
- package/dist/sandbox/workspace/memories.js +139 -0
- package/dist/sandbox/workspace/mirror.js +279 -0
- package/dist/sandbox/workspace/plan-check.js +316 -0
- package/dist/sandbox/workspace/project-skills.js +96 -0
- package/dist/sandbox/workspace/remote.js +72 -0
- package/dist/sandbox/workspace/review-response.js +122 -0
- package/dist/sandbox/workspace/scan.js +123 -0
- package/dist/sandbox/workspace/seed.js +574 -0
- package/dist/sandbox/workspace/store.js +314 -0
- package/dist/sandbox/workspace/ticket.js +107 -0
- package/dist/sandbox-image/Dockerfile +61 -0
- package/dist/sandbox-image/limn-svc +51 -0
- package/dist/sandbox-image/limn-svcd.cjs +182 -0
- package/dist/scratch-guard.js +151 -0
- package/dist/scratch.js +100 -0
- package/dist/shared/activity-windows.js +8 -0
- package/dist/shared/ai-api-key.js +13 -0
- package/dist/shared/ai-budget.js +636 -0
- package/dist/shared/ai-effort.js +43 -0
- package/dist/shared/ai-fix-session.js +46 -0
- package/dist/shared/ai-provider-words.js +110 -0
- package/dist/shared/ai-run-label.js +183 -0
- package/dist/shared/ai-usage-report.js +93 -0
- package/dist/shared/auto-fix-queue.js +45 -0
- package/dist/shared/blast-radius.js +204 -0
- package/dist/shared/build-plan.js +60 -0
- package/dist/shared/claude-review.js +575 -0
- package/dist/shared/conflict-ai.js +24 -0
- package/dist/shared/conflict-fold.js +151 -0
- package/dist/shared/conflicts.js +33 -0
- package/dist/shared/criteria-map.js +132 -0
- package/dist/shared/criterion-status.js +50 -0
- package/dist/shared/dependency-merge.js +54 -0
- package/dist/shared/features.js +61 -0
- package/dist/shared/flaky-checks.js +7 -0
- package/dist/shared/flow-settings.js +208 -0
- package/dist/shared/flow-trend.js +33 -0
- package/dist/shared/index.js +65 -0
- package/dist/shared/limn-actions.js +51 -0
- package/dist/shared/limn-review-meta.js +465 -0
- package/dist/shared/limn-severity.js +178 -0
- package/dist/shared/limn-status.js +105 -0
- package/dist/shared/my-turn-settings.js +36 -0
- package/dist/shared/notion-tracker.js +169 -0
- package/dist/shared/pending-rules.js +383 -0
- package/dist/shared/pr-chips.js +24 -0
- package/dist/shared/pr-tab-summary.js +11 -0
- package/dist/shared/product.js +66 -0
- package/dist/shared/prose.js +91 -0
- package/dist/shared/push-summaries.js +59 -0
- package/dist/shared/reference-docs-offers.js +63 -0
- package/dist/shared/reference-docs-quote.js +170 -0
- package/dist/shared/reference-docs-search.js +6 -0
- package/dist/shared/reference-docs-wiki.js +198 -0
- package/dist/shared/reference-docs.js +121 -0
- package/dist/shared/repo-status.js +97 -0
- package/dist/shared/reporting-window.js +30 -0
- package/dist/shared/sandbox-agent.js +8 -0
- package/dist/shared/sandbox-services.js +7 -0
- package/dist/shared/sandbox-session.js +59 -0
- package/dist/shared/sandbox-workspace.js +8 -0
- package/dist/shared/sequence-diagrams.js +124 -0
- package/dist/shared/sonar.js +144 -0
- package/dist/shared/sprint-graph.js +212 -0
- package/dist/shared/sprint-lanes.js +36 -0
- package/dist/shared/sprint-members.js +87 -0
- package/dist/shared/sprint-stories.js +197 -0
- package/dist/shared/still-open.js +196 -0
- package/dist/shared/stories.js +10 -0
- package/dist/shared/story-build-activity.js +102 -0
- package/dist/shared/story-build-loop.js +68 -0
- package/dist/shared/story-build.js +260 -0
- package/dist/shared/story-chat.js +31 -0
- package/dist/shared/story-docs-alignment.js +221 -0
- package/dist/shared/story-health.js +114 -0
- package/dist/shared/story-issues.js +358 -0
- package/dist/shared/story-rules.js +134 -0
- package/dist/shared/ticket-comments.js +33 -0
- package/dist/shared/ticket-layout.js +268 -0
- package/dist/shared/ticket-prs.js +62 -0
- package/dist/shared/ticket-refs.js +179 -0
- package/dist/shared/types.js +1093 -0
- package/dist/sonar/ci-excerpt.js +51 -0
- package/dist/sonar/client.js +68 -0
- package/dist/sonar/comment.js +247 -0
- package/dist/sonar/gather.js +571 -0
- package/dist/sonar/index.js +17 -0
- package/dist/sonar/late-post.js +108 -0
- package/dist/sonar/post.js +217 -0
- package/dist/sonar/routes.js +209 -0
- package/dist/sonar/settings.js +161 -0
- package/dist/sonar/snapshot.js +127 -0
- package/dist/sonar/store.js +111 -0
- package/dist/status.js +360 -0
- package/dist/story-chat/context.js +100 -0
- package/dist/story-chat/live.js +605 -0
- package/dist/story-chat/routes.js +127 -0
- package/dist/story-chat/seed.js +139 -0
- package/dist/story-chat/store.js +121 -0
- package/dist/story-chat/tmp.js +15 -0
- package/dist/story-chat/trees.js +218 -0
- package/dist/sync/adaptive.js +366 -0
- package/dist/sync/app-attribution.js +66 -0
- package/dist/sync/auth-notices.js +34 -0
- package/dist/sync/backfill-ci-history.js +345 -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 +110 -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 +679 -0
- package/dist/sync/ci-history-pending.js +49 -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 +106 -0
- package/dist/sync/drain-review-threads.js +226 -0
- package/dist/sync/heads-fresh.js +40 -0
- package/dist/sync/hydrate-detail.js +482 -0
- package/dist/sync/limn-ci.js +59 -0
- package/dist/sync/mention-scan.js +82 -0
- package/dist/sync/merge-notice.js +56 -0
- package/dist/sync/ml-enrichment.js +489 -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/repo-synced-hooks.js +22 -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 +522 -0
- package/dist/sync/routing-files.js +97 -0
- package/dist/sync/scheduled-jobs.js +12 -0
- package/dist/sync/scheduler.js +178 -0
- package/dist/sync/security-detect.js +521 -0
- package/dist/sync/settle-sweep.js +548 -0
- package/dist/sync/sync-manager.js +1231 -0
- package/dist/sync/sync-one-pr.js +206 -0
- package/dist/sync/sync-repo.js +414 -0
- package/dist/sync/teammate-review-hooks.js +21 -0
- package/dist/sync/unsettled-prs.js +508 -0
- package/dist/sync/upsert.js +1451 -0
- package/dist/sync/walk-listeners.js +30 -0
- package/dist/tracker/ac-field-settings.js +188 -0
- package/dist/tracker/ac-location.js +102 -0
- package/dist/tracker/ac.js +172 -0
- package/dist/tracker/assignee.js +582 -0
- package/dist/tracker/calls.js +76 -0
- package/dist/tracker/clip.js +17 -0
- package/dist/tracker/comments-refresh.js +65 -0
- package/dist/tracker/comments.js +185 -0
- package/dist/tracker/context.js +45 -0
- package/dist/tracker/copy.js +186 -0
- package/dist/tracker/dates-backfill.js +96 -0
- package/dist/tracker/dates.js +31 -0
- package/dist/tracker/detect.js +172 -0
- package/dist/tracker/enricher.js +215 -0
- package/dist/tracker/github/ac.js +8 -0
- package/dist/tracker/github/adapter.js +47 -0
- package/dist/tracker/github/issues-usage.js +195 -0
- package/dist/tracker/github/links.js +115 -0
- package/dist/tracker/github/reader.js +224 -0
- package/dist/tracker/index.js +66 -0
- package/dist/tracker/jira/adapter.js +23 -0
- package/dist/tracker/jira/candidates.js +122 -0
- package/dist/tracker/jira/client.js +285 -0
- package/dist/tracker/jira/fetch.js +335 -0
- package/dist/tracker/jira/text.js +575 -0
- package/dist/tracker/legacy-import.js +120 -0
- package/dist/tracker/linear/adapter.js +52 -0
- package/dist/tracker/linear/client.js +362 -0
- package/dist/tracker/linear/links.js +113 -0
- package/dist/tracker/links.js +110 -0
- package/dist/tracker/manual-links.js +378 -0
- package/dist/tracker/merged.js +163 -0
- package/dist/tracker/notion/adapter.js +33 -0
- package/dist/tracker/notion/blocks.js +201 -0
- package/dist/tracker/notion/client.js +164 -0
- package/dist/tracker/notion/reader.js +300 -0
- package/dist/tracker/notion/schema.js +180 -0
- package/dist/tracker/open-points-pr.js +101 -0
- package/dist/tracker/open-points-settings.js +59 -0
- package/dist/tracker/open-points-ticket.js +83 -0
- package/dist/tracker/open-points.js +227 -0
- package/dist/tracker/peers.js +148 -0
- package/dist/tracker/registry.js +38 -0
- package/dist/tracker/routes.js +421 -0
- package/dist/tracker/runtime.js +52 -0
- package/dist/tracker/secret.js +28 -0
- package/dist/tracker/settings.js +348 -0
- package/dist/tracker/sprint/github.js +482 -0
- package/dist/tracker/sprint/hooks.js +55 -0
- package/dist/tracker/sprint/index.js +33 -0
- package/dist/tracker/sprint/jira.js +385 -0
- package/dist/tracker/sprint/linear.js +217 -0
- package/dist/tracker/sprint/notion.js +265 -0
- package/dist/tracker/sprint/probe.js +204 -0
- package/dist/tracker/sprint/project-keys.js +57 -0
- package/dist/tracker/sprint/read.js +466 -0
- package/dist/tracker/sprint/ref-status.js +283 -0
- package/dist/tracker/sprint/routes.js +38 -0
- package/dist/tracker/sprint/types.js +29 -0
- package/dist/tracker/status-change.js +271 -0
- package/dist/tracker/store.js +290 -0
- package/dist/tracker/stories.js +132 -0
- package/dist/tracker/ticket-prs.js +130 -0
- package/dist/tracker/ticket-source.js +58 -0
- package/dist/tracker/ticket-update.js +224 -0
- package/dist/tracker/types.js +2 -0
- package/dist/tracker/worker.js +895 -0
- package/dist/version.js +35 -0
- package/package.json +101 -4
- package/public/apple-touch-icon.png +0 -0
- package/public/assets/AiFixTab-CVIZl9I8.js +1 -0
- package/public/assets/PrBotBehaviourTab-q0M7RU1e.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-CbEfmqOD.css +1 -0
- package/public/assets/index-DBK4RWQu.js +136 -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 +44 -0
- package/public/theme-boot.js +17 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Ensemble License 1.0
|
|
2
|
+
|
|
3
|
+
_Formerly the Limn License 1.0. Only the name changed; the terms are the same._
|
|
4
|
+
|
|
5
|
+
Copyright 2026 Alex Wakeman
|
|
6
|
+
|
|
7
|
+
## 1. Acceptance
|
|
8
|
+
|
|
9
|
+
In order to get any license under these terms, you must agree to them as both
|
|
10
|
+
strict obligations and conditions to all your licenses.
|
|
11
|
+
|
|
12
|
+
## 2. Copyright License
|
|
13
|
+
|
|
14
|
+
The licensor grants you a copyright license for the software to do everything
|
|
15
|
+
you might do with the software that would otherwise infringe the licensor's
|
|
16
|
+
copyright in it for any permitted purpose. However, you may only distribute the
|
|
17
|
+
software according to section 5 (Distribution License) and make changes or new
|
|
18
|
+
works based on the software according to section 6 (Changes and New Works
|
|
19
|
+
License).
|
|
20
|
+
|
|
21
|
+
## 3. Permitted Purposes
|
|
22
|
+
|
|
23
|
+
Any purpose is a permitted purpose for:
|
|
24
|
+
|
|
25
|
+
(a) an individual using the software for themselves; and
|
|
26
|
+
|
|
27
|
+
(b) an organization in which no more than three (3) individuals use the
|
|
28
|
+
software, counting the organization together with all of its affiliates.
|
|
29
|
+
|
|
30
|
+
Any other use, including use within an organization in which more than three
|
|
31
|
+
(3) individuals use the software, is not a permitted purpose. That use needs a
|
|
32
|
+
separate commercial license from the licensor, which you can ask for through
|
|
33
|
+
the contact form at https://ensemble.ac/contact.
|
|
34
|
+
|
|
35
|
+
## 4. No Competing Use
|
|
36
|
+
|
|
37
|
+
No purpose is a permitted purpose if it is a competing use. A competing use is
|
|
38
|
+
making the software, or any product or service substantially similar to it or
|
|
39
|
+
built from it, available to others as a commercial product or service, whether
|
|
40
|
+
as installable software, a hosted service or any other form.
|
|
41
|
+
|
|
42
|
+
## 5. Distribution License
|
|
43
|
+
|
|
44
|
+
The licensor grants you an additional copyright license to distribute copies of
|
|
45
|
+
the software. Your license to distribute covers distributing the software with
|
|
46
|
+
changes and new works permitted by section 6 (Changes and New Works License).
|
|
47
|
+
|
|
48
|
+
## 6. Changes and New Works License
|
|
49
|
+
|
|
50
|
+
The licensor grants you an additional copyright license to make changes and new
|
|
51
|
+
works based on the software for any permitted purpose.
|
|
52
|
+
|
|
53
|
+
## 7. Notices
|
|
54
|
+
|
|
55
|
+
You must ensure that anyone who gets a copy of any part of the software from
|
|
56
|
+
you also gets a copy of these terms, together with the copyright notice above.
|
|
57
|
+
Anyone who gets a copy from you gets it under these terms only, and no other
|
|
58
|
+
terms. If you modify the software, you must include in any modified copies of
|
|
59
|
+
the software a prominent notice stating that you have modified the software.
|
|
60
|
+
|
|
61
|
+
## 8. Patent License
|
|
62
|
+
|
|
63
|
+
The licensor grants you a patent license for the software that covers patent
|
|
64
|
+
claims the licensor can license, or becomes able to license, that you would
|
|
65
|
+
infringe by using the software for a permitted purpose.
|
|
66
|
+
|
|
67
|
+
## 9. Fair Use
|
|
68
|
+
|
|
69
|
+
You may have "fair use" rights for the software under the law. These terms do
|
|
70
|
+
not limit them.
|
|
71
|
+
|
|
72
|
+
## 10. No Other Rights
|
|
73
|
+
|
|
74
|
+
These terms do not allow you to sublicense or transfer any of your licenses to
|
|
75
|
+
anyone else, or prevent the licensor from granting licenses to anyone else.
|
|
76
|
+
These terms do not imply any other licenses. The licensor will not convert
|
|
77
|
+
these terms, or any version of the software released under them, to the MIT
|
|
78
|
+
License or to any other license by the passing of time.
|
|
79
|
+
|
|
80
|
+
## 11. Patent Defense
|
|
81
|
+
|
|
82
|
+
If you make any written claim that the software infringes or contributes to
|
|
83
|
+
infringement of any patent, your patent license for the software granted under
|
|
84
|
+
these terms ends immediately. If your company makes such a claim, your patent
|
|
85
|
+
license ends immediately for work on behalf of your company.
|
|
86
|
+
|
|
87
|
+
## 12. Violations
|
|
88
|
+
|
|
89
|
+
The first time you are notified in writing that you have violated any of these
|
|
90
|
+
terms, or done anything with the software not covered by your licenses, your
|
|
91
|
+
licenses can nonetheless continue if you come into full compliance with these
|
|
92
|
+
terms, and take practical steps to correct past violations, within 32 days of
|
|
93
|
+
receiving notice. Otherwise, all your licenses end immediately.
|
|
94
|
+
|
|
95
|
+
## 13. No Liability
|
|
96
|
+
|
|
97
|
+
***As far as the law allows, the software comes as is, without any warranty or
|
|
98
|
+
condition, and the licensor will not be liable to you for any damages arising
|
|
99
|
+
out of these terms or the use or nature of the software, under any kind of
|
|
100
|
+
legal claim.***
|
|
101
|
+
|
|
102
|
+
## 14. Definitions
|
|
103
|
+
|
|
104
|
+
The **licensor** is Alex Wakeman, the individual offering these terms, and the
|
|
105
|
+
**software** is the software the licensor makes available under these terms,
|
|
106
|
+
including any version of it.
|
|
107
|
+
|
|
108
|
+
**You** refers to the individual or entity agreeing to these terms.
|
|
109
|
+
|
|
110
|
+
**Your company** is any legal entity, sole proprietorship, or other kind of
|
|
111
|
+
organization that you work for, plus all organizations that have control over,
|
|
112
|
+
are under the control of, or are under common control with that organization.
|
|
113
|
+
|
|
114
|
+
An **organization** includes any company, firm, partnership, government body,
|
|
115
|
+
charity, team or other group of people working together, and **affiliates** of
|
|
116
|
+
an organization are all organizations that have control over, are under the
|
|
117
|
+
control of, or are under common control with it. **Control** means ownership of
|
|
118
|
+
substantially all the assets of an entity, or the power to direct its
|
|
119
|
+
management and policies by vote, contract, or otherwise. Control can be direct
|
|
120
|
+
or indirect.
|
|
121
|
+
|
|
122
|
+
An individual **uses** the software within an organization if they run it, or
|
|
123
|
+
work with it directly, in the course of their work for, or on behalf of, that
|
|
124
|
+
organization.
|
|
125
|
+
|
|
126
|
+
**Your licenses** are all the licenses granted to you for the software under
|
|
127
|
+
these terms.
|
|
128
|
+
|
|
129
|
+
**Use** means anything you do with the software requiring one of your licenses.
|
package/README.md
CHANGED
|
@@ -1,3 +1,168 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Ensemble (`ensemble-review`)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A **local dashboard for tracking your team's GitHub PR activity** across
|
|
4
|
+
multiple repositories. Run it on your machine, see at a glance who's doing what,
|
|
5
|
+
which PRs are stalled, which review threads are sitting untouched, and what needs
|
|
6
|
+
_your_ attention right now — all rendered as an interactive timeline.
|
|
7
|
+
|
|
8
|
+
There's no hosted backend, no database server, and no stored credentials. It
|
|
9
|
+
authenticates by shelling out to your already-logged-in `gh` CLI, syncs activity
|
|
10
|
+
into a local SQLite file, and serves the dashboard from a single local process.
|
|
11
|
+
|
|
12
|
+
**100% free.** Every feature, no paid tier, no sign-up (see [License](#license)
|
|
13
|
+
for the one limit, on large organisations).
|
|
14
|
+
|
|
15
|
+
> **Renamed.** This package used to be `limn-review` (and before that
|
|
16
|
+
> `pierre-review`). The command is now `ensemble`; both old packages only forward
|
|
17
|
+
> to this one, and say so. On first start, an existing `~/.limn` (or
|
|
18
|
+
> `~/.pierre-review`) is moved to `~/.ensemble` — your database, settings and
|
|
19
|
+
> clones come with it. If `~/.ensemble` already exists, nothing is moved.
|
|
20
|
+
> Settings named `LIMN_…` still work; their new names start `ENSEMBLE_…`.
|
|
21
|
+
|
|
22
|
+
## Quick start
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npx ensemble-review
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
This starts the server, prints a local URL, and opens your browser to it.
|
|
29
|
+
|
|
30
|
+
Or install globally and use the short command:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm install -g ensemble-review
|
|
34
|
+
ensemble
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Review and fix with Claude — free, on your own Claude
|
|
38
|
+
|
|
39
|
+
Claude Review (a code review of any PR, follow-ups, a check against a user
|
|
40
|
+
story you paste, and a chat about the review) and AI Fix are free. By default
|
|
41
|
+
they use your local Claude Code login: if you are signed in to Claude Code,
|
|
42
|
+
there is nothing to set up. An Anthropic API key is the alternative: set
|
|
43
|
+
`ANTHROPIC_API_KEY`. Ensemble stores no key and charges nothing for it. They can
|
|
44
|
+
run on Codex instead (below).
|
|
45
|
+
|
|
46
|
+
- **Claude and Codex work out of the box.** The first time Ensemble starts, it
|
|
47
|
+
downloads both in the background (Claude about 110 MB, Codex about 360 MB
|
|
48
|
+
unpacked) into `~/.ensemble/ai-runtime`, at the exact versions this release was
|
|
49
|
+
tested with. The package itself stays small. Signing in is the only step.
|
|
50
|
+
`ensemble ai install codex` runs the same download by hand;
|
|
51
|
+
`ENSEMBLE_AI_AUTO_INSTALL=false` skips the automatic one.
|
|
52
|
+
- Set `ENSEMBLE_CLAUDE_PATH` to the `claude` you already have to use it instead of
|
|
53
|
+
the bundled copy (the download then skips it).
|
|
54
|
+
- The reviewer reads code. It cannot edit files, run commands or reach the web.
|
|
55
|
+
- The fixer edits files. It has no shell, and builds and tests nothing.
|
|
56
|
+
- Nothing is posted or pushed until you press the button.
|
|
57
|
+
- **Use my API keys first** (Settings → AI), or `ENSEMBLE_AI_USE_API_KEY=true`, uses
|
|
58
|
+
`ANTHROPIC_API_KEY` even when you are signed in to Claude Code.
|
|
59
|
+
- `ENSEMBLE_AI_DISABLED=true` turns every AI feature off.
|
|
60
|
+
|
|
61
|
+
### Codex instead of Claude
|
|
62
|
+
|
|
63
|
+
Every AI feature can run on Codex, on your own ChatGPT plan. One provider runs
|
|
64
|
+
everything at a time.
|
|
65
|
+
|
|
66
|
+
Codex comes with Ensemble. Sign in from **Settings → AI**, or:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
ensemble ai login codex # sign in with ChatGPT (add --device-auth on a headless machine)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Ensemble keeps its own
|
|
73
|
+
Codex sign-in in `~/.ensemble/codex`; your `~/.codex` is not read or changed. Codex
|
|
74
|
+
with an OpenAI API key is not available yet.
|
|
75
|
+
|
|
76
|
+
- Pick the provider in **Settings → AI**, or set `ENSEMBLE_AI_PROVIDER` to
|
|
77
|
+
`claude`, `codex` or `auto` (the default: Claude when both are signed in,
|
|
78
|
+
Codex when only Codex is).
|
|
79
|
+
- Each run is labelled with the provider and model that ran it.
|
|
80
|
+
- `ensemble ai status` shows whether Codex is set up and signed in.
|
|
81
|
+
- `ensemble ai logout codex` signs Ensemble's Codex out.
|
|
82
|
+
|
|
83
|
+
## Prerequisites
|
|
84
|
+
|
|
85
|
+
- **Node.js ≥ 20** (with npm).
|
|
86
|
+
- **GitHub CLI**, installed and authenticated. Install it from
|
|
87
|
+
<https://cli.github.com>, then run:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
gh auth login
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
`ensemble` reads your team's activity using your `gh` token. It pre-checks this on
|
|
94
|
+
startup and exits with a friendly message if `gh` is missing or not authed.
|
|
95
|
+
|
|
96
|
+
> **Native module note:** `ensemble-review` depends on `better-sqlite3`, a native
|
|
97
|
+
> addon. npm installs a prebuilt binary for common platforms; if none matches your
|
|
98
|
+
> Node/OS/arch, npm compiles it from source on install (needs a C++ toolchain —
|
|
99
|
+
> Xcode Command Line Tools on macOS, `build-essential` + Python on Linux, MSVC
|
|
100
|
+
> build tools on Windows).
|
|
101
|
+
|
|
102
|
+
## Usage
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
ensemble [options]
|
|
106
|
+
ensemble status [options]
|
|
107
|
+
ensemble ai install
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
| Flag | Env | Default | Description |
|
|
111
|
+
|------|-----|---------|-------------|
|
|
112
|
+
| `--no-open` | `NO_OPEN` | — | Don't open the browser on start. |
|
|
113
|
+
| `--port <n>` | `PORT` | `4000` | Port to listen on. |
|
|
114
|
+
| `--db <path>` | `DATABASE_URL` | `~/.ensemble/pierre-review.sqlite` | SQLite DB path. |
|
|
115
|
+
| — | `ENSEMBLE_DATA_DIR` | `~/.ensemble` | Where Ensemble keeps its data. |
|
|
116
|
+
| — | `PERSIST_BODIES` | `false` | Store full comment/PR text in the DB instead of loading it on demand (larger DB, but PR detail works fully offline). |
|
|
117
|
+
| `-h`, `--help` | — | — | Show usage. |
|
|
118
|
+
|
|
119
|
+
Examples:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
ensemble --port 4123 --no-open
|
|
123
|
+
ensemble --db /tmp/ensemble.sqlite
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Data directory
|
|
127
|
+
|
|
128
|
+
Everything Ensemble keeps lives in `~/.ensemble`:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
~/.ensemble/pierre-review.sqlite the database
|
|
132
|
+
~/.ensemble/clones/ git clones Claude Review and AI Fix read
|
|
133
|
+
~/.ensemble/ai-runtime/ the AI runtime, once you set AI up
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
The directory is created automatically. Override it with `ENSEMBLE_DATA_DIR`, or
|
|
137
|
+
just the database with `--db` / `DATABASE_URL`. No team activity data or
|
|
138
|
+
credentials are ever sent anywhere — everything stays on your machine.
|
|
139
|
+
|
|
140
|
+
## How it works
|
|
141
|
+
|
|
142
|
+
Once running, open the printed URL (default <http://localhost:4000>). Add the
|
|
143
|
+
repositories you want to watch from the in-app picker; the app syncs their PR
|
|
144
|
+
activity (full backfill on first sync, incremental every few minutes thereafter)
|
|
145
|
+
into your local DB and renders it as a timeline.
|
|
146
|
+
|
|
147
|
+
Repos are grouped into **Workspaces**, and the selected workspace is the scope for
|
|
148
|
+
everything — the feed, the timeline, the metrics, the review-bot settings. Every
|
|
149
|
+
repo belongs to exactly one workspace; new ones land in **Default** (renameable, not
|
|
150
|
+
deletable), and you can create more and move repos between them from *Manage repos &
|
|
151
|
+
workspaces*.
|
|
152
|
+
|
|
153
|
+
To keep the database small and backfills fast, bulky text — PR/comment/review
|
|
154
|
+
bodies and diff hunks — isn't stored; it's fetched from GitHub (using your `gh`
|
|
155
|
+
token) the first time you open a PR and cached in your browser, so re-opening an
|
|
156
|
+
unchanged PR is instant and offline. Set `PERSIST_BODIES=true` to store that text
|
|
157
|
+
locally instead — a larger database, but PR detail then works fully offline.
|
|
158
|
+
|
|
159
|
+
## License
|
|
160
|
+
|
|
161
|
+
Source-available under the **Ensemble License 1.0** — see [LICENSE](./LICENSE).
|
|
162
|
+
Ensemble is free for individuals, and for organisations where no more than 3 people
|
|
163
|
+
use it (affiliates count together). More users than that need a licence — ask
|
|
164
|
+
through the [contact form](https://ensemble.ac/contact?topic=licence). You may
|
|
165
|
+
**not** offer Ensemble, or a product built from it, as a competing commercial
|
|
166
|
+
product or service.
|
|
167
|
+
The AI runtime Ensemble downloads on first use is Anthropic's, under Anthropic's own
|
|
168
|
+
terms; it is not part of this package.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
Ensemble includes material from the projects below. Each is used under the licence shown.
|
|
4
|
+
|
|
5
|
+
## Material Icon Theme
|
|
6
|
+
|
|
7
|
+
The file-type icons in the Changes tab (`apps/frontend/src/components/FileTypeIcons.tsx`) are
|
|
8
|
+
copied from Material Icon Theme by Material Extensions, npm `material-icon-theme@5.39.0`.
|
|
9
|
+
|
|
10
|
+
Source: https://github.com/material-extensions/vscode-material-icon-theme
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
The MIT License (MIT)
|
|
14
|
+
Copyright (c) 2025 Material Extensions
|
|
15
|
+
|
|
16
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
17
|
+
|
|
18
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
21
|
+
```
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// THE ACTIVE PROVIDER'S DOWNLOAD — is the program the next run needs installed? Claude's runs need the
|
|
2
|
+
// Claude SDK download (`getAiRuntimeStatus`); Codex's need the Codex program (`getCodexRuntimeStatus`,
|
|
3
|
+
// installed WITH the shared download, so its zod is there too). `/api/me`'s top-level `ai.runtime`
|
|
4
|
+
// and the background sweepers' gate (`agenticRunReady`) both ask this, so a Codex machine is never
|
|
5
|
+
// held back for a missing Claude program, nor a Claude one for a missing Codex.
|
|
6
|
+
import { getAiRuntimeStatus, getCodexRuntimeStatus } from './runtime.js';
|
|
7
|
+
import { activeProviderId } from './provider-setting.js';
|
|
8
|
+
export function activeRuntimeStatus() {
|
|
9
|
+
return activeProviderId() === 'codex' ? getCodexRuntimeStatus() : getAiRuntimeStatus();
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=active-runtime.js.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// AGENT ISOLATION — every Agent SDK run in this app sees ONLY the tools it registered itself.
|
|
2
|
+
//
|
|
3
|
+
// ⚠ MEASURED (2026-10-10): a run on the reader's ambient Claude Code login, with `tools: []`,
|
|
4
|
+
// `settingSources: []` and `bypassPermissions`, still lists the ACCOUNT'S claude.ai CONNECTORS
|
|
5
|
+
// (`mcp__claude_ai_Claude_Docs__create/update/delete/export`, …) a few seconds after start — they
|
|
6
|
+
// connect after `system/init`, so the init message shows none. A trial agent wrote a report into the
|
|
7
|
+
// user's Claude Docs unprompted. Claude Review reads PR text strangers write, so a prompt injection
|
|
8
|
+
// could create, edit or delete documents in the reader's claude.ai account. `strictMcpConfig: true`
|
|
9
|
+
// removes them (measured: 8 connector tools → 0); the PreToolUse hook below is the backstop that
|
|
10
|
+
// refuses any `mcp__` tool whose server the run did not register, and its deny holds under
|
|
11
|
+
// bypassPermissions (the path guard relies on the same property).
|
|
12
|
+
//
|
|
13
|
+
// EVERY `query({ options })` spreads `ISOLATED_MCP` and adds `ownToolsOnlyHook(<its server names>)`
|
|
14
|
+
// to `PreToolUse` — pinned by agent-isolation.test.ts, which reads every call site.
|
|
15
|
+
export const ISOLATED_MCP = { strictMcpConfig: true };
|
|
16
|
+
// NO SESSION FILES. By default the Claude Code CLI saves every run's transcript under
|
|
17
|
+
// `~/.claude/projects/<encoded cwd>/`. Limn never resumes an SDK session, and its runs work in
|
|
18
|
+
// temporary worktrees, so each run left a new directory there (~2,000 / 3.5 GB measured on one
|
|
19
|
+
// machine). EVERY `query({ options })` spreads this too; `ai/runtime.ts` also forces it on the tapped
|
|
20
|
+
// `query`, so a call site that forgets it still writes nothing. Old litter: ai/session-litter.ts.
|
|
21
|
+
export const NO_SESSION_FILES = { persistSession: false };
|
|
22
|
+
/** The MCP server a tool name belongs to (`mcp__<server>__<tool>`), or null for a built-in tool. */
|
|
23
|
+
export function mcpServerOf(toolName) {
|
|
24
|
+
if (!toolName.startsWith('mcp__'))
|
|
25
|
+
return null;
|
|
26
|
+
const rest = toolName.slice('mcp__'.length);
|
|
27
|
+
const cut = rest.indexOf('__');
|
|
28
|
+
return cut < 0 ? rest : rest.slice(0, cut);
|
|
29
|
+
}
|
|
30
|
+
/** True when `toolName` is an MCP tool from a server this run did not register. */
|
|
31
|
+
export function isForeignMcpTool(toolName, ownServers) {
|
|
32
|
+
const server = mcpServerOf(toolName);
|
|
33
|
+
return server != null && !ownServers.includes(server);
|
|
34
|
+
}
|
|
35
|
+
/** One SDK PreToolUse matcher entry refusing every MCP tool outside `ownServers`. */
|
|
36
|
+
export function ownToolsOnlyHook(ownServers) {
|
|
37
|
+
return {
|
|
38
|
+
hooks: [
|
|
39
|
+
async (input) => input.hook_event_name === 'PreToolUse' && isForeignMcpTool(input.tool_name ?? '', ownServers)
|
|
40
|
+
? {
|
|
41
|
+
hookSpecificOutput: {
|
|
42
|
+
hookEventName: 'PreToolUse',
|
|
43
|
+
permissionDecision: 'deny',
|
|
44
|
+
permissionDecisionReason: `${input.tool_name} is not available in this run.`,
|
|
45
|
+
},
|
|
46
|
+
}
|
|
47
|
+
: { continue: true },
|
|
48
|
+
],
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=agent-isolation.js.map
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// THE FIRST-BOOT AI DOWNLOAD — Claude and Codex come with Limn, without a click.
|
|
2
|
+
//
|
|
3
|
+
// The SDKs and the Codex CLI stay OUT of the npm manifest (a fast `npx limn-review`; the guardrails in
|
|
4
|
+
// scripts/build-release.mjs are unchanged), so on a boot that finds either runtime missing, stale or
|
|
5
|
+
// without its native program, Limn downloads what is missing in the background — the same
|
|
6
|
+
// single-flight `installAiRuntime` that `limn ai install codex` and the SPA's Retry run. ⚠ A Claude
|
|
7
|
+
// that is already ready is never fetched again or swapped (`['codex']` alone: the existing install
|
|
8
|
+
// adding Codex). After it, signing in to each provider is the only step.
|
|
9
|
+
//
|
|
10
|
+
// ⚠ IT NEVER DELAYS THE SERVER. `index.ts` calls `startAiAutoInstall` AFTER `listen`, with `void`;
|
|
11
|
+
// nothing awaits it. `/api/me` reads `runtime: 'installing'` (and the current step in
|
|
12
|
+
// `runtimeMessage`) the moment it starts, because `install()` claims its slot synchronously.
|
|
13
|
+
//
|
|
14
|
+
// ⚠ A FAILURE IS RETRIED ONCE, a few minutes later (a laptop waking on a dead network), then left for
|
|
15
|
+
// the reader's Retry, `limn ai install`, or the next boot — never a loop. A Codex-only failure is
|
|
16
|
+
// Codex's alone (ai/runtime.ts): Claude stays set up.
|
|
17
|
+
//
|
|
18
|
+
// Skipped when AI is off (LIMN_AI_DISABLED=true) or LIMN_AI_AUTO_INSTALL=false.
|
|
19
|
+
import { config } from '../config.js';
|
|
20
|
+
import { getAiRuntimeStatus, getCodexRuntimeStatus, installAiRuntime, } from './runtime.js';
|
|
21
|
+
/** How long after a failed automatic download the one automatic retry waits. */
|
|
22
|
+
export const AUTO_INSTALL_RETRY_MS = 3 * 60_000;
|
|
23
|
+
/**
|
|
24
|
+
* The providers a download must bring, or null when nothing is missing. ['codex'] alone over a ready
|
|
25
|
+
* Claude downloads Codex only (ai/runtime.ts): an existing install neither fetches nor swaps Claude.
|
|
26
|
+
*/
|
|
27
|
+
export function autoInstallProviders(claude, codex) {
|
|
28
|
+
// Already running (a `limn ai install` started by the same process cannot be, but a Retry can).
|
|
29
|
+
if (claude.runtime === 'installing' || codex.runtime === 'installing')
|
|
30
|
+
return null;
|
|
31
|
+
const needClaude = claude.runtime !== 'ready';
|
|
32
|
+
const needCodex = codex.runtime !== 'ready';
|
|
33
|
+
if (!needClaude && !needCodex)
|
|
34
|
+
return null;
|
|
35
|
+
if (!needCodex)
|
|
36
|
+
return ['claude'];
|
|
37
|
+
return needClaude ? ['claude', 'codex'] : ['codex'];
|
|
38
|
+
}
|
|
39
|
+
/** The testable body: one attempt, and on failure ONE scheduled retry. */
|
|
40
|
+
export function runAutoInstall(deps, attempt = 1) {
|
|
41
|
+
if (!deps.enabled)
|
|
42
|
+
return;
|
|
43
|
+
const providers = autoInstallProviders(deps.claude(), deps.codex());
|
|
44
|
+
if (!providers)
|
|
45
|
+
return;
|
|
46
|
+
const names = providers.map((p) => (p === 'codex' ? 'Codex' : 'Claude')).join(' and ');
|
|
47
|
+
deps.log.info(`ai: downloading ${names} in the background`);
|
|
48
|
+
void deps
|
|
49
|
+
.install(providers)
|
|
50
|
+
.then((r) => {
|
|
51
|
+
if (r.ok) {
|
|
52
|
+
deps.log.info(`ai: ${names} downloaded — sign in to use ${providers.length > 1 ? 'them' : 'it'}`);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
deps.log.warn(`ai: the download did not finish: ${r.message}`);
|
|
56
|
+
if (attempt === 1)
|
|
57
|
+
deps.schedule(() => runAutoInstall(deps, 2), AUTO_INSTALL_RETRY_MS);
|
|
58
|
+
})
|
|
59
|
+
.catch(() => {
|
|
60
|
+
/* installAiRuntime never throws; belt and braces for the boot */
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/** Start the first-boot download (a no-op when nothing is missing). Never throws, never awaited. */
|
|
64
|
+
export function startAiAutoInstall(log) {
|
|
65
|
+
try {
|
|
66
|
+
runAutoInstall({
|
|
67
|
+
enabled: config.aiEnabled && config.aiAutoInstall,
|
|
68
|
+
claude: getAiRuntimeStatus,
|
|
69
|
+
codex: getCodexRuntimeStatus,
|
|
70
|
+
install: (providers) => installAiRuntime(undefined, { providers }),
|
|
71
|
+
schedule: (fn, ms) => {
|
|
72
|
+
setTimeout(fn, ms).unref?.();
|
|
73
|
+
},
|
|
74
|
+
log,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
log.warn(`ai: the background download could not start: ${err.message}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=auto-install.js.map
|