@dev.fast/whiteboard 0.4.1-preview.20261026.137 → 0.4.1-preview.20261026.138

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 (55) hide show
  1. package/dist/{account-alias-BpH8VvTR.js → account-alias-BPlPnzQM.js} +6 -6
  2. package/dist/{agent-cli-DckMzOU_.js → agent-cli-BbCf9uid.js} +11 -11
  3. package/dist/agent-cli-ipN_JmzG.js +2 -0
  4. package/dist/{agent-client-D4FSEDX4.js → agent-client-DfpM8F5N.js} +2 -2
  5. package/dist/{authoring-tools-DmIJZq0b.js → authoring-tools-bm39DRoV.js} +4 -4
  6. package/dist/{background-server-BPZ3GQan.js → background-server--0EeCCeV.js} +1 -1
  7. package/dist/{background-server-B1uwDQTr.js → background-server-B--5p72o.js} +6 -6
  8. package/dist/build-info.json +1 -1
  9. package/dist/{cli-tWBQpq27.js → cli-DBTQIroM.js} +2 -2
  10. package/dist/{cli-runner-DVEDbjXo.js → cli-runner-CRFCdb7G.js} +24 -24
  11. package/dist/cli.js +2 -2
  12. package/dist/{fuzzy-match-BNLXmpbv.js → fuzzy-match-l3mJZ1Ge.js} +4 -4
  13. package/dist/{headless-host-B63e2z2j.js → headless-host-5ei3nHS8.js} +1 -1
  14. package/dist/{headless-host-Dl9g9Fvd.js → headless-host-BkJ9OUQY.js} +104 -292
  15. package/dist/{client-C8vT0mhW.js → import-Bwvf9Wos.js} +505 -390
  16. package/dist/{local-data-C0OJttzT.js → local-data-BCSeTyic.js} +7 -92
  17. package/dist/{mcp-D74cFQNM.js → mcp-_Xg1gQuA.js} +3 -3
  18. package/dist/{package-paths-BeYHYjeR.js → package-paths-Bg731FHS.js} +2 -2
  19. package/dist/profile-C8zL4u3L.js +2 -0
  20. package/dist/{profile-DS1F6PBF.js → profile-xzrUFgbT.js} +4 -4
  21. package/dist/{remote-attach-DTByuwBs.js → remote-attach-DF25Epoa.js} +4 -4
  22. package/dist/{remote-extensions-WtJO7pkb.js → remote-extensions-BJamgsCe.js} +1 -1
  23. package/dist/{remote-extensions-CsI_BJ_f.js → remote-extensions-CeywZL-Z.js} +4 -4
  24. package/dist/{remote-language-server-DQfg07BB.js → remote-language-server-CH8sG_CU.js} +6 -6
  25. package/dist/{remote-uninstall-aXApHJPy.js → remote-uninstall-Cq-lkBY7.js} +6 -6
  26. package/dist/{request-origin-BIBW432J.js → request-origin-CargJFvH.js} +2 -0
  27. package/dist/{review-app-launcher-Brn60fPu.js → review-app-launcher-D8ApNDUV.js} +2 -2
  28. package/dist/{review-home-paths-CG-sb9Cw.js → review-home-paths-DcB4xLD-.js} +2 -2
  29. package/dist/{review-telemetry-ChlsTRPN.js → review-telemetry-BW7gJrSo.js} +6 -6
  30. package/dist/{runtime-C6_1K-3Z.js → runtime-DY6Ctyog.js} +1 -1
  31. package/dist/runtime.js +1 -1
  32. package/dist/{s3-CsG2EWED.js → s3-BIWv4h1J.js} +2 -2
  33. package/dist/{s3-config-zz4GWh2T.js → s3-config-Du3RBIvv.js} +1 -1
  34. package/dist/server/desktop-host.js +16 -16
  35. package/dist/{server-discovery-BchUrwFW.js → server-discovery-aHK_1r3U.js} +4 -4
  36. package/dist/sharing/index.d.ts +157 -96
  37. package/dist/sharing/index.js +1 -1
  38. package/dist/{src-Z1x4-Qmb.js → src-DjRaCctk.js} +6 -6
  39. package/dist/{stored-document-migration-BCFx07Bq.js → stored-document-migration-CwmTwTb8.js} +88 -3
  40. package/dist/{tool-failure-DlU9hn7_.js → tool-failure-DZaQzi4f.js} +1 -1
  41. package/package.json +4 -4
  42. package/src/review-api/onboarding.ts +100 -26
  43. package/src/server/json-review-reporting.ts +1 -1
  44. package/src/sharing/cli.ts +1 -1
  45. package/src/sharing/client.ts +54 -222
  46. package/src/sharing/export.ts +172 -114
  47. package/src/sharing/host.ts +32 -36
  48. package/src/sharing/import.ts +93 -147
  49. package/src/sharing/index.ts +1 -6
  50. package/src/sharing/routes.ts +18 -17
  51. package/src/ui-telemetry-events.ts +2 -0
  52. package/dist/agent-cli-DFWrNoGJ.js +0 -2
  53. package/dist/profile-CAn8Qdeh.js +0 -2
  54. package/dist/{s3-config-CjcLyFV5.js → s3-config-D7Yt0VhS.js} +1 -1
  55. package/dist/{src-X9ZebeOD.js → src-DXnn7RrI.js} +1 -1
