localclawd 2.3.0 → 2.3.1
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/cli.mjs +165 -78
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -87646,7 +87646,7 @@ var init_isEqual = __esm(() => {
|
|
|
87646
87646
|
|
|
87647
87647
|
// src/utils/userAgent.ts
|
|
87648
87648
|
function getClaudeCodeUserAgent() {
|
|
87649
|
-
return `claude-code/${"2.3.
|
|
87649
|
+
return `claude-code/${"2.3.1"}`;
|
|
87650
87650
|
}
|
|
87651
87651
|
|
|
87652
87652
|
// src/utils/workloadContext.ts
|
|
@@ -87668,7 +87668,7 @@ function getUserAgent() {
|
|
|
87668
87668
|
const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
|
|
87669
87669
|
const workload = getWorkload();
|
|
87670
87670
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
87671
|
-
return `claude-cli/${"2.3.
|
|
87671
|
+
return `claude-cli/${"2.3.1"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
87672
87672
|
}
|
|
87673
87673
|
function getMCPUserAgent() {
|
|
87674
87674
|
const parts = [];
|
|
@@ -87682,7 +87682,7 @@ function getMCPUserAgent() {
|
|
|
87682
87682
|
parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
|
|
87683
87683
|
}
|
|
87684
87684
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
87685
|
-
return `claude-code/${"2.3.
|
|
87685
|
+
return `claude-code/${"2.3.1"}${suffix}`;
|
|
87686
87686
|
}
|
|
87687
87687
|
function getWebFetchUserAgent() {
|
|
87688
87688
|
return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
|
|
@@ -130780,7 +130780,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
130780
130780
|
if (!isAttributionHeaderEnabled()) {
|
|
130781
130781
|
return "";
|
|
130782
130782
|
}
|
|
130783
|
-
const version = `${"2.3.
|
|
130783
|
+
const version = `${"2.3.1"}.${fingerprint}`;
|
|
130784
130784
|
const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
|
|
130785
130785
|
const cch = "";
|
|
130786
130786
|
const workload = getWorkload();
|
|
@@ -146967,7 +146967,7 @@ var init_metadata = __esm(() => {
|
|
|
146967
146967
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
146968
146968
|
WHITESPACE_REGEX = /\s+/;
|
|
146969
146969
|
getVersionBase = memoize_default(() => {
|
|
146970
|
-
const match = "2.3.
|
|
146970
|
+
const match = "2.3.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
146971
146971
|
return match ? match[0] : undefined;
|
|
146972
146972
|
});
|
|
146973
146973
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -147007,9 +147007,9 @@ var init_metadata = __esm(() => {
|
|
|
147007
147007
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
147008
147008
|
isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
|
|
147009
147009
|
isClaudeAiAuth: isClaudeAISubscriber(),
|
|
147010
|
-
version: "2.3.
|
|
147010
|
+
version: "2.3.1",
|
|
147011
147011
|
versionBase: getVersionBase(),
|
|
147012
|
-
buildTime: "2026-05-
|
|
147012
|
+
buildTime: "2026-05-10T18:34:55.265Z",
|
|
147013
147013
|
deploymentEnvironment: env3.detectDeploymentEnvironment(),
|
|
147014
147014
|
...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
|
|
147015
147015
|
githubEventName: process.env.GITHUB_EVENT_NAME,
|
|
@@ -172830,6 +172830,80 @@ ${text}`);
|
|
|
172830
172830
|
|
|
172831
172831
|
` + full.slice(full.length - maxChars);
|
|
172832
172832
|
}
|
|
172833
|
+
async function tryDirectLocalCompact({
|
|
172834
|
+
messages,
|
|
172835
|
+
summaryRequest,
|
|
172836
|
+
context: context4,
|
|
172837
|
+
preCompactTokenCount
|
|
172838
|
+
}) {
|
|
172839
|
+
const baseUrl = getLocalLLMBaseUrl();
|
|
172840
|
+
const model = getLocalLLMModel() ?? context4.options.mainLoopModel;
|
|
172841
|
+
const apiKey = getLocalLLMApiKey();
|
|
172842
|
+
if (!baseUrl || !model)
|
|
172843
|
+
return null;
|
|
172844
|
+
const contextTokens = getContextWindowForModel(model, []);
|
|
172845
|
+
const charBudget = Math.max(4000, Math.floor(contextTokens * 0.5 * 3.5));
|
|
172846
|
+
const serialized = serializeMessagesForCleanRoom(messages, charBudget);
|
|
172847
|
+
if (!serialized.trim())
|
|
172848
|
+
return null;
|
|
172849
|
+
const promptContent = summaryRequest.message.content;
|
|
172850
|
+
const compactPromptText = typeof promptContent === "string" ? promptContent : Array.isArray(promptContent) ? promptContent.filter((b3) => b3.type === "text").map((b3) => b3.text).join(`
|
|
172851
|
+
`) : "";
|
|
172852
|
+
const userText = `<conversation>
|
|
172853
|
+
${serialized}
|
|
172854
|
+
</conversation>
|
|
172855
|
+
|
|
172856
|
+
${compactPromptText}`;
|
|
172857
|
+
const timeoutMs = parseInt(process.env.COMPACT_TIMEOUT_MS || "", 10) || 5 * 60000;
|
|
172858
|
+
const timeoutController = new AbortController;
|
|
172859
|
+
const timer = setTimeout(() => timeoutController.abort(new Error("compact timeout")), timeoutMs);
|
|
172860
|
+
const onAbort = () => timeoutController.abort(context4.abortController.signal.reason);
|
|
172861
|
+
context4.abortController.signal.addEventListener("abort", onAbort, { once: true });
|
|
172862
|
+
try {
|
|
172863
|
+
const url2 = `${baseUrl.replace(/\/$/, "")}/chat/completions`;
|
|
172864
|
+
const res = await fetch(url2, {
|
|
172865
|
+
method: "POST",
|
|
172866
|
+
headers: {
|
|
172867
|
+
"Content-Type": "application/json",
|
|
172868
|
+
...apiKey ? { Authorization: `Bearer ${apiKey}` } : {}
|
|
172869
|
+
},
|
|
172870
|
+
body: JSON.stringify({
|
|
172871
|
+
model,
|
|
172872
|
+
messages: [
|
|
172873
|
+
{ role: "system", content: "You are a helpful assistant that summarizes conversations." },
|
|
172874
|
+
{ role: "user", content: userText }
|
|
172875
|
+
],
|
|
172876
|
+
max_tokens: COMPACT_MAX_OUTPUT_TOKENS,
|
|
172877
|
+
temperature: 0.2,
|
|
172878
|
+
stream: false
|
|
172879
|
+
}),
|
|
172880
|
+
signal: timeoutController.signal
|
|
172881
|
+
});
|
|
172882
|
+
if (!res.ok) {
|
|
172883
|
+
logForDebugging(`compact direct-local: HTTP ${res.status}`, { level: "warn" });
|
|
172884
|
+
return null;
|
|
172885
|
+
}
|
|
172886
|
+
const data = await res.json();
|
|
172887
|
+
const text = data.choices?.[0]?.message?.content?.trim();
|
|
172888
|
+
if (!text)
|
|
172889
|
+
return null;
|
|
172890
|
+
logForDebugging(`compact direct-local: success (pre=${preCompactTokenCount} out=${data.usage?.completion_tokens ?? 0})`);
|
|
172891
|
+
const usage = {
|
|
172892
|
+
input_tokens: data.usage?.prompt_tokens ?? 0,
|
|
172893
|
+
output_tokens: data.usage?.completion_tokens ?? 0,
|
|
172894
|
+
cache_creation_input_tokens: 0,
|
|
172895
|
+
cache_read_input_tokens: 0
|
|
172896
|
+
};
|
|
172897
|
+
return createAssistantMessage({ content: text, usage });
|
|
172898
|
+
} catch (e) {
|
|
172899
|
+
const reason = e?.name === "AbortError" ? "aborted/timeout" : String(e);
|
|
172900
|
+
logForDebugging(`compact direct-local: ${reason}`, { level: "warn" });
|
|
172901
|
+
return null;
|
|
172902
|
+
} finally {
|
|
172903
|
+
clearTimeout(timer);
|
|
172904
|
+
context4.abortController.signal.removeEventListener("abort", onAbort);
|
|
172905
|
+
}
|
|
172906
|
+
}
|
|
172833
172907
|
async function tryCleanRoomCompactSummary({
|
|
172834
172908
|
messages,
|
|
172835
172909
|
summaryRequest,
|
|
@@ -172910,6 +172984,18 @@ async function streamCompactSummary({
|
|
|
172910
172984
|
statusSetter?.("compacting");
|
|
172911
172985
|
}, 30000, context4.setSDKStatus) : undefined;
|
|
172912
172986
|
try {
|
|
172987
|
+
const directResp = await tryDirectLocalCompact({
|
|
172988
|
+
messages,
|
|
172989
|
+
summaryRequest,
|
|
172990
|
+
context: context4,
|
|
172991
|
+
preCompactTokenCount
|
|
172992
|
+
});
|
|
172993
|
+
if (directResp) {
|
|
172994
|
+
const directText = getAssistantMessageText(directResp);
|
|
172995
|
+
if (directText && !directResp.isApiErrorMessage && !directText.startsWith(PROMPT_TOO_LONG_ERROR_MESSAGE)) {
|
|
172996
|
+
return directResp;
|
|
172997
|
+
}
|
|
172998
|
+
}
|
|
172913
172999
|
const cleanRoomFirst = await tryCleanRoomCompactSummary({
|
|
172914
173000
|
messages,
|
|
172915
173001
|
summaryRequest,
|
|
@@ -173218,6 +173304,7 @@ var init_compact = __esm(() => {
|
|
|
173218
173304
|
init_forkedAgent();
|
|
173219
173305
|
init_hooks5();
|
|
173220
173306
|
init_log2();
|
|
173307
|
+
init_providers();
|
|
173221
173308
|
init_types4();
|
|
173222
173309
|
init_messages3();
|
|
173223
173310
|
init_path2();
|
|
@@ -179551,7 +179638,7 @@ function getTelemetryAttributes() {
|
|
|
179551
179638
|
attributes["session.id"] = sessionId;
|
|
179552
179639
|
}
|
|
179553
179640
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
179554
|
-
attributes["app.version"] = "2.3.
|
|
179641
|
+
attributes["app.version"] = "2.3.1";
|
|
179555
179642
|
}
|
|
179556
179643
|
const oauthAccount = getOauthAccountInfo();
|
|
179557
179644
|
if (oauthAccount) {
|
|
@@ -241839,7 +241926,7 @@ function getInstallationEnv() {
|
|
|
241839
241926
|
return;
|
|
241840
241927
|
}
|
|
241841
241928
|
function getClaudeCodeVersion() {
|
|
241842
|
-
return "2.3.
|
|
241929
|
+
return "2.3.1";
|
|
241843
241930
|
}
|
|
241844
241931
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
241845
241932
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -247113,7 +247200,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
247113
247200
|
const client4 = new Client({
|
|
247114
247201
|
name: "localclawd",
|
|
247115
247202
|
title: "localclawd",
|
|
247116
|
-
version: "2.3.
|
|
247203
|
+
version: "2.3.1",
|
|
247117
247204
|
description: "local-first AI coding tool",
|
|
247118
247205
|
websiteUrl: PRODUCT_URL
|
|
247119
247206
|
}, {
|
|
@@ -247455,7 +247542,7 @@ var init_client9 = __esm(() => {
|
|
|
247455
247542
|
const client4 = new Client({
|
|
247456
247543
|
name: "localclawd",
|
|
247457
247544
|
title: "localclawd",
|
|
247458
|
-
version: "2.3.
|
|
247545
|
+
version: "2.3.1",
|
|
247459
247546
|
description: "local-first AI coding tool",
|
|
247460
247547
|
websiteUrl: PRODUCT_URL
|
|
247461
247548
|
}, {
|
|
@@ -261854,7 +261941,7 @@ function computeFingerprint(messageText, version) {
|
|
|
261854
261941
|
}
|
|
261855
261942
|
function computeFingerprintFromMessages(messages) {
|
|
261856
261943
|
const firstMessageText = extractFirstMessageText(messages);
|
|
261857
|
-
return computeFingerprint(firstMessageText, "2.3.
|
|
261944
|
+
return computeFingerprint(firstMessageText, "2.3.1");
|
|
261858
261945
|
}
|
|
261859
261946
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
261860
261947
|
var init_fingerprint = () => {};
|
|
@@ -261896,7 +261983,7 @@ async function sideQuery(opts) {
|
|
|
261896
261983
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
261897
261984
|
}
|
|
261898
261985
|
const messageText = extractFirstUserMessageText(messages);
|
|
261899
|
-
const fingerprint = computeFingerprint(messageText, "2.3.
|
|
261986
|
+
const fingerprint = computeFingerprint(messageText, "2.3.1");
|
|
261900
261987
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
261901
261988
|
const systemBlocks = [
|
|
261902
261989
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -282648,7 +282735,7 @@ var init_user = __esm(() => {
|
|
|
282648
282735
|
deviceId,
|
|
282649
282736
|
sessionId: getSessionId(),
|
|
282650
282737
|
email: getEmail(),
|
|
282651
|
-
appVersion: "2.3.
|
|
282738
|
+
appVersion: "2.3.1",
|
|
282652
282739
|
platform: getHostPlatformForAnalytics(),
|
|
282653
282740
|
organizationUuid,
|
|
282654
282741
|
accountUuid,
|
|
@@ -283713,7 +283800,7 @@ async function initializeBetaTracing(resource) {
|
|
|
283713
283800
|
});
|
|
283714
283801
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
283715
283802
|
setLoggerProvider(loggerProvider);
|
|
283716
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.3.
|
|
283803
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.3.1");
|
|
283717
283804
|
setEventLogger(eventLogger);
|
|
283718
283805
|
process.on("beforeExit", async () => {
|
|
283719
283806
|
await loggerProvider?.forceFlush();
|
|
@@ -283753,7 +283840,7 @@ async function initializeTelemetry() {
|
|
|
283753
283840
|
const platform2 = getPlatform();
|
|
283754
283841
|
const baseAttributes = {
|
|
283755
283842
|
[ATTR_SERVICE_NAME4]: "claude-code",
|
|
283756
|
-
[ATTR_SERVICE_VERSION4]: "2.3.
|
|
283843
|
+
[ATTR_SERVICE_VERSION4]: "2.3.1"
|
|
283757
283844
|
};
|
|
283758
283845
|
if (platform2 === "wsl") {
|
|
283759
283846
|
const wslVersion = getWslVersion();
|
|
@@ -283798,7 +283885,7 @@ async function initializeTelemetry() {
|
|
|
283798
283885
|
} catch {}
|
|
283799
283886
|
};
|
|
283800
283887
|
registerCleanup(shutdownTelemetry2);
|
|
283801
|
-
return meterProvider2.getMeter("com.anthropic.claude_code", "2.3.
|
|
283888
|
+
return meterProvider2.getMeter("com.anthropic.claude_code", "2.3.1");
|
|
283802
283889
|
}
|
|
283803
283890
|
const meterProvider = new MeterProvider4({
|
|
283804
283891
|
resource,
|
|
@@ -283818,7 +283905,7 @@ async function initializeTelemetry() {
|
|
|
283818
283905
|
});
|
|
283819
283906
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
283820
283907
|
setLoggerProvider(loggerProvider);
|
|
283821
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.3.
|
|
283908
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.3.1");
|
|
283822
283909
|
setEventLogger(eventLogger);
|
|
283823
283910
|
logForDebugging("[3P telemetry] Event logger set successfully");
|
|
283824
283911
|
process.on("beforeExit", async () => {
|
|
@@ -283880,7 +283967,7 @@ Current timeout: ${timeoutMs}ms
|
|
|
283880
283967
|
}
|
|
283881
283968
|
};
|
|
283882
283969
|
registerCleanup(shutdownTelemetry);
|
|
283883
|
-
return meterProvider.getMeter("com.anthropic.claude_code", "2.3.
|
|
283970
|
+
return meterProvider.getMeter("com.anthropic.claude_code", "2.3.1");
|
|
283884
283971
|
}
|
|
283885
283972
|
async function flushTelemetry() {
|
|
283886
283973
|
const meterProvider = getMeterProvider();
|
|
@@ -285070,7 +285157,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
285070
285157
|
}
|
|
285071
285158
|
async function getDoctorDiagnostic() {
|
|
285072
285159
|
const installationType = await getCurrentInstallationType();
|
|
285073
|
-
const version = typeof MACRO !== "undefined" ? "2.3.
|
|
285160
|
+
const version = typeof MACRO !== "undefined" ? "2.3.1" : "unknown";
|
|
285074
285161
|
const installationPath = await getInstallationPath();
|
|
285075
285162
|
const invokedBinary = getInvokedBinary();
|
|
285076
285163
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -286011,8 +286098,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
286011
286098
|
const maxVersion = await getMaxVersion();
|
|
286012
286099
|
if (maxVersion && gt(version, maxVersion)) {
|
|
286013
286100
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
|
|
286014
|
-
if (gte("2.3.
|
|
286015
|
-
logForDebugging(`Native installer: current version ${"2.3.
|
|
286101
|
+
if (gte("2.3.1", maxVersion)) {
|
|
286102
|
+
logForDebugging(`Native installer: current version ${"2.3.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
286016
286103
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
286017
286104
|
latency_ms: Date.now() - startTime,
|
|
286018
286105
|
max_version: maxVersion,
|
|
@@ -286023,7 +286110,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
286023
286110
|
version = maxVersion;
|
|
286024
286111
|
}
|
|
286025
286112
|
}
|
|
286026
|
-
if (!forceReinstall && version === "2.3.
|
|
286113
|
+
if (!forceReinstall && version === "2.3.1" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
|
|
286027
286114
|
logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
|
|
286028
286115
|
logEvent("tengu_native_update_complete", {
|
|
286029
286116
|
latency_ms: Date.now() - startTime,
|
|
@@ -332298,7 +332385,7 @@ function getAnthropicEnvMetadata() {
|
|
|
332298
332385
|
function getBuildAgeMinutes() {
|
|
332299
332386
|
if (false)
|
|
332300
332387
|
;
|
|
332301
|
-
const buildTime = new Date("2026-05-
|
|
332388
|
+
const buildTime = new Date("2026-05-10T18:34:55.265Z").getTime();
|
|
332302
332389
|
if (isNaN(buildTime))
|
|
332303
332390
|
return;
|
|
332304
332391
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -360327,7 +360414,7 @@ function Feedback({
|
|
|
360327
360414
|
platform: env3.platform,
|
|
360328
360415
|
gitRepo: envInfo.isGit,
|
|
360329
360416
|
terminal: env3.terminal,
|
|
360330
|
-
version: "2.3.
|
|
360417
|
+
version: "2.3.1",
|
|
360331
360418
|
transcript: normalizeMessagesForAPI(messages),
|
|
360332
360419
|
errors: sanitizedErrors,
|
|
360333
360420
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -360519,7 +360606,7 @@ function Feedback({
|
|
|
360519
360606
|
", ",
|
|
360520
360607
|
env3.terminal,
|
|
360521
360608
|
", v",
|
|
360522
|
-
"2.3.
|
|
360609
|
+
"2.3.1"
|
|
360523
360610
|
]
|
|
360524
360611
|
}, undefined, true, undefined, this)
|
|
360525
360612
|
]
|
|
@@ -360625,7 +360712,7 @@ ${sanitizedDescription}
|
|
|
360625
360712
|
` + `**Environment Info**
|
|
360626
360713
|
` + `- Platform: ${env3.platform}
|
|
360627
360714
|
` + `- Terminal: ${env3.terminal}
|
|
360628
|
-
` + `- Version: ${"2.3.
|
|
360715
|
+
` + `- Version: ${"2.3.1"}
|
|
360629
360716
|
` + `- Feedback ID: ${feedbackId}
|
|
360630
360717
|
` + `
|
|
360631
360718
|
**Errors**
|
|
@@ -363234,7 +363321,7 @@ function buildPrimarySection() {
|
|
|
363234
363321
|
}, undefined, false, undefined, this);
|
|
363235
363322
|
return [{
|
|
363236
363323
|
label: "Version",
|
|
363237
|
-
value: "2.3.
|
|
363324
|
+
value: "2.3.1"
|
|
363238
363325
|
}, {
|
|
363239
363326
|
label: "Session name",
|
|
363240
363327
|
value: nameValue
|
|
@@ -367915,7 +368002,7 @@ function Config({
|
|
|
367915
368002
|
}
|
|
367916
368003
|
}, undefined, false, undefined, this)
|
|
367917
368004
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
|
|
367918
|
-
currentVersion: "2.3.
|
|
368005
|
+
currentVersion: "2.3.1",
|
|
367919
368006
|
onChoice: (choice) => {
|
|
367920
368007
|
setShowSubmenu(null);
|
|
367921
368008
|
setTabsHidden(false);
|
|
@@ -367927,7 +368014,7 @@ function Config({
|
|
|
367927
368014
|
autoUpdatesChannel: "stable"
|
|
367928
368015
|
};
|
|
367929
368016
|
if (choice === "stay") {
|
|
367930
|
-
newSettings.minimumVersion = "2.3.
|
|
368017
|
+
newSettings.minimumVersion = "2.3.1";
|
|
367931
368018
|
}
|
|
367932
368019
|
updateSettingsForSource("userSettings", newSettings);
|
|
367933
368020
|
setSettingsData((prev_27) => ({
|
|
@@ -385446,7 +385533,7 @@ function Help(t0) {
|
|
|
385446
385533
|
let t6;
|
|
385447
385534
|
if ($2[31] !== tabs) {
|
|
385448
385535
|
t6 = /* @__PURE__ */ jsx_dev_runtime218.jsxDEV(Tabs, {
|
|
385449
|
-
title: `localclawd v${"2.3.
|
|
385536
|
+
title: `localclawd v${"2.3.1"}`,
|
|
385450
385537
|
color: "professionalBlue",
|
|
385451
385538
|
defaultTab: "general",
|
|
385452
385539
|
children: tabs
|
|
@@ -402708,7 +402795,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
|
|
|
402708
402795
|
}
|
|
402709
402796
|
return [];
|
|
402710
402797
|
}
|
|
402711
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "2.3.
|
|
402798
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "2.3.1") {
|
|
402712
402799
|
if (process.env.USER_TYPE === "ant") {
|
|
402713
402800
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
402714
402801
|
if (changelog) {
|
|
@@ -402735,7 +402822,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "2.3.0") {
|
|
|
402735
402822
|
releaseNotes
|
|
402736
402823
|
};
|
|
402737
402824
|
}
|
|
402738
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "2.3.
|
|
402825
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "2.3.1") {
|
|
402739
402826
|
if (process.env.USER_TYPE === "ant") {
|
|
402740
402827
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
402741
402828
|
if (changelog) {
|
|
@@ -402892,7 +402979,7 @@ function getRecentActivitySync() {
|
|
|
402892
402979
|
return cachedActivity;
|
|
402893
402980
|
}
|
|
402894
402981
|
function getLogoDisplayData() {
|
|
402895
|
-
const version = process.env.DEMO_VERSION ?? "2.3.
|
|
402982
|
+
const version = process.env.DEMO_VERSION ?? "2.3.1";
|
|
402896
402983
|
const serverUrl = getDirectConnectServerUrl();
|
|
402897
402984
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
402898
402985
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -403992,7 +404079,7 @@ function Logo() {
|
|
|
403992
404079
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
403993
404080
|
t2 = () => {
|
|
403994
404081
|
const currentConfig = getGlobalConfig();
|
|
403995
|
-
if (currentConfig.lastReleaseNotesSeen === "2.3.
|
|
404082
|
+
if (currentConfig.lastReleaseNotesSeen === "2.3.1") {
|
|
403996
404083
|
return;
|
|
403997
404084
|
}
|
|
403998
404085
|
saveGlobalConfig(_temp325);
|
|
@@ -404651,12 +404738,12 @@ function Logo() {
|
|
|
404651
404738
|
return t41;
|
|
404652
404739
|
}
|
|
404653
404740
|
function _temp325(current) {
|
|
404654
|
-
if (current.lastReleaseNotesSeen === "2.3.
|
|
404741
|
+
if (current.lastReleaseNotesSeen === "2.3.1") {
|
|
404655
404742
|
return current;
|
|
404656
404743
|
}
|
|
404657
404744
|
return {
|
|
404658
404745
|
...current,
|
|
404659
|
-
lastReleaseNotesSeen: "2.3.
|
|
404746
|
+
lastReleaseNotesSeen: "2.3.1"
|
|
404660
404747
|
};
|
|
404661
404748
|
}
|
|
404662
404749
|
function _temp240(s_0) {
|
|
@@ -435115,7 +435202,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
435115
435202
|
smapsRollup,
|
|
435116
435203
|
platform: process.platform,
|
|
435117
435204
|
nodeVersion: process.version,
|
|
435118
|
-
ccVersion: "2.3.
|
|
435205
|
+
ccVersion: "2.3.1"
|
|
435119
435206
|
};
|
|
435120
435207
|
}
|
|
435121
435208
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -435700,7 +435787,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
435700
435787
|
var call86 = async () => {
|
|
435701
435788
|
return {
|
|
435702
435789
|
type: "text",
|
|
435703
|
-
value: `${"2.3.
|
|
435790
|
+
value: `${"2.3.1"} (built ${"2026-05-10T18:34:55.265Z"})`
|
|
435704
435791
|
};
|
|
435705
435792
|
}, version, version_default;
|
|
435706
435793
|
var init_version = __esm(() => {
|
|
@@ -443644,7 +443731,7 @@ function generateHtmlReport(data, insights) {
|
|
|
443644
443731
|
</html>`;
|
|
443645
443732
|
}
|
|
443646
443733
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
443647
|
-
const version2 = typeof MACRO !== "undefined" ? "2.3.
|
|
443734
|
+
const version2 = typeof MACRO !== "undefined" ? "2.3.1" : "unknown";
|
|
443648
443735
|
const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
|
|
443649
443736
|
const facets_summary = {
|
|
443650
443737
|
total: facets.size,
|
|
@@ -447843,7 +447930,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
447843
447930
|
init_settings2();
|
|
447844
447931
|
init_slowOperations();
|
|
447845
447932
|
init_uuid();
|
|
447846
|
-
VERSION6 = typeof MACRO !== "undefined" ? "2.3.
|
|
447933
|
+
VERSION6 = typeof MACRO !== "undefined" ? "2.3.1" : "unknown";
|
|
447847
447934
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
447848
447935
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
447849
447936
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -448974,7 +449061,7 @@ var init_filesystem = __esm(() => {
|
|
|
448974
449061
|
});
|
|
448975
449062
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
448976
449063
|
const nonce = randomBytes20(16).toString("hex");
|
|
448977
|
-
return join154(getClaudeTempDir(), "bundled-skills", "2.3.
|
|
449064
|
+
return join154(getClaudeTempDir(), "bundled-skills", "2.3.1", nonce);
|
|
448978
449065
|
});
|
|
448979
449066
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
448980
449067
|
});
|
|
@@ -458211,7 +458298,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
458211
458298
|
slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
|
|
458212
458299
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
458213
458300
|
betas: getSdkBetas(),
|
|
458214
|
-
claude_code_version: "2.3.
|
|
458301
|
+
claude_code_version: "2.3.1",
|
|
458215
458302
|
output_style: outputStyle2,
|
|
458216
458303
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
458217
458304
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -472368,7 +472455,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
472368
472455
|
function getSemverPart(version2) {
|
|
472369
472456
|
return `${import_semver10.major(version2, { loose: true })}.${import_semver10.minor(version2, { loose: true })}.${import_semver10.patch(version2, { loose: true })}`;
|
|
472370
472457
|
}
|
|
472371
|
-
function useUpdateNotification(updatedVersion, initialVersion = "2.3.
|
|
472458
|
+
function useUpdateNotification(updatedVersion, initialVersion = "2.3.1") {
|
|
472372
472459
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react214.useState(() => getSemverPart(initialVersion));
|
|
472373
472460
|
if (!updatedVersion) {
|
|
472374
472461
|
return null;
|
|
@@ -472408,7 +472495,7 @@ function AutoUpdater({
|
|
|
472408
472495
|
return;
|
|
472409
472496
|
}
|
|
472410
472497
|
if (false) {}
|
|
472411
|
-
const currentVersion = "2.3.
|
|
472498
|
+
const currentVersion = "2.3.1";
|
|
472412
472499
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
472413
472500
|
let latestVersion = await getLatestVersion(channel);
|
|
472414
472501
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -472619,12 +472706,12 @@ function NativeAutoUpdater({
|
|
|
472619
472706
|
logEvent("tengu_native_auto_updater_start", {});
|
|
472620
472707
|
try {
|
|
472621
472708
|
const maxVersion = await getMaxVersion();
|
|
472622
|
-
if (maxVersion && gt("2.3.
|
|
472709
|
+
if (maxVersion && gt("2.3.1", maxVersion)) {
|
|
472623
472710
|
const msg = await getMaxVersionMessage();
|
|
472624
472711
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
472625
472712
|
}
|
|
472626
472713
|
const result = await installLatest(channel);
|
|
472627
|
-
const currentVersion = "2.3.
|
|
472714
|
+
const currentVersion = "2.3.1";
|
|
472628
472715
|
const latencyMs = Date.now() - startTime;
|
|
472629
472716
|
if (result.lockFailed) {
|
|
472630
472717
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -472759,17 +472846,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
472759
472846
|
const maxVersion = await getMaxVersion();
|
|
472760
472847
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
472761
472848
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
472762
|
-
if (gte("2.3.
|
|
472763
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"2.3.
|
|
472849
|
+
if (gte("2.3.1", maxVersion)) {
|
|
472850
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"2.3.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
472764
472851
|
setUpdateAvailable(false);
|
|
472765
472852
|
return;
|
|
472766
472853
|
}
|
|
472767
472854
|
latest = maxVersion;
|
|
472768
472855
|
}
|
|
472769
|
-
const hasUpdate = latest && !gte("2.3.
|
|
472856
|
+
const hasUpdate = latest && !gte("2.3.1", latest) && !shouldSkipVersion(latest);
|
|
472770
472857
|
setUpdateAvailable(!!hasUpdate);
|
|
472771
472858
|
if (hasUpdate) {
|
|
472772
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"2.3.
|
|
472859
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"2.3.1"} -> ${latest}`);
|
|
472773
472860
|
}
|
|
472774
472861
|
};
|
|
472775
472862
|
$2[0] = t1;
|
|
@@ -472803,7 +472890,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
472803
472890
|
wrap: "truncate",
|
|
472804
472891
|
children: [
|
|
472805
472892
|
"currentVersion: ",
|
|
472806
|
-
"2.3.
|
|
472893
|
+
"2.3.1"
|
|
472807
472894
|
]
|
|
472808
472895
|
}, undefined, true, undefined, this);
|
|
472809
472896
|
$2[3] = verbose;
|
|
@@ -480363,7 +480450,7 @@ function buildStatusLineCommandInput(permissionMode, exceedsHalfContext, setting
|
|
|
480363
480450
|
project_dir: getOriginalCwd(),
|
|
480364
480451
|
added_dirs: addedDirs
|
|
480365
480452
|
},
|
|
480366
|
-
version: "2.3.
|
|
480453
|
+
version: "2.3.1",
|
|
480367
480454
|
output_style: {
|
|
480368
480455
|
name: outputStyleName
|
|
480369
480456
|
},
|
|
@@ -491935,7 +492022,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
491935
492022
|
} catch {}
|
|
491936
492023
|
const data = {
|
|
491937
492024
|
trigger,
|
|
491938
|
-
version: "2.3.
|
|
492025
|
+
version: "2.3.1",
|
|
491939
492026
|
platform: process.platform,
|
|
491940
492027
|
transcript,
|
|
491941
492028
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -508908,7 +508995,7 @@ function appendToLog(path17, message) {
|
|
|
508908
508995
|
cwd: getFsImplementation().cwd(),
|
|
508909
508996
|
userType: process.env.USER_TYPE,
|
|
508910
508997
|
sessionId: getSessionId(),
|
|
508911
|
-
version: "2.3.
|
|
508998
|
+
version: "2.3.1"
|
|
508912
508999
|
};
|
|
508913
509000
|
getLogWriter(path17).write(messageWithTimestamp);
|
|
508914
509001
|
}
|
|
@@ -512707,8 +512794,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
512707
512794
|
}
|
|
512708
512795
|
async function checkEnvLessBridgeMinVersion() {
|
|
512709
512796
|
const cfg = await getEnvLessBridgeConfig();
|
|
512710
|
-
if (cfg.min_version && lt("2.3.
|
|
512711
|
-
return `Your version of localclawd (${"2.3.
|
|
512797
|
+
if (cfg.min_version && lt("2.3.1", cfg.min_version)) {
|
|
512798
|
+
return `Your version of localclawd (${"2.3.1"}) is too old for Remote Control.
|
|
512712
512799
|
Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
|
|
512713
512800
|
}
|
|
512714
512801
|
return null;
|
|
@@ -513180,7 +513267,7 @@ async function initBridgeCore(params) {
|
|
|
513180
513267
|
const rawApi = createBridgeApiClient({
|
|
513181
513268
|
baseUrl,
|
|
513182
513269
|
getAccessToken,
|
|
513183
|
-
runnerVersion: "2.3.
|
|
513270
|
+
runnerVersion: "2.3.1",
|
|
513184
513271
|
onDebug: logForDebugging,
|
|
513185
513272
|
onAuth401,
|
|
513186
513273
|
getTrustedDeviceToken
|
|
@@ -518899,7 +518986,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
518899
518986
|
setCwd(cwd3);
|
|
518900
518987
|
const server = new Server({
|
|
518901
518988
|
name: "claude/tengu",
|
|
518902
|
-
version: "2.3.
|
|
518989
|
+
version: "2.3.1"
|
|
518903
518990
|
}, {
|
|
518904
518991
|
capabilities: {
|
|
518905
518992
|
tools: {}
|
|
@@ -519980,7 +520067,7 @@ function WelcomeLogo() {
|
|
|
519980
520067
|
dimColor: true,
|
|
519981
520068
|
children: [
|
|
519982
520069
|
"v",
|
|
519983
|
-
"2.3.
|
|
520070
|
+
"2.3.1"
|
|
519984
520071
|
]
|
|
519985
520072
|
}, undefined, true, undefined, this)
|
|
519986
520073
|
]
|
|
@@ -520171,7 +520258,7 @@ __export(exports_update, {
|
|
|
520171
520258
|
});
|
|
520172
520259
|
async function update() {
|
|
520173
520260
|
logEvent("tengu_update_check", {});
|
|
520174
|
-
writeToStdout(`Current version: ${"2.3.
|
|
520261
|
+
writeToStdout(`Current version: ${"2.3.1"}
|
|
520175
520262
|
`);
|
|
520176
520263
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
520177
520264
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -520246,8 +520333,8 @@ async function update() {
|
|
|
520246
520333
|
writeToStdout(`localclawd is managed by Homebrew.
|
|
520247
520334
|
`);
|
|
520248
520335
|
const latest = await getLatestVersion(channel);
|
|
520249
|
-
if (latest && !gte("2.3.
|
|
520250
|
-
writeToStdout(`Update available: ${"2.3.
|
|
520336
|
+
if (latest && !gte("2.3.1", latest)) {
|
|
520337
|
+
writeToStdout(`Update available: ${"2.3.1"} → ${latest}
|
|
520251
520338
|
`);
|
|
520252
520339
|
writeToStdout(`
|
|
520253
520340
|
`);
|
|
@@ -520263,8 +520350,8 @@ async function update() {
|
|
|
520263
520350
|
writeToStdout(`localclawd is managed by winget.
|
|
520264
520351
|
`);
|
|
520265
520352
|
const latest = await getLatestVersion(channel);
|
|
520266
|
-
if (latest && !gte("2.3.
|
|
520267
|
-
writeToStdout(`Update available: ${"2.3.
|
|
520353
|
+
if (latest && !gte("2.3.1", latest)) {
|
|
520354
|
+
writeToStdout(`Update available: ${"2.3.1"} → ${latest}
|
|
520268
520355
|
`);
|
|
520269
520356
|
writeToStdout(`
|
|
520270
520357
|
`);
|
|
@@ -520278,8 +520365,8 @@ async function update() {
|
|
|
520278
520365
|
writeToStdout(`localclawd is managed by apk.
|
|
520279
520366
|
`);
|
|
520280
520367
|
const latest = await getLatestVersion(channel);
|
|
520281
|
-
if (latest && !gte("2.3.
|
|
520282
|
-
writeToStdout(`Update available: ${"2.3.
|
|
520368
|
+
if (latest && !gte("2.3.1", latest)) {
|
|
520369
|
+
writeToStdout(`Update available: ${"2.3.1"} → ${latest}
|
|
520283
520370
|
`);
|
|
520284
520371
|
writeToStdout(`
|
|
520285
520372
|
`);
|
|
@@ -520344,11 +520431,11 @@ async function update() {
|
|
|
520344
520431
|
`);
|
|
520345
520432
|
await gracefulShutdown(1);
|
|
520346
520433
|
}
|
|
520347
|
-
if (result.latestVersion === "2.3.
|
|
520348
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"2.3.
|
|
520434
|
+
if (result.latestVersion === "2.3.1") {
|
|
520435
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"2.3.1"})`) + `
|
|
520349
520436
|
`);
|
|
520350
520437
|
} else {
|
|
520351
|
-
writeToStdout(source_default.green(`Successfully updated from ${"2.3.
|
|
520438
|
+
writeToStdout(source_default.green(`Successfully updated from ${"2.3.1"} to version ${result.latestVersion}`) + `
|
|
520352
520439
|
`);
|
|
520353
520440
|
await regenerateCompletionCache();
|
|
520354
520441
|
}
|
|
@@ -520408,12 +520495,12 @@ async function update() {
|
|
|
520408
520495
|
`);
|
|
520409
520496
|
await gracefulShutdown(1);
|
|
520410
520497
|
}
|
|
520411
|
-
if (latestVersion === "2.3.
|
|
520412
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"2.3.
|
|
520498
|
+
if (latestVersion === "2.3.1") {
|
|
520499
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"2.3.1"})`) + `
|
|
520413
520500
|
`);
|
|
520414
520501
|
await gracefulShutdown(0);
|
|
520415
520502
|
}
|
|
520416
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"2.3.
|
|
520503
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"2.3.1"})
|
|
520417
520504
|
`);
|
|
520418
520505
|
writeToStdout(`Installing update...
|
|
520419
520506
|
`);
|
|
@@ -520458,7 +520545,7 @@ async function update() {
|
|
|
520458
520545
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
520459
520546
|
switch (status2) {
|
|
520460
520547
|
case "success":
|
|
520461
|
-
writeToStdout(source_default.green(`Successfully updated from ${"2.3.
|
|
520548
|
+
writeToStdout(source_default.green(`Successfully updated from ${"2.3.1"} to version ${latestVersion}`) + `
|
|
520462
520549
|
`);
|
|
520463
520550
|
await regenerateCompletionCache();
|
|
520464
520551
|
break;
|
|
@@ -521700,7 +521787,7 @@ Run with --debug for more details.
|
|
|
521700
521787
|
}
|
|
521701
521788
|
}
|
|
521702
521789
|
logForDiagnosticsNoPII("info", "started", {
|
|
521703
|
-
version: "2.3.
|
|
521790
|
+
version: "2.3.1",
|
|
521704
521791
|
is_native_binary: isInBundledMode()
|
|
521705
521792
|
});
|
|
521706
521793
|
registerCleanup(async () => {
|
|
@@ -522484,7 +522571,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
522484
522571
|
pendingHookMessages
|
|
522485
522572
|
}, renderAndRun);
|
|
522486
522573
|
}
|
|
522487
|
-
}).version("2.3.
|
|
522574
|
+
}).version("2.3.1 (localclawd)", "-v, --version", "Output the version number");
|
|
522488
522575
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
522489
522576
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
522490
522577
|
if (canUserConfigureAdvisor()) {
|
|
@@ -522998,7 +523085,7 @@ if (false) {}
|
|
|
522998
523085
|
async function main2() {
|
|
522999
523086
|
const args = process.argv.slice(2);
|
|
523000
523087
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
523001
|
-
console.log(`${"2.3.
|
|
523088
|
+
console.log(`${"2.3.1"} (localclawd)`);
|
|
523002
523089
|
return;
|
|
523003
523090
|
}
|
|
523004
523091
|
const {
|
|
@@ -523089,4 +523176,4 @@ localclawd crashed: ${msg}
|
|
|
523089
523176
|
process.exit(1);
|
|
523090
523177
|
});
|
|
523091
523178
|
|
|
523092
|
-
//# debugId=
|
|
523179
|
+
//# debugId=33D2CC954FB1725C64756E2164756E21
|