@dev.fast/whiteboard 0.5.2-preview.20261104.146 → 0.5.2-preview.20261109.148

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 (52) hide show
  1. package/dist/{account-alias-BlYamXAG.js → account-alias-Cs5YqXRj.js} +5 -5
  2. package/dist/agent-cli-DdUAmdca.js +2 -0
  3. package/dist/{agent-cli-D7fF5xmm.js → agent-cli-a5J-juuu.js} +8 -8
  4. package/dist/{agent-client-BCEbSPWU.js → agent-client-CgnEo6lf.js} +4 -4
  5. package/dist/{authoring-tools-CkfxTVJm.js → authoring-tools-BgZvnbjN.js} +3 -3
  6. package/dist/{background-server-CwToVN1g.js → background-server-D8SaPvuC.js} +1 -1
  7. package/dist/{background-server-BraP8pJ9.js → background-server-DHEcsFwH.js} +4 -4
  8. package/dist/build-info.json +1 -1
  9. package/dist/{cli-BpadBaGU.js → cli-Bq5zVqlc.js} +1 -1
  10. package/dist/{cli-runner-BebYF50a.js → cli-runner-hL2efcxb.js} +21 -21
  11. package/dist/cli.js +2 -2
  12. package/dist/{fuzzy-match-CxcsLQGx.js → fuzzy-match-DNyQDN3P.js} +3 -3
  13. package/dist/{headless-host-cLipIufH.js → headless-host-CGyfb5mS.js} +1 -1
  14. package/dist/{headless-host-FAlbekFD.js → headless-host-bb09yVkX.js} +18 -16
  15. package/dist/{import-CZ1958L4.js → import-_XAsWqen.js} +25 -140
  16. package/dist/{local-data-DdFkxFK_.js → local-data-ZQIkF5k1.js} +83 -13
  17. package/dist/{mcp-Claiy9xE.js → mcp-B-J8P5xm.js} +4 -4
  18. package/dist/{package-paths-Dk7MOXxN.js → package-paths-wobHueCx.js} +1 -1
  19. package/dist/profile-Bi2SbpSI.js +2 -0
  20. package/dist/{profile-Bsgzi9PA.js → profile-D-SbO3p9.js} +2 -2
  21. package/dist/{remote-attach-LGTpwpUv.js → remote-attach-DyIESbbf.js} +4 -4
  22. package/dist/{remote-extensions-BvV29_gk.js → remote-extensions-BHHFPyYW.js} +1 -1
  23. package/dist/{remote-extensions-L95HNwIH.js → remote-extensions-gTMcRBg-.js} +2 -2
  24. package/dist/{remote-language-server-BAznkpeu.js → remote-language-server-Pp261dqJ.js} +4 -4
  25. package/dist/{remote-uninstall-CLP79Cuk.js → remote-uninstall-D_hSuBik.js} +5 -5
  26. package/dist/{request-origin-D6B-zrL8.js → request-origin-ENYd0Ymr.js} +4 -3
  27. package/dist/{review-app-launcher-tTe8bTwg.js → review-app-launcher-DR5vYGEl.js} +2 -2
  28. package/dist/{review-home-paths-BmZX2qiz.js → review-home-paths-B8909D07.js} +19 -19
  29. package/dist/{review-telemetry-DACDMfqq.js → review-telemetry-CxNvwdDS.js} +4 -4
  30. package/dist/server/desktop-host.js +13 -13
  31. package/dist/{server-discovery-CV5qf1J8.js → server-discovery-Fme7f3fb.js} +2 -2
  32. package/dist/sharing/index.d.ts +21 -21
  33. package/dist/sharing/index.js +1 -1
  34. package/dist/{src-CrrW7lcY.js → src-B-91Rd2d.js} +1 -0
  35. package/dist/{src-BQDlJXkG.js → src-BPrngiWX.js} +1806 -1
  36. package/dist/{stored-document-migration-D1wK4yID.js → stored-document-migration-BQcUyXO8.js} +4 -158
  37. package/dist/{thread-state-WTqSborE.js → thread-state-Jxoh1hde.js} +1 -1
  38. package/dist/{tool-failure-YOFGHJCZ.js → tool-failure-Cgjidoud.js} +6 -6
  39. package/package.json +5 -6
  40. package/src/review-api/comparison-coverage.ts +8 -23
  41. package/src/review-api/http.ts +20 -16
  42. package/src/review-api/review-progress.ts +40 -126
  43. package/src/review-api/store.ts +4 -6
  44. package/src/software-map-diff-counts.ts +4 -2
  45. package/src/ui-telemetry-events.ts +1 -0
  46. package/src/viewed-coverage.ts +9 -252
  47. package/dist/agent-cli-DLibAL4u.js +0 -2
  48. package/dist/profile-BxdzBxHW.js +0 -2
  49. package/src/review-api/file-lenses.ts +0 -125
  50. package/src/review-api/lens-alignment.ts +0 -52
  51. package/src/unified-diff.ts +0 -71
  52. package/dist/{s3-CsG2EWED.js → s3-d8RGPKwt.js} +1 -1
@@ -1,12 +1,12 @@
1
1
  import { S as splitGitPatchFiles, T as runVcsSync, _ as listTrackedFilesAtCommit, a as diff, b as resolveRepoContext, c as diffFileSummariesWorkingTree, d as git, f as gitAt, g as listCommitRange, h as jjRevisionIsConflicted, i as detectLocalVcs, l as diffTrees, m as gitCommonDirSync, n as createBlobBatchReader, p as gitCommonDir, s as diffFileSummariesTrees, t as LocalVcsToolsMissingError, u as diffWorkingTree, v as parseGitRemote, w as runVcs, x as resolveRevision, y as readFileAtCommit } from "./src-Y30gweiK.js";