@@ -1,15 +1,15 @@
1
1
  import { n as isJsonObject } from "./src-X9phtB2j.js";
2
2
  import { E as ReviewCliInstallStampSchema } from "./src-DEOc8bvC.js";
3
- import { G as removeAgentTraceHook, H as AGENT_TRACE_HOOK_AGENTS, I as disableAllTraceRepositories, L as enableTraceRepository, Q as readStoreAuth, R as listTraceRepositoryRoots, U as describeTraceHookOwners, W as installHarnessHooks, Y as traceScope, g as disableTraceMachine, h as configureTraceMachine, rt as StoreClient, v as traceMachineEnabled, y as traceMachineStatus, z as traceRepositoryStatus } from "./src-Z1x4-Qmb.js";
4
- import { I as writeFileAtomicAsync, L as writePrivateJsonAtomic, N as devReviewHome, j as withFileLock } from "./s3-config-CjcLyFV5.js";
5
- import { i as readReviewPackageVersion } from "./package-paths-BeYHYjeR.js";
6
- import { n as reviewDesktopStateDir } from "./review-home-paths-CG-sb9Cw.js";
3
+ import { G as removeAgentTraceHook, H as AGENT_TRACE_HOOK_AGENTS, I as disableAllTraceRepositories, L as enableTraceRepository, Q as readStoreAuth, R as listTraceRepositoryRoots, U as describeTraceHookOwners, W as installHarnessHooks, Y as traceScope, g as disableTraceMachine, h as configureTraceMachine, rt as StoreClient, v as traceMachineEnabled, y as traceMachineStatus, z as traceRepositoryStatus } from "./src-DjRaCctk.js";
4
+ import { I as writeFileAtomicAsync, L as writePrivateJsonAtomic, N as devReviewHome, j as withFileLock } from "./s3-config-D7Yt0VhS.js";
5
+ import { i as readReviewPackageVersion } from "./package-paths-Bg731FHS.js";
6
+ import { n as reviewDesktopStateDir } from "./review-home-paths-DcB4xLD-.js";
7
7
  import { n as isFile, t as isDirectory } from "./fs-utils-BMPLt0cr.js";
8
- import { c as findExecutable, s as executableCommand } from "./fuzzy-match-BNLXmpbv.js";
8
+ import { c as findExecutable, s as executableCommand } from "./fuzzy-match-l3mJZ1Ge.js";
9
9
  import { createHash } from "node:crypto";
10
+ import path from "node:path";
10
11
  import { constants } from "node:fs";
11
12
  import { access, chmod, lstat, mkdir, readFile, rm, stat, writeFile } from "node:fs/promises";
12
- import path from "node:path";
13
13
  import os from "node:os";
14
14
  import { execFile } from "node:child_process";
15
15
  import { promisify } from "node:util";
@@ -1,15 +1,15 @@
1
1
  import { n as isJsonObject, u as parseJsonText } from "./src-X9phtB2j.js";
2
- import { v as traceMachineEnabled } from "./src-Z1x4-Qmb.js";
3
- import { a as toolResultText, i as connectReviewInstance, s as ReviewApiError } from "./agent-client-D4FSEDX4.js";
4
- import { N as devReviewHome } from "./s3-config-CjcLyFV5.js";
5
- import { n as readBuildCommit } from "./package-paths-BeYHYjeR.js";
6
- import "./review-home-paths-CG-sb9Cw.js";
7
- import { b as selectReviewInstance, u as REVIEW_INSTANCE_ENV } from "./server-discovery-BchUrwFW.js";
8
- import { n as reviewSessionAgent } from "./review-telemetry-ChlsTRPN.js";
9
- import { a as REVIEW_VIA_HEADER, i as REVIEW_THREAD_HEADER, n as REVIEW_AGENT_HEADER, t as ASK_THREAD_ENV } from "./request-origin-BIBW432J.js";
10
- import { i as publicTool, n as RECOVERY, r as callPublicTool, t as toolFailure } from "./tool-failure-DlU9hn7_.js";
11
- import { existsSync } from "node:fs";
2
+ import { v as traceMachineEnabled } from "./src-DjRaCctk.js";
3
+ import { a as toolResultText, i as connectReviewInstance, s as ReviewApiError } from "./agent-client-DfpM8F5N.js";
4
+ import { N as devReviewHome } from "./s3-config-D7Yt0VhS.js";
5
+ import { n as readBuildCommit } from "./package-paths-Bg731FHS.js";
6
+ import "./review-home-paths-DcB4xLD-.js";
7
+ import { b as selectReviewInstance, u as REVIEW_INSTANCE_ENV } from "./server-discovery-aHK_1r3U.js";
8
+ import { n as reviewSessionAgent } from "./review-telemetry-BW7gJrSo.js";
9
+ import { a as REVIEW_VIA_HEADER, i as REVIEW_THREAD_HEADER, n as REVIEW_AGENT_HEADER, t as ASK_THREAD_ENV } from "./request-origin-CargJFvH.js";
10
+ import { i as publicTool, n as RECOVERY, r as callPublicTool, t as toolFailure } from "./tool-failure-DZaQzi4f.js";
12
11
  import path from "node:path";
