@dev.fast/whiteboard 0.3.4-preview.20261019.127 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{account-alias-B5-HYi1D.js → account-alias-CprZojXd.js} +8 -13
- package/dist/agent-cli-C6SPSII0.js +2 -0
- package/dist/{agent-cli-CohHf6Ua.js → agent-cli-CThN7Q59.js} +10 -15
- package/dist/{agent-client-Dtc-Kn_w.js → agent-client-BOOi7EUR.js} +3 -13
- package/dist/{authoring-tools-B7KU04f7.js → authoring-tools-BNwuMnz6.js} +27 -34
- package/dist/{background-server-C03RKxKS.js → background-server-CkvxA-6O.js} +5 -5
- package/dist/{background-server-CB9C4uoc.js → background-server-DLSDogkI.js} +1 -1
- package/dist/build-info.json +1 -1
- package/dist/{cli-CJaEb7zC.js → cli-R4yfa5DT.js} +1 -1
- package/dist/{cli-runner-DGDIqh3V.js → cli-runner-Cuc9FSzu.js} +26 -26
- package/dist/cli.js +3 -4
- package/dist/{client-lKVF_Elo.js → client-BN_FDxFr.js} +47 -253
- package/dist/{fuzzy-match-BmVJJm9I.js → fuzzy-match-BO9bK37N.js} +4 -6
- package/dist/{headless-host-DRtjf9WA.js → headless-host-CVBOQyRS.js} +1 -1
- package/dist/{headless-host-XhL1X4vX.js → headless-host-Cog6SpS9.js} +140 -513
- package/dist/{local-data-Cpl4ENbJ.js → local-data-D_9tvdsp.js} +323 -2419
- package/dist/{mcp-ovmiUE_x.js → mcp-D1hziANa.js} +9 -5
- package/dist/{package-paths-BWxO-UEL.js → package-paths-C--__jEv.js} +1 -1
- package/dist/profile-CYPmvBoA.js +2 -0
- package/dist/{profile-BadSkCkI.js → profile-DokFw782.js} +8 -20
- package/dist/{remote-attach-Dd-YobM6.js → remote-attach-CEJ-kvDY.js} +4 -4
- package/dist/{remote-extensions-CNXwqK0D.js → remote-extensions-Blcjr9Ze.js} +3 -3
- package/dist/{remote-extensions-VP-kfq0C.js → remote-extensions-GN8Gf_qG.js} +1 -1
- package/dist/{remote-language-server-BXk87KCr.js → remote-language-server-BTKBQ7x4.js} +5 -5
- package/dist/{remote-uninstall-DuOzsvaD.js → remote-uninstall-DW7Gdryh.js} +6 -6
- package/dist/{request-origin-B9qCPiVB.js → request-origin-Zcn_CjX4.js} +12 -45
- package/dist/{review-app-launcher-C7el2Uoy.js → review-app-launcher-CkwLclzR.js} +2 -2
- package/dist/{review-home-paths-D8AoCdd2.js → review-home-paths-j2BRAaNv.js} +17 -19
- package/dist/{review-telemetry-BsoRMC2w.js → review-telemetry-BLNwYnLV.js} +5 -5
- package/dist/runtime-CKiWhGrf.js +52 -0
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.js +1 -1
- package/dist/{s3-CsG2EWED.js → s3-DtJFWC0G.js} +1 -1
- package/dist/{s3-config-CjcLyFV5.js → s3-config-BTO12tCC.js} +2 -4
- package/dist/{s3-config-zz4GWh2T.js → s3-config-CSy3fx8H.js} +1 -1
- package/dist/server/desktop-host.js +76 -29
- package/dist/{server-discovery-CKjw3-6h.js → server-discovery-Bey8IqXH.js} +3 -3
- package/dist/sharing/index.d.ts +70 -484
- package/dist/sharing/index.js +1 -1
- package/dist/{src-WPaQn75m.js → src-BMPuxWv4.js} +73 -208
- package/dist/{src-BiWNbcF_.js → src-DsM3jO8G.js} +12 -89
- package/dist/{stored-document-migration-dFbewRTG.js → stored-document-migration-CChxtFAy.js} +269 -270
- package/dist/{thread-state-Do5LX10I.js → thread-state-5pYr6_zM.js} +2 -7
- package/dist/{tool-failure-DvI-gys2.js → tool-failure-C9MpbXJJ.js} +3 -10
- package/instructions/authoring.md +2 -3
- package/instructions/scratchpad.md +23 -0
- package/package.json +4 -4
- package/src/ask/agents.ts +1 -13
- package/src/ask/checkout-files.ts +5 -2
- package/src/ask/thread-state.ts +0 -4
- package/src/ask/thread.ts +0 -16
- package/src/ask/threads.ts +3 -24
- package/src/cli-install.ts +2 -13
- package/src/cli-runner.ts +1 -4
- package/src/cli.ts +1 -4
- package/src/diff-selection-migration.ts +34 -48
- package/src/lens-selection.ts +2 -38
- package/src/review-api/README.md +13 -52
- package/src/review-api/activity.ts +4 -1
- package/src/review-api/agent-cli.ts +1 -9
- package/src/review-api/anchor-quotes.ts +7 -14
- package/src/review-api/ask-history.ts +51 -137
- package/src/review-api/authoring-tools.ts +30 -45
- package/src/review-api/blocks/definition.ts +1 -1
- package/src/review-api/blocks/markdown.ts +2 -2
- package/src/review-api/document-headings.ts +27 -58
- package/src/review-api/document-text.ts +2 -31
- package/src/review-api/document.ts +34 -281
- package/src/review-api/github-provider.ts +13 -51
- package/src/review-api/http.ts +123 -702
- package/src/review-api/instructions.ts +19 -0
- package/src/review-api/local-data.ts +46 -310
- package/src/review-api/mcp.ts +11 -3
- package/src/review-api/onboarding.ts +1 -1
- package/src/review-api/profile.ts +6 -37
- package/src/review-api/public-tools.ts +2 -24
- package/src/review-api/pull-request.ts +49 -82
- package/src/review-api/request-origin.ts +0 -10
- package/src/review-api/review-progress.ts +27 -61
- package/src/review-api/store-schema.ts +29 -38
- package/src/review-api/store.ts +478 -2142
- package/src/review-api/worktree-events.ts +5 -3
- package/src/review-api/worktree-source.ts +7 -3
- package/src/review-api/worktree-structural.integration.ts +0 -72
- package/src/review-preferences.ts +88 -0
- package/src/review-stack.ts +23 -15
- package/src/runtime.ts +30 -4
- package/src/server/desktop-host.ts +1 -6
- package/src/server/desktop-server.ts +31 -1
- package/src/server/headless-host.ts +2 -0
- package/src/server/hono-http.ts +1 -2
- package/src/server/legacy-tutorial-cleanup.ts +3 -2
- package/src/server/review-gateway-list.ts +5 -3
- package/src/server/review-gateway-memory.ts +1 -1
- package/src/server/review-lifecycle-telemetry.ts +2 -2
- package/src/server/review-server-core.ts +5 -1
- package/src/server/structural-comparisons.ts +0 -47
- package/src/sharing/export.ts +7 -36
- package/src/sharing/host.ts +14 -34
- package/src/sharing/import.ts +24 -156
- package/src/sharing/repository.ts +20 -128
- package/src/startup-trace.ts +3 -3
- package/src/stored-document-migration.ts +19 -110
- package/src/ui-telemetry-events.ts +11 -33
- package/dist/agent-cli-_YyMIMRY.js +0 -2
- package/dist/lens-selection-CyJapcsl.js +0 -214
- package/dist/profile-DJvkBJNQ.js +0 -2
- package/dist/runtime-Bj2tD33R.js +0 -27
- package/src/heading-anchors.ts +0 -42
- package/src/review-api/board-order.ts +0 -144
- package/src/review-api/checkout-groups.ts +0 -560
- package/src/review-api/foreign-references.ts +0 -328
- package/src/review-api/link-preview.ts +0 -113
- package/src/review-api/scratchpad-plan-upgrade.ts +0 -250
- package/src/review-api/store-migrations.ts +0 -357
package/dist/sharing/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as sharedReviewId, c as verifyShareRepository, i as SharedReviewStore, l as exportShare, n as ShareClient, o as validateShareBundle } from "../client-
|
|
1
|
+
import { a as sharedReviewId, c as verifyShareRepository, i as SharedReviewStore, l as exportShare, n as ShareClient, o as validateShareBundle } from "../client-BN_FDxFr.js";
|
|
2
2
|
export { ShareClient, SharedReviewStore, exportShare, sharedReviewId, validateShareBundle, verifyShareRepository };
|
|
@@ -684,179 +684,22 @@ var import_lib = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((export
|
|
|
684
684
|
}
|
|
685
685
|
module.exports = gitUrlParse;
|
|
686
686
|
})))(), 1);
|
|
687
|
-
/** A quick query: a ref, a config value, a status. */
|
|
688
|
-
const QUICK_TIMEOUT_MS = 3e4;
|
|
689
|
-
/** A read that grows with the repository or a file in it, or a jj call. */
|
|
690
|
-
const LARGE_READ_TIMEOUT_MS = 3e5;
|
|
691
|
-
/** Talking to a remote. */
|
|
692
|
-
const NETWORK_TIMEOUT_MS = 6e5;
|
|
693
|
-
const NETWORK_COMMANDS = /* @__PURE__ */ new Set([
|
|
694
|
-
"fetch",
|
|
695
|
-
"clone",
|
|
696
|
-
"pull",
|
|
697
|
-
"push"
|
|
698
|
-
]);
|
|
699
|
-
const LARGE_READS = /* @__PURE__ */ new Set([
|
|
700
|
-
"archive",
|
|
701
|
-
"blame",
|
|
702
|
-
"cat-file",
|
|
703
|
-
"diff",
|
|
704
|
-
"diff-tree",
|
|
705
|
-
"format-patch",
|
|
706
|
-
"grep",
|
|
707
|
-
"log",
|
|
708
|
-
"ls-files",
|
|
709
|
-
"ls-tree",
|
|
710
|
-
"rev-list",
|
|
711
|
-
"show"
|
|
712
|
-
]);
|
|
713
|
-
/** The subcommand, past git's global options and their values. */
|
|
714
|
-
function subcommand(args) {
|
|
715
|
-
for (let i = 0; i < args.length; i++) {
|
|
716
|
-
const arg = args[i];
|
|
717
|
-
if ([
|
|
718
|
-
"-C",
|
|
719
|
-
"-c",
|
|
720
|
-
"--git-dir",
|
|
721
|
-
"--work-tree",
|
|
722
|
-
"-R"
|
|
723
|
-
].includes(arg)) i++;
|
|
724
|
-
else if (!arg.startsWith("-")) return arg;
|
|
725
|
-
}
|
|
726
|
-
}
|
|
727
|
-
/** How long a call may run when its caller doesn't say. */
|
|
728
|
-
function defaultVcsTimeout(tool, args) {
|
|
729
|
-
const command = subcommand(args);
|
|
730
|
-
if (command && NETWORK_COMMANDS.has(command)) return NETWORK_TIMEOUT_MS;
|
|
731
|
-
if (tool === "jj" || command && LARGE_READS.has(command)) return LARGE_READ_TIMEOUT_MS;
|
|
732
|
-
return QUICK_TIMEOUT_MS;
|
|
733
|
-
}
|
|
734
|
-
const COMMIT_ID = /^(?:[a-f0-9]{40}|[a-f0-9]{64})$/;
|
|
735
|
-
/** Thrown before anything runs when an operand could be misread. */
|
|
736
|
-
var VcsOperandError = class extends Error {};
|
|
737
|
-
function refused(kind, value) {
|
|
738
|
-
throw new VcsOperandError(`Refusing ${kind} ${JSON.stringify(value)}.`);
|
|
739
|
-
}
|
|
740
|
-
/** Whether a value could be read as an option, or carries a control
|
|
741
|
-
* character or a line break. */
|
|
742
|
-
const unsafe = (value) => !value || value.startsWith("-") || /[\0-\x1f\x7f]/.test(value);
|
|
743
|
-
const unsafeRef = (value) => unsafe(value) || /[\s:~^?*[\\]|\.\.|@\{/.test(value);
|
|
744
|
-
function checkRefSide(value) {
|
|
745
|
-
if (!COMMIT_ID.test(value) && unsafeRef(value)) refused("ref", value);
|
|
746
|
-
}
|
|
747
|
-
/** Operands are objects; flags written in the code are strings. */
|
|
748
|
-
const isOperand = (arg) => Object(arg) === arg;
|
|
749
|
-
/** The arguments as the process gets them: operands checked, so none can
|
|
750
|
-
* be read as an option, and paths after `--`. (`--end-of-options` would say
|
|
751
|
-
* the same to git, but older gits refuse it in some commands.) */
|
|
752
|
-
function renderVcsArgs(args) {
|
|
753
|
-
const out = [];
|
|
754
|
-
let paths = false;
|
|
755
|
-
for (const arg of args) {
|
|
756
|
-
if (!isOperand(arg)) {
|
|
757
|
-
if (arg === "--") paths = true;
|
|
758
|
-
out.push(arg);
|
|
759
|
-
continue;
|
|
760
|
-
}
|
|
761
|
-
if ("path" in arg) {
|
|
762
|
-
if (!arg.path || /\0/.test(arg.path)) refused("path", arg.path);
|
|
763
|
-
if (!paths) {
|
|
764
|
-
out.push("--");
|
|
765
|
-
paths = true;
|
|
766
|
-
}
|
|
767
|
-
out.push(arg.path);
|
|
768
|
-
continue;
|
|
769
|
-
}
|
|
770
|
-
let rendered;
|
|
771
|
-
if ("commit" in arg) {
|
|
772
|
-
if (!COMMIT_ID.test(arg.commit)) refused("commit", arg.commit);
|
|
773
|
-
rendered = arg.commit;
|
|
774
|
-
} else if ("rev" in arg) {
|
|
775
|
-
if (unsafe(arg.rev)) refused("revision", arg.rev);
|
|
776
|
-
rendered = arg.rev;
|
|
777
|
-
} else if ("ref" in arg) {
|
|
778
|
-
if (unsafeRef(arg.ref)) refused("ref", arg.ref);
|
|
779
|
-
rendered = arg.ref;
|
|
780
|
-
} else if ("refspec" in arg) {
|
|
781
|
-
checkRefSide(arg.refspec.from);
|
|
782
|
-
checkRefSide(arg.refspec.to);
|
|
783
|
-
rendered = `${arg.refspec.force ? "+" : ""}${arg.refspec.from}:${arg.refspec.to}`;
|
|
784
|
-
} else if ("remote" in arg) {
|
|
785
|
-
if (unsafe(arg.remote) || /\s/.test(arg.remote)) refused("remote", arg.remote);
|
|
786
|
-
rendered = arg.remote;
|
|
787
|
-
} else {
|
|
788
|
-
if (unsafe(arg.value)) refused("value", arg.value);
|
|
789
|
-
rendered = arg.value;
|
|
790
|
-
}
|
|
791
|
-
out.push(rendered);
|
|
792
|
-
}
|
|
793
|
-
return out;
|
|
794
|
-
}
|
|
795
|
-
const LOCAL_GIT_ENV_KEYS = [
|
|
796
|
-
"GIT_ALTERNATE_OBJECT_DIRECTORIES",
|
|
797
|
-
"GIT_COMMON_DIR",
|
|
798
|
-
"GIT_CONFIG",
|
|
799
|
-
"GIT_CONFIG_COUNT",
|
|
800
|
-
"GIT_CONFIG_PARAMETERS",
|
|
801
|
-
"GIT_DIR",
|
|
802
|
-
"GIT_GRAFT_FILE",
|
|
803
|
-
"GIT_IMPLICIT_WORK_TREE",
|
|
804
|
-
"GIT_INDEX_FILE",
|
|
805
|
-
"GIT_INTERNAL_SUPER_PREFIX",
|
|
806
|
-
"GIT_NO_REPLACE_OBJECTS",
|
|
807
|
-
"GIT_OBJECT_DIRECTORY",
|
|
808
|
-
"GIT_PREFIX",
|
|
809
|
-
"GIT_QUARANTINE_PATH",
|
|
810
|
-
"GIT_REPLACE_REF_BASE",
|
|
811
|
-
"GIT_SHALLOW_FILE",
|
|
812
|
-
"GIT_WORK_TREE"
|
|
813
|
-
];
|
|
814
|
-
/** The process environment without the variables that would redirect git
|
|
815
|
-
* to another repository's objects, index or work tree. */
|
|
816
|
-
function localGitEnvironment() {
|
|
817
|
-
const env = { ...process.env };
|
|
818
|
-
for (const key of LOCAL_GIT_ENV_KEYS) delete env[key];
|
|
819
|
-
return env;
|
|
820
|
-
}
|
|
821
|
-
/** The environment a version-control process runs with. A git call that
|
|
822
|
-
* names its repository (`-C`, `--git-dir`) and brings no environment of its
|
|
823
|
-
* own drops the variables that would redirect it to another. */
|
|
824
|
-
function vcsEnvironment(tool, args, env) {
|
|
825
|
-
const next = { ...env ?? (tool === "git" && (args[0] === "-C" || args[0] === "--git-dir") ? localGitEnvironment() : process.env) };
|
|
826
|
-
if (!args.some((arg) => [
|
|
827
|
-
"fetch",
|
|
828
|
-
"clone",
|
|
829
|
-
"pull",
|
|
830
|
-
"push"
|
|
831
|
-
].includes(arg))) next.GIT_NO_LAZY_FETCH = "1";
|
|
832
|
-
next.GIT_TERMINAL_PROMPT = "0";
|
|
833
|
-
next.GH_PROMPT_DISABLED = "1";
|
|
834
|
-
return next;
|
|
835
|
-
}
|
|
836
687
|
let observer = null;
|
|
837
688
|
function setLocalVcsCommandObserver(next) {
|
|
838
689
|
observer = next;
|
|
839
690
|
}
|
|
840
691
|
const execFilePromise = promisify(execFile);
|
|
841
|
-
async function
|
|
842
|
-
const args = renderVcsArgs(vcsArgs);
|
|
692
|
+
async function execFileAsync(file, args, options = {}) {
|
|
843
693
|
const finish = observer?.start({
|
|
844
|
-
|
|
694
|
+
file,
|
|
845
695
|
args,
|
|
846
696
|
cwd: options.cwd === void 0 ? void 0 : String(options.cwd)
|
|
847
697
|
});
|
|
848
698
|
try {
|
|
849
|
-
const
|
|
699
|
+
const result = await execFilePromise(file, args, {
|
|
850
700
|
...options,
|
|
851
|
-
env: vcsEnvironment(tool, args, options.env),
|
|
852
|
-
timeout: options.timeout ?? defaultVcsTimeout(tool, args),
|
|
853
701
|
encoding: options.encoding ?? "utf8"
|
|
854
702
|
});
|
|
855
|
-
if (input !== void 0) {
|
|
856
|
-
running.child.stdin?.on("error", () => {});
|
|
857
|
-
running.child.stdin?.end(input);
|
|
858
|
-
}
|
|
859
|
-
const result = await running;
|
|
860
703
|
finish?.({ ok: true });
|
|
861
704
|
return {
|
|
862
705
|
stdout: String(result.stdout),
|
|
@@ -867,19 +710,14 @@ async function runVcs(tool, vcsArgs, { input, ...options } = {}) {
|
|
|
867
710
|
throw error;
|
|
868
711
|
}
|
|
869
712
|
}
|
|
870
|
-
function
|
|
871
|
-
const args = renderVcsArgs(vcsArgs);
|
|
713
|
+
function execFileSyncObserved(file, args, options) {
|
|
872
714
|
const finish = observer?.start({
|
|
873
|
-
|
|
715
|
+
file,
|
|
874
716
|
args,
|
|
875
717
|
cwd: options.cwd === void 0 ? void 0 : String(options.cwd)
|
|
876
718
|
});
|
|
877
719
|
try {
|
|
878
|
-
const output = execFileSync(
|
|
879
|
-
...options,
|
|
880
|
-
env: vcsEnvironment(tool, args, options.env),
|
|
881
|
-
timeout: options.timeout ?? defaultVcsTimeout(tool, args)
|
|
882
|
-
});
|
|
720
|
+
const output = execFileSync(file, args, options);
|
|
883
721
|
finish?.({ ok: true });
|
|
884
722
|
return String(output);
|
|
885
723
|
} catch (error) {
|
|
@@ -888,18 +726,14 @@ function runVcsSync(tool, vcsArgs, options) {
|
|
|
888
726
|
}
|
|
889
727
|
}
|
|
890
728
|
/** Long-lived child; the observer sees one spawn, completed once the process is up. */
|
|
891
|
-
function spawnObserved(
|
|
892
|
-
const args = renderVcsArgs(vcsArgs);
|
|
729
|
+
function spawnObserved(file, args, options) {
|
|
893
730
|
const finish = observer?.start({
|
|
894
|
-
|
|
731
|
+
file,
|
|
895
732
|
args,
|
|
896
733
|
cwd: options.cwd === void 0 ? void 0 : String(options.cwd)
|
|
897
734
|
});
|
|
898
735
|
try {
|
|
899
|
-
const child = spawn(
|
|
900
|
-
...options,
|
|
901
|
-
env: vcsEnvironment(tool, args, options.env)
|
|
902
|
-
});
|
|
736
|
+
const child = spawn(file, args, options);
|
|
903
737
|
let finished = false;
|
|
904
738
|
const complete = (ok) => {
|
|
905
739
|
if (finished) return;
|
|
@@ -1179,6 +1013,25 @@ function normalizeEntry(entry) {
|
|
|
1179
1013
|
}
|
|
1180
1014
|
//#endregion
|
|
1181
1015
|
//#region ../local-vcs/src/vcs.ts
|
|
1016
|
+
const LOCAL_GIT_ENV_KEYS = [
|
|
1017
|
+
"GIT_ALTERNATE_OBJECT_DIRECTORIES",
|
|
1018
|
+
"GIT_COMMON_DIR",
|
|
1019
|
+
"GIT_CONFIG",
|
|
1020
|
+
"GIT_CONFIG_COUNT",
|
|
1021
|
+
"GIT_CONFIG_PARAMETERS",
|
|
1022
|
+
"GIT_DIR",
|
|
1023
|
+
"GIT_GRAFT_FILE",
|
|
1024
|
+
"GIT_IMPLICIT_WORK_TREE",
|
|
1025
|
+
"GIT_INDEX_FILE",
|
|
1026
|
+
"GIT_INTERNAL_SUPER_PREFIX",
|
|
1027
|
+
"GIT_NO_REPLACE_OBJECTS",
|
|
1028
|
+
"GIT_OBJECT_DIRECTORY",
|
|
1029
|
+
"GIT_PREFIX",
|
|
1030
|
+
"GIT_QUARANTINE_PATH",
|
|
1031
|
+
"GIT_REPLACE_REF_BASE",
|
|
1032
|
+
"GIT_SHALLOW_FILE",
|
|
1033
|
+
"GIT_WORK_TREE"
|
|
1034
|
+
];
|
|
1182
1035
|
/** Neither git nor jj could be started, so no folder can be recognized as a repository. */
|
|
1183
1036
|
var LocalVcsToolsMissingError = class extends Error {
|
|
1184
1037
|
constructor() {
|
|
@@ -1335,7 +1188,7 @@ async function gitArgs(rootPath, args) {
|
|
|
1335
1188
|
/** Run git against the repo's shared git dir, optionally tolerating failure. */
|
|
1336
1189
|
async function git(rootPath, args, options = {}) {
|
|
1337
1190
|
try {
|
|
1338
|
-
const { stdout, stderr } = await
|
|
1191
|
+
const { stdout, stderr } = await execFileAsync("git", await gitArgs(rootPath, args), {
|
|
1339
1192
|
maxBuffer: 67108864,
|
|
1340
1193
|
signal: options.signal
|
|
1341
1194
|
});
|
|
@@ -1363,7 +1216,7 @@ async function git(rootPath, args, options = {}) {
|
|
|
1363
1216
|
*/
|
|
1364
1217
|
async function gitAt(cwd, args, options = {}) {
|
|
1365
1218
|
try {
|
|
1366
|
-
const { stdout, stderr } = await
|
|
1219
|
+
const { stdout, stderr } = await execFileAsync("git", [
|
|
1367
1220
|
"-C",
|
|
1368
1221
|
cwd,
|
|
1369
1222
|
...args
|
|
@@ -1449,10 +1302,10 @@ function createLocalVcs(kind, rootPath) {
|
|
|
1449
1302
|
async function jjRevisionIsConflicted(rootPath, revision) {
|
|
1450
1303
|
if ((await detectLocalVcs(rootPath))?.kind !== "jj") return null;
|
|
1451
1304
|
try {
|
|
1452
|
-
const { stdout } = await
|
|
1305
|
+
const { stdout } = await execFileAsync("jj", [
|
|
1453
1306
|
"log",
|
|
1454
1307
|
"-r",
|
|
1455
|
-
|
|
1308
|
+
revision,
|
|
1456
1309
|
"--no-graph",
|
|
1457
1310
|
"-T",
|
|
1458
1311
|
"if(conflict, \"true\", \"false\")",
|
|
@@ -1511,7 +1364,7 @@ async function listTrackedFilesAtCommit(input) {
|
|
|
1511
1364
|
"list",
|
|
1512
1365
|
"--ignore-working-copy",
|
|
1513
1366
|
"-r",
|
|
1514
|
-
|
|
1367
|
+
input.commit
|
|
1515
1368
|
], { cwd: input.rootPath }).catch(() => null);
|
|
1516
1369
|
if (output !== null) return splitLines(output);
|
|
1517
1370
|
if (!await canUseGitFallback(input.rootPath, input.kind)) return [];
|
|
@@ -1523,7 +1376,7 @@ async function listTrackedFilesAtCommit(input) {
|
|
|
1523
1376
|
"-r",
|
|
1524
1377
|
"-z",
|
|
1525
1378
|
"--name-only",
|
|
1526
|
-
|
|
1379
|
+
input.commit
|
|
1527
1380
|
], { cwd: input.rootPath }).catch(() => null);
|
|
1528
1381
|
return output === null ? [] : output.split("\0").filter(Boolean);
|
|
1529
1382
|
}
|
|
@@ -1548,7 +1401,7 @@ function listTrackedFilesForKind(input) {
|
|
|
1548
1401
|
"-r",
|
|
1549
1402
|
"-z",
|
|
1550
1403
|
"--name-only",
|
|
1551
|
-
|
|
1404
|
+
input.ref
|
|
1552
1405
|
], { cwd: input.rootPath }) : commandOutputSync("git", [
|
|
1553
1406
|
"-C",
|
|
1554
1407
|
input.rootPath,
|
|
@@ -1589,7 +1442,7 @@ async function readJjFileAtCommit(input) {
|
|
|
1589
1442
|
"file",
|
|
1590
1443
|
"show",
|
|
1591
1444
|
"-r",
|
|
1592
|
-
|
|
1445
|
+
input.commit,
|
|
1593
1446
|
"--ignore-working-copy",
|
|
1594
1447
|
"--",
|
|
1595
1448
|
toJjRootFilePattern(input.relativePath)
|
|
@@ -1665,7 +1518,7 @@ async function withWorkingTreeIndex(input, read) {
|
|
|
1665
1518
|
env.GIT_WORK_TREE = input.rootPath;
|
|
1666
1519
|
}
|
|
1667
1520
|
await fs.promises.mkdir(path.join(scratch, "objects"));
|
|
1668
|
-
const git = (args) =>
|
|
1521
|
+
const git = (args) => execFileAsync("git", [
|
|
1669
1522
|
"-c",
|
|
1670
1523
|
"core.splitIndex=false",
|
|
1671
1524
|
"-C",
|
|
@@ -1677,7 +1530,7 @@ async function withWorkingTreeIndex(input, read) {
|
|
|
1677
1530
|
maxBuffer: 33554432
|
|
1678
1531
|
});
|
|
1679
1532
|
if (input.kind === "git") {
|
|
1680
|
-
const index = (await
|
|
1533
|
+
const index = (await execFileAsync("git", [
|
|
1681
1534
|
"-C",
|
|
1682
1535
|
input.rootPath,
|
|
1683
1536
|
"rev-parse",
|
|
@@ -1747,7 +1600,7 @@ async function listCommitRange(input) {
|
|
|
1747
1600
|
const vcs = await knownOrDetectedVcs(input.rootPath, input.kind);
|
|
1748
1601
|
if (!vcs) throw new Error(`No Git or jj repository found for ${input.rootPath}.`);
|
|
1749
1602
|
try {
|
|
1750
|
-
const { stdout } = await
|
|
1603
|
+
const { stdout } = await execFileAsync("git", [
|
|
1751
1604
|
"-C",
|
|
1752
1605
|
vcs.rootPath,
|
|
1753
1606
|
"log",
|
|
@@ -1755,7 +1608,7 @@ async function listCommitRange(input) {
|
|
|
1755
1608
|
"--format=%H%x00%P%x00%an%x00%aI%x00%s%x00",
|
|
1756
1609
|
"--numstat",
|
|
1757
1610
|
"-z",
|
|
1758
|
-
|
|
1611
|
+
`${input.baseRef}..${input.headRef}`
|
|
1759
1612
|
], {
|
|
1760
1613
|
cwd: vcs.rootPath,
|
|
1761
1614
|
maxBuffer: 26214400
|
|
@@ -1815,7 +1668,7 @@ async function readJjCommitRange(rootPath, baseRef, headRef) {
|
|
|
1815
1668
|
"log",
|
|
1816
1669
|
"--no-graph",
|
|
1817
1670
|
"-r",
|
|
1818
|
-
|
|
1671
|
+
`::${headRef} ~ ::${baseRef}`,
|
|
1819
1672
|
"-T",
|
|
1820
1673
|
"commit_id ++ \"\\0\" ++ parents.map(|p| p.commit_id()).join(\" \") ++ \"\\0\" ++ author.name() ++ \"\\0\" ++ author.timestamp().format(\"%+\") ++ \"\\0\" ++ description.first_line() ++ \"\\0\"",
|
|
1821
1674
|
"--ignore-working-copy"
|
|
@@ -1988,7 +1841,7 @@ function toNameStatusEntries(summary) {
|
|
|
1988
1841
|
}))].sort((left, right) => left.path.localeCompare(right.path));
|
|
1989
1842
|
}
|
|
1990
1843
|
async function readGitDiffNameStatus(input) {
|
|
1991
|
-
const refRange = input.mergeBase === false ? [
|
|
1844
|
+
const refRange = input.mergeBase === false ? [input.baseRef, input.headRef] : [`${input.baseRef}...${input.headRef}`];
|
|
1992
1845
|
return parseGitDiffNameStatus(await commandOutput("git", [
|
|
1993
1846
|
"-C",
|
|
1994
1847
|
input.rootPath,
|
|
@@ -2009,9 +1862,9 @@ async function readJjDiffNameStatus(input) {
|
|
|
2009
1862
|
"diff",
|
|
2010
1863
|
"--summary",
|
|
2011
1864
|
"--from",
|
|
2012
|
-
|
|
1865
|
+
input.baseRef,
|
|
2013
1866
|
"--to",
|
|
2014
|
-
|
|
1867
|
+
input.headRef,
|
|
2015
1868
|
"--ignore-working-copy"
|
|
2016
1869
|
], {
|
|
2017
1870
|
cwd: input.rootPath,
|
|
@@ -2053,7 +1906,7 @@ async function resolveGitRevisionCommit(rootPath, revision) {
|
|
|
2053
1906
|
rootPath,
|
|
2054
1907
|
"rev-parse",
|
|
2055
1908
|
"--verify",
|
|
2056
|
-
|
|
1909
|
+
`${revision}^{commit}`
|
|
2057
1910
|
]);
|
|
2058
1911
|
}
|
|
2059
1912
|
function resolveGitRevisionCommitSync(rootPath, revision) {
|
|
@@ -2062,7 +1915,7 @@ function resolveGitRevisionCommitSync(rootPath, revision) {
|
|
|
2062
1915
|
rootPath,
|
|
2063
1916
|
"rev-parse",
|
|
2064
1917
|
"--verify",
|
|
2065
|
-
|
|
1918
|
+
`${revision}^{commit}`
|
|
2066
1919
|
]);
|
|
2067
1920
|
}
|
|
2068
1921
|
async function resolveJjRevisionCommit(rootPath, revision) {
|
|
@@ -2072,7 +1925,7 @@ async function resolveJjRevisionCommit(rootPath, revision) {
|
|
|
2072
1925
|
"log",
|
|
2073
1926
|
"--no-graph",
|
|
2074
1927
|
"-r",
|
|
2075
|
-
|
|
1928
|
+
revision,
|
|
2076
1929
|
"-T",
|
|
2077
1930
|
"commit_id ++ \"\\n\"",
|
|
2078
1931
|
"--ignore-working-copy"
|
|
@@ -2085,7 +1938,7 @@ function resolveJjRevisionCommitSync(rootPath, revision) {
|
|
|
2085
1938
|
"log",
|
|
2086
1939
|
"--no-graph",
|
|
2087
1940
|
"-r",
|
|
2088
|
-
|
|
1941
|
+
revision,
|
|
2089
1942
|
"-T",
|
|
2090
1943
|
"commit_id ++ \"\\n\"",
|
|
2091
1944
|
"--ignore-working-copy"
|
|
@@ -2102,8 +1955,8 @@ async function resolveGitMergeBase(rootPath, baseRef, headRef) {
|
|
|
2102
1955
|
"-C",
|
|
2103
1956
|
rootPath,
|
|
2104
1957
|
"merge-base",
|
|
2105
|
-
|
|
2106
|
-
|
|
1958
|
+
baseRef,
|
|
1959
|
+
headRef
|
|
2107
1960
|
]);
|
|
2108
1961
|
}
|
|
2109
1962
|
async function resolveJjMergeBase(rootPath, baseRef, headRef) {
|
|
@@ -2113,7 +1966,7 @@ async function resolveJjMergeBase(rootPath, baseRef, headRef) {
|
|
|
2113
1966
|
"log",
|
|
2114
1967
|
"--no-graph",
|
|
2115
1968
|
"-r",
|
|
2116
|
-
|
|
1969
|
+
`heads(::${baseRef} & ::${headRef})`,
|
|
2117
1970
|
"-T",
|
|
2118
1971
|
"commit_id ++ \"\n\"",
|
|
2119
1972
|
"--ignore-working-copy"
|
|
@@ -2126,7 +1979,7 @@ function readGitFileAtRevisionSync(input) {
|
|
|
2126
1979
|
"-C",
|
|
2127
1980
|
input.rootPath,
|
|
2128
1981
|
"show",
|
|
2129
|
-
|
|
1982
|
+
`${commit}:${input.relativePath}`
|
|
2130
1983
|
], {
|
|
2131
1984
|
maxBuffer: 10485760,
|
|
2132
1985
|
trim: false
|
|
@@ -2145,7 +1998,7 @@ function readJjFileAtRevisionSync(input) {
|
|
|
2145
1998
|
"file",
|
|
2146
1999
|
"show",
|
|
2147
2000
|
"-r",
|
|
2148
|
-
|
|
2001
|
+
input.ref,
|
|
2149
2002
|
"--ignore-working-copy",
|
|
2150
2003
|
"--",
|
|
2151
2004
|
toJjRootFilePattern(input.relativePath)
|
|
@@ -2161,8 +2014,8 @@ function readJjFileAtRevisionSync(input) {
|
|
|
2161
2014
|
}
|
|
2162
2015
|
async function readGitDiff(input) {
|
|
2163
2016
|
const paths = input.literalPaths ? input.paths ?? [] : normalizeDiffPaths(input.paths);
|
|
2164
|
-
const diffRefs = input.headRef ? input.mergeBase === false ? [
|
|
2165
|
-
const { stdout } = await
|
|
2017
|
+
const diffRefs = input.headRef ? input.mergeBase === false ? [input.baseRef, input.headRef] : [`${input.baseRef}...${input.headRef}`] : [input.baseRef];
|
|
2018
|
+
const { stdout } = await execFileAsync("git", [
|
|
2166
2019
|
...input.literalPaths ? ["--literal-pathspecs"] : [],
|
|
2167
2020
|
"-C",
|
|
2168
2021
|
input.rootPath,
|
|
@@ -2185,8 +2038,8 @@ async function readGitDiff(input) {
|
|
|
2185
2038
|
}
|
|
2186
2039
|
async function readGitDiffFileSummaries(input) {
|
|
2187
2040
|
const paths = normalizeDiffPaths(input.paths);
|
|
2188
|
-
const diffRefs = input.headRef ? input.mergeBase === false ? [
|
|
2189
|
-
const { stdout } = await
|
|
2041
|
+
const diffRefs = input.headRef ? input.mergeBase === false ? [input.baseRef, input.headRef] : [`${input.baseRef}...${input.headRef}`] : [input.baseRef];
|
|
2042
|
+
const { stdout } = await execFileAsync("git", [
|
|
2190
2043
|
"-C",
|
|
2191
2044
|
input.rootPath,
|
|
2192
2045
|
"diff",
|
|
@@ -2209,7 +2062,7 @@ async function readGitDiffFileSummaries(input) {
|
|
|
2209
2062
|
}
|
|
2210
2063
|
async function readJjDiff(input) {
|
|
2211
2064
|
const paths = input.literalPaths ? input.paths ?? [] : normalizeDiffPaths(input.paths);
|
|
2212
|
-
const { stdout } = await
|
|
2065
|
+
const { stdout } = await execFileAsync("jj", [
|
|
2213
2066
|
"-R",
|
|
2214
2067
|
input.rootPath,
|
|
2215
2068
|
"--color",
|
|
@@ -2441,16 +2294,18 @@ function commandOutputSync(command, args, options = {}) {
|
|
|
2441
2294
|
return runCommandOutputSync(command, args, options);
|
|
2442
2295
|
}
|
|
2443
2296
|
function runCommandOutput(command, args, options) {
|
|
2444
|
-
return
|
|
2297
|
+
return execFileAsync(command, args, {
|
|
2445
2298
|
cwd: options.cwd,
|
|
2299
|
+
env: commandEnvironment(command, args),
|
|
2446
2300
|
maxBuffer: options.maxBuffer
|
|
2447
2301
|
}).then(({ stdout }) => options.trim === false ? stdout : stdout.trim());
|
|
2448
2302
|
}
|
|
2449
2303
|
function runCommandOutputSync(command, args, options) {
|
|
2450
2304
|
try {
|
|
2451
|
-
const output =
|
|
2305
|
+
const output = execFileSyncObserved(command, args, {
|
|
2452
2306
|
cwd: options.cwd,
|
|
2453
2307
|
encoding: "utf8",
|
|
2308
|
+
env: commandEnvironment(command, args),
|
|
2454
2309
|
maxBuffer: options.maxBuffer,
|
|
2455
2310
|
stdio: [
|
|
2456
2311
|
"ignore",
|
|
@@ -2463,6 +2318,16 @@ function runCommandOutputSync(command, args, options) {
|
|
|
2463
2318
|
return null;
|
|
2464
2319
|
}
|
|
2465
2320
|
}
|
|
2321
|
+
function commandEnvironment(command, args) {
|
|
2322
|
+
if (command !== "git" || args[0] !== "-C" && args[0] !== "--git-dir") return;
|
|
2323
|
+
return localGitEnvironment();
|
|
2324
|
+
}
|
|
2325
|
+
/** Drop per-repository git env vars that would redirect an explicit object store. */
|
|
2326
|
+
function localGitEnvironment() {
|
|
2327
|
+
const env = { ...process.env };
|
|
2328
|
+
for (const key of LOCAL_GIT_ENV_KEYS) delete env[key];
|
|
2329
|
+
return env;
|
|
2330
|
+
}
|
|
2466
2331
|
//#endregion
|
|
2467
2332
|
//#region ../../node_modules/graceful-fs/polyfills.js
|
|
2468
2333
|
var require_polyfills = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
@@ -3813,4 +3678,4 @@ var require_adapter = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
3813
3678
|
module.exports.checkSync = checkSync;
|
|
3814
3679
|
})))();
|
|
3815
3680
|
//#endregion
|
|
3816
|
-
export {
|
|
3681
|
+
export { setLocalVcsCommandObserver as C, __toESM as E, splitGitPatchFiles as S, __require as T, parseGitRemote as _, diff as a, resolveRepoContextSync as b, diffFileSummariesWorkingTree as c, git as d, gitAt as f, listTrackedFilesAtCommit as g, listCommitRange as h, detectLocalVcs as i, diffTrees as l, jjRevisionIsConflicted as m, createBlobBatchReader as n, diffFileSummaries as o, gitCommonDir as p, defaultBranch as r, diffFileSummariesTrees as s, LocalVcsToolsMissingError as t, diffWorkingTree as u, readFileAtCommit as v, __commonJSMin as w, resolveRevision as x, resolveRepoContext as y };
|
|
@@ -177,12 +177,6 @@ z.union([StructuralDiffEventSchema, ReviewStructuralDiffErrorSchema]);
|
|
|
177
177
|
const REVIEW_CLIENT_HEADER = "x-review-client";
|
|
178
178
|
const REVIEW_CLIENT_REMOTE = "remote";
|
|
179
179
|
const REVIEW_HOST_HEADER = "x-review-host";
|
|
180
|
-
const PULL_REQUEST_STATES = [
|
|
181
|
-
"open",
|
|
182
|
-
"draft",
|
|
183
|
-
"merged",
|
|
184
|
-
"closed"
|
|
185
|
-
];
|
|
186
180
|
const requiredString$1 = z.string({ error: "must be a string" }).refine((value) => value.trim().length > 0, "must be a string");
|
|
187
181
|
const stringAllowEmpty = z.string({ error: "must be a string" });
|
|
188
182
|
const positiveInteger = z.number({ error: "must be a positive integer" }).int("must be a positive integer").positive("must be a positive integer");
|
|
@@ -411,38 +405,9 @@ const ReviewStackLayerSchema = z.strictObject({
|
|
|
411
405
|
"earlier",
|
|
412
406
|
"current",
|
|
413
407
|
"later"
|
|
414
|
-
])
|
|
415
|
-
/** The layer's PR state, as last read from GitHub. */
|
|
416
|
-
pullRequestState: z.enum(PULL_REQUEST_STATES).optional()
|
|
417
|
-
});
|
|
418
|
-
z.strictObject({
|
|
419
|
-
/** Bottom first. */
|
|
420
|
-
layers: z.array(ReviewStackLayerSchema),
|
|
421
|
-
/** The branch the stack sits on, as `main`. */
|
|
422
|
-
base: requiredString$1.optional()
|
|
423
|
-
});
|
|
424
|
-
const ReviewPlaceBoardSchema = z.strictObject({
|
|
425
|
-
reviewId: requiredString$1,
|
|
426
|
-
title: stringAllowEmpty,
|
|
427
|
-
icon: z.enum(["board", "code"])
|
|
428
|
-
});
|
|
429
|
-
const ReviewPlaceSiblingSchema = ReviewPlaceBoardSchema.extend({
|
|
430
|
-
pullRequestNumber: positiveInteger.optional(),
|
|
431
|
-
pullRequestState: z.enum(PULL_REQUEST_STATES).optional()
|
|
432
|
-
});
|
|
433
|
-
z.strictObject({
|
|
434
|
-
/** The board's PR state and branches, as last read from GitHub. */
|
|
435
|
-
pullRequestState: z.enum(PULL_REQUEST_STATES).optional(),
|
|
436
|
-
baseBranch: requiredString$1.optional(),
|
|
437
|
-
headBranch: requiredString$1.optional(),
|
|
438
|
-
/** The board itself. */
|
|
439
|
-
board: ReviewPlaceBoardSchema.optional(),
|
|
440
|
-
parent: ReviewPlaceBoardSchema.optional(),
|
|
441
|
-
/** Empty for a top-level board. */
|
|
442
|
-
siblings: z.array(ReviewPlaceSiblingSchema),
|
|
443
|
-
/** A top-level board's children in sibling order; absent for a child. */
|
|
444
|
-
children: z.array(ReviewPlaceSiblingSchema).optional()
|
|
408
|
+
])
|
|
445
409
|
});
|
|
410
|
+
z.strictObject({ layers: z.array(ReviewStackLayerSchema) });
|
|
446
411
|
const ReviewCliInstallTargetSchema = z.enum([
|
|
447
412
|
"claude",
|
|
448
413
|
"codex",
|
|
@@ -708,7 +673,13 @@ const revealArgsSchema = z.strictObject({
|
|
|
708
673
|
path: ["endLine"]
|
|
709
674
|
});
|
|
710
675
|
});
|
|
711
|
-
|
|
676
|
+
/** The one scratchpad's fixed review id. */
|
|
677
|
+
const SCRATCHPAD_REVIEW_ID = "scratchpad";
|
|
678
|
+
const apiReviewIdSchema = z.union([
|
|
679
|
+
z.uuid(),
|
|
680
|
+
z.string().regex(/^shared-[a-f0-9]{64}$/),
|
|
681
|
+
z.literal(SCRATCHPAD_REVIEW_ID)
|
|
682
|
+
]);
|
|
712
683
|
const ReviewVerbRequestSchema = z.discriminatedUnion("name", [
|
|
713
684
|
z.strictObject({
|
|
714
685
|
name: z.literal("authoringCapabilities"),
|
|
@@ -756,9 +727,7 @@ const ReviewVerbRequestSchema = z.discriminatedUnion("name", [
|
|
|
756
727
|
name: z.literal("openReview"),
|
|
757
728
|
args: z.strictObject({
|
|
758
729
|
reviewUuid: apiReviewIdSchema,
|
|
759
|
-
active: z.boolean()
|
|
760
|
-
/** Block to scroll to after opening. */
|
|
761
|
-
blockId: requiredString$1.optional()
|
|
730
|
+
active: z.boolean()
|
|
762
731
|
})
|
|
763
732
|
}),
|
|
764
733
|
z.strictObject({
|
|
@@ -828,38 +797,7 @@ z.discriminatedUnion("event", [
|
|
|
828
797
|
}),
|
|
829
798
|
z.strictObject({
|
|
830
799
|
event: z.literal("showReviewView"),
|
|
831
|
-
view: reviewViewSchema
|
|
832
|
-
/** The board to switch, from its sidebar; else the one asking. */
|
|
833
|
-
reviewId: requiredString$1.optional()
|
|
834
|
-
}),
|
|
835
|
-
z.strictObject({
|
|
836
|
-
event: z.literal("revealBlock"),
|
|
837
|
-
reviewId: requiredString$1,
|
|
838
|
-
blockId: requiredString$1
|
|
839
|
-
}),
|
|
840
|
-
z.strictObject({
|
|
841
|
-
event: z.literal("selectLens"),
|
|
842
|
-
reviewId: requiredString$1,
|
|
843
|
-
lensId: requiredString$1.nullable()
|
|
844
|
-
}),
|
|
845
|
-
z.strictObject({
|
|
846
|
-
event: z.literal("markLens"),
|
|
847
|
-
reviewId: requiredString$1,
|
|
848
|
-
lensId: requiredString$1
|
|
849
|
-
}),
|
|
850
|
-
z.strictObject({
|
|
851
|
-
event: z.literal("pickCommit"),
|
|
852
|
-
reviewId: requiredString$1,
|
|
853
|
-
commit: requiredString$1.nullable()
|
|
854
|
-
}),
|
|
855
|
-
z.strictObject({
|
|
856
|
-
event: z.literal("openAskThread"),
|
|
857
|
-
reviewId: requiredString$1,
|
|
858
|
-
threadId: requiredString$1
|
|
859
|
-
}),
|
|
860
|
-
z.strictObject({
|
|
861
|
-
event: z.literal("toggleAskColumn"),
|
|
862
|
-
reviewId: requiredString$1
|
|
800
|
+
view: reviewViewSchema
|
|
863
801
|
})
|
|
864
802
|
]);
|
|
865
803
|
z.discriminatedUnion("ok", [z.strictObject({
|
|
@@ -1067,21 +1005,6 @@ function parseReviewBugReportResponse(value) {
|
|
|
1067
1005
|
return ReviewBugReportResponseSchema.parse(value);
|
|
1068
1006
|
}
|
|
1069
1007
|
//#endregion
|
|
1070
|
-
//#region ../review-protocol/src/board-icons.ts
|
|
1071
|
-
/** A board has code attached when its target is commits, a PR or a working
|
|
1072
|
-
* tree, even one with nothing to compare. A plan's target is its project. */
|
|
1073
|
-
const boardIconKind = (target) => target && target.kind !== "project" ? "code" : "board";
|
|
1074
|
-
/** What a board with no title is called wherever its title shows. */
|
|
1075
|
-
const UNTITLED_BOARD = "Untitled";
|
|
1076
|
-
/**
|
|
1077
|
-
* A board's title as every surface shows it. A person's new board keeps an
|
|
1078
|
-
* empty title until they name it; it reads "Untitled" everywhere. A title
|
|
1079
|
-
* someone typed, "Untitled" included, shows as typed.
|
|
1080
|
-
*/
|
|
1081
|
-
function boardTitle(title) {
|
|
1082
|
-
return title?.trim() ? title : UNTITLED_BOARD;
|
|
1083
|
-
}
|
|
1084
|
-
//#endregion
|
|
1085
1008
|
//#region ../review-protocol/src/index.ts
|
|
1086
1009
|
function parseReviewDesktopDiscovery(value) {
|
|
1087
1010
|
return parseZod(ReviewDesktopDiscoverySchema, value);
|
|
@@ -1116,4 +1039,4 @@ function formatIssuePath(path) {
|
|
|
1116
1039
|
return output;
|
|
1117
1040
|
}
|
|
1118
1041
|
//#endregion
|
|
1119
|
-
export {
|
|
1042
|
+
export { ReviewSelectedDiffSchema as A, ReviewApiSelectionSourceSchema as C, ReviewFeedbackSchema as D, ReviewFeedbackContactSchema as E, reviewDiffrSummarizerInputSchema as M, decodeStructuralDiffEvent as N, ReviewGatewayHostSchema as O, structuralChangeCounts as P, REVIEW_THEME_CHOICES as S, ReviewConnectRequestSchema as T, REVIEW_REMOTE_AGENT_IDS as _, parseReviewVerbRequest as a, REVIEW_REMOTE_INSTALL_LOCK as b, ReviewBugReportMetaV2Schema as c, REVIEW_CLIENT_HEADER as d, REVIEW_CLIENT_REMOTE as f, REVIEW_HOST_HEADER as g, REVIEW_DIFF_LAYOUT_SCOPES as h, parseReviewDesktopVerbResult as i, SCRATCHPAD_REVIEW_ID as j, ReviewOnboardingRunRequestSchema as k, ReviewBugReportRequestSchema as l, REVIEW_DIFF_LAYOUTS as m, parseReviewDesktopDiscovery as n, parseReviewVerbResponse as o, REVIEW_CLI_INSTALL_TARGET_LABELS as p, parseReviewDesktopVerbFrame as r, parseZod as s, parseReviewCliInstallApplyRequest as t, parseReviewBugReportResponse as u, REVIEW_REMOTE_ATTACH_BEGIN as v, ReviewCliInstallStampSchema as w, REVIEW_REMOTE_WRAPPER_MARK as x, REVIEW_REMOTE_ATTACH_END as y };
|