2
2
  import { c as jsonString, m as isStringValue, n as isJsonObject, o as jsonObject, u as parseJsonText } from "./src-X9phtB2j.js";
3
- import { A as parseMarkdown, B as lensSchema, D as summarizeEdit, E as sourceReferences, G as SourceRangeError, J as requireVisibleSource, K as checkSourcePath, M as checkReferences, O as markdownNodes, P as documentAdvice, R as applyLensEdit, S as respellEditLinks, V as lensSelections, Y as sliceSourceRange, a as boardLinks, at as unionIntervals, b as respellCommitLinks, c as documentSchema, ct as activityEndSchema, d as explicitPins, h as pinsSchema, i as assignMissingIds, it as sourceAnchors, k as markdownText, l as editSchema, lt as activityUpdateSchema, m as pinnedRepositoryIds, n as anchorPins, o as boardRepositoryId, ot as ReviewInputError, p as pinDocumentReferences, q as fileLineRangeSchema, r as applyEdit, s as commitLinkCommits, st as activityBeginSchema, t as adoptFlowUnits, tt as parseAnchor, u as elements, ut as focusSchema, v as resourceReference, w as reviewTargetSchema, x as respellDocumentLinks, y as resourceReferences, z as lensEditSchema } from "./src-BQDlJXkG.js";
4
- import { I as applyStructuralUpdate, L as decodeStructuralDiffEvent, R as structuralChangeCounts, c as boardIconKind, l as boardTitle } from "./src-CrrW7lcY.js";
5
- import { s as safeStorageSegment } from "./review-home-paths-BmZX2qiz.js";
6
- import { A as updateCoverage, C as coverageSchema, E as intersectIntervals, S as parseUnifiedPatch, T as emptyCoverage, _ as fetchPullRequest, a as SoftwareModelValidationError, b as textIncludesQuote, c as traceSchema, d as setPullRequest, f as sourceBranchName, g as defaultPullRequestDeps, h as GitHubRefusedRead, i as readStoredDocument, k as subtractIntervals, l as pullRequestKey, m as resolvePullRequest, n as migrateStoredDocument, o as defineSoftwareMap, r as migrateStoredLenses, u as pullRequestUrl, v as remoteUrls, x as textualRows, y as azureRepositoryOf } from "./stored-document-migration-D1wK4yID.js";
3
+ import { $ as fileLineRangeSchema, A as summarizeEdit, C as respellCommitLinks, D as reviewTargetSchema, F as checkReferences, H as lensEditSchema, J as updateCoverage, K as emptyCoverage, L as documentAdvice, M as markdownText, N as parseMarkdown, Q as checkSourcePath, S as resourceReferences, T as respellEditLinks, U as lensSchema, V as applyLensEdit, W as lensSelections, Z as SourceRangeError, _ as pinnedRepositoryIds, _t as activityUpdateSchema, a as anchorPins, c as boardLinks, d as documentSchema, dt as intersectIntervals, et as requireVisibleSource, f as editSchema, ft as subtractIntervals, g as pinDocumentReferences, gt as activityEndSchema, ht as activityBeginSchema, i as adoptFlowUnits, j as markdownNodes, k as sourceReferences, l as boardRepositoryId, m as explicitPins, mt as ReviewInputError, o as applyEdit, ot as parseAnchor, p as elements, pt as unionIntervals, s as assignMissingIds, st as patchRows, tt as sliceSourceRange, u as commitLinkCommits, ut as sourceAnchors, v as pinsSchema, vt as focusSchema, w as respellDocumentLinks, x as resourceReference } from "./src-BPrngiWX.js";
4
+ import { _ as fetchPullRequest, a as SoftwareModelValidationError, b as textIncludesQuote, c as traceSchema, d as setPullRequest, f as sourceBranchName, g as defaultPullRequestDeps, h as GitHubRefusedRead, i as readStoredDocument, l as pullRequestKey, m as resolvePullRequest, n as migrateStoredDocument, o as defineSoftwareMap, r as migrateStoredLenses, u as pullRequestUrl, v as remoteUrls, y as azureRepositoryOf } from "./stored-document-migration-BQcUyXO8.js";
7
5
  import { A as processStartIdentity, L as writePrivateJsonAtomic, O as pidReused, j as withFileLock, k as processIsAlive } from "./s3-config-CjcLyFV5.js";
6
+ import { s as safeStorageSegment } from "./review-home-paths-B8909D07.js";
8
7
  import { t as errorMessage } from "./error-message-OtiDonty.js";
9
- import { a as askHistoryEntrySchema, i as askEntrySchema, m as isMissingFileError, o as askOfferSchema, s as askPermissionsSchema } from "./thread-state-WTqSborE.js";
8
+ import { I as applyStructuralUpdate, L as decodeStructuralDiffEvent, R as structuralChangeCounts, c as boardIconKind, l as boardTitle } from "./src-B-91Rd2d.js";
9
+ import { a as askHistoryEntrySchema, i as askEntrySchema, m as isMissingFileError, o as askOfferSchema, s as askPermissionsSchema } from "./thread-state-Jxoh1hde.js";
10
10
  import { createRequire } from "node:module";
11
11
  import crypto, { createHash, randomUUID } from "node:crypto";
12
12
  import { z } from "zod";
@@ -19,6 +19,76 @@ import { spawn } from "node:child_process";
19
19
  import { isDeepStrictEqual } from "node:util";
20
20
  import { DatabaseSync } from "node:sqlite";
21
21
  import { createInterface } from "node:readline";