12
+ import { existsSync } from "node:fs";
13
13
  //#region src/review-api/install-update.ts
14
14
  /** Exits once an update replaces this install, or the Windows updater marks it. */
15
15
  function exitOnInstallUpdate(stderr) {
@@ -44,7 +44,7 @@ async function runReviewAgentCli(input) {
44
44
  [REVIEW_THREAD_HEADER, thread ?? ""]
45
45
  ]);
46
46
  if (mode === "mcp") {
47
- const { serveReviewMcp } = await import("./mcp-D74cFQNM.js");
47
+ const { serveReviewMcp } = await import("./mcp-_Xg1gQuA.js");
48
48
  exitOnInstallUpdate(input.stderr);
49
49
  await serveReviewMcp(async (key, agentKind) => {
50
50
  const connected = await connectReviewInstance(key ? {
@@ -0,0 +1,2 @@
1
+ import { n as runReviewAgentCli } from "./agent-cli-BbCf9uid.js";
2
+ export { runReviewAgentCli };
@@ -1,7 +1,7 @@
1
1
  import { d as isBooleanValue, f as isNumberValue, m as isStringValue, u as parseJsonText } from "./src-X9phtB2j.js";
2
2
  import "./src-DEOc8bvC.js";
3
3
  import { t as ReviewInputError } from "./input-error-OLgB_h31.js";
4
- import { b as selectReviewInstance, c as reviewServerStateDir, d as ReviewInstanceUnavailableError, i as readReviewServerDiscovery, l as serverNotReady, m as healthyReviewInstance, s as reviewServerIsHealthy, y as reviewInstanceUnavailable } from "./server-discovery-BchUrwFW.js";
4
+ import { b as selectReviewInstance, c as reviewServerStateDir, d as ReviewInstanceUnavailableError, i as readReviewServerDiscovery, l as serverNotReady, m as healthyReviewInstance, s as reviewServerIsHealthy, y as reviewInstanceUnavailable } from "./server-discovery-aHK_1r3U.js";
5
5
  //#region ../review-protocol/src/review-api-client.ts
6
6
  const defaultRequest = (url, init) => fetch(url, init);
7
7
  /** A non-2xx reply; the status tells a caller whether retrying can help. */
@@ -259,7 +259,7 @@ async function connectReviewInstance(env = process.env, headers = {}, options =
259
259
  const selection = await selectReviewInstance({ env });
260
260
  const discovery = healthyReviewInstance(selection);
261
261
  if (!discovery) {
262
- const { ensureServerWithoutDesktop } = await import("./background-server-BPZ3GQan.js");
262
+ const { ensureServerWithoutDesktop } = await import("./background-server--0EeCCeV.js");
263
263
  const server = await ensureServerWithoutDesktop({
264
264
  selection,
265
265
  env,
@@ -1,11 +1,11 @@
1
1
  import { n as isJsonObject } from "./src-X9phtB2j.js";
2
- import { c as activityBeginSchema, l as activityEndSchema, n as uploadSchema, r as commandSchema, u as activityUpdateSchema } from "./local-data-C0OJttzT.js";
3
- import { L as publishedEdits, N as pathTargetSchema } from "./stored-document-migration-BCFx07Bq.js";
2
+ import { c as activityBeginSchema, l as activityEndSchema, n as uploadSchema, r as commandSchema, u as activityUpdateSchema } from "./local-data-BCSeTyic.js";
3
+ import { F as pathTargetSchema, z as publishedEdits } from "./stored-document-migration-CwmTwTb8.js";
4
4
  import { t as ReviewInputError } from "./input-error-OLgB_h31.js";
5
- import { t as findReviewPackageRoot } from "./package-paths-BeYHYjeR.js";
5
+ import { t as findReviewPackageRoot } from "./package-paths-Bg731FHS.js";
6
6
  import { z } from "zod";
7
- import { readFile } from "node:fs/promises";
8
7
  import path from "node:path";
8
+ import { readFile } from "node:fs/promises";
9
9
  //#region src/review-api/read-schemas.ts
10
10
  const version = z.union([z.literal("").transform(() => void 0), z.coerce.number().int().nonnegative()]).optional();
11
11
  const commit = z.string().min(1).optional();
@@ -1,2 +1,2 @@
1
- import { a as headlessServerOwner, c as stopBackgroundServer, i as ensureServerWithoutDesktop, r as ensureBackgroundServer } from "./background-server-B1uwDQTr.js";
1
+ import { a as headlessServerOwner, c as stopBackgroundServer, i as ensureServerWithoutDesktop, r as ensureBackgroundServer } from "./background-server-B--5p72o.js";
2
2
  export { ensureBackgroundServer, ensureServerWithoutDesktop, headlessServerOwner, stopBackgroundServer };
@@ -1,10 +1,10 @@
1
- import "./src-Z1x4-Qmb.js";
2
- import { D as liveLockOwner, k as processIsAlive } from "./s3-config-CjcLyFV5.js";
3
- import { t as findReviewPackageRoot } from "./package-paths-BeYHYjeR.js";
4
- import { a as readReviewServerHealth, c as reviewServerStateDir, i as readReviewServerDiscovery, n as desktopOwnsHome, p as desktopUsesHome, r as headlessServerLockPath } from "./server-discovery-BchUrwFW.js";
5
- import { t as desktopApplicationInstalled } from "./review-app-launcher-Brn60fPu.js";
6
- import { mkdir, open, readFile, realpath, stat } from "node:fs/promises";
1
+ import "./src-DjRaCctk.js";
2
+ import { D as liveLockOwner, k as processIsAlive } from "./s3-config-D7Yt0VhS.js";
3
+ import { t as findReviewPackageRoot } from "./package-paths-Bg731FHS.js";
4
+ import { a as readReviewServerHealth, c as reviewServerStateDir, i as readReviewServerDiscovery, n as desktopOwnsHome, p as desktopUsesHome, r as headlessServerLockPath } from "./server-discovery-aHK_1r3U.js";
5
+ import { t as desktopApplicationInstalled } from "./review-app-launcher-D8ApNDUV.js";
7
6
  import path from "node:path";
7
+ import { mkdir, open, readFile, realpath, stat } from "node:fs/promises";
8
8
  import { spawn } from "node:child_process";
9
9
  import { setTimeout } from "node:timers/promises";
10
10
  //#region src/server/background-server.ts
@@ -1 +1 @@
1
- {"version":"0.4.1-preview.20261026.137","commit":"46629c2739b7efbdb10cd7a98cfacb315e8d7ae0","dirty":true,"builtAt":"2026-10-26T17:52:50.758Z"}
1
+ {"version":"0.4.1-preview.20261026.138","commit":"50bc2452b6dc5496460b10e223e4348b0802452f","dirty":true,"builtAt":"2026-10-26T20:42:51.182Z"}
@@ -1,4 +1,4 @@
1
- import { r as connectReviewApi } from "./agent-client-D4FSEDX4.js";
1
+ import { r as connectReviewApi } from "./agent-client-DfpM8F5N.js";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { z } from "zod";
4
4
  //#region src/sharing/cli.ts
@@ -19,7 +19,7 @@ async function runShareCli(input) {
19
19
  } else {
20
20
  if (!input.review) throw new Error("Use whiteboard share --review <id>.");
21
21
  const version = input.version === void 0 ? void 0 : z.number().int().nonnegative().parse(Number(input.version));
22
- input.stderr.write("Sharing includes retained images, maps, and full trace conversations. Anyone with the link can download them. Reviews with code require GitHub repository access to fetch the pinned commits.\n");
22
+ input.stderr.write("Sharing uploads the whiteboard with its maps, full trace conversations, and the code lines it references. Anyone with the link can read them; no GitHub access is needed. Opening it in Whiteboard Desktop also fetches the pinned commits from GitHub.\n");
23
23
  const result = resultSchema.parse(await client.post("/sharing/publish", {
24
24
  reviewId: input.review,
25
25
  version,
@@ -1,22 +1,22 @@
1
- import { D as __commonJSMin, E as setLocalVcsCommandObserver, O as __require, k as __toESM } from "./src-X9ZebeOD.js";
1
+ import { D as __commonJSMin, E as setLocalVcsCommandObserver, O as __require, k as __toESM } from "./src-DXnn7RrI.js";
2
2
  import { c as jsonString, n as isJsonObject, u as parseJsonText } from "./src-X9phtB2j.js";
3
3
  import { S as REVIEW_REMOTE_ATTACH_END, b as REVIEW_REMOTE_AGENT_IDS, h as REVIEW_CLI_INSTALL_TARGET_LABELS, l as boardTitle, x as REVIEW_REMOTE_ATTACH_BEGIN } from "./src-DEOc8bvC.js";
4
- import { $ as runStoreLogin, A as loadS3TraceStorage, B as readTraceUserConfig, C as runTraceDeny, D as runTraceStoreInfo, E as runTraceStoreDelete, F as resolveTraceRepositoryTarget, J as traceHomeDir, K as resolveTraceCommand, M as selectTraceStorage, O as describeSelection, P as requireTraceConsent, Q as readStoreAuth, S as runTraceAllow, T as runTraceSessions, V as HOSTED_CAPTURE_SCOPE_DESCRIPTION, X as DEFAULT_STORE_ORIGIN, Y as traceScope, _ as readLegacyCaptureSettings, a as runTracePull$1, at as emitJsonEvent, c as runTraceEnable, ct as jsonRequestedInArgv, d as runTraceStatus, et as runStoreLogout, f as runTraceSync, i as runTraceList$1, it as withStoreAuthorization, l as runTraceInstallMachine, m as runTraceHook, n as resolveTraceReadStorage, nt as StoreApiError, o as runTraceShow, ot as failWithJsonError, p as runTraceGitHook, r as runTraceBlame, rt as StoreClient, s as runTraceDisable, st as humanStream, t as registerTraceCommands, tt as runStoreWhoami, u as runTraceRepair, v as traceMachineEnabled, w as runTraceOnboard, y as traceMachineStatus, z as traceRepositoryStatus } from "./src-Z1x4-Qmb.js";
5
- import { o as ReviewApiClient, s as ReviewApiError } from "./agent-client-D4FSEDX4.js";
6
- import { C as s3ProfileSchema, E as writeTraceConfigFile, N as devReviewHome, P as normalizeStoreOrigin, S as readTraceConfigFile, T as sameS3Profile, _ as emptyTraceConfig, c as resolveS3Setup, g as currentStore, h as TraceConfigurationError, i as isS3MockMode, n as clearTraceEnvCache, o as readTraceEnvFile, p as traceSettingsPath, w as s3Store } from "./s3-config-CjcLyFV5.js";
4
+ import { $ as runStoreLogin, A as loadS3TraceStorage, B as readTraceUserConfig, C as runTraceDeny, D as runTraceStoreInfo, E as runTraceStoreDelete, F as resolveTraceRepositoryTarget, J as traceHomeDir, K as resolveTraceCommand, M as selectTraceStorage, O as describeSelection, P as requireTraceConsent, Q as readStoreAuth, S as runTraceAllow, T as runTraceSessions, V as HOSTED_CAPTURE_SCOPE_DESCRIPTION, X as DEFAULT_STORE_ORIGIN, Y as traceScope, _ as readLegacyCaptureSettings, a as runTracePull$1, at as emitJsonEvent, c as runTraceEnable, ct as jsonRequestedInArgv, d as runTraceStatus, et as runStoreLogout, f as runTraceSync, i as runTraceList$1, it as withStoreAuthorization, l as runTraceInstallMachine, m as runTraceHook, n as resolveTraceReadStorage, nt as StoreApiError, o as runTraceShow, ot as failWithJsonError, p as runTraceGitHook, r as runTraceBlame, rt as StoreClient, s as runTraceDisable, st as humanStream, t as registerTraceCommands, tt as runStoreWhoami, u as runTraceRepair, v as traceMachineEnabled, w as runTraceOnboard, y as traceMachineStatus, z as traceRepositoryStatus } from "./src-DjRaCctk.js";
5
+ import { o as ReviewApiClient, s as ReviewApiError } from "./agent-client-DfpM8F5N.js";
6
+ import { C as s3ProfileSchema, E as writeTraceConfigFile, N as devReviewHome, P as normalizeStoreOrigin, S as readTraceConfigFile, T as sameS3Profile, _ as emptyTraceConfig, c as resolveS3Setup, g as currentStore, h as TraceConfigurationError, i as isS3MockMode, n as clearTraceEnvCache, o as readTraceEnvFile, p as traceSettingsPath, w as s3Store } from "./s3-config-D7Yt0VhS.js";
7
7
  import { t as errorMessage } from "./error-message-OtiDonty.js";
8
- import { i as readReviewPackageVersion, r as readBuildInfo, t as findReviewPackageRoot } from "./package-paths-BeYHYjeR.js";
9
- import { t as resolveReviewRoot } from "./runtime-C6_1K-3Z.js";
10
- import "./review-home-paths-CG-sb9Cw.js";
11
- import { a as readReviewServerHealth, b as selectReviewInstance, c as reviewServerStateDir, d as ReviewInstanceUnavailableError, f as clearDefaultReviewInstance, g as requireHealthyReviewDesktop, h as readDefaultReviewInstance, i as readReviewServerDiscovery, l as serverNotReady, m as healthyReviewInstance, p as desktopUsesHome, t as DESKTOP_TAKEOVER_SIGNAL, u as REVIEW_INSTANCE_ENV, x as writeDefaultReviewInstance, y as reviewInstanceUnavailable } from "./server-discovery-BchUrwFW.js";
12
- import { t as ReviewTelemetry } from "./review-telemetry-ChlsTRPN.js";
13
- import { t as fuzzyRank } from "./fuzzy-match-BNLXmpbv.js";
14
- import { _ as isInstallTarget, a as isOwnedShim, f as windowsInstallerCommand, g as ALL_INSTALL_TARGETS, h as detectConnectAgents, m as connectAgent, o as pathShimPath, p as scanLegacySkills, t as aliasInstallationToAccount, v as connectPrompts } from "./account-alias-BpH8VvTR.js";
15
- import { n as focusReviewDesktop, r as runReviewAppLaunch } from "./review-app-launcher-Brn60fPu.js";
16
- import { t as reviewAgentCliHelp } from "./agent-cli-DckMzOU_.js";
8
+ import { i as readReviewPackageVersion, r as readBuildInfo, t as findReviewPackageRoot } from "./package-paths-Bg731FHS.js";
9
+ import { t as resolveReviewRoot } from "./runtime-DY6Ctyog.js";
10
+ import "./review-home-paths-DcB4xLD-.js";
11
+ import { a as readReviewServerHealth, b as selectReviewInstance, c as reviewServerStateDir, d as ReviewInstanceUnavailableError, f as clearDefaultReviewInstance, g as requireHealthyReviewDesktop, h as readDefaultReviewInstance, i as readReviewServerDiscovery, l as serverNotReady, m as healthyReviewInstance, p as desktopUsesHome, t as DESKTOP_TAKEOVER_SIGNAL, u as REVIEW_INSTANCE_ENV, x as writeDefaultReviewInstance, y as reviewInstanceUnavailable } from "./server-discovery-aHK_1r3U.js";
12
+ import { t as ReviewTelemetry } from "./review-telemetry-BW7gJrSo.js";
13
+ import { t as fuzzyRank } from "./fuzzy-match-l3mJZ1Ge.js";
14
+ import { _ as isInstallTarget, a as isOwnedShim, f as windowsInstallerCommand, g as ALL_INSTALL_TARGETS, h as detectConnectAgents, m as connectAgent, o as pathShimPath, p as scanLegacySkills, t as aliasInstallationToAccount, v as connectPrompts } from "./account-alias-BPlPnzQM.js";
15
+ import { n as focusReviewDesktop, r as runReviewAppLaunch } from "./review-app-launcher-D8ApNDUV.js";
16
+ import { t as reviewAgentCliHelp } from "./agent-cli-BbCf9uid.js";
17
+ import path from "node:path";
17
18
  import { existsSync, mkdirSync, renameSync, writeFileSync } from "node:fs";
18
19
  import { realpath } from "node:fs/promises";
19
- import path from "node:path";
20
20
  import { Writable } from "node:stream";
21
21
  import { AsyncLocalStorage } from "node:async_hooks";
22
22
  import os from "node:os";
@@ -4334,7 +4334,7 @@ async function runReviewCli(input) {
4334
4334
  if (!Number.isInteger(port) || port < 0 || port > 65535) throw new ReviewCliUsageError("--port must be an integer between 0 and 65535.");
4335
4335
  const stateDir = reviewServerStateDir(authoringEnv(options.stateDir));
4336
4336
  if (options.detach) {
4337
- const { ensureBackgroundServer } = await import("./background-server-BPZ3GQan.js");
4337
+ const { ensureBackgroundServer } = await import("./background-server--0EeCCeV.js");
4338
4338
  const { discovery, started } = await ensureBackgroundServer({
4339
4339
  stateDir,
4340
4340
  env,
@@ -4356,7 +4356,7 @@ async function runReviewCli(input) {
4356
4356
  process.once("SIGINT", stop);
4357
4357
  process.once("SIGTERM", stop);
4358
4358
  process.once(DESKTOP_TAKEOVER_SIGNAL, takeover);
4359
- const { HeadlessServerBusyError, runHeadlessServer } = await import("./headless-host-B63e2z2j.js");
4359
+ const { HeadlessServerBusyError, runHeadlessServer } = await import("./headless-host-5ei3nHS8.js");
4360
4360
  try {
4361
4361
  await runHeadlessServer({
4362
4362
  stateDir,
@@ -4393,7 +4393,7 @@ async function runReviewCli(input) {
4393
4393
  configureJsonOutput(serverCommand.command("stop").description("Stop a background server started by --detach, the CLI, or Desktop").option("--state-dir <path>", "directory selected when starting the server"), "plain").action(async (_options, command) => {
4394
4394
  const options = command.optsWithGlobals();
4395
4395
  const stateDir = reviewServerStateDir(authoringEnv(options.stateDir));
4396
- const { headlessServerOwner, stopBackgroundServer } = await import("./background-server-BPZ3GQan.js");
4396
+ const { headlessServerOwner, stopBackgroundServer } = await import("./background-server--0EeCCeV.js");
4397
4397
  const owner = await headlessServerOwner(stateDir);
4398
4398
  const discovery = await readReviewServerDiscovery(stateDir);
4399
4399
  if (owner === void 0) {
@@ -4421,7 +4421,7 @@ async function runReviewCli(input) {
4421
4421
  if (!existsSync(path.join(stateDir, "review-api.db"))) throw new Error(`No saved reviews in ${stateDir}, so there is no server id to reset. Check --state-dir.`);
4422
4422
  const inUse = `A Whiteboard server is using ${stateDir}. Stop it first, then run whiteboard server reset-id again.`;
4423
4423
  if (await desktopUsesHome(stateDir, env)) return refuse(inUse, options.json);
4424
- const [{ openReviewProfile }, { withHeadlessServerLock }] = await Promise.all([import("./profile-CAn8Qdeh.js"), import("./headless-host-B63e2z2j.js")]);
4424
+ const [{ openReviewProfile }, { withHeadlessServerLock }] = await Promise.all([import("./profile-C8zL4u3L.js"), import("./headless-host-5ei3nHS8.js")]);
4425
4425
  const reset = await withHeadlessServerLock(await realpath(stateDir), async () => {
4426
4426
  const local = await openReviewProfile(stateDir, { manageWorkspaces: false });
4427
4427
  try {
@@ -4443,7 +4443,7 @@ async function runReviewCli(input) {
4443
4443
  configureJsonOutput(remote.command("attach").description("Start a background server if none is healthy and report how to reach it").option("--state-dir <path>", "directory for saved reviews and server discovery").option("--groups <groups>", "comma-separated optional extension groups the Desktop has enabled, such as go").option("--replace", "stop a running server of another version that the CLI or Desktop started, and start this one"), "plain").action(async (_options, command) => {
4444
4444
  const options = command.optsWithGlobals();
4445
4445
  const stateDir = reviewServerStateDir(authoringEnv(options.stateDir));
4446
- const { remoteAttach } = await import("./remote-attach-DTByuwBs.js");
4446
+ const { remoteAttach } = await import("./remote-attach-DF25Epoa.js");
4447
4447
  let attach;
4448
4448
  try {
4449
4449
  attach = await remoteAttach({
@@ -4470,7 +4470,7 @@ async function runReviewCli(input) {
4470
4470
  });
4471
4471
  configureJsonOutput(remote.command("extensions").description("Language extensions for the language server on a remote").command("ensure").description("Download the curated extensions for this machine and list them for the language server").option("--groups <groups>", "comma-separated optional extension groups the Desktop has enabled, such as go"), "plain").action(async (_options, command) => {
4472
4472
  const { json, groups } = command.optsWithGlobals();
4473
- const { ensureRemoteExtensions } = await import("./remote-extensions-WtJO7pkb.js");
4473
+ const { ensureRemoteExtensions } = await import("./remote-extensions-BJamgsCe.js");
4474
4474
  const result = await ensureRemoteExtensions({
4475
4475
  env,
4476
4476
  groups: groups?.split(",").map((group) => group.trim())
@@ -4485,7 +4485,7 @@ async function runReviewCli(input) {
4485
4485
  configureJsonOutput(remote.command("uninstall").description("Remove what Whiteboard Desktop installed on this host, stopping a server it started").addOption(new Option("--keep-reviews", "leave the saved reviews in place").conflicts("deleteReviews")).addOption(new Option("--delete-reviews", "also delete the saved reviews")).option("--state-dir <path>", "directory for saved reviews and server discovery"), "plain").action(async (_options, command) => {
4486
4486
  const options = command.optsWithGlobals();
4487
4487
  const stateDir = reviewServerStateDir(authoringEnv(options.stateDir));
4488
- const { remoteUninstall } = await import("./remote-uninstall-aXApHJPy.js");
4488
+ const { remoteUninstall } = await import("./remote-uninstall-Cq-lkBY7.js");
4489
4489
  let deleteReviews = options.deleteReviews ? true : options.keepReviews ? false : void 0;
4490
4490
  if (deleteReviews === void 0 && !options.json && input.stdin?.isTTY) {
4491
4491
  const prompt = createInterface$1({
@@ -4707,14 +4707,14 @@ async function runReviewCli(input) {
4707
4707
  command.showHelpAfterError(false).error("Markdown review migration is no longer supported. Ask your agent to migrate your old Whiteboard reviews.");
4708
4708
  });
4709
4709
  configureJsonOutput(configureJsonOutput(program.command("share").description("Upload an immutable review snapshot and return its share link"), "plain").option("--review <id>", "review ID").option("--version <number>", "Saved version to share").option("--preview", "Open the share link in Whiteboard Preview by default").option("--request-id <uuid>", "Reuse this ID when retrying the same immutable upload").action(async (options) => {
4710
- const { runShareCli } = await import("./cli-tWBQpq27.js");
4710
+ const { runShareCli } = await import("./cli-DBTQIroM.js");
4711
4711
  state.exitCode = await runShareCli({
4712
4712
  ...input,
4713
4713
  ...options,
4714
4714
  env: authoringEnv()
4715
4715
  });
4716
4716
  }).command("revoke <share-id>").description("Revoke future downloads of a share"), "plain").action(async (shareId, options) => {
4717
- const { runShareCli } = await import("./cli-tWBQpq27.js");
4717
+ const { runShareCli } = await import("./cli-DBTQIroM.js");
4718
4718
  state.exitCode = await runShareCli({
4719
4719
  ...input,
4720
4720
  ...options,
@@ -4795,7 +4795,7 @@ async function runReviewCli(input) {
4795
4795
  return commands;
4796
4796
  } });
4797
4797
  for (const [name, description] of [["api", "Call a JSON review authoring tool on the running server"], ["mcp", "Serve the JSON review authoring tools over stdio MCP"]]) configureOutput(program.command(name).description(description).argument("[args...]", "tool name and JSON input").allowUnknownOption().allowExcessArguments().helpOption(false).passThroughOptions().addHelpText("after", `\n${reviewAgentCliHelp}`), "plain").action(async (args) => {
4798
- const { runReviewAgentCli } = await import("./agent-cli-DFWrNoGJ.js");
4798
+ const { runReviewAgentCli } = await import("./agent-cli-ipN_JmzG.js");
4799
4799
  state.exitCode = await runReviewAgentCli({
4800
4800
  ...input,
4801
4801
  env: authoringEnv(),
package/dist/cli.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { a as jsonNumber, c as jsonString, o as jsonObject, u as parseJsonText } from "./src-X9phtB2j.js";
3
3
  import "./src-DEOc8bvC.js";
4
- import { existsSync, readFileSync, readdirSync, realpathSync } from "node:fs";
5
4
  import path from "node:path";
5
+ import { existsSync, readFileSync, readdirSync, realpathSync } from "node:fs";
6
6
  import os from "node:os";
7
7
  import { spawnSync } from "node:child_process";
8
8
  import { fileURLToPath } from "node:url";
@@ -17,7 +17,7 @@ async function runCli(effectivePath) {
17
17
  `);
18
18
  return 1;
19
19
  }
20
- const { runReviewCli } = await import("./cli-runner-DVEDbjXo.js");
20
+ const { runReviewCli } = await import("./cli-runner-CRFCdb7G.js");
21
21
  return runReviewCli({
22
22
  argv,
23
23
  cliPaths: {
@@ -1,11 +1,11 @@
1
- import "./src-Z1x4-Qmb.js";
2
- import { N as devReviewHome } from "./s3-config-CjcLyFV5.js";
1
+ import "./src-DjRaCctk.js";
2
+ import { N as devReviewHome } from "./s3-config-D7Yt0VhS.js";
3
3
  import { n as askAgentIds } from "./thread-state-CbLB0jUA.js";
4
- import { t as ASK_THREAD_ENV } from "./request-origin-BIBW432J.js";
4
+ import { t as ASK_THREAD_ENV } from "./request-origin-CargJFvH.js";
5
5
  import { createRequire } from "node:module";
6
+ import path from "node:path";
6
7
  import { constants } from "node:fs";
7
8
  import { access, chmod, mkdir, readFile, rename, stat, writeFile } from "node:fs/promises";
8
- import path from "node:path";
9
9
  import { Readable, Writable } from "node:stream";
10
10
  import { homedir } from "node:os";
11
11
  import { execFile, spawn } from "node:child_process";
@@ -1,2 +1,2 @@
1
- import { i as withHeadlessServerLock, n as runHeadlessServer, r as takeOverServerHome, t as HeadlessServerBusyError } from "./headless-host-Dl9g9Fvd.js";
1
+ import { i as withHeadlessServerLock, n as runHeadlessServer, r as takeOverServerHome, t as HeadlessServerBusyError } from "./headless-host-BkJ9OUQY.js";
2
2
  export { HeadlessServerBusyError, runHeadlessServer, takeOverServerHome, withHeadlessServerLock };