@cmmd-center/forge 0.13.64 → 0.13.65
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/bin.cjs +44 -10
- package/dist/bin.mjs +68 -34
- package/dist/client/assets/{DiffPanel-CMYTuX9T.js → DiffPanel-DUE5CUPF.js} +2 -2
- package/dist/client/assets/{DiffPanel.logic-Bo8iewty.js → DiffPanel.logic-DkmY3FZZ.js} +2 -2
- package/dist/client/assets/{DiffPanelShell-BOfiU8pF.js → DiffPanelShell-DH6nYRyX.js} +3 -3
- package/dist/client/assets/{DiffWorkerPoolProvider-BJM597MG.js → DiffWorkerPoolProvider-DTK8o_hI.js} +2 -2
- package/dist/client/assets/{PullRequestCodePanel-Dp0Gub8R.js → PullRequestCodePanel-BIjtTKuP.js} +2 -2
- package/dist/client/assets/{Virtualizer-DA9X_YiJ.js → Virtualizer-CPNxYGbV.js} +2 -2
- package/dist/client/assets/{index-unGMBg6C.js → index-Df09-gdQ.js} +6 -6
- package/dist/client/index.html +4 -4
- package/dist/forge-build.json +1 -1
- package/dist/{open-2-reBrpv.mjs → open-yHTUkd2Y.mjs} +3 -3
- package/package.json +1 -1
package/dist/bin.cjs
CHANGED
|
@@ -66257,7 +66257,7 @@ function normalizeNumberish(value) {
|
|
|
66257
66257
|
}
|
|
66258
66258
|
//#endregion
|
|
66259
66259
|
//#region package.json
|
|
66260
|
-
var version$1 = "0.13.
|
|
66260
|
+
var version$1 = "0.13.65";
|
|
66261
66261
|
//#endregion
|
|
66262
66262
|
//#region src/sentry.ts
|
|
66263
66263
|
const SERVER_APP_NAME = "forge-server";
|
|
@@ -89349,26 +89349,60 @@ var GitHubBroker = class {
|
|
|
89349
89349
|
}
|
|
89350
89350
|
/**
|
|
89351
89351
|
* On a "github" scope cache miss, re-requests it once through the existing
|
|
89352
|
-
* CMMD client before the caller refuses (CMMD-Center/forge#3496
|
|
89353
|
-
* delivers the grant proactively on
|
|
89354
|
-
* on a woken runtime is a cache or
|
|
89355
|
-
* request: this closes the gap where the
|
|
89356
|
-
* authority cache mid-request, and logs the
|
|
89357
|
-
* cause is visible instead of a silent refusal.
|
|
89352
|
+
* CMMD client before the caller refuses (CMMD-Center/forge#3496,
|
|
89353
|
+
* CMMD-Center/forge#3498). CMMD delivers the grant proactively on
|
|
89354
|
+
* thread.create and the kick, so a miss on a woken runtime is a cache or
|
|
89355
|
+
* ticket TTL problem, not a missing request: this closes the gap where the
|
|
89356
|
+
* ticket lands in the broker authority cache mid-request, and logs the
|
|
89357
|
+
* outcome on failure so the cause is visible instead of a silent refusal.
|
|
89358
|
+
*
|
|
89359
|
+
* A CMMD cloud runtime (every sprite) must still make this round trip
|
|
89360
|
+
* itself: `status()`'s own grant gate fails closed before ever reaching
|
|
89361
|
+
* the network for that runtime class (ADR-015 — it must never fall
|
|
89362
|
+
* through to the human JWT), so this uses `probeRuntimeGithubGrantDelivery`
|
|
89363
|
+
* instead, which makes the identical round trip without that JWT
|
|
89364
|
+
* fallback.
|
|
89358
89365
|
*/
|
|
89359
89366
|
async requestRuntimeGithubGrant() {
|
|
89360
89367
|
const cached = this.runtimeGrantAuthContext("github");
|
|
89361
89368
|
if (cached) return cached;
|
|
89362
89369
|
const runtimeId = process.env.FORGE_CMMD_RUNTIME_ID?.trim();
|
|
89363
89370
|
if (!runtimeId) return null;
|
|
89364
|
-
|
|
89371
|
+
if (this.isCmmdCloudRuntimeMode) await this.probeRuntimeGithubGrantDelivery(runtimeId);
|
|
89372
|
+
else await this.status({
|
|
89365
89373
|
sessionId: AuthSessionId.make(`cmmd-runtime:${runtimeId}`),
|
|
89366
89374
|
subject: `runtime:${runtimeId}`
|
|
89367
89375
|
});
|
|
89368
89376
|
const grant = this.runtimeGrantAuthContext("github");
|
|
89369
|
-
console.warn(`[github-broker] re-requested the github scope grant for runtime ${runtimeId}:
|
|
89377
|
+
if (!grant) console.warn(`[github-broker] re-requested the github scope grant for runtime ${runtimeId}: still missing after one network round trip`);
|
|
89370
89378
|
return grant;
|
|
89371
89379
|
}
|
|
89380
|
+
/**
|
|
89381
|
+
* The cloud-runtime half of `requestRuntimeGithubGrant`'s re-request.
|
|
89382
|
+
*
|
|
89383
|
+
* CMMD's status route always requires a Bearer that already carries the
|
|
89384
|
+
* "github" scope (verified server-side against the presented ticket's own
|
|
89385
|
+
* claims — see `forge-runtime-grants.routes.ts` on CMMD main), and there is
|
|
89386
|
+
* no separate CMMD route that mints a "github"-scoped grant on demand. So
|
|
89387
|
+
* this call's own response can never carry a grant to install; its purpose
|
|
89388
|
+
* is the wait. CMMD delivers a fresh grant on this same runtime's inbound
|
|
89389
|
+
* thread.create/kick requests (`ServerAuth.authenticateHttpRequest` /
|
|
89390
|
+
* `authenticateWebSocketUpgrade`, which install it into the broker
|
|
89391
|
+
* authority cache as a side effect of authenticating each request), and a
|
|
89392
|
+
* delivery already in flight when the caller checked the cache gets this
|
|
89393
|
+
* round trip's worth of extra time to land before the caller gives up.
|
|
89394
|
+
* Bounded by the same timeout as every other runtime-grant call, and
|
|
89395
|
+
* deliberately unauthenticated: sending no Bearer is exactly as
|
|
89396
|
+
* informative to CMMD as sending one lacking the required scope, and
|
|
89397
|
+
* skips resolving one for a request whose own response is never used.
|
|
89398
|
+
*/
|
|
89399
|
+
async probeRuntimeGithubGrantDelivery(runtimeId) {
|
|
89400
|
+
const response = await this.fetchImpl(makeUrl(this.commandAppUrl, `/api/forge/runtimes/${encodeURIComponent(runtimeId)}/github/status`), {
|
|
89401
|
+
method: "GET",
|
|
89402
|
+
signal: AbortSignal.timeout(GITHUB_BROKER_REQUEST_TIMEOUT_MS)
|
|
89403
|
+
}).catch(() => null);
|
|
89404
|
+
if (response !== null) await parseResponseBody(response);
|
|
89405
|
+
}
|
|
89372
89406
|
async workspaceStatus(input) {
|
|
89373
89407
|
const cwdValidation = validateCwd(input.cwd);
|
|
89374
89408
|
if (cwdValidation) return cwdValidation;
|
|
@@ -298346,7 +298380,7 @@ function resolveBuildCommitFromEnv(env) {
|
|
|
298346
298380
|
* environment descriptor down instead of reporting an honest "unknown".
|
|
298347
298381
|
*/
|
|
298348
298382
|
function readBakedBuildCommit() {
|
|
298349
|
-
return "
|
|
298383
|
+
return "06c11aad2e4673f13061c7bed6d0a4cb63ff8122";
|
|
298350
298384
|
}
|
|
298351
298385
|
async function resolveServerBuildCommit(input) {
|
|
298352
298386
|
if (isFullCommitSha(input.baked)) return input.baked;
|
package/dist/bin.mjs
CHANGED
|
@@ -23,7 +23,7 @@ import { createCipheriv, createDecipheriv, createHash, createHmac, createPublicK
|
|
|
23
23
|
import * as FS$1 from "node:fs";
|
|
24
24
|
import fs, { accessSync, chmodSync, constants, createReadStream, existsSync, mkdirSync, mkdtempSync, promises, readFile, readFileSync, readdir, readdirSync, realpathSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
|
|
25
25
|
import * as NodeOS from "node:os";
|
|
26
|
-
import
|
|
26
|
+
import os, { homedir, networkInterfaces, tmpdir } from "node:os";
|
|
27
27
|
import * as Path$1 from "node:path";
|
|
28
28
|
import path, { basename, delimiter, dirname, extname, isAbsolute, join, posix, relative, resolve, sep } from "node:path";
|
|
29
29
|
import { pathToFileURL } from "node:url";
|
|
@@ -50573,7 +50573,7 @@ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
|
|
|
50573
50573
|
const min = forceColor || 0;
|
|
50574
50574
|
if (env.TERM === "dumb") return min;
|
|
50575
50575
|
if (process$1.platform === "win32") {
|
|
50576
|
-
const osRelease =
|
|
50576
|
+
const osRelease = os.release().split(".");
|
|
50577
50577
|
if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
|
50578
50578
|
return 1;
|
|
50579
50579
|
}
|
|
@@ -53016,7 +53016,7 @@ var require_ProcessDetector = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
53016
53016
|
exports.processDetector = void 0;
|
|
53017
53017
|
const api_1 = (init_esm$1(), __toCommonJS(esm_exports$1));
|
|
53018
53018
|
const semconv_1 = require_semconv$1();
|
|
53019
|
-
const os$
|
|
53019
|
+
const os$4 = __require("os");
|
|
53020
53020
|
/**
|
|
53021
53021
|
* ProcessDetector will be used to detect the resources related current process running
|
|
53022
53022
|
* and being instrumented from the NodeJS Process module.
|
|
@@ -53038,7 +53038,7 @@ var require_ProcessDetector = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
53038
53038
|
};
|
|
53039
53039
|
if (process.argv.length > 1) attributes[semconv_1.ATTR_PROCESS_COMMAND] = process.argv[1];
|
|
53040
53040
|
try {
|
|
53041
|
-
const userInfo = os$
|
|
53041
|
+
const userInfo = os$4.userInfo();
|
|
53042
53042
|
attributes[semconv_1.ATTR_PROCESS_OWNER] = userInfo.username;
|
|
53043
53043
|
} catch (e) {
|
|
53044
53044
|
api_1.diag.debug(`error obtaining process owner: ${e}`);
|
|
@@ -65961,7 +65961,7 @@ function normalizeNumberish(value) {
|
|
|
65961
65961
|
}
|
|
65962
65962
|
//#endregion
|
|
65963
65963
|
//#region package.json
|
|
65964
|
-
var version$1 = "0.13.
|
|
65964
|
+
var version$1 = "0.13.65";
|
|
65965
65965
|
//#endregion
|
|
65966
65966
|
//#region src/sentry.ts
|
|
65967
65967
|
const SERVER_APP_NAME = "forge-server";
|
|
@@ -75844,7 +75844,7 @@ var require_node_gyp_build = /* @__PURE__ */ __commonJSMin(((exports, module) =>
|
|
|
75844
75844
|
var fs$6 = __require("fs");
|
|
75845
75845
|
var path$5 = __require("path");
|
|
75846
75846
|
var url$1 = __require("url");
|
|
75847
|
-
var os$
|
|
75847
|
+
var os$3 = __require("os");
|
|
75848
75848
|
var runtimeRequire = typeof __webpack_require__ === "function" ? __non_webpack_require__ : __require;
|
|
75849
75849
|
var vars = process.config && process.config.variables || {};
|
|
75850
75850
|
var prebuildsOnly = !!process.env.PREBUILDS_ONLY;
|
|
@@ -75852,8 +75852,8 @@ var require_node_gyp_build = /* @__PURE__ */ __commonJSMin(((exports, module) =>
|
|
|
75852
75852
|
var abi = versions.modules;
|
|
75853
75853
|
if (versions.deno || process.isBun) abi = "unsupported";
|
|
75854
75854
|
var runtime = isElectron() ? "electron" : isNwjs() ? "node-webkit" : "node";
|
|
75855
|
-
var arch = process.env.npm_config_arch || os$
|
|
75856
|
-
var platform = process.env.npm_config_platform || os$
|
|
75855
|
+
var arch = process.env.npm_config_arch || os$3.arch();
|
|
75856
|
+
var platform = process.env.npm_config_platform || os$3.platform();
|
|
75857
75857
|
var libc = process.env.LIBC || (isMusl(platform) ? "musl" : "glibc");
|
|
75858
75858
|
var armv = process.env.ARM_VERSION || (arch === "arm64" ? "8" : vars.arm_version) || "";
|
|
75859
75859
|
var uv = (versions.uv || "").split(".")[0];
|
|
@@ -88993,26 +88993,60 @@ var GitHubBroker = class {
|
|
|
88993
88993
|
}
|
|
88994
88994
|
/**
|
|
88995
88995
|
* On a "github" scope cache miss, re-requests it once through the existing
|
|
88996
|
-
* CMMD client before the caller refuses (CMMD-Center/forge#3496
|
|
88997
|
-
* delivers the grant proactively on
|
|
88998
|
-
* on a woken runtime is a cache or
|
|
88999
|
-
* request: this closes the gap where the
|
|
89000
|
-
* authority cache mid-request, and logs the
|
|
89001
|
-
* cause is visible instead of a silent refusal.
|
|
88996
|
+
* CMMD client before the caller refuses (CMMD-Center/forge#3496,
|
|
88997
|
+
* CMMD-Center/forge#3498). CMMD delivers the grant proactively on
|
|
88998
|
+
* thread.create and the kick, so a miss on a woken runtime is a cache or
|
|
88999
|
+
* ticket TTL problem, not a missing request: this closes the gap where the
|
|
89000
|
+
* ticket lands in the broker authority cache mid-request, and logs the
|
|
89001
|
+
* outcome on failure so the cause is visible instead of a silent refusal.
|
|
89002
|
+
*
|
|
89003
|
+
* A CMMD cloud runtime (every sprite) must still make this round trip
|
|
89004
|
+
* itself: `status()`'s own grant gate fails closed before ever reaching
|
|
89005
|
+
* the network for that runtime class (ADR-015 — it must never fall
|
|
89006
|
+
* through to the human JWT), so this uses `probeRuntimeGithubGrantDelivery`
|
|
89007
|
+
* instead, which makes the identical round trip without that JWT
|
|
89008
|
+
* fallback.
|
|
89002
89009
|
*/
|
|
89003
89010
|
async requestRuntimeGithubGrant() {
|
|
89004
89011
|
const cached = this.runtimeGrantAuthContext("github");
|
|
89005
89012
|
if (cached) return cached;
|
|
89006
89013
|
const runtimeId = process.env.FORGE_CMMD_RUNTIME_ID?.trim();
|
|
89007
89014
|
if (!runtimeId) return null;
|
|
89008
|
-
|
|
89015
|
+
if (this.isCmmdCloudRuntimeMode) await this.probeRuntimeGithubGrantDelivery(runtimeId);
|
|
89016
|
+
else await this.status({
|
|
89009
89017
|
sessionId: AuthSessionId.make(`cmmd-runtime:${runtimeId}`),
|
|
89010
89018
|
subject: `runtime:${runtimeId}`
|
|
89011
89019
|
});
|
|
89012
89020
|
const grant = this.runtimeGrantAuthContext("github");
|
|
89013
|
-
console.warn(`[github-broker] re-requested the github scope grant for runtime ${runtimeId}:
|
|
89021
|
+
if (!grant) console.warn(`[github-broker] re-requested the github scope grant for runtime ${runtimeId}: still missing after one network round trip`);
|
|
89014
89022
|
return grant;
|
|
89015
89023
|
}
|
|
89024
|
+
/**
|
|
89025
|
+
* The cloud-runtime half of `requestRuntimeGithubGrant`'s re-request.
|
|
89026
|
+
*
|
|
89027
|
+
* CMMD's status route always requires a Bearer that already carries the
|
|
89028
|
+
* "github" scope (verified server-side against the presented ticket's own
|
|
89029
|
+
* claims — see `forge-runtime-grants.routes.ts` on CMMD main), and there is
|
|
89030
|
+
* no separate CMMD route that mints a "github"-scoped grant on demand. So
|
|
89031
|
+
* this call's own response can never carry a grant to install; its purpose
|
|
89032
|
+
* is the wait. CMMD delivers a fresh grant on this same runtime's inbound
|
|
89033
|
+
* thread.create/kick requests (`ServerAuth.authenticateHttpRequest` /
|
|
89034
|
+
* `authenticateWebSocketUpgrade`, which install it into the broker
|
|
89035
|
+
* authority cache as a side effect of authenticating each request), and a
|
|
89036
|
+
* delivery already in flight when the caller checked the cache gets this
|
|
89037
|
+
* round trip's worth of extra time to land before the caller gives up.
|
|
89038
|
+
* Bounded by the same timeout as every other runtime-grant call, and
|
|
89039
|
+
* deliberately unauthenticated: sending no Bearer is exactly as
|
|
89040
|
+
* informative to CMMD as sending one lacking the required scope, and
|
|
89041
|
+
* skips resolving one for a request whose own response is never used.
|
|
89042
|
+
*/
|
|
89043
|
+
async probeRuntimeGithubGrantDelivery(runtimeId) {
|
|
89044
|
+
const response = await this.fetchImpl(makeUrl(this.commandAppUrl, `/api/forge/runtimes/${encodeURIComponent(runtimeId)}/github/status`), {
|
|
89045
|
+
method: "GET",
|
|
89046
|
+
signal: AbortSignal.timeout(GITHUB_BROKER_REQUEST_TIMEOUT_MS)
|
|
89047
|
+
}).catch(() => null);
|
|
89048
|
+
if (response !== null) await parseResponseBody(response);
|
|
89049
|
+
}
|
|
89016
89050
|
async workspaceStatus(input) {
|
|
89017
89051
|
const cwdValidation = validateCwd(input.cwd);
|
|
89018
89052
|
if (cwdValidation) return cwdValidation;
|
|
@@ -93628,7 +93662,7 @@ const launchDetached = (launch) => gen(function* () {
|
|
|
93628
93662
|
});
|
|
93629
93663
|
const OpenLive = effect(Open, gen(function* () {
|
|
93630
93664
|
const open = yield* tryPromise({
|
|
93631
|
-
try: () => import("./open-
|
|
93665
|
+
try: () => import("./open-yHTUkd2Y.mjs"),
|
|
93632
93666
|
catch: (cause) => new OpenError$1({
|
|
93633
93667
|
message: "failed to load browser opener",
|
|
93634
93668
|
cause
|
|
@@ -191506,7 +191540,7 @@ var Vce = {
|
|
|
191506
191540
|
function Ve() {
|
|
191507
191541
|
return Vce;
|
|
191508
191542
|
}
|
|
191509
|
-
var Us =
|
|
191543
|
+
var Us = os.homedir(), lk = os.tmpdir(), { env: Vc } = process$1, Yce = (e) => {
|
|
191510
191544
|
let t = path.join(Us, "Library");
|
|
191511
191545
|
return {
|
|
191512
191546
|
data: path.join(t, "Application Support", e),
|
|
@@ -201706,12 +201740,12 @@ function qZ(e, t) {
|
|
|
201706
201740
|
}
|
|
201707
201741
|
return n;
|
|
201708
201742
|
}
|
|
201709
|
-
var os$
|
|
201743
|
+
var os$2 = "https://code.claude.com/docs/en", kKe = [
|
|
201710
201744
|
{
|
|
201711
201745
|
matches: (e) => e.path === "permissions.defaultMode" && e.code === "invalid_value",
|
|
201712
201746
|
tip: {
|
|
201713
201747
|
suggestion: "Valid modes: \"acceptEdits\" (ask before file changes), \"plan\" (analysis only), \"bypassPermissions\" (auto-accept all), or \"default\" (standard behavior)",
|
|
201714
|
-
docLink: `${os$
|
|
201748
|
+
docLink: `${os$2}/iam#permission-modes`
|
|
201715
201749
|
}
|
|
201716
201750
|
},
|
|
201717
201751
|
{
|
|
@@ -201726,7 +201760,7 @@ var os$1 = "https://code.claude.com/docs/en", kKe = [
|
|
|
201726
201760
|
matches: (e) => e.path.startsWith("env.") && e.code === "invalid_type",
|
|
201727
201761
|
tip: {
|
|
201728
201762
|
suggestion: "Environment variables must be strings. Wrap numbers and booleans in quotes. Example: \"DEBUG\": \"true\", \"PORT\": \"3000\"",
|
|
201729
|
-
docLink: `${os$
|
|
201763
|
+
docLink: `${os$2}/settings#environment-variables`
|
|
201730
201764
|
}
|
|
201731
201765
|
},
|
|
201732
201766
|
{
|
|
@@ -201737,14 +201771,14 @@ var os$1 = "https://code.claude.com/docs/en", kKe = [
|
|
|
201737
201771
|
matches: (e) => e.path.startsWith("hooks.") && e.code === "invalid_key",
|
|
201738
201772
|
tip: {
|
|
201739
201773
|
suggestion: "Not a recognized hook event. Common events: PreToolUse, PostToolUse, UserPromptSubmit, SessionStart, SessionEnd, Stop. Check spelling and capitalization.",
|
|
201740
|
-
docLink: `${os$
|
|
201774
|
+
docLink: `${os$2}/hooks`
|
|
201741
201775
|
}
|
|
201742
201776
|
},
|
|
201743
201777
|
{
|
|
201744
201778
|
matches: (e) => /\.hooks\.\d+\.command$/.test(e.path) && e.code === "invalid_type" && e.received === "undefined",
|
|
201745
201779
|
tip: {
|
|
201746
201780
|
suggestion: "Command hooks require `command`. For exec form (no shell), set `command` to the executable and `args` to its arguments: {\"type\": \"command\", \"command\": \"echo\", \"args\": [\"hi\"]}. For shell form, set `command` to the full shell string: {\"type\": \"command\", \"command\": \"echo hi\"}.",
|
|
201747
|
-
docLink: `${os$
|
|
201781
|
+
docLink: `${os$2}/hooks#exec-form-and-shell-form`
|
|
201748
201782
|
}
|
|
201749
201783
|
},
|
|
201750
201784
|
{
|
|
@@ -201759,7 +201793,7 @@ var os$1 = "https://code.claude.com/docs/en", kKe = [
|
|
|
201759
201793
|
matches: (e) => e.code === "unrecognized_keys",
|
|
201760
201794
|
tip: {
|
|
201761
201795
|
suggestion: "Check for typos or refer to the documentation for valid fields",
|
|
201762
|
-
docLink: `${os$
|
|
201796
|
+
docLink: `${os$2}/settings`
|
|
201763
201797
|
}
|
|
201764
201798
|
},
|
|
201765
201799
|
{
|
|
@@ -201774,13 +201808,13 @@ var os$1 = "https://code.claude.com/docs/en", kKe = [
|
|
|
201774
201808
|
matches: (e) => e.path === "permissions.additionalDirectories" && e.code === "invalid_type",
|
|
201775
201809
|
tip: {
|
|
201776
201810
|
suggestion: "Must be an array of directory paths. Example: [\"~/projects\", \"/tmp/workspace\"]. You can also use --add-dir flag or /add-dir command",
|
|
201777
|
-
docLink: `${os$
|
|
201811
|
+
docLink: `${os$2}/iam#working-directories`
|
|
201778
201812
|
}
|
|
201779
201813
|
}
|
|
201780
201814
|
], AKe = {
|
|
201781
|
-
permissions: `${os$
|
|
201782
|
-
env: `${os$
|
|
201783
|
-
hooks: `${os$
|
|
201815
|
+
permissions: `${os$2}/iam#configuring-permissions`,
|
|
201816
|
+
env: `${os$2}/settings#environment-variables`,
|
|
201817
|
+
hooks: `${os$2}/hooks`
|
|
201784
201818
|
};
|
|
201785
201819
|
function GZ(e) {
|
|
201786
201820
|
let t = kKe.find((r) => r.matches(e));
|
|
@@ -269732,7 +269766,7 @@ var import_multicast_dns = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMi
|
|
|
269732
269766
|
var dgram = __require("dgram");
|
|
269733
269767
|
var thunky = require_thunky();
|
|
269734
269768
|
var events = __require("events");
|
|
269735
|
-
var os = __require("os");
|
|
269769
|
+
var os$1 = __require("os");
|
|
269736
269770
|
var noop = function() {};
|
|
269737
269771
|
module.exports = function(opts) {
|
|
269738
269772
|
if (!opts) opts = {};
|
|
@@ -269863,14 +269897,14 @@ var import_multicast_dns = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMi
|
|
|
269863
269897
|
return that;
|
|
269864
269898
|
};
|
|
269865
269899
|
function defaultInterface() {
|
|
269866
|
-
var networks = os.networkInterfaces();
|
|
269900
|
+
var networks = os$1.networkInterfaces();
|
|
269867
269901
|
var names = Object.keys(networks);
|
|
269868
269902
|
for (var i = 0; i < names.length; i++) {
|
|
269869
269903
|
var net = networks[names[i]];
|
|
269870
269904
|
for (var j = 0; j < net.length; j++) {
|
|
269871
269905
|
var iface = net[j];
|
|
269872
269906
|
if (isIPv4(iface.family) && !iface.internal) {
|
|
269873
|
-
if (os.platform() === "darwin" && names[i] === "en0") return iface.address;
|
|
269907
|
+
if (os$1.platform() === "darwin" && names[i] === "en0") return iface.address;
|
|
269874
269908
|
return "0.0.0.0";
|
|
269875
269909
|
}
|
|
269876
269910
|
}
|
|
@@ -269878,7 +269912,7 @@ var import_multicast_dns = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMi
|
|
|
269878
269912
|
return "127.0.0.1";
|
|
269879
269913
|
}
|
|
269880
269914
|
function allInterfaces() {
|
|
269881
|
-
var networks = os.networkInterfaces();
|
|
269915
|
+
var networks = os$1.networkInterfaces();
|
|
269882
269916
|
var names = Object.keys(networks);
|
|
269883
269917
|
var res = [];
|
|
269884
269918
|
for (var i = 0; i < names.length; i++) {
|
|
@@ -297791,7 +297825,7 @@ function resolveBuildCommitFromEnv(env) {
|
|
|
297791
297825
|
* environment descriptor down instead of reporting an honest "unknown".
|
|
297792
297826
|
*/
|
|
297793
297827
|
function readBakedBuildCommit() {
|
|
297794
|
-
return "
|
|
297828
|
+
return "06c11aad2e4673f13061c7bed6d0a4cb63ff8122";
|
|
297795
297829
|
}
|
|
297796
297830
|
async function resolveServerBuildCommit(input) {
|
|
297797
297831
|
if (isFullCommitSha(input.baked)) return input.baked;
|
|
@@ -322387,7 +322421,7 @@ const connectLoginCommand = make$34("login", {
|
|
|
322387
322421
|
})).json();
|
|
322388
322422
|
},
|
|
322389
322423
|
openBrowser: async (url) => {
|
|
322390
|
-
const open = (await import("./open-
|
|
322424
|
+
const open = (await import("./open-yHTUkd2Y.mjs")).default;
|
|
322391
322425
|
await open(url);
|
|
322392
322426
|
return true;
|
|
322393
322427
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Ha as t,Mi as n,Ua as r,Wa as i}from"./Stream-mUTFnSY9.js";import{Al as a,Fn as o,Gc as s,Hr as c,Jc as l,Qr as u,Rr as d,Sr as f,Tn as p,Uc as m,Xr as h,_r as g,d as _,fn as v,fr as y,gr as b,i as x,is as S,jn as C,l as w,m as T,ms as E,n as D,qc as O,qt as k,r as A,u as j,za as M,zr as N}from"./DiffPanelShell-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Ha as t,Mi as n,Ua as r,Wa as i}from"./Stream-mUTFnSY9.js";import{Al as a,Fn as o,Gc as s,Hr as c,Jc as l,Qr as u,Rr as d,Sr as f,Tn as p,Uc as m,Xr as h,_r as g,d as _,fn as v,fr as y,gr as b,i as x,is as S,jn as C,l as w,m as T,ms as E,n as D,qc as O,qt as k,r as A,u as j,za as M,zr as N}from"./DiffPanelShell-DH6nYRyX.js";import{hn as P}from"./CompositeItem-BsSeqHOM.js";import{a as F,c as I,f as L,i as R,l as z,m as B,n as V,o as H,p as U,r as W,s as G,t as K}from"./Virtualizer-CPNxYGbV.js";import{Dn as q,at as J,it as ee}from"./src-IM0FnQax.js";import{a as te,c as ne,d as re,h as ie,i as ae,l as oe,m as se,n as ce,o as Y,p as le,r as ue,s as de,t as fe,u as pe}from"./DiffPanel.logic-DkmY3FZZ.js";var X=e(i(),1),me=typeof window>`u`?X.useEffect:X.useLayoutEffect;function he({fileDiff:e,options:t,editorOptions:n,lineAnnotations:r,selectedLines:i,prerenderedHTML:a,metrics:o,hasGutterRenderUtility:s,hasCustomHeader:c,disableWorkerPool:l,edit:u}){let d=V(),f=i!==void 0,p=(0,X.useContext)(x),m=j(),h=(0,X.useRef)(null),g=_(n=>{if(n!=null){if(h.current!=null)throw Error(`useFileDiffInstance: An instance should not already exist when a node is created`);d==null?h.current=new re(Z({controlledSelection:f,hasCustomHeader:c,hasGutterRenderUtility:s,options:t}),l?void 0:p,!0):h.current=new pe(Z({controlledSelection:f,hasCustomHeader:c,hasGutterRenderUtility:s,options:t}),d,o,l?void 0:p,!0),h.current.hydrate({fileDiff:e,fileContainer:n,lineAnnotations:r,prerenderedHTML:a})}else{if(h.current==null)throw Error(`useFileDiffInstance: A FileDiff instance should exist when unmounting`);h.current.cleanUp(),h.current=null}});return me(()=>{let{current:n}=h;if(n==null)return;let a=Z({controlledSelection:f,hasCustomHeader:c,hasGutterRenderUtility:s,options:t}),o=a!==void 0&&!k(n.options,a);n.setOptions(a),n.render({forceRender:o,fileDiff:e,lineAnnotations:r}),i!==void 0&&n.setSelectedLines(i)}),me(()=>{if(u&&h.current!=null){if(m===void 0)throw Error(`FileDiff: EditContext is not attached`);let e=m(n??{});if(e==null)throw Error(`FileDiff: EditProvider.createEditor must return an editor instance`);try{return e.edit(h.current)}catch(t){throw e.cleanUp(),t}}},[u]),{ref:g,getHoveredLine:(0,X.useCallback)(()=>h.current?.getHoveredLine(),[])}}function Z({options:e,controlledSelection:t,hasCustomHeader:n,hasGutterRenderUtility:r}){return t||r||n?{...e,controlledSelection:t,renderCustomHeader:n?w:e?.renderCustomHeader,renderGutterUtility:r?w:e?.renderGutterUtility}:e}var Q=r();function ge({fileDiff:e,options:t,editorOptions:n,metrics:r,lineAnnotations:i,selectedLines:a,className:o,style:s,prerenderedHTML:c,renderAnnotation:l,renderCustomHeader:u,renderHeaderPrefix:d,renderHeaderFilenameSuffix:f,renderHeaderMetadata:p,renderGutterUtility:m,disableWorkerPool:h=!1,edit:g=!1}){let{ref:_,getHoveredLine:y}=he({fileDiff:e,options:t,editorOptions:n,metrics:r,lineAnnotations:i,selectedLines:a,prerenderedHTML:c,hasGutterRenderUtility:m!=null,hasCustomHeader:u!=null,disableWorkerPool:h,edit:g});return(0,Q.jsx)(v,{ref:_,className:o,style:s,children:W(oe({fileDiff:e,renderCustomHeader:u,renderHeaderPrefix:d,renderHeaderFilenameSuffix:f,renderHeaderMetadata:p,renderAnnotation:l,renderGutterUtility:m,lineAnnotations:i,getHoveredLine:y}),c)})}var $=t();function _e(e){return e.fromTurnCount===0?q(ee)({threadId:e.threadId,toTurnCount:e.toTurnCount}).pipe(n(e=>({kind:`fullThreadDiff`,input:e}))):q(J)({threadId:e.threadId,fromTurnCount:e.fromTurnCount,toTurnCount:e.toTurnCount}).pipe(n(e=>({kind:`turnDiff`,input:e})))}function ve(e){return e instanceof Error?e.message:typeof e==`string`?e:``}function ye(e){let t=ve(e).trim();if(t.length===0)return`Failed to load checkpoint diff.`;let n=t.toLowerCase();if(n.includes(`not a git repository`))return`Turn diffs are unavailable because this project is not a git repository.`;if(n.includes(`checkpoint unavailable for thread`)||n.includes(`checkpoint invariant violation`)){let e=t.indexOf(`:`);if(e>=0){let n=t.slice(e+1).trim();if(n.length>0)return n}}return t}function be(e){let t=ve(e).toLowerCase();return t.includes(`exceeds current turn count`)||t.includes(`checkpoint is unavailable for turn`)||t.includes(`filesystem checkpoint is unavailable`)}function xe(e){let t=_e(e);return O({queryKey:M.checkpointDiff(e),queryFn:async({signal:n})=>{if(!e.environmentId||!e.threadId||t._tag===`None`)throw Error(`Checkpoint diff is unavailable.`);let r=c(e.environmentId);try{return t.value.kind===`fullThreadDiff`?await r.orchestration.getFullThreadDiff(t.value.input,{signal:n}):await r.orchestration.getTurnDiff(t.value.input,{signal:n})}catch(e){throw Error(ye(e),{cause:e})}},enabled:(e.enabled??!0)&&!!e.environmentId&&!!e.threadId&&t._tag===`Some`,staleTime:1/0,retry:(e,t)=>be(t)?e<12:e<3,retryDelay:(e,t)=>be(t)?Math.min(5e3,250*2**(e-1)):Math.min(1e3,100*2**(e-1))})}function Se(e){if(!(!e.canScrollLeft&&!e.canScrollRight))return{maskImage:`linear-gradient(to right, ${e.canScrollLeft?`transparent 24px, black 72px`:`black`}, ${e.canScrollRight?`black calc(100% - 72px), transparent calc(100% - 24px)`:`black`})`}}function Ce(e){return e instanceof Error?e.message:e?`Failed to load checkpoint diff.`:null}function we(e){return{environmentId:e.environmentId??null,threadId:e.threadId,fromTurnCount:e.range?.fromTurnCount??null,toTurnCount:e.range?.toTurnCount??null,cacheScope:e.selectedTurnId?`turn:${e.selectedTurnId}`:e.conversationCacheScope,enabled:e.enabled}}function Te(){let e=(0,$.c)(8),t=(0,X.useRef)(null),[n,r]=(0,X.useState)(!1),[i,a]=(0,X.useState)(!1),o;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>{let e=t.current;if(!e){r(!1),a(!1);return}let n=de({scrollLeft:e.scrollLeft,scrollWidth:e.scrollWidth,clientWidth:e.clientWidth});r(n.canScrollLeft),a(n.canScrollRight)},e[0]=o):o=e[0];let s=o,c;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(c=e=>{t.current?.scrollBy({left:e,behavior:`smooth`})},e[1]=c):c=e[1];let l=c,u;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(u=e=>{let n=t.current;n&&ne({scrollWidth:n.scrollWidth,clientWidth:n.clientWidth,deltaX:e.deltaX,deltaY:e.deltaY})&&(e.preventDefault(),n.scrollBy({left:e.deltaY,behavior:`auto`}))},e[2]=u):u=e[2];let d=u,f,p;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>{let e=t.current;if(!e)return;let n=window.requestAnimationFrame(s),r=()=>s();e.addEventListener(`scroll`,r,{passive:!0});let i=new ResizeObserver(()=>s());return i.observe(e),()=>{window.cancelAnimationFrame(n),e.removeEventListener(`scroll`,r),i.disconnect()}},p=[s],e[3]=f,e[4]=p):(f=e[3],p=e[4]),(0,X.useEffect)(f,p);let m;return e[5]!==n||e[6]!==i?(m={ref:t,canScrollLeft:n,canScrollRight:i,scrollBy:l,onWheel:d,remeasure:s},e[5]=n,e[6]=i,e[7]=m):m=e[7],m}function Ee(e,t){let n=(0,$.c)(5),r;n[0]===e.current?r=n[1]:(r=()=>{(e.current?.querySelector(`[data-turn-chip-selected='true']`))?.scrollIntoView({block:`nearest`,inline:`nearest`,behavior:`smooth`})},n[0]=e.current,n[1]=r);let i;n[2]!==e||n[3]!==t?(i=[e,t],n[2]=e,n[3]=t,n[4]=i):i=n[4],(0,X.useEffect)(r,i)}var De=`
|
|
2
2
|
[data-diffs-header],
|
|
3
3
|
[data-diff],
|
|
4
4
|
[data-file],
|
|
@@ -61,4 +61,4 @@ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Ha as t,Mi as n,Ua as
|
|
|
61
61
|
text-decoration-color: currentColor;
|
|
62
62
|
}
|
|
63
63
|
`;function Oe(e){let t=(0,$.c)(44),{mode:n}=e,r=n===void 0?`inline`:n,{resolvedTheme:i}=b(),a=g(),[c,l]=(0,X.useState)(`stacked`),[u,d]=(0,X.useState)(a.diffWordWrap),h=(0,X.useRef)(null),_=(0,X.useRef)(!1),v=Te(),{activeCwd:y,activeThread:x,bodyState:S,diffOpen:C,inferredCheckpointTurnCountByTurnId:w,orderedTurnDiffSummaries:T,renderableFiles:E,renderablePatch:D,selectedFilePath:O,selectedTurn:k,selectedTurnId:j}=Le(i),M,P;t[0]!==C||t[1]!==a.diffWordWrap?(M=()=>{C&&!_.current&&d(a.diffWordWrap),_.current=C},P=[C,a.diffWordWrap],t[0]=C,t[1]=a.diffWordWrap,t[2]=M,t[3]=P):(M=t[2],P=t[3]),(0,X.useEffect)(M,P);let F;t[4]===O?F=t[5]:(F=()=>{!O||!h.current||Array.from(h.current.querySelectorAll(`[data-diff-file-path]`)).find(e=>e.dataset.diffFilePath===O)?.scrollIntoView({block:`nearest`})},t[4]=O,t[5]=F);let I;t[6]!==E||t[7]!==O?(I=[O,E],t[6]=E,t[7]=O,t[8]=I):I=t[8],(0,X.useEffect)(F,I);let L;t[9]===y?L=t[10]:(L=e=>{let t=f();if(!t)return;let n=y?p(e,y):e;N(t,n).catch(ke)},t[9]=y,t[10]=L);let R=L,z;t[11]===x?z=t[12]:(z=e=>{x&&o.getState().openDiff(s(m(x.environmentId,x.id)),e)},t[11]=x,t[12]=z);let B=z,V;t[13]===x?V=t[14]:(V=()=>{x&&o.getState().openDiff(s(m(x.environmentId,x.id)))},t[13]=x,t[14]=V);let H=V,U;t[15]===v.remeasure?U=t[16]:(U=()=>{let e=window.requestAnimationFrame(v.remeasure);return()=>window.cancelAnimationFrame(e)},t[15]=v.remeasure,t[16]=U);let W;t[17]!==T||t[18]!==j||t[19]!==v.remeasure?(W=[T,j,v.remeasure],t[17]=T,t[18]=j,t[19]=v.remeasure,t[20]=W):W=t[20],(0,X.useEffect)(U,W),Ee(v.ref,k?.turnId??j);let G;t[21]!==c||t[22]!==u||t[23]!==w||t[24]!==T||t[25]!==B||t[26]!==H||t[27]!==k||t[28]!==j||t[29]!==a||t[30]!==v?(G=(0,Q.jsx)(Ae,{diffRenderMode:c,diffWordWrap:u,inferredCheckpointTurnCountByTurnId:w,orderedTurnDiffSummaries:T,selectTurn:B,selectWholeConversation:H,selectedTurn:k,selectedTurnId:j,setDiffRenderMode:l,setDiffWordWrap:d,settings:a,turnStrip:v}),t[21]=c,t[22]=u,t[23]=w,t[24]=T,t[25]=B,t[26]=H,t[27]=k,t[28]=j,t[29]=a,t[30]=v,t[31]=G):G=t[31];let K=G,q;t[32]!==S||t[33]!==c||t[34]!==u||t[35]!==R||t[36]!==E||t[37]!==D||t[38]!==i?(q=(0,Q.jsx)(je,{bodyState:S,diffRenderMode:c,diffWordWrap:u,openDiffFileInEditor:R,patchViewportRef:h,renderableFiles:E,renderablePatch:D,resolvedTheme:i}),t[32]=S,t[33]=c,t[34]=u,t[35]=R,t[36]=E,t[37]=D,t[38]=i,t[39]=q):q=t[39];let J;return t[40]!==K||t[41]!==r||t[42]!==q?(J=(0,Q.jsx)(A,{mode:r,header:K,children:q}),t[40]=K,t[41]=r,t[42]=q,t[43]=J):J=t[43],J}function ke(e){console.warn(`Failed to open diff file in editor.`,e)}function Ae(e){let t=(0,$.c)(59),{diffRenderMode:n,diffWordWrap:r,inferredCheckpointTurnCountByTurnId:i,orderedTurnDiffSummaries:a,selectTurn:o,selectWholeConversation:s,selectedTurn:c,selectedTurnId:l,setDiffRenderMode:u,setDiffWordWrap:d,settings:f,turnStrip:p}=e,m,h;t[0]===p?(m=t[1],h=t[2]):(m=(0,Q.jsx)(Be,{direction:`left`,strip:p}),h=(0,Q.jsx)(Be,{direction:`right`,strip:p}),t[0]=p,t[1]=m,t[2]=h);let g=p.ref,_;t[3]!==p.canScrollLeft||t[4]!==p.canScrollRight?(_=Se({canScrollLeft:p.canScrollLeft,canScrollRight:p.canScrollRight}),t[3]=p.canScrollLeft,t[4]=p.canScrollRight,t[5]=_):_=t[5];let v=p.onWheel,y=l===null,b=l===null?`border-border bg-accent text-accent-foreground`:`border-border/70 bg-background/70 text-muted-foreground/80 hover:border-border hover:text-foreground/80`,x;t[6]===b?x=t[7]:(x=P(`rounded-md border px-2 py-1 text-left transition-colors`,b),t[6]=b,t[7]=x);let S;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,Q.jsx)(`div`,{className:`text-[10px] leading-tight font-medium`,children:`All turns`}),t[8]=S):S=t[8];let C;t[9]===x?C=t[10]:(C=(0,Q.jsx)(`div`,{className:x,children:S}),t[9]=x,t[10]=C);let w;t[11]!==s||t[12]!==C||t[13]!==y?(w=(0,Q.jsx)(`button`,{type:`button`,className:`shrink-0 rounded-md`,onClick:s,"data-turn-chip-selected":y,children:C}),t[11]=s,t[12]=C,t[13]=y,t[14]=w):w=t[14];let T;if(t[15]!==i||t[16]!==a||t[17]!==o||t[18]!==c?.turnId||t[19]!==f){let e;t[21]!==i||t[22]!==o||t[23]!==c?.turnId||t[24]!==f?(e=e=>(0,Q.jsx)(Ve,{summary:e,selected:e.turnId===c?.turnId,turnCount:e.checkpointTurnCount??i[e.turnId],timestampFormat:f.timestampFormat,onSelect:o},e.turnId),t[21]=i,t[22]=o,t[23]=c?.turnId,t[24]=f,t[25]=e):e=t[25],T=a.map(e),t[15]=i,t[16]=a,t[17]=o,t[18]=c?.turnId,t[19]=f,t[20]=T}else T=t[20];let E;t[26]!==w||t[27]!==T||t[28]!==_||t[29]!==p.onWheel||t[30]!==p.ref?(E=(0,Q.jsxs)(`div`,{ref:g,className:`turn-chip-strip flex gap-1 overflow-x-auto px-8 py-0.5`,style:_,onWheel:v,children:[w,T]}),t[26]=w,t[27]=T,t[28]=_,t[29]=p.onWheel,t[30]=p.ref,t[31]=E):E=t[31];let D;t[32]!==m||t[33]!==E||t[34]!==h?(D=(0,Q.jsxs)(`div`,{className:`relative min-w-0 flex-1 [-webkit-app-region:no-drag]`,children:[m,h,E]}),t[32]=m,t[33]=E,t[34]=h,t[35]=D):D=t[35];let O;t[36]===n?O=t[37]:(O=[n],t[36]=n,t[37]=O);let k;t[38]===u?k=t[39]:(k=e=>{let t=e[0];(t===`stacked`||t===`split`)&&u(t)},t[38]=u,t[39]=k);let A;t[40]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,Q.jsx)(R,{"aria-label":`Stacked diff view`,value:`stacked`,children:(0,Q.jsx)(se,{className:`size-3`})}),t[40]=A):A=t[40];let j;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,Q.jsx)(R,{"aria-label":`Split diff view`,value:`split`,children:(0,Q.jsx)(ie,{className:`size-3`})}),t[41]=j):j=t[41];let M;t[42]!==O||t[43]!==k?(M=(0,Q.jsxs)(F,{className:`shrink-0`,variant:`outline`,size:`xs`,value:O,onValueChange:k,children:[A,j]}),t[42]=O,t[43]=k,t[44]=M):M=t[44];let N=r?`Disable diff line wrapping`:`Enable diff line wrapping`,I=r?`Disable line wrapping`:`Enable line wrapping`,L;t[45]===d?L=t[46]:(L=e=>{d(!!e)},t[45]=d,t[46]=L);let z;t[47]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,Q.jsx)(le,{className:`size-3`}),t[47]=z):z=t[47];let B;t[48]!==r||t[49]!==N||t[50]!==I||t[51]!==L?(B=(0,Q.jsx)(R,{"aria-label":N,title:I,variant:`outline`,size:`xs`,pressed:r,onPressedChange:L,children:z}),t[48]=r,t[49]=N,t[50]=I,t[51]=L,t[52]=B):B=t[52];let V;t[53]!==M||t[54]!==B?(V=(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1 [-webkit-app-region:no-drag]`,children:[M,B]}),t[53]=M,t[54]=B,t[55]=V):V=t[55];let H;return t[56]!==D||t[57]!==V?(H=(0,Q.jsxs)(Q.Fragment,{children:[D,V]}),t[56]=D,t[57]=V,t[58]=H):H=t[58],H}function je(e){let t=(0,$.c)(18),{bodyState:n,diffRenderMode:r,diffWordWrap:i,openDiffFileInEditor:a,patchViewportRef:o,renderableFiles:s,renderablePatch:c,resolvedTheme:l}=e;if(n.kind===`no-thread`){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Q.jsx)(Ne,{children:`Select a thread to inspect turn diffs.`}),t[0]=e):e=t[0],e}if(n.kind===`not-git-repo`){let e;return t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Q.jsx)(Ne,{children:`Turn diffs are unavailable because this project is not a git repository.`}),t[1]=e):e=t[1],e}if(n.kind===`no-completed-turns`){let e;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Q.jsx)(Ne,{children:`No completed turns yet.`}),t[2]=e):e=t[2],e}let u;t[3]!==n.error||t[4]!==c?(u=n.error&&!c&&(0,Q.jsx)(`div`,{className:`px-3`,children:(0,Q.jsx)(`p`,{className:`mb-2 text-[11px] text-destructive-foreground`,children:n.error})}),t[3]=n.error,t[4]=c,t[5]=u):u=t[5];let d;t[6]!==n||t[7]!==r||t[8]!==i||t[9]!==a||t[10]!==s||t[11]!==c||t[12]!==l?(d=c?c.kind===`files`?(0,Q.jsx)(K,{className:`diff-render-surface h-full min-h-0 overflow-auto px-2 pb-2`,config:{overscrollSize:600,intersectionObserverMargin:1200},children:s.map(e=>{let t=Y(e),n=`${fe(e)}:${l}`;return(0,Q.jsx)(`div`,{"data-diff-file-path":t,className:`diff-render-file mb-2 rounded-md first:mt-2 last:mb-0`,onClickCapture:e=>{(e.nativeEvent.composedPath?.()??[]).some(Me)&&a(t)},children:(0,Q.jsx)(ge,{fileDiff:e,options:{diffStyle:r===`split`?`split`:`unified`,lineDiffType:`none`,overflow:i?`wrap`:`scroll`,theme:T(l),themeType:l,unsafeCSS:De}})},n)})}):(0,Q.jsx)(`div`,{className:`h-full overflow-auto p-2`,children:(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`p`,{className:`text-[11px] text-muted-foreground/75`,children:c.reason}),(0,Q.jsx)(`pre`,{className:P(`max-h-[72vh] rounded-md border border-border/70 bg-background/70 p-3 font-mono text-[11px] leading-relaxed text-muted-foreground/90`,i?`overflow-auto whitespace-pre-wrap wrap-break-word`:`overflow-auto`),children:c.text})]})}):(0,Q.jsx)(Re,{bodyState:n}),t[6]=n,t[7]=r,t[8]=i,t[9]=a,t[10]=s,t[11]=c,t[12]=l,t[13]=d):d=t[13];let f;return t[14]!==o||t[15]!==u||t[16]!==d?(f=(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsxs)(`div`,{ref:o,className:`diff-panel-viewport min-h-0 min-w-0 flex-1 overflow-hidden`,children:[u,d]})}),t[14]=o,t[15]=u,t[16]=d,t[17]=f):f=t[17],f}function Me(e){return e instanceof Element&&e.hasAttribute(`data-title`)}function Ne(e){let t=(0,$.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,Q.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-5 text-center text-xs text-muted-foreground/70`,children:n}),t[0]=n,t[1]=r),r}function Pe(){let e=(0,$.c)(19),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={strict:!1,select:Ie},e[0]=t):t=e[0];let n=a(t),r;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(r={strict:!1,select:Fe},e[1]=r):r=e[1];let i=B(r),o=i.rightPanel===`diff`,s=n?.threadId??null,c,l;e[2]===n?l=e[3]:(l=C(n),e[2]=n,e[3]=l),c=l;let u=E(c),f=He(u),p=u?.worktreePath,m=f?.cwd,h;e[4]!==p||e[5]!==m?(h=I({threadWorktreePath:p,projectCwd:m}),e[4]=p,e[5]=m,e[6]=h):h=e[6];let g=h,_=u?.environmentId??null,v=g??null,y;e[7]!==_||e[8]!==v?(y={environmentId:_,cwd:v},e[7]=_,e[8]=v,e[9]=y):y=e[9];let b=d(y),x;e[10]===b.data?x=e[11]:(x=z(b.data),e[10]=b.data,e[11]=x);let S=x,w;return e[12]!==g||e[13]!==u||e[14]!==s||e[15]!==o||e[16]!==i||e[17]!==S?(w={activeThread:u,activeThreadId:s,activeCwd:g,isGitRepo:S,diffSearch:i,diffOpen:o},e[12]=g,e[13]=u,e[14]=s,e[15]=o,e[16]=i,e[17]=S,e[18]=w):w=e[18],w}function Fe(e){return G(e)}function Ie(e){return h(e)}function Le(e){let{activeThread:t,activeThreadId:n,activeCwd:r,isGitRepo:i,diffSearch:a,diffOpen:o}=Pe(),{turnDiffSummaries:s,inferredCheckpointTurnCountByTurnId:c}=H(t),u=a.diffTurnId??null,d=u===null?null:a.diffFilePath??null,{activeCheckpointRange:f,conversationCacheScope:p,orderedTurnDiffSummaries:m,selectedTurn:h}=(0,X.useMemo)(()=>te({summaries:s,inferredCheckpointTurnCountByTurnId:c,selectedTurnId:u}),[c,u,s]),g=l(xe(we({environmentId:t?.environmentId,threadId:n,range:f,selectedTurnId:h?.turnId,conversationCacheScope:p,enabled:i}))),_=g.isLoading,v=Ce(g.error),y=g.data?.diff,b=typeof y==`string`&&y.trim().length===0,{emptyDiffMessage:x}=(0,X.useMemo)(()=>ae(h),[h]),S=(0,X.useMemo)(()=>ce(y,`diff-panel:${e}`),[e,y]),C=(0,X.useMemo)(()=>Ue(S),[S]);return{activeCwd:r,activeThread:t,bodyState:ue({hasActiveThread:!!t,isGitRepo:i,turnSummaryCount:m.length,checkpointDiffError:v,hasRenderablePatch:!!S,isLoadingCheckpointDiff:_,hasNoNetChanges:b,emptyDiffMessage:x}),diffOpen:o,inferredCheckpointTurnCountByTurnId:c,orderedTurnDiffSummaries:m,renderableFiles:C,renderablePatch:S,selectedFilePath:d,selectedTurn:h,selectedTurnId:u}}function Re(e){let t=(0,$.c)(4),{bodyState:n}=e;if(n.kind===`loading`){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Q.jsx)(D,{label:`Loading checkpoint diff...`}),t[0]=e):e=t[0],e}let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Q.jsx)(L,{className:`size-7 text-muted-foreground/25`}),t[1]=r):r=t[1];let i=n.kind===`empty`?n.message:`No diff is available for this range.`,a;return t[2]===i?a=t[3]:(a=(0,Q.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-2 px-5 py-2 text-center`,children:[r,(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground/70`,children:i})]}),t[2]=i,t[3]=a),a}var ze=180;function Be(e){let t=(0,$.c)(14),{direction:n,strip:r}=e,i=n===`left`,a=i?r.canScrollLeft:r.canScrollRight,o=i?U:u,s=i?`left-0`:`right-0`,c=a?`border-border/70 hover:border-border hover:text-foreground`:`cursor-not-allowed border-border/40 text-muted-foreground/40`,l;t[0]!==s||t[1]!==c?(l=P(`absolute top-1/2 z-20 inline-flex size-6 -translate-y-1/2 items-center justify-center rounded-md border bg-background/90 text-muted-foreground transition-colors`,s,c),t[0]=s,t[1]=c,t[2]=l):l=t[2];let d;t[3]!==i||t[4]!==r?(d=()=>r.scrollBy(i?-180:ze),t[3]=i,t[4]=r,t[5]=d):d=t[5];let f=!a,p=`Scroll turn list ${n}`,m;t[6]===o?m=t[7]:(m=(0,Q.jsx)(o,{className:`size-3.5`}),t[6]=o,t[7]=m);let h;return t[8]!==l||t[9]!==d||t[10]!==f||t[11]!==p||t[12]!==m?(h=(0,Q.jsx)(`button`,{type:`button`,className:l,onClick:d,disabled:f,"aria-label":p,children:m}),t[8]=l,t[9]=d,t[10]=f,t[11]=p,t[12]=m,t[13]=h):h=t[13],h}function Ve(e){let t=(0,$.c)(23),{summary:n,selected:r,turnCount:i,timestampFormat:a,onSelect:o}=e,s;t[0]!==o||t[1]!==n.turnId?(s=()=>o(n.turnId),t[0]=o,t[1]=n.turnId,t[2]=s):s=t[2];let c=n.turnId,l=r?`border-border bg-accent text-accent-foreground`:`border-border/70 bg-background/70 text-muted-foreground/80 hover:border-border hover:text-foreground/80`,u;t[3]===l?u=t[4]:(u=P(`rounded-md border px-2 py-1 text-left transition-colors`,l),t[3]=l,t[4]=u);let d=i??`?`,f;t[5]===d?f=t[6]:(f=(0,Q.jsxs)(`span`,{className:`text-[10px] leading-tight font-medium`,children:[`Turn `,d]}),t[5]=d,t[6]=f);let p;t[7]!==n.completedAt||t[8]!==a?(p=y(n.completedAt,a),t[7]=n.completedAt,t[8]=a,t[9]=p):p=t[9];let m;t[10]===p?m=t[11]:(m=(0,Q.jsx)(`span`,{className:`text-[9px] leading-tight opacity-70`,children:p}),t[10]=p,t[11]=m);let h;t[12]!==f||t[13]!==m?(h=(0,Q.jsxs)(`div`,{className:`flex items-center gap-1`,children:[f,m]}),t[12]=f,t[13]=m,t[14]=h):h=t[14];let g;t[15]!==u||t[16]!==h?(g=(0,Q.jsx)(`div`,{className:u,children:h}),t[15]=u,t[16]=h,t[17]=g):g=t[17];let _;return t[18]!==r||t[19]!==n.turnId||t[20]!==s||t[21]!==g?(_=(0,Q.jsx)(`button`,{type:`button`,className:`shrink-0 rounded-md`,onClick:s,title:c,"data-turn-chip-selected":r,children:g}),t[18]=r,t[19]=n.turnId,t[20]=s,t[21]=g,t[22]=_):_=t[22],_}function He(e){let t=(0,$.c)(3),n=e?.environmentId,r=e?.projectId,i;return t[0]!==n||t[1]!==r?(i=e=>n&&r?S(e,{environmentId:n,projectId:r}):void 0,t[0]=n,t[1]=r,t[2]=i):i=t[2],E(i)}function Ue(e){return!e||e.kind!==`files`?[]:e.files.toSorted((e,t)=>Y(e).localeCompare(Y(t),void 0,{numeric:!0,sensitivity:`base`}))}export{Oe as default};
|
|
64
|
-
//# sourceMappingURL=DiffPanel-
|
|
64
|
+
//# sourceMappingURL=DiffPanel-DUE5CUPF.js.map
|