ensemble-review 0.0.0-stage → 1.0.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1140) hide show
  1. package/LICENSE +129 -0
  2. package/README.md +167 -2
  3. package/THIRD_PARTY_NOTICES.md +21 -0
  4. package/dist/ai/active-runtime.js +11 -0
  5. package/dist/ai/agent-isolation.js +51 -0
  6. package/dist/ai/auto-install.js +81 -0
  7. package/dist/ai/budget.js +394 -0
  8. package/dist/ai/codex/app-server.js +449 -0
  9. package/dist/ai/codex/config.js +292 -0
  10. package/dist/ai/codex/detect.js +88 -0
  11. package/dist/ai/codex/entry.js +27 -0
  12. package/dist/ai/codex/events.js +290 -0
  13. package/dist/ai/codex/home.js +165 -0
  14. package/dist/ai/codex/hook-rule.js +171 -0
  15. package/dist/ai/codex/hook.js +199 -0
  16. package/dist/ai/codex/kinds/docs.js +10 -0
  17. package/dist/ai/codex/kinds/fix.js +5 -0
  18. package/dist/ai/codex/kinds/review.js +2 -0
  19. package/dist/ai/codex/kinds/story-build.js +2 -0
  20. package/dist/ai/codex/kinds/story-chat.js +2 -0
  21. package/dist/ai/codex/kinds/tickets.js +2 -0
  22. package/dist/ai/codex/linear-regex.js +539 -0
  23. package/dist/ai/codex/login.js +155 -0
  24. package/dist/ai/codex/path-guard-hook-main.js +59 -0
  25. package/dist/ai/codex/readings.js +148 -0
  26. package/dist/ai/codex/rollouts.js +146 -0
  27. package/dist/ai/codex/run.js +210 -0
  28. package/dist/ai/codex/specialists.js +140 -0
  29. package/dist/ai/codex/threads.js +359 -0
  30. package/dist/ai/codex/types.js +5 -0
  31. package/dist/ai/codex/workspace-files.js +470 -0
  32. package/dist/ai/codex/workspace-mcp-main.js +13 -0
  33. package/dist/ai/codex/workspace-mcp.js +160 -0
  34. package/dist/ai/credentials.js +224 -0
  35. package/dist/ai/effort.js +109 -0
  36. package/dist/ai/prompt-tools.js +57 -0
  37. package/dist/ai/provider-setting.js +176 -0
  38. package/dist/ai/provider-store.js +91 -0
  39. package/dist/ai/provider.js +70 -0
  40. package/dist/ai/providers/claude-activity.js +178 -0
  41. package/dist/ai/providers/claude-usage.js +162 -0
  42. package/dist/ai/providers/claude.js +587 -0
  43. package/dist/ai/providers/codex.js +707 -0
  44. package/dist/ai/result-schemas.js +152 -0
  45. package/dist/ai/run-choice.js +95 -0
  46. package/dist/ai/runtime-errors.js +16 -0
  47. package/dist/ai/runtime.js +1019 -0
  48. package/dist/ai/session-litter.js +231 -0
  49. package/dist/ai/usage-lockout.js +108 -0
  50. package/dist/ai/writing-rules.js +53 -0
  51. package/dist/api/plugins/auth.js +25 -0
  52. package/dist/api/plugins/error-handler.js +52 -0
  53. package/dist/api/plugins/rate-limit.js +1093 -0
  54. package/dist/api/plugins/security.js +241 -0
  55. package/dist/api/routes/activity.js +106 -0
  56. package/dist/api/routes/ai-budget.js +54 -0
  57. package/dist/api/routes/ai-codex.js +48 -0
  58. package/dist/api/routes/ai-provider.js +77 -0
  59. package/dist/api/routes/ai-runtime.js +76 -0
  60. package/dist/api/routes/ai-usage-report.js +49 -0
  61. package/dist/api/routes/bot-triage.js +992 -0
  62. package/dist/api/routes/conflicts.js +745 -0
  63. package/dist/api/routes/daily-brief.js +58 -0
  64. package/dist/api/routes/dependency-merge.js +163 -0
  65. package/dist/api/routes/flow.js +73 -0
  66. package/dist/api/routes/health.js +7 -0
  67. package/dist/api/routes/insights.js +275 -0
  68. package/dist/api/routes/me.js +465 -0
  69. package/dist/api/routes/mergers.js +8 -0
  70. package/dist/api/routes/ml-labels.js +108 -0
  71. package/dist/api/routes/ml-runtime.js +64 -0
  72. package/dist/api/routes/open-prs.js +70 -0
  73. package/dist/api/routes/pr-refs.js +41 -0
  74. package/dist/api/routes/pr-tab-summaries.js +32 -0
  75. package/dist/api/routes/prs.js +1719 -0
  76. package/dist/api/routes/push-summaries.js +22 -0
  77. package/dist/api/routes/reactions.js +217 -0
  78. package/dist/api/routes/repos.js +570 -0
  79. package/dist/api/routes/sandbox-settings.js +188 -0
  80. package/dist/api/routes/search.js +46 -0
  81. package/dist/api/routes/sprint-stories.js +80 -0
  82. package/dist/api/routes/storage.js +9 -0
  83. package/dist/api/routes/threads.js +119 -0
  84. package/dist/api/routes/timeline.js +151 -0
  85. package/dist/api/routes/users.js +67 -0
  86. package/dist/api/routes/workspaces.js +493 -0
  87. package/dist/app.js +249 -0
  88. package/dist/ascii.js +19 -0
  89. package/dist/auth/account.js +358 -0
  90. package/dist/auth/crypto.js +45 -0
  91. package/dist/bot-triage/resolve.js +61 -0
  92. package/dist/cli.js +564 -0
  93. package/dist/coding/ai-fix/auto-fix-queue.js +351 -0
  94. package/dist/coding/ai-fix/auto-fix-routes.js +117 -0
  95. package/dist/coding/ai-fix/auto-fix.js +298 -0
  96. package/dist/coding/ai-fix/auto-push.js +146 -0
  97. package/dist/coding/ai-fix/cap-diff.js +45 -0
  98. package/dist/coding/ai-fix/manager.js +501 -0
  99. package/dist/coding/ai-fix/merge-host.js +61 -0
  100. package/dist/coding/ai-fix/merge-verify.js +240 -0
  101. package/dist/coding/ai-fix/persist.js +238 -0
  102. package/dist/coding/ai-fix/plan.js +65 -0
  103. package/dist/coding/ai-fix/pr-context.js +98 -0
  104. package/dist/coding/ai-fix/push-guard.js +17 -0
  105. package/dist/coding/ai-fix/push.js +132 -0
  106. package/dist/coding/ai-fix/review-seed.js +706 -0
  107. package/dist/coding/ai-fix/routes.js +680 -0
  108. package/dist/coding/ai-fix/start-queue.js +158 -0
  109. package/dist/coding/ai-fix/stream.js +31 -0
  110. package/dist/coding/ai-fix/thread-candidates.js +77 -0
  111. package/dist/coding/git-ops.js +537 -0
  112. package/dist/coding/git.js +197 -0
  113. package/dist/coding/merge.js +272 -0
  114. package/dist/coding/schema.js +43 -0
  115. package/dist/coding/story-build/auto-push.js +182 -0
  116. package/dist/coding/story-build/base-refs.js +158 -0
  117. package/dist/coding/story-build/build-claim-flow.js +324 -0
  118. package/dist/coding/story-build/build-claim-github.js +126 -0
  119. package/dist/coding/story-build/build-claim-ledger.js +122 -0
  120. package/dist/coding/story-build/build-claim-release.js +249 -0
  121. package/dist/coding/story-build/build-claim.js +153 -0
  122. package/dist/coding/story-build/candidates.js +74 -0
  123. package/dist/coding/story-build/coverage.js +39 -0
  124. package/dist/coding/story-build/end-to-end.js +305 -0
  125. package/dist/coding/story-build/inputs.js +106 -0
  126. package/dist/coding/story-build/kept-worktree.js +16 -0
  127. package/dist/coding/story-build/legacy.js +95 -0
  128. package/dist/coding/story-build/limits.js +22 -0
  129. package/dist/coding/story-build/loop/branch-review.js +128 -0
  130. package/dist/coding/story-build/loop/driver.js +1256 -0
  131. package/dist/coding/story-build/loop/persist.js +200 -0
  132. package/dist/coding/story-build/loop/pr-body.js +34 -0
  133. package/dist/coding/story-build/loop/pr-facts.js +75 -0
  134. package/dist/coding/story-build/loop/review-lines.js +103 -0
  135. package/dist/coding/story-build/loop/review-on-pr.js +67 -0
  136. package/dist/coding/story-build/loop/routes.js +119 -0
  137. package/dist/coding/story-build/loop/seams.js +104 -0
  138. package/dist/coding/story-build/loop/seed.js +122 -0
  139. package/dist/coding/story-build/loop/story-check.js +166 -0
  140. package/dist/coding/story-build/loop/targets.js +104 -0
  141. package/dist/coding/story-build/loop/wire.js +372 -0
  142. package/dist/coding/story-build/persist.js +301 -0
  143. package/dist/coding/story-build/plan-blobs.js +47 -0
  144. package/dist/coding/story-build/plan-persist.js +258 -0
  145. package/dist/coding/story-build/plan-verify.js +281 -0
  146. package/dist/coding/story-build/push-stack.js +361 -0
  147. package/dist/coding/story-build/push.js +407 -0
  148. package/dist/coding/story-build/routes-build.js +265 -0
  149. package/dist/coding/story-build/seams.js +2 -0
  150. package/dist/coding/story-build/stack-verify.js +273 -0
  151. package/dist/config.js +548 -0
  152. package/dist/conflict/diff.js +304 -0
  153. package/dist/conflict/git.js +118 -0
  154. package/dist/conflict/hash.js +73 -0
  155. package/dist/conflict/janitor.js +218 -0
  156. package/dist/conflict/land.js +684 -0
  157. package/dist/conflict/model-types.js +2 -0
  158. package/dist/conflict/model.js +1081 -0
  159. package/dist/conflict/parse.js +142 -0
  160. package/dist/conflict/seam.js +136 -0
  161. package/dist/conflict/session.js +532 -0
  162. package/dist/conflict/suggestion.js +398 -0
  163. package/dist/conflict/tokens.js +72 -0
  164. package/dist/data-dir.js +150 -0
  165. package/dist/db/actor-lanes.js +223 -0
  166. package/dist/db/ai-reviews-seen.js +180 -0
  167. package/dist/db/ai-usage-report.js +610 -0
  168. package/dist/db/auto-retry-at-head.js +39 -0
  169. package/dist/db/automation-ids.js +97 -0
  170. package/dist/db/blast-radius-query.js +56 -0
  171. package/dist/db/blast-radius.js +226 -0
  172. package/dist/db/bot-dormancy.js +107 -0
  173. package/dist/db/bot-overlap.js +586 -0
  174. package/dist/db/bot-volume.js +722 -0
  175. package/dist/db/bot-window.js +35 -0
  176. package/dist/db/branch-queries.js +310 -0
  177. package/dist/db/change-shape.js +243 -0
  178. package/dist/db/changepoint.js +78 -0
  179. package/dist/db/ci-review-prune.js +22 -0
  180. package/dist/db/claude-review-seen.js +36 -0
  181. package/dist/db/cleanup.js +36 -0
  182. package/dist/db/client.js +91 -0
  183. package/dist/db/code-loc.js +392 -0
  184. package/dist/db/daily-brief.js +403 -0
  185. package/dist/db/dependency-cards.js +145 -0
  186. package/dist/db/erase-account.js +570 -0
  187. package/dist/db/export-account.js +540 -0
  188. package/dist/db/external-repos.js +281 -0
  189. package/dist/db/failing-checks.js +124 -0
  190. package/dist/db/feature-gates.js +80 -0
  191. package/dist/db/file-coupling.js +197 -0
  192. package/dist/db/flaky-checks.js +148 -0
  193. package/dist/db/flow-detail.js +706 -0
  194. package/dist/db/flow-pointers.js +209 -0
  195. package/dist/db/flow-settings.js +125 -0
  196. package/dist/db/flow-trend.js +585 -0
  197. package/dist/db/forecast.js +114 -0
  198. package/dist/db/instance-id.js +38 -0
  199. package/dist/db/limn-actions.js +343 -0
  200. package/dist/db/limn-bots.js +575 -0
  201. package/dist/db/limn-discharged-requests.js +69 -0
  202. package/dist/db/limn-finding-labels.js +173 -0
  203. package/dist/db/limn-finding-severity.js +142 -0
  204. package/dist/db/limn-history-backfill.js +625 -0
  205. package/dist/db/line-overlap.js +81 -0
  206. package/dist/db/merge-queue.js +193 -0
  207. package/dist/db/merged-prs.js +50 -0
  208. package/dist/db/merged-reach.js +83 -0
  209. package/dist/db/migrate.js +15 -0
  210. package/dist/db/migrations/0000_purple_ben_grimm.sql +155 -0
  211. package/dist/db/migrations/0001_colorful_ozymandias.sql +31 -0
  212. package/dist/db/migrations/0002_famous_sersi.sql +9 -0
  213. package/dist/db/migrations/0003_clever_shinobi_shaw.sql +3 -0
  214. package/dist/db/migrations/0004_pale_scalphunter.sql +1 -0
  215. package/dist/db/migrations/0005_daffy_guardian.sql +2 -0
  216. package/dist/db/migrations/0006_cute_violations.sql +45 -0
  217. package/dist/db/migrations/0007_dark_anthem.sql +2 -0
  218. package/dist/db/migrations/0008_multitenant_accounts.sql +44 -0
  219. package/dist/db/migrations/0009_lean_bodies.sql +13 -0
  220. package/dist/db/migrations/0010_lean_bodies_nullable.sql +56 -0
  221. package/dist/db/migrations/0011_pr_diff_size.sql +10 -0
  222. package/dist/db/migrations/0012_findings_included_default.sql +7 -0
  223. package/dist/db/migrations/0013_review_routing.sql +9 -0
  224. package/dist/db/migrations/0014_account_last_active.sql +6 -0
  225. package/dist/db/migrations/0015_repos_inbox_watch.sql +9 -0
  226. package/dist/db/migrations/0016_repo_viewer_permission.sql +7 -0
  227. package/dist/db/migrations/0017_account_display_name.sql +7 -0
  228. package/dist/db/migrations/0018_finding_comment_kind.sql +7 -0
  229. package/dist/db/migrations/0019_finding_file_in_diff.sql +7 -0
  230. package/dist/db/migrations/0020_claude_review_cost_telemetry.sql +11 -0
  231. package/dist/db/migrations/0021_account_feed_last_seen.sql +7 -0
  232. package/dist/db/migrations/0022_ci_status_events.sql +21 -0
  233. package/dist/db/migrations/0023_ai_usage.sql +21 -0
  234. package/dist/db/migrations/0024_pr_head_ref_name.sql +6 -0
  235. package/dist/db/migrations/0025_account_billing.sql +7 -0
  236. package/dist/db/migrations/0026_ai_credit_allowance.sql +5 -0
  237. package/dist/db/migrations/0027_user_github_type.sql +6 -0
  238. package/dist/db/migrations/0028_bot_review_classification.sql +21 -0
  239. package/dist/db/migrations/0029_bot_mute_rules.sql +19 -0
  240. package/dist/db/migrations/0030_teams.sql +32 -0
  241. package/dist/db/migrations/0031_events_pr_idx.sql +7 -0
  242. package/dist/db/migrations/0032_benchmark_contributions.sql +29 -0
  243. package/dist/db/migrations/0033_thread_addressed_confidence.sql +9 -0
  244. package/dist/db/migrations/0034_thread_resolved_at.sql +6 -0
  245. package/dist/db/migrations/0035_pr_first_review_requested_at.sql +5 -0
  246. package/dist/db/migrations/0036_search_index.sql +25 -0
  247. package/dist/db/migrations/0037_author_indexes.sql +15 -0
  248. package/dist/db/migrations/0038_auto_merge_requests.sql +37 -0
  249. package/dist/db/migrations/0039_branch_status.sql +44 -0
  250. package/dist/db/migrations/0040_pr_review_decision.sql +10 -0
  251. package/dist/db/migrations/0041_branch_commit_detail.sql +38 -0
  252. package/dist/db/migrations/0042_repo_reviewers.sql +176 -0
  253. package/dist/db/migrations/0043_account_reviewers.sql +131 -0
  254. package/dist/db/migrations/0044_workspaces.sql +138 -0
  255. package/dist/db/migrations/0045_workspace_reviewers.sql +180 -0
  256. package/dist/db/migrations/0046_drop_inbox_watch.sql +25 -0
  257. package/dist/db/migrations/0047_ml_comment_labels.sql +40 -0
  258. package/dist/db/migrations/0048_ml_vendor_severity.sql +31 -0
  259. package/dist/db/migrations/0049_seat_pricing_repo_description.sql +21 -0
  260. package/dist/db/migrations/0050_users_app_slug.sql +12 -0
  261. package/dist/db/migrations/0051_auto_merge_queue.sql +17 -0
  262. package/dist/db/migrations/0052_trunk_ci_status_events.sql +43 -0
  263. package/dist/db/migrations/0053_automation_roles.sql +79 -0
  264. package/dist/db/migrations/0054_automation_vendor_kinds.sql +514 -0
  265. package/dist/db/migrations/0055_auto_merge_phase.sql +12 -0
  266. package/dist/db/migrations/0056_pr_mentions.sql +22 -0
  267. package/dist/db/migrations/0057_large_pr_threshold.sql +14 -0
  268. package/dist/db/migrations/0058_pending_mute.sql +53 -0
  269. package/dist/db/migrations/0059_merge_queue_state.sql +33 -0
  270. package/dist/db/migrations/0060_drop_my_turn_dismissals.sql +33 -0
  271. package/dist/db/migrations/0061_auto_merge_durable_anchors.sql +27 -0
  272. package/dist/db/migrations/0062_blast_radius_config.sql +21 -0
  273. package/dist/db/migrations/0063_repo_file_coupling.sql +33 -0
  274. package/dist/db/migrations/0064_pr_content_kind.sql +21 -0
  275. package/dist/db/migrations/0065_workspace_flow_settings.sql +13 -0
  276. package/dist/db/migrations/0066_review_request_events.sql +31 -0
  277. package/dist/db/migrations/0067_pr_security_signals.sql +86 -0
  278. package/dist/db/migrations/0068_my_turn_settings.sql +18 -0
  279. package/dist/db/migrations/0069_my_turn_dismissals.sql +41 -0
  280. package/dist/db/migrations/0070_claude_review_follow_up_ticket.sql +22 -0
  281. package/dist/db/migrations/0071_claude_review_trigger.sql +11 -0
  282. package/dist/db/migrations/0072_commit_message_headline.sql +13 -0
  283. package/dist/db/migrations/0073_claude_review_chat.sql +31 -0
  284. package/dist/db/migrations/0074_adopt_agentic_tables.sql +98 -0
  285. package/dist/db/migrations/0075_review_lens_drop_learnings.sql +15 -0
  286. package/dist/db/migrations/0076_claude_review_threads.sql +17 -0
  287. package/dist/db/migrations/0077_claude_review_ci_failures.sql +10 -0
  288. package/dist/db/migrations/0078_ai_fix_change_report.sql +17 -0
  289. package/dist/db/migrations/0079_claude_finding_story.sql +16 -0
  290. package/dist/db/migrations/0080_ticket_reviews.sql +88 -0
  291. package/dist/db/migrations/0081_review_request_requester.sql +22 -0
  292. package/dist/db/migrations/0082_ci_reviews.sql +73 -0
  293. package/dist/db/migrations/0083_workspace_auto_fix.sql +9 -0
  294. package/dist/db/migrations/0084_auto_fix_off_by_default.sql +7 -0
  295. package/dist/db/migrations/0085_auto_review_daily_cap.sql +6 -0
  296. package/dist/db/migrations/0086_ticket_review_pr_cards.sql +24 -0
  297. package/dist/db/migrations/0087_auto_post.sql +21 -0
  298. package/dist/db/migrations/0088_issue_tracker.sql +109 -0
  299. package/dist/db/migrations/0089_github_issue_links.sql +18 -0
  300. package/dist/db/migrations/0090_linear_links.sql +22 -0
  301. package/dist/db/migrations/0091_auto_post_verdict_resolve_fix.sql +24 -0
  302. package/dist/db/migrations/0092_finding_pushback.sql +9 -0
  303. package/dist/db/migrations/0093_dependency_auto_merge.sql +25 -0
  304. package/dist/db/migrations/0094_repo_uses_github_issues.sql +26 -0
  305. package/dist/db/migrations/0095_review_chat_explain.sql +14 -0
  306. package/dist/db/migrations/0096_workspace_setting_events.sql +27 -0
  307. package/dist/db/migrations/0097_story_reports.sql +40 -0
  308. package/dist/db/migrations/0098_tracker_ticket_dates.sql +11 -0
  309. package/dist/db/migrations/0099_story_labels.sql +29 -0
  310. package/dist/db/migrations/0100_sprint_stories.sql +141 -0
  311. package/dist/db/migrations/0101_sprint_reads_api_root.sql +6 -0
  312. package/dist/db/migrations/0102_workspace_sprint_checks.sql +5 -0
  313. package/dist/db/migrations/0103_sprint_statuses_and_blockers.sql +26 -0
  314. package/dist/db/migrations/0104_sprint_ticket_repos_saved.sql +7 -0
  315. package/dist/db/migrations/0105_sprint_assessment_mode.sql +8 -0
  316. package/dist/db/migrations/0106_sprint_ref_tickets.sql +27 -0
  317. package/dist/db/migrations/0107_sprint_graph.sql +47 -0
  318. package/dist/db/migrations/0108_sprint_themes.sql +24 -0
  319. package/dist/db/migrations/0109_sprint_story.sql +23 -0
  320. package/dist/db/migrations/0110_finding_reminder.sql +7 -0
  321. package/dist/db/migrations/0111_sprint_dates_story_attempt.sql +19 -0
  322. package/dist/db/migrations/0112_sprint_view_snapshots.sql +20 -0
  323. package/dist/db/migrations/0113_ai_fix_plan.sql +27 -0
  324. package/dist/db/migrations/0114_sonarcloud.sql +42 -0
  325. package/dist/db/migrations/0115_sequence_diagrams.sql +40 -0
  326. package/dist/db/migrations/0116_reference_docs.sql +64 -0
  327. package/dist/db/migrations/0117_review_doc_references.sql +11 -0
  328. package/dist/db/migrations/0118_sequence_diagram_runs.sql +10 -0
  329. package/dist/db/migrations/0119_design_diagrams.sql +7 -0
  330. package/dist/db/migrations/0120_sprint_paths.sql +33 -0
  331. package/dist/db/migrations/0121_story_docs_alignments.sql +42 -0
  332. package/dist/db/migrations/0122_claude_thread_checks.sql +42 -0
  333. package/dist/db/migrations/0123_sprint_brief_one_liner.sql +5 -0
  334. package/dist/db/migrations/0124_reference_doc_crawl.sql +8 -0
  335. package/dist/db/migrations/0125_account_ai_budget.sql +10 -0
  336. package/dist/db/migrations/0126_workspace_auto_diagrams.sql +8 -0
  337. package/dist/db/migrations/0127_ai_usage_provider.sql +11 -0
  338. package/dist/db/migrations/0128_ai_provider_labels.sql +44 -0
  339. package/dist/db/migrations/0129_cheap_run_provider.sql +10 -0
  340. package/dist/db/migrations/0130_ai_effort.sql +13 -0
  341. package/dist/db/migrations/0131_related_repos.sql +23 -0
  342. package/dist/db/migrations/0132_sprint_code_judgements.sql +24 -0
  343. package/dist/db/migrations/0133_review_fresh.sql +4 -0
  344. package/dist/db/migrations/0134_team_claims.sql +10 -0
  345. package/dist/db/migrations/0135_review_pairs.sql +12 -0
  346. package/dist/db/migrations/0136_review_kind.sql +5 -0
  347. package/dist/db/migrations/0137_review_pair_consolidation.sql +8 -0
  348. package/dist/db/migrations/0138_team_claim_lines.sql +55 -0
  349. package/dist/db/migrations/0139_instance_meta.sql +8 -0
  350. package/dist/db/migrations/0140_reference_doc_wiki.sql +62 -0
  351. package/dist/db/migrations/0141_tracker_ticket_comments.sql +20 -0
  352. package/dist/db/migrations/0142_ticket_review_comments_seen.sql +4 -0
  353. package/dist/db/migrations/0143_reference_doc_figures.sql +25 -0
  354. package/dist/db/migrations/0144_workspace_tracker_notion.sql +3 -0
  355. package/dist/db/migrations/0145_verdict_strictness.sql +14 -0
  356. package/dist/db/migrations/0146_worktree_ledger.sql +30 -0
  357. package/dist/db/migrations/0147_dependency_automation.sql +41 -0
  358. package/dist/db/migrations/0148_ai_fix_checks.sql +5 -0
  359. package/dist/db/migrations/0149_story_builds.sql +116 -0
  360. package/dist/db/migrations/0150_review_coverage.sql +5 -0
  361. package/dist/db/migrations/0151_limn_finding_bots.sql +10 -0
  362. package/dist/db/migrations/0152_reference_doc_chunks.sql +45 -0
  363. package/dist/db/migrations/0153_feature_visibility.sql +16 -0
  364. package/dist/db/migrations/0154_first_landing.sql +15 -0
  365. package/dist/db/migrations/0155_repo_docs_offers.sql +36 -0
  366. package/dist/db/migrations/0156_ci_history_pending.sql +9 -0
  367. package/dist/db/migrations/0157_sprint_source_probe.sql +17 -0
  368. package/dist/db/migrations/0158_repo_docs_unreadable.sql +12 -0
  369. package/dist/db/migrations/0159_team_claims_default_on.sql +21 -0
  370. package/dist/db/migrations/0160_teammate_reviews.sql +21 -0
  371. package/dist/db/migrations/0161_review_post_on_finish.sql +7 -0
  372. package/dist/db/migrations/0162_dependency_ai_fix.sql +12 -0
  373. package/dist/db/migrations/0163_pr_cross_repository.sql +5 -0
  374. package/dist/db/migrations/0164_teammate_block_lift.sql +7 -0
  375. package/dist/db/migrations/0165_withdraw_approval_on_push.sql +6 -0
  376. package/dist/db/migrations/0166_team_claim_skip_lines.sql +20 -0
  377. package/dist/db/migrations/0167_ai_reviews_seen.sql +4 -0
  378. package/dist/db/migrations/0168_ai_review_seen_per_run.sql +12 -0
  379. package/dist/db/migrations/0169_approved_merged_since.sql +6 -0
  380. package/dist/db/migrations/0170_claude_still_open_posts.sql +35 -0
  381. package/dist/db/migrations/0171_open_points.sql +25 -0
  382. package/dist/db/migrations/0172_push_summaries.sql +12 -0
  383. package/dist/db/migrations/0173_sandbox_allowed_hosts.sql +17 -0
  384. package/dist/db/migrations/0174_sandbox_workspace_settings.sql +25 -0
  385. package/dist/db/migrations/0175_sandbox_services.sql +7 -0
  386. package/dist/db/migrations/0176_sandbox_sessions.sql +36 -0
  387. package/dist/db/migrations/0177_ai_fix_sessions.sql +30 -0
  388. package/dist/db/migrations/0178_ai_fix_merge.sql +12 -0
  389. package/dist/db/migrations/0179_story_build_plans.sql +97 -0
  390. package/dist/db/migrations/0180_limn_actions.sql +63 -0
  391. package/dist/db/migrations/0181_workspace_flow_view.sql +9 -0
  392. package/dist/db/migrations/0182_ticket_auto_clock.sql +24 -0
  393. package/dist/db/migrations/0183_review_dismissals.sql +14 -0
  394. package/dist/db/migrations/0184_ai_use_api_key.sql +5 -0
  395. package/dist/db/migrations/0185_story_build_auto_push.sql +19 -0
  396. package/dist/db/migrations/0186_story_build_review_loop.sql +185 -0
  397. package/dist/db/migrations/0187_story_build_auto_approve.sql +14 -0
  398. package/dist/db/migrations/0188_workspace_repo_external.sql +7 -0
  399. package/dist/db/migrations/0189_story_build_end_to_end.sql +12 -0
  400. package/dist/db/migrations/0190_ai_fix_push_when_done.sql +5 -0
  401. package/dist/db/migrations/0191_workspace_external_repos.sql +21 -0
  402. package/dist/db/migrations/0192_story_chats.sql +41 -0
  403. package/dist/db/migrations/0193_dependency_automation_on.sql +50 -0
  404. package/dist/db/migrations/0194_story_build_claims.sql +38 -0
  405. package/dist/db/migrations/meta/0000_snapshot.json +1116 -0
  406. package/dist/db/migrations/meta/0001_snapshot.json +1321 -0
  407. package/dist/db/migrations/meta/0002_snapshot.json +1375 -0
  408. package/dist/db/migrations/meta/0003_snapshot.json +1396 -0
  409. package/dist/db/migrations/meta/0004_snapshot.json +1416 -0
  410. package/dist/db/migrations/meta/0005_snapshot.json +1430 -0
  411. package/dist/db/migrations/meta/0006_snapshot.json +1745 -0
  412. package/dist/db/migrations/meta/0007_snapshot.json +1759 -0
  413. package/dist/db/migrations/meta/_journal.json +1371 -0
  414. package/dist/db/ml-labels.js +1692 -0
  415. package/dist/db/my-turn-card-facts.js +398 -0
  416. package/dist/db/my-turn-dismissals.js +290 -0
  417. package/dist/db/my-turn-floor.js +18 -0
  418. package/dist/db/my-turn-pushed-since.js +78 -0
  419. package/dist/db/my-turn-settings.js +34 -0
  420. package/dist/db/pending-classify.js +46 -0
  421. package/dist/db/pending-first-landing.js +179 -0
  422. package/dist/db/pending-mute.js +171 -0
  423. package/dist/db/pending-tabs.js +356 -0
  424. package/dist/db/period-metrics.js +791 -0
  425. package/dist/db/person-period.js +763 -0
  426. package/dist/db/pr-chips.js +32 -0
  427. package/dist/db/pr-criteria.js +110 -0
  428. package/dist/db/pr-intervals.js +1034 -0
  429. package/dist/db/pr-liveness.js +256 -0
  430. package/dist/db/pr-mentions.js +279 -0
  431. package/dist/db/pr-merge-queue-stamp.js +91 -0
  432. package/dist/db/pr-refs.js +64 -0
  433. package/dist/db/pr-stacks.js +151 -0
  434. package/dist/db/pr-tab-summaries.js +66 -0
  435. package/dist/db/push-summaries.js +49 -0
  436. package/dist/db/queries.js +13906 -0
  437. package/dist/db/reaction-targets.js +94 -0
  438. package/dist/db/related-repos.js +128 -0
  439. package/dist/db/repo-activity.js +164 -0
  440. package/dist/db/reporting-window.js +56 -0
  441. package/dist/db/retention.js +173 -0
  442. package/dist/db/review-threads-for-review.js +493 -0
  443. package/dist/db/review-waits.js +136 -0
  444. package/dist/db/run-migrations.js +9 -0
  445. package/dist/db/sandbox-allowed-hosts.js +48 -0
  446. package/dist/db/sandbox-settings.js +180 -0
  447. package/dist/db/schema.sqlite.js +4856 -0
  448. package/dist/db/search.js +419 -0
  449. package/dist/db/security-alerts.js +218 -0
  450. package/dist/db/sequence-diagram-prune.js +54 -0
  451. package/dist/db/setting-event-write.js +29 -0
  452. package/dist/db/sprint-briefs.js +169 -0
  453. package/dist/db/sprint-builds.js +72 -0
  454. package/dist/db/sprint-code-judgements.js +100 -0
  455. package/dist/db/sprint-graph-fold.js +223 -0
  456. package/dist/db/sprint-graph.js +529 -0
  457. package/dist/db/sprint-pass-flights.js +22 -0
  458. package/dist/db/sprint-paths.js +481 -0
  459. package/dist/db/sprint-signals.js +276 -0
  460. package/dist/db/sprint-status-layout.js +443 -0
  461. package/dist/db/sprint-status-settings.js +261 -0
  462. package/dist/db/sprint-store.js +106 -0
  463. package/dist/db/sprint-themes.js +121 -0
  464. package/dist/db/sprint-ticket-checks.js +171 -0
  465. package/dist/db/still-open-threads.js +68 -0
  466. package/dist/db/stories.js +310 -0
  467. package/dist/db/story-criteria.js +175 -0
  468. package/dist/db/story-health-fold.js +21 -0
  469. package/dist/db/story-health.js +219 -0
  470. package/dist/db/story-issue-input.js +155 -0
  471. package/dist/db/story-label-input.js +51 -0
  472. package/dist/db/synthesis-input.js +219 -0
  473. package/dist/db/team-claim-lines-delete.js +33 -0
  474. package/dist/db/teammate-reviews-import.js +300 -0
  475. package/dist/db/teammate-reviews.js +235 -0
  476. package/dist/db/teammate-verdict-pickup.js +88 -0
  477. package/dist/db/teammate-verdict-wait.js +90 -0
  478. package/dist/db/ticket-comments-prune.js +20 -0
  479. package/dist/db/ticket-review-prune.js +51 -0
  480. package/dist/db/triage.js +316 -0
  481. package/dist/db/true-author.js +26 -0
  482. package/dist/db/usage.js +69 -0
  483. package/dist/db/work-plan.js +717 -0
  484. package/dist/db/working-hours.js +190 -0
  485. package/dist/db/workspace-setting-events.js +52 -0
  486. package/dist/env-name.js +68 -0
  487. package/dist/feed/my-turn.js +149 -0
  488. package/dist/github/actions-logs.js +397 -0
  489. package/dist/github/auth.js +86 -0
  490. package/dist/github/branch-queries.js +243 -0
  491. package/dist/github/check-context-state.js +42 -0
  492. package/dist/github/client.js +441 -0
  493. package/dist/github/codeowners.js +221 -0
  494. package/dist/github/commit-checks.js +116 -0
  495. package/dist/github/compare.js +110 -0
  496. package/dist/github/diff-anchor.js +227 -0
  497. package/dist/github/mutations.js +1005 -0
  498. package/dist/github/pr-file-content.js +254 -0
  499. package/dist/github/pr-liveness.js +161 -0
  500. package/dist/github/queries.js +961 -0
  501. package/dist/github/rate-budget.js +144 -0
  502. package/dist/github/reactions.js +161 -0
  503. package/dist/github/reviewer-suggest.js +104 -0
  504. package/dist/github/settle-query.js +93 -0
  505. package/dist/github/team-reviewers.js +96 -0
  506. package/dist/github/write-origin.js +111 -0
  507. package/dist/index.js +333 -0
  508. package/dist/instance-lock.js +170 -0
  509. package/dist/merge/arm-intent.js +88 -0
  510. package/dist/merge/auto-merge-runner.js +1146 -0
  511. package/dist/merge/dependency-automation.js +1208 -0
  512. package/dist/merge/dependency-policy.js +429 -0
  513. package/dist/merge/dependency-rules.js +302 -0
  514. package/dist/merge/deps-claim-ledger.js +134 -0
  515. package/dist/merge/deps-claim-release.js +278 -0
  516. package/dist/merge/deps-claim.js +633 -0
  517. package/dist/ml/blake2b.js +142 -0
  518. package/dist/ml/decode.js +121 -0
  519. package/dist/ml/local-scorer.js +183 -0
  520. package/dist/ml/markers.js +770 -0
  521. package/dist/ml/model.js +88 -0
  522. package/dist/ml/onnx-head.js +129 -0
  523. package/dist/ml/power.js +59 -0
  524. package/dist/ml/runtime.js +378 -0
  525. package/dist/ml/scorer-process.js +44 -0
  526. package/dist/ml/scorer.js +107 -0
  527. package/dist/ml/severity-client.js +218 -0
  528. package/dist/ml/throttle.js +34 -0
  529. package/dist/platform/activity-digest/schema.sqlite.js +33 -0
  530. package/dist/platform/advisor/schema.sqlite.js +107 -0
  531. package/dist/platform/ai-fix/schema.sqlite.js +32 -0
  532. package/dist/platform/annotations/schema.sqlite.js +60 -0
  533. package/dist/platform/bot-themes/build.js +222 -0
  534. package/dist/platform/bot-themes/prompt.js +220 -0
  535. package/dist/platform/bot-themes/routes.js +313 -0
  536. package/dist/platform/bot-themes/schema.sqlite.js +39 -0
  537. package/dist/platform/bots/behaviour-routes.js +65 -0
  538. package/dist/platform/bots/benchmark/anomalies.js +140 -0
  539. package/dist/platform/bots/benchmark/artifact.js +214 -0
  540. package/dist/platform/bots/benchmark/collect.js +571 -0
  541. package/dist/platform/bots/benchmark/cost.js +658 -0
  542. package/dist/platform/bots/benchmark/fold.js +513 -0
  543. package/dist/platform/bots/benchmark/map.js +374 -0
  544. package/dist/platform/bots/benchmark/percentile.js +101 -0
  545. package/dist/platform/bots/benchmark/place.js +184 -0
  546. package/dist/platform/bots/benchmark/placement-routes.js +742 -0
  547. package/dist/platform/bots/benchmark/rollup.js +670 -0
  548. package/dist/platform/bots/benchmark-routes.js +153 -0
  549. package/dist/platform/context.js +193 -0
  550. package/dist/platform/contract.js +2 -0
  551. package/dist/platform/data/benchmark/benchmark-fit.json +1 -0
  552. package/dist/platform/db.js +51 -0
  553. package/dist/platform/event-hooks.js +49 -0
  554. package/dist/platform/flow-pointers/hash.js +89 -0
  555. package/dist/platform/flow-pointers/prompt.js +244 -0
  556. package/dist/platform/flow-pointers/routes.js +283 -0
  557. package/dist/platform/flow-pointers/schema.sqlite.js +44 -0
  558. package/dist/platform/human-themes/schema.sqlite.js +32 -0
  559. package/dist/platform/index.js +75 -0
  560. package/dist/platform/insights/period-report.js +388 -0
  561. package/dist/platform/insights/period-routes.js +53 -0
  562. package/dist/platform/insights/period-schema.sqlite.js +117 -0
  563. package/dist/platform/insights/pr-refs.js +107 -0
  564. package/dist/platform/insights/pr-token.js +22 -0
  565. package/dist/platform/insights/routes.js +70 -0
  566. package/dist/platform/insights/schema.sqlite.js +125 -0
  567. package/dist/platform/insights/sprint-report.js +627 -0
  568. package/dist/platform/insights/workspace-request.js +64 -0
  569. package/dist/platform/insights/workspace-scope.js +77 -0
  570. package/dist/platform/llm/gate.js +22 -0
  571. package/dist/platform/llm/seam.js +58 -0
  572. package/dist/platform/migrate.js +15 -0
  573. package/dist/platform/migration-files.js +36 -0
  574. package/dist/platform/migrations/0001_init.sql +23 -0
  575. package/dist/platform/migrations/0002_ai_fix.sql +25 -0
  576. package/dist/platform/migrations/0003_ai_fix_resolve.sql +19 -0
  577. package/dist/platform/migrations/0004_sprint_report.sql +19 -0
  578. package/dist/platform/migrations/0005_pro_settings.sql +26 -0
  579. package/dist/platform/migrations/0006_issue_project_keys.sql +7 -0
  580. package/dist/platform/migrations/0007_comparison_mode.sql +8 -0
  581. package/dist/platform/migrations/0008_retro_report.sql +19 -0
  582. package/dist/platform/migrations/0009_bot_settings.sql +17 -0
  583. package/dist/platform/migrations/0010_team_scope.sql +33 -0
  584. package/dist/platform/migrations/0011_comment_assess.sql +22 -0
  585. package/dist/platform/migrations/0012_resolution_check.sql +23 -0
  586. package/dist/platform/migrations/0013_pinned_prompts.sql +19 -0
  587. package/dist/platform/migrations/0014_bot_themes.sql +24 -0
  588. package/dist/platform/migrations/0015_human_themes.sql +23 -0
  589. package/dist/platform/migrations/0016_sprint_chat_history.sql +24 -0
  590. package/dist/platform/migrations/0017_pr_comment_annotations.sql +63 -0
  591. package/dist/platform/migrations/0018_drop_retro_reports.sql +19 -0
  592. package/dist/platform/migrations/0019_bot_cost_to_account_reviewers.sql +258 -0
  593. package/dist/platform/migrations/0020_workspace_scope_keys.sql +235 -0
  594. package/dist/platform/migrations/0021_bot_advisor.sql +82 -0
  595. package/dist/platform/migrations/0022_annotation_evidence.sql +32 -0
  596. package/dist/platform/migrations/0023_chat_answer_window.sql +30 -0
  597. package/dist/platform/migrations/0024_ai_fix_comment_seed.sql +44 -0
  598. package/dist/platform/migrations/0025_period_reports.sql +100 -0
  599. package/dist/platform/migrations/0026_period_lanes.sql +19 -0
  600. package/dist/platform/migrations/0027_synthesis.sql +57 -0
  601. package/dist/platform/migrations/0028_work_plan.sql +66 -0
  602. package/dist/platform/migrations/0029_workspace_sprint_cadence.sql +73 -0
  603. package/dist/platform/migrations/0030_workspace_slack_targets.sql +127 -0
  604. package/dist/platform/migrations/0031_workspace_issue_tracker.sql +116 -0
  605. package/dist/platform/migrations/0032_workspace_comparison_mode.sql +77 -0
  606. package/dist/platform/migrations/0033_slack_target_bot_digest.sql +47 -0
  607. package/dist/platform/migrations/0034_flow_pointers.sql +32 -0
  608. package/dist/platform/migrations/0035_workspace_jira_api.sql +28 -0
  609. package/dist/platform/migrations/0036_workspace_auto_review.sql +19 -0
  610. package/dist/platform/migrations/0037_auto_review_to_core.sql +31 -0
  611. package/dist/platform/migrations/0038_pr_jira_tickets.sql +13 -0
  612. package/dist/platform/migrations/0039_jira_ticket_peers.sql +8 -0
  613. package/dist/platform/migrations/0040_slack_event_signals.sql +24 -0
  614. package/dist/platform/migrations/0041_workspace_hourly_cost.sql +11 -0
  615. package/dist/platform/migrations/0042_ai_provider_labels.sql +17 -0
  616. package/dist/platform/migrations/0043_period_report_ran_on.sql +13 -0
  617. package/dist/platform/resolution-check/schema.sqlite.js +35 -0
  618. package/dist/platform/retention.js +158 -0
  619. package/dist/platform/review-assess/schema.sqlite.js +32 -0
  620. package/dist/platform/settings/routes.js +167 -0
  621. package/dist/platform/settings/schema.sqlite.js +253 -0
  622. package/dist/platform/settings/store.js +498 -0
  623. package/dist/platform/slack/cron.js +195 -0
  624. package/dist/platform/slack/format.js +335 -0
  625. package/dist/platform/slack/links.js +124 -0
  626. package/dist/platform/slack/pending-blocks.js +220 -0
  627. package/dist/platform/slack/report.js +235 -0
  628. package/dist/platform/slack/routes.js +127 -0
  629. package/dist/platform/slack/schema.sqlite.js +24 -0
  630. package/dist/platform/slack/send.js +39 -0
  631. package/dist/platform/slack/signals.js +261 -0
  632. package/dist/platform/slack/targets.js +237 -0
  633. package/dist/platform/slack/tones.js +89 -0
  634. package/dist/platform/synthesis/hash.js +44 -0
  635. package/dist/platform/synthesis/prompt.js +110 -0
  636. package/dist/platform/synthesis/routes.js +305 -0
  637. package/dist/platform/synthesis/schema.sqlite.js +50 -0
  638. package/dist/platform/synthesis/scope.js +159 -0
  639. package/dist/platform/themes/resolve.js +90 -0
  640. package/dist/platform/work-plan/schema.sqlite.js +80 -0
  641. package/dist/pr/detail-enricher.js +18 -0
  642. package/dist/reference-docs/agent.js +397 -0
  643. package/dist/reference-docs/assemble.js +62 -0
  644. package/dist/reference-docs/build-judge.js +130 -0
  645. package/dist/reference-docs/chat-quotes.js +229 -0
  646. package/dist/reference-docs/chat.js +175 -0
  647. package/dist/reference-docs/chunks.js +162 -0
  648. package/dist/reference-docs/context.js +66 -0
  649. package/dist/reference-docs/convert.js +395 -0
  650. package/dist/reference-docs/crawl-rank.js +108 -0
  651. package/dist/reference-docs/crawl.js +639 -0
  652. package/dist/reference-docs/diagram-outline.js +236 -0
  653. package/dist/reference-docs/figure-cache.js +34 -0
  654. package/dist/reference-docs/figure-describer.js +91 -0
  655. package/dist/reference-docs/figure-fetch.js +66 -0
  656. package/dist/reference-docs/figures.js +317 -0
  657. package/dist/reference-docs/library.js +208 -0
  658. package/dist/reference-docs/manager.js +560 -0
  659. package/dist/reference-docs/owner.js +144 -0
  660. package/dist/reference-docs/paths.js +135 -0
  661. package/dist/reference-docs/prompts.js +200 -0
  662. package/dist/reference-docs/render.js +211 -0
  663. package/dist/reference-docs/repo-offers-routes.js +129 -0
  664. package/dist/reference-docs/repo-offers-store.js +283 -0
  665. package/dist/reference-docs/repo-offers.js +235 -0
  666. package/dist/reference-docs/retrieve.js +110 -0
  667. package/dist/reference-docs/review-refs.js +267 -0
  668. package/dist/reference-docs/robots.js +127 -0
  669. package/dist/reference-docs/routes.js +544 -0
  670. package/dist/reference-docs/schema.js +39 -0
  671. package/dist/reference-docs/search.js +335 -0
  672. package/dist/reference-docs/split.js +397 -0
  673. package/dist/reference-docs/startup.js +33 -0
  674. package/dist/reference-docs/store.js +479 -0
  675. package/dist/reference-docs/url-fetch.js +177 -0
  676. package/dist/reference-docs/wiki/build.js +274 -0
  677. package/dist/reference-docs/wiki/confluence-storage.js +454 -0
  678. package/dist/reference-docs/wiki/confluence.js +543 -0
  679. package/dist/reference-docs/wiki/credentials.js +178 -0
  680. package/dist/reference-docs/wiki/fake-wiki.js +99 -0
  681. package/dist/reference-docs/wiki/github.js +445 -0
  682. package/dist/reference-docs/wiki/notion-blocks.js +270 -0
  683. package/dist/reference-docs/wiki/notion.js +460 -0
  684. package/dist/reference-docs/wiki/pages.js +103 -0
  685. package/dist/reference-docs/wiki/refresh.js +103 -0
  686. package/dist/reference-docs/wiki/register.js +14 -0
  687. package/dist/reference-docs/wiki/routes.js +458 -0
  688. package/dist/reference-docs/wiki/source.js +109 -0
  689. package/dist/reference-docs/wiki/sync.js +206 -0
  690. package/dist/review/agent-context.js +112 -0
  691. package/dist/review/agent.js +475 -0
  692. package/dist/review/agentic.js +211 -0
  693. package/dist/review/auth.js +109 -0
  694. package/dist/review/budget-gate.js +23 -0
  695. package/dist/review/chat-agent.js +236 -0
  696. package/dist/review/cheap-usage.js +21 -0
  697. package/dist/review/ci-review/agent.js +141 -0
  698. package/dist/review/ci-review/auto-post.js +228 -0
  699. package/dist/review/ci-review/currency.js +143 -0
  700. package/dist/review/ci-review/manager.js +398 -0
  701. package/dist/review/ci-review/persist.js +526 -0
  702. package/dist/review/ci-review/prepare.js +95 -0
  703. package/dist/review/ci-review/prompts.js +111 -0
  704. package/dist/review/ci-review/reconcile.js +78 -0
  705. package/dist/review/ci-review/routes.js +193 -0
  706. package/dist/review/ci-review/schema.js +50 -0
  707. package/dist/review/ci-review/sweep.js +181 -0
  708. package/dist/review/ci-review/with-review.js +37 -0
  709. package/dist/review/claude-review/ai-ready.js +20 -0
  710. package/dist/review/claude-review/approval-withdraw.js +141 -0
  711. package/dist/review/claude-review/auto-post.js +1408 -0
  712. package/dist/review/claude-review/auto-pushback.js +169 -0
  713. package/dist/review/claude-review/auto-resolve.js +324 -0
  714. package/dist/review/claude-review/auto-retry.js +152 -0
  715. package/dist/review/claude-review/auto-settings.js +745 -0
  716. package/dist/review/claude-review/auto-verdict.js +425 -0
  717. package/dist/review/claude-review/auto.js +881 -0
  718. package/dist/review/claude-review/chat-explain.js +225 -0
  719. package/dist/review/claude-review/chat.js +749 -0
  720. package/dist/review/claude-review/ci-failures.js +428 -0
  721. package/dist/review/claude-review/earlier-open.js +139 -0
  722. package/dist/review/claude-review/finding-facts.js +27 -0
  723. package/dist/review/claude-review/finding-replies.js +506 -0
  724. package/dist/review/claude-review/finding-thread.js +62 -0
  725. package/dist/review/claude-review/follow-up.js +518 -0
  726. package/dist/review/claude-review/manager.js +1927 -0
  727. package/dist/review/claude-review/manual-reply.js +396 -0
  728. package/dist/review/claude-review/not-approved.js +71 -0
  729. package/dist/review/claude-review/open-point-prose.js +116 -0
  730. package/dist/review/claude-review/open-points.js +187 -0
  731. package/dist/review/claude-review/pair-consolidate.js +410 -0
  732. package/dist/review/claude-review/pair-view.js +252 -0
  733. package/dist/review/claude-review/pair.js +132 -0
  734. package/dist/review/claude-review/persist.js +2284 -0
  735. package/dist/review/claude-review/post-meta.js +128 -0
  736. package/dist/review/claude-review/posted-state.js +236 -0
  737. package/dist/review/claude-review/pr-level-writes.js +231 -0
  738. package/dist/review/claude-review/prompts.js +838 -0
  739. package/dist/review/claude-review/push-summary.js +77 -0
  740. package/dist/review/claude-review/related-repos.js +203 -0
  741. package/dist/review/claude-review/replies-check-agent.js +155 -0
  742. package/dist/review/claude-review/replies-check-prompt.js +256 -0
  743. package/dist/review/claude-review/replies-check-routes.js +76 -0
  744. package/dist/review/claude-review/replies-check-schema.js +52 -0
  745. package/dist/review/claude-review/replies-check.js +1087 -0
  746. package/dist/review/claude-review/replies-linked-prs.js +197 -0
  747. package/dist/review/claude-review/replies-outcome.js +437 -0
  748. package/dist/review/claude-review/replies-pass.js +389 -0
  749. package/dist/review/claude-review/reply-text.js +91 -0
  750. package/dist/review/claude-review/routes.js +942 -0
  751. package/dist/review/claude-review/routing.js +61 -0
  752. package/dist/review/claude-review/run-watchdog.js +50 -0
  753. package/dist/review/claude-review/settled-by-reply.js +138 -0
  754. package/dist/review/claude-review/specialists.js +195 -0
  755. package/dist/review/claude-review/still-open.js +616 -0
  756. package/dist/review/claude-review/team-claim-ledger.js +135 -0
  757. package/dist/review/claude-review/team-claim-manual.js +108 -0
  758. package/dist/review/claude-review/team-claim-release.js +328 -0
  759. package/dist/review/claude-review/team-claim-seen.js +76 -0
  760. package/dist/review/claude-review/team-claim-skip.js +208 -0
  761. package/dist/review/claude-review/team-claim.js +992 -0
  762. package/dist/review/claude-review/team-view.js +1009 -0
  763. package/dist/review/claude-review/teammate-anchor.js +198 -0
  764. package/dist/review/claude-review/teammate-lift.js +442 -0
  765. package/dist/review/claude-review/teammate-reminder.js +137 -0
  766. package/dist/review/claude-review/teammate-resolve.js +294 -0
  767. package/dist/review/claude-review/thread-check-agent.js +166 -0
  768. package/dist/review/claude-review/thread-check-persist.js +199 -0
  769. package/dist/review/claude-review/thread-check-routes.js +101 -0
  770. package/dist/review/claude-review/thread-check-schema.js +10 -0
  771. package/dist/review/claude-review/thread-check.js +431 -0
  772. package/dist/review/claude-review/thread-judgements.js +723 -0
  773. package/dist/review/claude-review/threads.js +289 -0
  774. package/dist/review/claude-review/ticket.js +151 -0
  775. package/dist/review/clone-hygiene.js +339 -0
  776. package/dist/review/clone-manager.js +541 -0
  777. package/dist/review/codex-review.js +106 -0
  778. package/dist/review/codex-wording.js +192 -0
  779. package/dist/review/diagrams/agent.js +188 -0
  780. package/dist/review/diagrams/fingerprint.js +63 -0
  781. package/dist/review/diagrams/manager.js +388 -0
  782. package/dist/review/diagrams/persist.js +331 -0
  783. package/dist/review/diagrams/precheck.js +100 -0
  784. package/dist/review/diagrams/prompts.js +161 -0
  785. package/dist/review/diagrams/routes.js +203 -0
  786. package/dist/review/diagrams/schema.js +47 -0
  787. package/dist/review/diagrams/trigger.js +283 -0
  788. package/dist/review/diagrams/validate.js +242 -0
  789. package/dist/review/diff-rank.js +99 -0
  790. package/dist/review/llm.js +37 -0
  791. package/dist/review/model-options.js +23 -0
  792. package/dist/review/path-guard.js +156 -0
  793. package/dist/review/peer-checkouts.js +39 -0
  794. package/dist/review/post-review.js +347 -0
  795. package/dist/review/post-seam.js +264 -0
  796. package/dist/review/prepare.js +184 -0
  797. package/dist/review/pricing.js +17 -0
  798. package/dist/review/run-provider.js +23 -0
  799. package/dist/review/schema.js +181 -0
  800. package/dist/review/sprint-ask/prompt.js +99 -0
  801. package/dist/review/sprint-ask/routes.js +98 -0
  802. package/dist/review/sprint-briefs/index.js +49 -0
  803. package/dist/review/sprint-briefs/manager.js +195 -0
  804. package/dist/review/sprint-briefs/prompt.js +55 -0
  805. package/dist/review/sprint-briefs/validate.js +96 -0
  806. package/dist/review/sprint-code/manager.js +94 -0
  807. package/dist/review/sprint-code/prompt.js +33 -0
  808. package/dist/review/sprint-code/validate.js +66 -0
  809. package/dist/review/sprint-paths/agent.js +167 -0
  810. package/dist/review/sprint-paths/manager.js +119 -0
  811. package/dist/review/sprint-paths/prompt.js +37 -0
  812. package/dist/review/sprint-paths/schema.js +17 -0
  813. package/dist/review/sprint-paths/validate.js +116 -0
  814. package/dist/review/sprint-themes/manager.js +95 -0
  815. package/dist/review/sprint-themes/prompt.js +31 -0
  816. package/dist/review/sprint-themes/validate.js +82 -0
  817. package/dist/review/story-docs/agent.js +183 -0
  818. package/dist/review/story-docs/candidates.js +33 -0
  819. package/dist/review/story-docs/fingerprint.js +50 -0
  820. package/dist/review/story-docs/inputs.js +110 -0
  821. package/dist/review/story-docs/manager.js +321 -0
  822. package/dist/review/story-docs/persist.js +166 -0
  823. package/dist/review/story-docs/prompts.js +158 -0
  824. package/dist/review/story-docs/routes.js +113 -0
  825. package/dist/review/story-docs/schema.js +46 -0
  826. package/dist/review/story-docs/shortlist.js +319 -0
  827. package/dist/review/story-docs/validate.js +266 -0
  828. package/dist/review/story-labels/manager.js +279 -0
  829. package/dist/review/story-labels/prompt.js +70 -0
  830. package/dist/review/story-labels/routes.js +70 -0
  831. package/dist/review/story-labels/validate.js +198 -0
  832. package/dist/review/submit-map.js +47 -0
  833. package/dist/review/ticket-review/agent.js +144 -0
  834. package/dist/review/ticket-review/auto-inputs.js +195 -0
  835. package/dist/review/ticket-review/auto-plan.js +84 -0
  836. package/dist/review/ticket-review/auto-post.js +287 -0
  837. package/dist/review/ticket-review/cards.js +272 -0
  838. package/dist/review/ticket-review/fingerprint.js +169 -0
  839. package/dist/review/ticket-review/manager.js +611 -0
  840. package/dist/review/ticket-review/persist.js +654 -0
  841. package/dist/review/ticket-review/post-item.js +288 -0
  842. package/dist/review/ticket-review/prepare.js +223 -0
  843. package/dist/review/ticket-review/prepass.js +266 -0
  844. package/dist/review/ticket-review/prompts.js +380 -0
  845. package/dist/review/ticket-review/reconcile.js +283 -0
  846. package/dist/review/ticket-review/routes.js +421 -0
  847. package/dist/review/ticket-review/schema.js +134 -0
  848. package/dist/review/ticket-review/sprint-checks.js +150 -0
  849. package/dist/review/ticket-review/sweep.js +351 -0
  850. package/dist/review/usage.js +90 -0
  851. package/dist/review/worktree-gc-policy.js +111 -0
  852. package/dist/review/worktree-gc.js +585 -0
  853. package/dist/review/worktree-ledger.js +67 -0
  854. package/dist/review/worktree-owner.js +11 -0
  855. package/dist/sandbox/drivers/claude-parse.js +203 -0
  856. package/dist/sandbox/drivers/claude.js +240 -0
  857. package/dist/sandbox/drivers/codex-parse.js +170 -0
  858. package/dist/sandbox/drivers/codex.js +247 -0
  859. package/dist/sandbox/drivers/common.js +128 -0
  860. package/dist/sandbox/drivers/index.js +21 -0
  861. package/dist/sandbox/drivers/types.js +15 -0
  862. package/dist/sandbox/proxy/allow-list.js +71 -0
  863. package/dist/sandbox/proxy/credentials.js +227 -0
  864. package/dist/sandbox/proxy/egress.js +158 -0
  865. package/dist/sandbox/proxy/log.js +129 -0
  866. package/dist/sandbox/proxy/server.js +611 -0
  867. package/dist/sandbox/proxy/source.js +56 -0
  868. package/dist/sandbox/runtime/cli.js +132 -0
  869. package/dist/sandbox/runtime/detect.js +100 -0
  870. package/dist/sandbox/runtime/docker.js +545 -0
  871. package/dist/sandbox/runtime/dockerfile.js +294 -0
  872. package/dist/sandbox/runtime/fake.js +297 -0
  873. package/dist/sandbox/runtime/host-env.js +38 -0
  874. package/dist/sandbox/runtime/image.js +131 -0
  875. package/dist/sandbox/runtime/index.js +228 -0
  876. package/dist/sandbox/runtime/labels.js +76 -0
  877. package/dist/sandbox/runtime/microsandbox.js +515 -0
  878. package/dist/sandbox/runtime/msb-spec.js +335 -0
  879. package/dist/sandbox/runtime/spec.js +207 -0
  880. package/dist/sandbox/runtime/tar.js +53 -0
  881. package/dist/sandbox/runtime/types.js +18 -0
  882. package/dist/sandbox/services/compose-files.js +66 -0
  883. package/dist/sandbox/services/controller.js +649 -0
  884. package/dist/sandbox/services/dind.js +85 -0
  885. package/dist/sandbox/services/index.js +60 -0
  886. package/dist/sandbox/services/policy.js +457 -0
  887. package/dist/sandbox/services/relay.js +128 -0
  888. package/dist/sandbox/services/run-log.js +88 -0
  889. package/dist/sandbox/session/fix-merge.js +323 -0
  890. package/dist/sandbox/session/fix.js +884 -0
  891. package/dist/sandbox/session/janitor.js +81 -0
  892. package/dist/sandbox/session/limits.js +36 -0
  893. package/dist/sandbox/session/manager.js +1940 -0
  894. package/dist/sandbox/session/patches.js +147 -0
  895. package/dist/sandbox/session/plan-block.js +63 -0
  896. package/dist/sandbox/session/plan.js +495 -0
  897. package/dist/sandbox/session/routes.js +497 -0
  898. package/dist/sandbox/session/stack-turn.js +184 -0
  899. package/dist/sandbox/session/stack.js +128 -0
  900. package/dist/sandbox/session/state.js +194 -0
  901. package/dist/sandbox/session/subject.js +2 -0
  902. package/dist/sandbox/workspace/build-report.js +134 -0
  903. package/dist/sandbox/workspace/check.js +96 -0
  904. package/dist/sandbox/workspace/discover.js +182 -0
  905. package/dist/sandbox/workspace/docs-choose.js +40 -0
  906. package/dist/sandbox/workspace/docs.js +111 -0
  907. package/dist/sandbox/workspace/fix-report.js +165 -0
  908. package/dist/sandbox/workspace/index.js +114 -0
  909. package/dist/sandbox/workspace/layout.js +167 -0
  910. package/dist/sandbox/workspace/memories.js +139 -0
  911. package/dist/sandbox/workspace/mirror.js +279 -0
  912. package/dist/sandbox/workspace/plan-check.js +316 -0
  913. package/dist/sandbox/workspace/project-skills.js +96 -0
  914. package/dist/sandbox/workspace/remote.js +72 -0
  915. package/dist/sandbox/workspace/review-response.js +122 -0
  916. package/dist/sandbox/workspace/scan.js +123 -0
  917. package/dist/sandbox/workspace/seed.js +574 -0
  918. package/dist/sandbox/workspace/store.js +314 -0
  919. package/dist/sandbox/workspace/ticket.js +107 -0
  920. package/dist/sandbox-image/Dockerfile +61 -0
  921. package/dist/sandbox-image/limn-svc +51 -0
  922. package/dist/sandbox-image/limn-svcd.cjs +182 -0
  923. package/dist/scratch-guard.js +151 -0
  924. package/dist/scratch.js +100 -0
  925. package/dist/shared/activity-windows.js +8 -0
  926. package/dist/shared/ai-api-key.js +13 -0
  927. package/dist/shared/ai-budget.js +636 -0
  928. package/dist/shared/ai-effort.js +43 -0
  929. package/dist/shared/ai-fix-session.js +46 -0
  930. package/dist/shared/ai-provider-words.js +110 -0
  931. package/dist/shared/ai-run-label.js +183 -0
  932. package/dist/shared/ai-usage-report.js +93 -0
  933. package/dist/shared/auto-fix-queue.js +45 -0
  934. package/dist/shared/blast-radius.js +204 -0
  935. package/dist/shared/build-plan.js +60 -0
  936. package/dist/shared/claude-review.js +575 -0
  937. package/dist/shared/conflict-fold.js +151 -0
  938. package/dist/shared/conflicts.js +33 -0
  939. package/dist/shared/criteria-map.js +132 -0
  940. package/dist/shared/criterion-status.js +50 -0
  941. package/dist/shared/dependency-merge.js +54 -0
  942. package/dist/shared/features.js +61 -0
  943. package/dist/shared/flaky-checks.js +7 -0
  944. package/dist/shared/flow-settings.js +208 -0
  945. package/dist/shared/flow-trend.js +33 -0
  946. package/dist/shared/index.js +65 -0
  947. package/dist/shared/limn-actions.js +51 -0
  948. package/dist/shared/limn-review-meta.js +465 -0
  949. package/dist/shared/limn-severity.js +178 -0
  950. package/dist/shared/limn-status.js +105 -0
  951. package/dist/shared/my-turn-settings.js +36 -0
  952. package/dist/shared/notion-tracker.js +169 -0
  953. package/dist/shared/pending-rules.js +383 -0
  954. package/dist/shared/pr-chips.js +24 -0
  955. package/dist/shared/pr-tab-summary.js +11 -0
  956. package/dist/shared/product.js +66 -0
  957. package/dist/shared/prose.js +91 -0
  958. package/dist/shared/push-summaries.js +59 -0
  959. package/dist/shared/reference-docs-offers.js +63 -0
  960. package/dist/shared/reference-docs-quote.js +170 -0
  961. package/dist/shared/reference-docs-search.js +6 -0
  962. package/dist/shared/reference-docs-wiki.js +198 -0
  963. package/dist/shared/reference-docs.js +121 -0
  964. package/dist/shared/repo-status.js +97 -0
  965. package/dist/shared/reporting-window.js +30 -0
  966. package/dist/shared/sandbox-agent.js +8 -0
  967. package/dist/shared/sandbox-services.js +7 -0
  968. package/dist/shared/sandbox-session.js +59 -0
  969. package/dist/shared/sandbox-workspace.js +8 -0
  970. package/dist/shared/sequence-diagrams.js +124 -0
  971. package/dist/shared/sonar.js +144 -0
  972. package/dist/shared/sprint-graph.js +212 -0
  973. package/dist/shared/sprint-lanes.js +36 -0
  974. package/dist/shared/sprint-members.js +87 -0
  975. package/dist/shared/sprint-stories.js +197 -0
  976. package/dist/shared/still-open.js +196 -0
  977. package/dist/shared/stories.js +10 -0
  978. package/dist/shared/story-build-activity.js +102 -0
  979. package/dist/shared/story-build-loop.js +68 -0
  980. package/dist/shared/story-build.js +260 -0
  981. package/dist/shared/story-chat.js +31 -0
  982. package/dist/shared/story-docs-alignment.js +221 -0
  983. package/dist/shared/story-health.js +114 -0
  984. package/dist/shared/story-issues.js +358 -0
  985. package/dist/shared/story-rules.js +134 -0
  986. package/dist/shared/ticket-comments.js +33 -0
  987. package/dist/shared/ticket-layout.js +268 -0
  988. package/dist/shared/ticket-prs.js +62 -0
  989. package/dist/shared/ticket-refs.js +179 -0
  990. package/dist/shared/types.js +1093 -0
  991. package/dist/sonar/ci-excerpt.js +51 -0
  992. package/dist/sonar/client.js +68 -0
  993. package/dist/sonar/comment.js +247 -0
  994. package/dist/sonar/gather.js +571 -0
  995. package/dist/sonar/index.js +17 -0
  996. package/dist/sonar/late-post.js +108 -0
  997. package/dist/sonar/post.js +217 -0
  998. package/dist/sonar/routes.js +209 -0
  999. package/dist/sonar/settings.js +161 -0
  1000. package/dist/sonar/snapshot.js +127 -0
  1001. package/dist/sonar/store.js +111 -0
  1002. package/dist/status.js +360 -0
  1003. package/dist/story-chat/context.js +100 -0
  1004. package/dist/story-chat/live.js +605 -0
  1005. package/dist/story-chat/routes.js +127 -0
  1006. package/dist/story-chat/seed.js +139 -0
  1007. package/dist/story-chat/store.js +121 -0
  1008. package/dist/story-chat/tmp.js +15 -0
  1009. package/dist/story-chat/trees.js +218 -0
  1010. package/dist/sync/adaptive.js +366 -0
  1011. package/dist/sync/app-attribution.js +66 -0
  1012. package/dist/sync/auth-notices.js +34 -0
  1013. package/dist/sync/backfill-ci-history.js +345 -0
  1014. package/dist/sync/backfill-commit-headlines.js +136 -0
  1015. package/dist/sync/backfill-pr-security.js +175 -0
  1016. package/dist/sync/backfill-review-requests.js +110 -0
  1017. package/dist/sync/bot-detection.js +309 -0
  1018. package/dist/sync/bot-resolution-markers.js +30 -0
  1019. package/dist/sync/branch-status.js +679 -0
  1020. package/dist/sync/ci-history-pending.js +49 -0
  1021. package/dist/sync/classify-change-shape.js +150 -0
  1022. package/dist/sync/commit-files.js +74 -0
  1023. package/dist/sync/derive-thread-state.js +106 -0
  1024. package/dist/sync/drain-review-threads.js +226 -0
  1025. package/dist/sync/heads-fresh.js +40 -0
  1026. package/dist/sync/hydrate-detail.js +482 -0
  1027. package/dist/sync/limn-ci.js +59 -0
  1028. package/dist/sync/mention-scan.js +82 -0
  1029. package/dist/sync/merge-notice.js +56 -0
  1030. package/dist/sync/ml-enrichment.js +489 -0
  1031. package/dist/sync/pr-change-signal.js +96 -0
  1032. package/dist/sync/pr-liveness-sweep.js +139 -0
  1033. package/dist/sync/pr-settle.js +381 -0
  1034. package/dist/sync/refresh-pr.js +163 -0
  1035. package/dist/sync/reparse-vendor-badges.js +495 -0
  1036. package/dist/sync/repo-synced-hooks.js +22 -0
  1037. package/dist/sync/resync-after-write.js +280 -0
  1038. package/dist/sync/review-fingerprint.js +117 -0
  1039. package/dist/sync/reviewer-behavior.js +103 -0
  1040. package/dist/sync/reviewer-classify.js +522 -0
  1041. package/dist/sync/routing-files.js +97 -0
  1042. package/dist/sync/scheduled-jobs.js +12 -0
  1043. package/dist/sync/scheduler.js +178 -0
  1044. package/dist/sync/security-detect.js +521 -0
  1045. package/dist/sync/settle-sweep.js +548 -0
  1046. package/dist/sync/sync-manager.js +1231 -0
  1047. package/dist/sync/sync-one-pr.js +206 -0
  1048. package/dist/sync/sync-repo.js +414 -0
  1049. package/dist/sync/teammate-review-hooks.js +21 -0
  1050. package/dist/sync/unsettled-prs.js +508 -0
  1051. package/dist/sync/upsert.js +1451 -0
  1052. package/dist/sync/walk-listeners.js +30 -0
  1053. package/dist/tracker/ac-field-settings.js +188 -0
  1054. package/dist/tracker/ac-location.js +102 -0
  1055. package/dist/tracker/ac.js +172 -0
  1056. package/dist/tracker/assignee.js +582 -0
  1057. package/dist/tracker/calls.js +76 -0
  1058. package/dist/tracker/clip.js +17 -0
  1059. package/dist/tracker/comments-refresh.js +65 -0
  1060. package/dist/tracker/comments.js +185 -0
  1061. package/dist/tracker/context.js +45 -0
  1062. package/dist/tracker/copy.js +186 -0
  1063. package/dist/tracker/dates-backfill.js +96 -0
  1064. package/dist/tracker/dates.js +31 -0
  1065. package/dist/tracker/detect.js +172 -0
  1066. package/dist/tracker/enricher.js +215 -0
  1067. package/dist/tracker/github/ac.js +8 -0
  1068. package/dist/tracker/github/adapter.js +47 -0
  1069. package/dist/tracker/github/issues-usage.js +195 -0
  1070. package/dist/tracker/github/links.js +115 -0
  1071. package/dist/tracker/github/reader.js +224 -0
  1072. package/dist/tracker/index.js +66 -0
  1073. package/dist/tracker/jira/adapter.js +23 -0
  1074. package/dist/tracker/jira/candidates.js +122 -0
  1075. package/dist/tracker/jira/client.js +285 -0
  1076. package/dist/tracker/jira/fetch.js +335 -0
  1077. package/dist/tracker/jira/text.js +575 -0
  1078. package/dist/tracker/legacy-import.js +120 -0
  1079. package/dist/tracker/linear/adapter.js +52 -0
  1080. package/dist/tracker/linear/client.js +362 -0
  1081. package/dist/tracker/linear/links.js +113 -0
  1082. package/dist/tracker/links.js +110 -0
  1083. package/dist/tracker/manual-links.js +378 -0
  1084. package/dist/tracker/merged.js +163 -0
  1085. package/dist/tracker/notion/adapter.js +33 -0
  1086. package/dist/tracker/notion/blocks.js +201 -0
  1087. package/dist/tracker/notion/client.js +164 -0
  1088. package/dist/tracker/notion/reader.js +300 -0
  1089. package/dist/tracker/notion/schema.js +180 -0
  1090. package/dist/tracker/open-points-pr.js +101 -0
  1091. package/dist/tracker/open-points-settings.js +59 -0
  1092. package/dist/tracker/open-points-ticket.js +83 -0
  1093. package/dist/tracker/open-points.js +227 -0
  1094. package/dist/tracker/peers.js +148 -0
  1095. package/dist/tracker/registry.js +38 -0
  1096. package/dist/tracker/routes.js +421 -0
  1097. package/dist/tracker/runtime.js +52 -0
  1098. package/dist/tracker/secret.js +28 -0
  1099. package/dist/tracker/settings.js +348 -0
  1100. package/dist/tracker/sprint/github.js +482 -0
  1101. package/dist/tracker/sprint/hooks.js +55 -0
  1102. package/dist/tracker/sprint/index.js +33 -0
  1103. package/dist/tracker/sprint/jira.js +385 -0
  1104. package/dist/tracker/sprint/linear.js +217 -0
  1105. package/dist/tracker/sprint/notion.js +265 -0
  1106. package/dist/tracker/sprint/probe.js +204 -0
  1107. package/dist/tracker/sprint/project-keys.js +57 -0
  1108. package/dist/tracker/sprint/read.js +466 -0
  1109. package/dist/tracker/sprint/ref-status.js +283 -0
  1110. package/dist/tracker/sprint/routes.js +38 -0
  1111. package/dist/tracker/sprint/types.js +29 -0
  1112. package/dist/tracker/status-change.js +271 -0
  1113. package/dist/tracker/store.js +290 -0
  1114. package/dist/tracker/stories.js +132 -0
  1115. package/dist/tracker/ticket-prs.js +130 -0
  1116. package/dist/tracker/ticket-source.js +58 -0
  1117. package/dist/tracker/ticket-update.js +224 -0
  1118. package/dist/tracker/types.js +2 -0
  1119. package/dist/tracker/worker.js +895 -0
  1120. package/dist/version.js +35 -0
  1121. package/package.json +104 -4
  1122. package/public/apple-touch-icon.png +0 -0
  1123. package/public/assets/AiFixTab-CVIZl9I8.js +1 -0
  1124. package/public/assets/PrBotBehaviourTab-q0M7RU1e.js +1 -0
  1125. package/public/assets/archivo-latin-600-BN-JkNrl.woff2 +0 -0
  1126. package/public/assets/highlight-BEHUn5zE.css +10 -0
  1127. package/public/assets/highlight-CIIZLa6Z.js +12 -0
  1128. package/public/assets/index-CbEfmqOD.css +1 -0
  1129. package/public/assets/index-DBK4RWQu.js +136 -0
  1130. package/public/assets/markdown-I_JLLVAZ.js +32 -0
  1131. package/public/assets/perfProbe-Da13EhTE.js +1 -0
  1132. package/public/assets/tanstack-5qsxxaLe.js +17 -0
  1133. package/public/assets/vis-C3BCkP5U.js +1280 -0
  1134. package/public/assets/vis-ziCVehMy.css +1 -0
  1135. package/public/favicon-16.png +0 -0
  1136. package/public/favicon-32.png +0 -0
  1137. package/public/favicon-48.png +0 -0
  1138. package/public/favicon.svg +5 -0
  1139. package/public/index.html +44 -0
  1140. 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
- # Temporary Holding Version
1
+ # Ensemble (`ensemble-review`)
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
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