22
+ //#region ../whiteboard-document/src/unified-patch.ts
23
+ const HUNK_HEADER = /^@@ -(?<oldStart>\d+)(?:,(?<oldLines>\d+))? \+(?<newStart>\d+)(?:,(?<newLines>\d+))? @@/;
24
+ function parseUnifiedPatch(file, patch) {
25
+ if (!patch) return [];
26
+ const hunks = [];
27
+ let current = null;
28
+ let oldLine = 0;
29
+ let newLine = 0;
30
+ for (const row of patch.split(/\r?\n/)) {
31
+ const header = HUNK_HEADER.exec(row);
32
+ if (header?.groups) {
33
+ current = {
34
+ file,
35
+ oldStart: Number(header.groups.oldStart),
36
+ oldLines: Number(header.groups.oldLines ?? "1"),
37
+ newStart: Number(header.groups.newStart),
38
+ newLines: Number(header.groups.newLines ?? "1"),
39
+ lines: []
40
+ };
41
+ oldLine = current.oldStart;
42
+ newLine = current.newStart;
43
+ hunks.push(current);
44
+ continue;
45
+ }
46
+ if (!current || row.startsWith("\")) continue;
47
+ const marker = row[0];
48
+ const text = row.slice(1);
49
+ let line = null;
50
+ if (marker === " ") {
51
+ line = {
52
+ kind: "context",
53
+ oldLine,
54
+ newLine,
55
+ text
56
+ };
57
+ oldLine += 1;
58
+ newLine += 1;
59
+ } else if (marker === "+") {
60
+ line = {
61
+ kind: "add",
62
+ oldLine: null,
63
+ newLine,
64
+ text
65
+ };
66
+ newLine += 1;
67
+ } else if (marker === "-") {
68
+ line = {
69
+ kind: "remove",
70
+ oldLine,
71
+ newLine: null,
72
+ text
73
+ };
74
+ oldLine += 1;
75
+ }
76
+ if (line) current.lines.push(line);
77
+ }
78
+ return hunks;
79
+ }
80
+ function patchChanges(file, patch) {
81
+ const changed = emptyCoverage();
82
+ for (const hunk of parseUnifiedPatch(file, patch)) for (const line of hunk.lines) {
83
+ if (line.kind === "add") changed.head.push([line.newLine - 1, line.newLine]);
84
+ if (line.kind === "remove") changed.base.push([line.oldLine - 1, line.oldLine]);
85
+ }
86
+ return {
87
+ base: unionIntervals(changed.base),
88
+ head: unionIntervals(changed.head)
89
+ };
90
+ }
91
+ //#endregion
22
92
  //#region ../../diffr/diffr-ts/dist/binary.js
23
93
  /** The diffr executable from the installed platform package, if npm installed one for this machine. */
24
94
  function diffrBinaryPath() {
@@ -1291,15 +1361,9 @@ async function comparisonCoverage(data, reviewId, pins, signal, publish) {
1291
1361
  for (const file of await data.changes(pins)) {
1292
1362
  signal.throwIfAborted();
1293
1363
  const patch = patches?.get(file.path) ?? await data.changes(pins, file.path, file.previousPath);
1294
- const changed = emptyCoverage();
1295
- for (const hunk of parseUnifiedPatch(file.path, patch)) for (const line of hunk.lines) {
1296
- if (line.kind === "add") changed.head.push([line.newLine - 1, line.newLine]);
1297
- if (line.kind === "remove") changed.base.push([line.oldLine - 1, line.oldLine]);
1298
- }
1299
- changed.base = unionIntervals(changed.base);
1300
- changed.head = unionIntervals(changed.head);
1364
+ const changed = patchChanges(file.path, patch);
1301
1365
  const [base, head] = await Promise.all([file.status === "added" ? null : data.file(pins, "base", file.previousPath ?? file.path).then((value) => value.text).catch(() => null), file.status === "deleted" ? null : data.file(pins, "head", file.path).then((value) => value.text).catch(() => null)]);
1302
- alignments.set(file.path, textualRows(file.path, patch, base === null ? 0 : base.split("\n").length, head === null ? 0 : head.split("\n").length));
1366
+ alignments.set(file.path, patchRows(patch, base === null ? 0 : base.split("\n").length, head === null ? 0 : head.split("\n").length));
1303
1367
  const readable = (file.status === "added" || base !== null) && (file.status === "deleted" || head !== null);
1304
1368
  const fingerprint = hash([
1305
1369
  pins.repositoryId,
@@ -1572,6 +1636,12 @@ const mapInputSchema = z.strictObject({
1572
1636
  relationships: z.array(relationship).optional().describe("Model-level relationships, including people and systems. Use full endpoint paths; external systems are systems with external: true.")
1573
1637
  });
1574
1638
  //#endregion
1639
+ //#region src/viewed-coverage.ts
1640
+ const coverageSchema = z.object({
1641
+ base: z.array(z.tuple([z.number().int().nonnegative(), z.number().int().nonnegative()])),
1642
+ head: z.array(z.tuple([z.number().int().nonnegative(), z.number().int().nonnegative()]))
1643
+ });
1644
+ //#endregion
1575
1645
  //#region src/review-api/activity.ts
1576
1646
  const activitySchema = z.discriminatedUnion("action", [
1577
1647
  activityBeginSchema.extend({ action: z.literal("begin") }),
@@ -1,8 +1,8 @@
1
1
  import { n as isJsonObject } from "./src-X9phtB2j.js";
2
- import { ot as ReviewInputError } from "./src-BQDlJXkG.js";
3
- import { a as toolResultText, s as ReviewApiError, t as ToolText } from "./agent-client-BCEbSPWU.js";
4
- import { n as REVIEW_STATUS_TOOL, t as authoringTools } from "./authoring-tools-CkfxTVJm.js";
5
- import { a as renderedImage, i as publicTool, n as RECOVERY, r as callPublicTool, t as toolFailure } from "./tool-failure-YOFGHJCZ.js";
2
+ import { mt as ReviewInputError } from "./src-BPrngiWX.js";
3
+ import { a as toolResultText, s as ReviewApiError, t as ToolText } from "./agent-client-CgnEo6lf.js";
4
+ import { n as REVIEW_STATUS_TOOL, t as authoringTools } from "./authoring-tools-BgZvnbjN.js";
5
+ import { a as renderedImage, i as publicTool, n as RECOVERY, r as callPublicTool, t as toolFailure } from "./tool-failure-Cgjidoud.js";
6
6
  import { Server } from "@modelcontextprotocol/server";
7
7
  import { StdioServerTransport } from "@modelcontextprotocol/server/stdio";
8
8
  //#region src/review-api/mcp-client-agent.ts
@@ -1,5 +1,5 @@
1
1
  import { c as jsonString, o as jsonObject, u as parseJsonText } from "./src-X9phtB2j.js";
2
- import "./review-home-paths-BmZX2qiz.js";
2
+ import "./review-home-paths-B8909D07.js";
3
3
  import { readFileSync } from "node:fs";
4
4
  import path from "node:path";
5
5
  import { fileURLToPath } from "node:url";
@@ -0,0 +1,2 @@
1
+ import { t as openReviewProfile } from "./profile-D-SbO3p9.js";
2
+ export { openReviewProfile };
@@ -1,6 +1,6 @@
1
- import { a as projectOfCheckout, f as CheckoutGroups, o as groupCheckoutsAhead, s as initializeReviewStoreSchema, t as openLocalReviewStore } from "./local-data-DdFkxFK_.js";
2
- import "./review-home-paths-BmZX2qiz.js";
1
+ import { a as projectOfCheckout, f as CheckoutGroups, o as groupCheckoutsAhead, s as initializeReviewStoreSchema, t as openLocalReviewStore } from "./local-data-ZQIkF5k1.js";
3
2
  import { j as withFileLock } from "./s3-config-CjcLyFV5.js";
3
+ import "./review-home-paths-B8909D07.js";
4
4
  import { access, mkdir } from "node:fs/promises";
5
5
  import path from "node:path";
6
6
  import { DatabaseSync } from "node:sqlite";
@@ -1,7 +1,7 @@
1
- import { i as readReviewPackageVersion } from "./package-paths-Dk7MOXxN.js";
2
- import { a as readReviewServerHealth, l as serverNotReady } from "./server-discovery-CV5qf1J8.js";
3
- import { c as stopBackgroundServer, o as recordedBackgroundServer, r as ensureBackgroundServer } from "./background-server-BraP8pJ9.js";
4
- import { t as ensureRemoteLanguageServer } from "./remote-language-server-BAznkpeu.js";
1
+ import { i as readReviewPackageVersion } from "./package-paths-wobHueCx.js";
2
+ import { a as readReviewServerHealth, l as serverNotReady } from "./server-discovery-Fme7f3fb.js";
3
+ import { c as stopBackgroundServer, o as recordedBackgroundServer, r as ensureBackgroundServer } from "./background-server-DHEcsFwH.js";
4
+ import { t as ensureRemoteLanguageServer } from "./remote-language-server-Pp261dqJ.js";
5
5
  import path from "node:path";
6
6
  import { spawn } from "node:child_process";
7
7
  import { gt, valid } from "semver";
@@ -1,2 +1,2 @@
1
- import { t as ensureRemoteExtensions } from "./remote-extensions-L95HNwIH.js";
1
+ import { t as ensureRemoteExtensions } from "./remote-extensions-gTMcRBg-.js";
2
2
  export { ensureRemoteExtensions };
@@ -1,7 +1,7 @@
1
1
  import { u as parseJsonText } from "./src-X9phtB2j.js";
2
- import "./review-home-paths-BmZX2qiz.js";
3
2
  import { N as devReviewHome } from "./s3-config-CjcLyFV5.js";
4
- import { t as findReviewPackageRoot } from "./package-paths-Dk7MOXxN.js";
3
+ import "./review-home-paths-B8909D07.js";
4
+ import { t as findReviewPackageRoot } from "./package-paths-wobHueCx.js";
5
5
  import { createHash } from "node:crypto";
6
6
  import { z } from "zod";
7
7
  import { createReadStream, createWriteStream } from "node:fs";
@@ -1,8 +1,8 @@
1
- import "./review-home-paths-BmZX2qiz.js";
2
1
  import { A as processStartIdentity, j as withFileLock } from "./s3-config-CjcLyFV5.js";
3
- import { t as findReviewPackageRoot } from "./package-paths-Dk7MOXxN.js";
4
- import { n as cliSpawn, s as spawnDetached } from "./background-server-BraP8pJ9.js";
5
- import { r as remoteServerPaths, t as ensureRemoteExtensions } from "./remote-extensions-L95HNwIH.js";
2
+ import "./review-home-paths-B8909D07.js";
3
+ import { t as findReviewPackageRoot } from "./package-paths-wobHueCx.js";
4
+ import { n as cliSpawn, s as spawnDetached } from "./background-server-DHEcsFwH.js";
5
+ import { r as remoteServerPaths, t as ensureRemoteExtensions } from "./remote-extensions-gTMcRBg-.js";
6
6
  import { randomBytes } from "node:crypto";
7
7
  import { z } from "zod";
8
8
  import { mkdir, readFile, rename, stat, writeFile } from "node:fs/promises";
@@ -1,9 +1,9 @@
1
- import { T as REVIEW_REMOTE_WRAPPER_MARK, w as REVIEW_REMOTE_INSTALL_LOCK } from "./src-CrrW7lcY.js";
2
- import "./review-home-paths-BmZX2qiz.js";
3
1
  import { M as DEV_REVIEW_HOME_ENV } from "./s3-config-CjcLyFV5.js";
4
- import { c as stopBackgroundServer, o as recordedBackgroundServer } from "./background-server-BraP8pJ9.js";
5
- import { i as whiteboardRemoteHome } from "./remote-extensions-L95HNwIH.js";
6
- import { n as remoteLanguageServerGroups, r as stopProcessGroup } from "./remote-language-server-BAznkpeu.js";
2
+ import "./review-home-paths-B8909D07.js";
3
+ import { T as REVIEW_REMOTE_WRAPPER_MARK, w as REVIEW_REMOTE_INSTALL_LOCK } from "./src-B-91Rd2d.js";
4
+ import { c as stopBackgroundServer, o as recordedBackgroundServer } from "./background-server-DHEcsFwH.js";
5
+ import { i as whiteboardRemoteHome } from "./remote-extensions-gTMcRBg-.js";
6
+ import { n as remoteLanguageServerGroups, r as stopProcessGroup } from "./remote-language-server-Pp261dqJ.js";
7
7
  import { existsSync } from "node:fs";
8
8
  import { lstat, mkdir, readFile, readdir, rm, stat } from "node:fs/promises";
9
9
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import { a as jsonNumber, c as jsonString, i as jsonBoolean, n as isJsonObject } from "./src-X9phtB2j.js";
2
- import { X as SELECTION_UNAVAILABLE_REASONS } from "./src-BQDlJXkG.js";
3
- import { _ as REVIEW_DIFF_LAYOUTS, b as REVIEW_OPEN_FILES_IN_CHOICES, g as REVIEW_COLOR_THEME_KINDS, v as REVIEW_DIFF_LAYOUT_SCOPES } from "./src-CrrW7lcY.js";
4
- import { n as askAgentIds } from "./thread-state-WTqSborE.js";
2
+ import { nt as SELECTION_UNAVAILABLE_REASONS } from "./src-BPrngiWX.js";
3
+ import { _ as REVIEW_DIFF_LAYOUTS, b as REVIEW_OPEN_FILES_IN_CHOICES, g as REVIEW_COLOR_THEME_KINDS, v as REVIEW_DIFF_LAYOUT_SCOPES } from "./src-B-91Rd2d.js";
4
+ import { n as askAgentIds } from "./thread-state-Jxoh1hde.js";
5
5
  import { z } from "zod";
6
6
  //#region src/telemetry-clean-text.ts
7
7
  const USER_DATA_REGEXES = [
@@ -303,6 +303,7 @@ const SOURCE_OPENED_DESTINATION = [
303
303
  "vscode",
304
304
  "cursor",
305
305
  "zed",
306
+ "intellij",
306
307
  "application"
307
308
  ];
308
309
  const SOURCE_OPENED_KIND = [
@@ -1,5 +1,5 @@
1
- import { o as parseReviewVerbResponse } from "./src-CrrW7lcY.js";
2
- import { b as selectReviewInstance, m as healthyReviewInstance, v as reviewInstanceStartHint, y as reviewInstanceUnavailable } from "./server-discovery-CV5qf1J8.js";
1
+ import { o as parseReviewVerbResponse } from "./src-B-91Rd2d.js";
2
+ import { b as selectReviewInstance, m as healthyReviewInstance, v as reviewInstanceStartHint, y as reviewInstanceUnavailable } from "./server-discovery-Fme7f3fb.js";
3
3
  import { closeSync, existsSync, fstatSync, mkdtempSync, openSync, readSync } from "node:fs";
4
4
  import path from "node:path";
5
5
  import { homedir, tmpdir } from "node:os";
@@ -1,8 +1,8 @@
1
1
  import { b as resolveRepoContext, d as git, f as gitAt, w as runVcs } from "./src-Y30gweiK.js";
2
2
  import { a as jsonNumber, c as jsonString, i as jsonBoolean, m as isStringValue, n as isJsonObject, o as jsonObject, r as jsonArray, t as isJsonArray, u as parseJsonText } from "./src-X9phtB2j.js";
3
- import { a as TRACE_STORE_CLIENT_ID, b as commitShaSchema, c as deleteStoreResponseSchema, d as listUploadsResponseSchema, f as storeErrorCodeSchema, g as uploadManifestMismatch, h as traceObjectNameSchema, i as storeRoutes, l as listSessionsResponseSchema, m as storeResponseSchema, n as DEVICE_TOKEN_PATH, o as beginUploadResponseSchema, p as storeErrorEnvelopeSchema, r as SESSION_PATH, s as completeUploadResponseSchema, t as DEVICE_CODE_PATH, u as listUploadsQuerySchema, x as sessionIdSchema } from "./src-CGP5ytbV.js";
4
3
  import { E as writeTraceConfigFile, F as writeFileAtomic, I as writeFileAtomicAsync, L as writePrivateJsonAtomic, N as devReviewHome, P as normalizeStoreOrigin, S as readTraceConfigFile, _ as emptyTraceConfig, b as hostedCaptureEnabled, c as resolveS3Setup, d as traceEnvPath, f as traceEnvValue$1, g as currentStore, h as TraceConfigurationError, i as isS3MockMode, l as s3CacheIdentity, m as DEFAULT_HOSTED_ORIGIN, n as clearTraceEnvCache$1, p as traceSettingsPath, u as s3MockRoot, v as enabledOriginsOf, w as s3Store, x as hostedOrigin, y as hasHostedStore } from "./s3-config-CjcLyFV5.js";
5
4
  import { t as errorMessage } from "./error-message-OtiDonty.js";
5
+ import { a as TRACE_STORE_CLIENT_ID, b as commitShaSchema, c as deleteStoreResponseSchema, d as listUploadsResponseSchema, f as storeErrorCodeSchema, g as uploadManifestMismatch, h as traceObjectNameSchema, i as storeRoutes, l as listSessionsResponseSchema, m as storeResponseSchema, n as DEVICE_TOKEN_PATH, o as beginUploadResponseSchema, p as storeErrorEnvelopeSchema, r as SESSION_PATH, s as completeUploadResponseSchema, t as DEVICE_CODE_PATH, u as listUploadsQuerySchema, x as sessionIdSchema } from "./src-CGP5ytbV.js";
6
6
  import crypto, { createHash, randomBytes } from "node:crypto";
7
7
  import { z } from "zod";
8
8
  import { accessSync, closeSync, constants, createReadStream, createWriteStream, existsSync, mkdirSync, openSync, readFileSync, readdirSync, rmSync, statSync } from "node:fs";
@@ -15,21 +15,6 @@ import { spawn } from "node:child_process";
15
15
  import { pipeline } from "node:stream/promises";
16
16
  import { createGunzip, createGzip } from "node:zlib";
17
17
  import { InvalidArgumentError, Option } from "commander";
18
- //#region ../trace-protocol/src/event-text.ts
19
- function extractTraceEventText$1(event) {
20
- if (!event) return "";
21
- if (event.kind === "user") return event.text;
22
- if (event.kind === "assistant") return event.markdown;
23
- if (event.kind === "tool") return [
24
- event.title,
25
- event.command,
26
- event.input,
27
- event.output
28
- ].filter(Boolean).join(" ");
29
- if (event.kind === "separator") return event.label;
30
- return "";
31
- }
32
- //#endregion
33
18
  //#region ../trace-core/src/cli-output.ts
34
19
  /** The stream a human report belongs on. */
35
20
  function humanStream(output) {
@@ -80,6 +65,21 @@ function jsonRequestedInArgv(argv) {
80
65
  return false;
81
66
  }
82
67
  //#endregion
68
+ //#region ../trace-protocol/src/event-text.ts
69
+ function extractTraceEventText$1(event) {
70
+ if (!event) return "";
71
+ if (event.kind === "user") return event.text;
72
+ if (event.kind === "assistant") return event.markdown;
73
+ if (event.kind === "tool") return [
74
+ event.title,
75
+ event.command,
76
+ event.input,
77
+ event.output
78
+ ].filter(Boolean).join(" ");
79
+ if (event.kind === "separator") return event.label;
80
+ return "";
81
+ }
82
+ //#endregion
83
83
  //#region ../trace-core/src/store-authorization.ts
84
84
  const context = new AsyncLocalStorage();
85
85
  /** Only a foreground CLI installs this callback; hooks never prompt. */
@@ -2546,7 +2546,7 @@ function isTraceStorageConfigured(scope = {}) {
2546
2546
  }
2547
2547
  /** Loads the direct-store implementation on demand, without opening a store. */
2548
2548
  async function loadS3TraceStorage() {
2549
- return (await import("./s3-CsG2EWED.js")).S3TraceStorage;
2549
+ return (await import("./s3-d8RGPKwt.js")).S3TraceStorage;
2550
2550
  }
2551
2551
  //#endregion
2552
2552
  //#region ../trace-core/src/trace-upload-status.ts
@@ -5272,7 +5272,7 @@ async function configureTraceMachine(input) {
5272
5272
  if (input.verify !== false) {
5273
5273
  if (env.TRACE_R2_MODE === "mock") verifiedAt = (/* @__PURE__ */ new Date()).toISOString();
5274
5274
  else {
5275
- const { S3TraceStorage } = await import("./s3-CsG2EWED.js");
5275
+ const { S3TraceStorage } = await import("./s3-d8RGPKwt.js");
5276
5276
  const readiness = await S3TraceStorage.fromCredentials({
5277
5277
  endpoint: credentials.endpoint,
5278
5278
  bucket: credentials.bucket,
@@ -5742,7 +5742,7 @@ async function runTraceStatus(input) {
5742
5742
  input.stderr.write("Upload status filters require hosted storage.\n");
5743
5743
  return 1;
5744
5744
  }
5745
- const [{ S3TraceStorage }, { describeS3Setup, noTraceConfigurationMessage }] = await Promise.all([import("./s3-CsG2EWED.js"), import("./s3-config-zz4GWh2T.js")]);
5745
+ const [{ S3TraceStorage }, { describeS3Setup, noTraceConfigurationMessage }] = await Promise.all([import("./s3-d8RGPKwt.js"), import("./s3-config-zz4GWh2T.js")]);
5746
5746
  const setup = describeS3Setup(input.scope.env);
5747
5747
  input.stdout.write(`Checking trace configuration (${setup.envPath})…\n`);
5748
5748
  for (const failure of await listTraceSyncFailures(input.scope.devHome)) input.stdout.write(describeTraceSyncFailure(failure));
@@ -1,9 +1,9 @@
1
1
  import { c as jsonString, l as jsonValueSchema, o as jsonObject, u as parseJsonText } from "./src-X9phtB2j.js";
2
- import "./src-CrrW7lcY.js";
3
- import "./review-home-paths-BmZX2qiz.js";
4
2
  import { F as writeFileAtomic, N as devReviewHome, j as withFileLock, k as processIsAlive } from "./s3-config-CjcLyFV5.js";
5
- import { i as readReviewPackageVersion, t as findReviewPackageRoot } from "./package-paths-Dk7MOXxN.js";
6
- import "./request-origin-D6B-zrL8.js";
3
+ import "./review-home-paths-B8909D07.js";
4
+ import { i as readReviewPackageVersion, t as findReviewPackageRoot } from "./package-paths-wobHueCx.js";
5
+ import "./src-B-91Rd2d.js";
6
+ import "./request-origin-ENYd0Ymr.js";
7
7
  import { createHmac, randomUUID } from "node:crypto";
8
8
  import { z } from "zod";
9
9
  import { existsSync, readFileSync, rmSync } from "node:fs";
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  import { S as splitGitPatchFiles, a as diff, o as diffFileSummaries } from "../src-Y30gweiK.js";
3
3
  import { c as jsonString, i as jsonBoolean, n as isJsonObject, p as isObjectValue, s as jsonProperty, u as parseJsonText } from "../src-X9phtB2j.js";
4
- import { C as StreamLimitError, v as legacyModeSchema, w as readBoundedStream } from "../import-CZ1958L4.js";
5
- import { ot as ReviewInputError, y as resourceReferences } from "../src-BQDlJXkG.js";
6
- import { F as reviewDiffrSummarizerInputSchema, O as ReviewConnectRequestSchema, d as ReviewBugReportRequestSchema, f as parseReviewBugReportResponse, j as ReviewGatewayHostSchema, m as REVIEW_CLIENT_REMOTE, p as REVIEW_CLIENT_HEADER, r as parseReviewDesktopVerbFrame, s as parseZod, t as parseReviewCliInstallApplyRequest, u as ReviewBugReportMetaV2Schema, y as REVIEW_HOST_HEADER } from "../src-CrrW7lcY.js";
7
- import { i as reviewInstanceDiscoveryPath, o as reviewLegacyDiscoveryPath } from "../review-home-paths-BmZX2qiz.js";
8
- import { p as pullRequestProvider } from "../stored-document-migration-D1wK4yID.js";
4
+ import { S as readBoundedStream, v as legacyModeSchema, x as StreamLimitError } from "../import-_XAsWqen.js";
5
+ import { S as resourceReferences, mt as ReviewInputError } from "../src-BPrngiWX.js";
6
+ import { p as pullRequestProvider } from "../stored-document-migration-BQcUyXO8.js";
9
7
  import { L as writePrivateJsonAtomic, N as devReviewHome } from "../s3-config-CjcLyFV5.js";
8
+ import { i as reviewInstanceDiscoveryPath, o as reviewLegacyDiscoveryPath } from "../review-home-paths-B8909D07.js";
10
9
  import { t as errorMessage } from "../error-message-OtiDonty.js";
11
- import { i as readReviewPackageVersion, t as findReviewPackageRoot } from "../package-paths-Dk7MOXxN.js";
12
- import { _ as reviewInstanceIdentity, u as REVIEW_INSTANCE_ENV } from "../server-discovery-CV5qf1J8.js";
13
- import { t as openReviewProfile } from "../profile-Bsgzi9PA.js";
14
- import { r as reviewTelemetryChannel, t as ReviewTelemetry } from "../review-telemetry-DACDMfqq.js";
15
- import { l as REVIEW_TELEMETRY_TABS } from "../request-origin-D6B-zrL8.js";
16
- import { c as removeLegacyReviewSkills, d as skipCliInstall, h as detectConnectAgents, i as finishCliInstallUpdate, l as resetCliInstall, m as connectAgent, n as applyCliInstall, o as pathShimPath, r as declineCliInstall, s as removeCliInstall, t as aliasInstallationToAccount, u as resolveCliInstallStatus } from "../account-alias-BlYamXAG.js";
17
- import { C as DEFAULT_MAX_REQUEST_BYTES, D as writeAnimationsEnabled, E as readAnimationsEnabled, O as cliAskTools, S as readBoundedRequestJson, T as ReviewServerError, _ as saveDiffrSummarizer, a as drainServerCrashReport, b as remoteShare, c as answerErrorsAsJson, d as captureSanitizedUiTelemetry, f as clientErrorsForSession, g as readDiffrConfig, h as migrateDiffrConfig, l as createWhiteboardCore, m as GlobalReviewDesktopVerbRelay, o as installProcessErrorTelemetry, p as recordClientError, r as takeOverServerHome, s as serverCrashReportPath, u as serverJson, v as setDiffrConfigValue, w as HttpJsonError, x as createNodeRequestListener, y as testDiffrSummarizer } from "../headless-host-FAlbekFD.js";
18
- import { s as readQuerySchemas } from "../authoring-tools-CkfxTVJm.js";
10
+ import { i as readReviewPackageVersion, t as findReviewPackageRoot } from "../package-paths-wobHueCx.js";
11
+ import { F as reviewDiffrSummarizerInputSchema, O as ReviewConnectRequestSchema, d as ReviewBugReportRequestSchema, f as parseReviewBugReportResponse, j as ReviewGatewayHostSchema, m as REVIEW_CLIENT_REMOTE, p as REVIEW_CLIENT_HEADER, r as parseReviewDesktopVerbFrame, s as parseZod, t as parseReviewCliInstallApplyRequest, u as ReviewBugReportMetaV2Schema, y as REVIEW_HOST_HEADER } from "../src-B-91Rd2d.js";
12
+ import { _ as reviewInstanceIdentity, u as REVIEW_INSTANCE_ENV } from "../server-discovery-Fme7f3fb.js";
13
+ import { t as openReviewProfile } from "../profile-D-SbO3p9.js";
14
+ import { r as reviewTelemetryChannel, t as ReviewTelemetry } from "../review-telemetry-CxNvwdDS.js";
15
+ import { l as REVIEW_TELEMETRY_TABS } from "../request-origin-ENYd0Ymr.js";
16
+ import { c as removeLegacyReviewSkills, d as skipCliInstall, h as detectConnectAgents, i as finishCliInstallUpdate, l as resetCliInstall, m as connectAgent, n as applyCliInstall, o as pathShimPath, r as declineCliInstall, s as removeCliInstall, t as aliasInstallationToAccount, u as resolveCliInstallStatus } from "../account-alias-Cs5YqXRj.js";
17
+ import { C as DEFAULT_MAX_REQUEST_BYTES, D as writeAnimationsEnabled, E as readAnimationsEnabled, O as cliAskTools, S as readBoundedRequestJson, T as ReviewServerError, _ as saveDiffrSummarizer, a as drainServerCrashReport, b as remoteShare, c as answerErrorsAsJson, d as captureSanitizedUiTelemetry, f as clientErrorsForSession, g as readDiffrConfig, h as migrateDiffrConfig, l as createWhiteboardCore, m as GlobalReviewDesktopVerbRelay, o as installProcessErrorTelemetry, p as recordClientError, r as takeOverServerHome, s as serverCrashReportPath, u as serverJson, v as setDiffrConfigValue, w as HttpJsonError, x as createNodeRequestListener, y as testDiffrSummarizer } from "../headless-host-bb09yVkX.js";
18
+ import { s as readQuerySchemas } from "../authoring-tools-BgZvnbjN.js";
19
19
  import crypto, { createHash, randomBytes } from "node:crypto";
20
20
  import { z } from "zod";
21
21
  import { Agent, request } from "undici";
@@ -1,7 +1,7 @@
1
1
  import { a as jsonNumber, n as isJsonObject, s as jsonProperty, u as parseJsonText } from "./src-X9phtB2j.js";
2
- import { n as parseReviewDesktopDiscovery } from "./src-CrrW7lcY.js";
3
- import { a as reviewInstancesDir, o as reviewLegacyDiscoveryPath, r as reviewDevInstanceKey, t as reviewDefaultInstancePath } from "./review-home-paths-BmZX2qiz.js";
4
2
  import { M as DEV_REVIEW_HOME_ENV, N as devReviewHome, k as processIsAlive } from "./s3-config-CjcLyFV5.js";
3
+ import { a as reviewInstancesDir, o as reviewLegacyDiscoveryPath, r as reviewDevInstanceKey, t as reviewDefaultInstancePath } from "./review-home-paths-B8909D07.js";
4
+ import { n as parseReviewDesktopDiscovery } from "./src-B-91Rd2d.js";
5
5
  import { z } from "zod";
6
6
  import { mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises";
7
7
  import path from "node:path";
@@ -728,6 +728,27 @@ declare const fileLineRangeSchema: z.ZodObject<{
728
728
  type FileLineRange = z.infer<typeof fileLineRangeSchema>;
729
729
  type AlignmentRow = readonly [number | null, number | null];
730
730
  //#endregion
731
+ //#region src/intervals.d.ts
732
+ /** Zero-based, half-open intervals; always normalized at the storage boundary. */
733
+ type LineInterval = [number, number];
734
+ //#endregion
735
+ //#region src/coverage.d.ts
736
+ interface Coverage {
737
+ base: LineInterval[];
738
+ head: LineInterval[];
739
+ }
740
+ interface CoverageFile {
741
+ path: string;
742
+ previousPath?: string;
743
+ fingerprint: string;
744
+ changed: Coverage;
745
+ /** The changed lines diffr folds by default: every changed line of a file
746
+ * it hides, or those under a region that starts collapsed. Absent without
747
+ * structural data, where every changed line is left to read. */
748
+ folded?: Coverage;
749
+ viewed: Coverage;
750
+ }
751
+ //#endregion
731
752
  //#region ../json/src/json.d.ts
732
753
  /**
733
754
  * JSON values as they come off the wire or out of a file. Parse into one of
@@ -1611,10 +1632,6 @@ interface WrittenComponent {
1611
1632
  type: Element["type"];
1612
1633
  }
1613
1634
  //#endregion
1614
- //#region src/intervals.d.ts
1615
- /** Zero-based, half-open intervals; always normalized at the storage boundary. */
1616
- type LineInterval = [number, number];
1617
- //#endregion
1618
1635
  //#region src/github-pr-graph.d.ts
1619
1636
  interface GitHubPullRequest {
1620
1637
  number: number;
@@ -1625,23 +1642,6 @@ interface GitHubPullRequest {
1625
1642
  draft: boolean;
1626
1643
  }
1627
1644
  //#endregion
1628
- //#region src/viewed-coverage.d.ts
1629
- interface Coverage {
1630
- base: LineInterval[];
1631
- head: LineInterval[];
1632
- }
1633
- interface CoverageFile {
1634
- path: string;
1635
- previousPath?: string;
1636
- fingerprint: string;
1637
- changed: Coverage;
1638
- /** The changed lines diffr folds by default: every changed line of a file
1639
- * it hides, or those under a region that starts collapsed. Absent without
1640
- * structural data, where every changed line is left to read. */
1641
- folded?: Coverage;
1642
- viewed: Coverage;
1643
- }
1644
- //#endregion
1645
1645
  //#region src/review-api/comparison-coverage.d.ts
1646
1646
  interface ComparisonCoverage {
1647
1647
  /** All Git changes are counted, even if folding is still loading. */
@@ -1,2 +1,2 @@
1
- import { a as shareKey, g as exportShare, o as validateShareBundle, t as importShare, u as ShareClient } from "../import-CZ1958L4.js";
1
+ import { a as shareKey, g as exportShare, o as validateShareBundle, t as importShare, u as ShareClient } from "../import-_XAsWqen.js";
2
2
  export { ShareClient, exportShare, importShare, shareKey, validateShareBundle };
@@ -290,6 +290,7 @@ const REVIEW_OPEN_FILES_IN_CHOICES = [
290
290
  "vscode",
291
291
  "cursor",
292
292
  "zed",
293
+ "intellij",
293
294
  "application"
294
295
  ];
295
296
  const reviewDiffrLoginsSchema = z.record(z.string(), z.object({