ur-agent 1.27.0 → 1.27.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.js +117 -90
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -54413,45 +54413,72 @@ var init_providerRegistry = __esm(() => {
|
|
|
54413
54413
|
]));
|
|
54414
54414
|
PROVIDER_MODELS = {
|
|
54415
54415
|
"codex-cli": [
|
|
54416
|
-
{ id: "gpt-
|
|
54417
|
-
{ id: "gpt-
|
|
54418
|
-
{ id: "
|
|
54416
|
+
{ id: "gpt-5.5", displayName: "GPT-5.5", description: "Latest OpenAI model", isDefault: true },
|
|
54417
|
+
{ id: "gpt-5.4", displayName: "GPT-5.4", description: "Advanced reasoning and coding" },
|
|
54418
|
+
{ id: "gpt-5.4-mini", displayName: "GPT-5.4 Mini", description: "Fast, efficient variant" },
|
|
54419
|
+
{ id: "gpt-4o", displayName: "GPT-4o", description: "Previous generation flagship" },
|
|
54420
|
+
{ id: "gpt-4o-mini", displayName: "GPT-4o Mini", description: "Fast GPT-4o variant" },
|
|
54421
|
+
{ id: "o1", displayName: "o1", description: "Deep reasoning model" },
|
|
54419
54422
|
{ id: "o3-mini", displayName: "o3-mini", description: "Fast reasoning model" }
|
|
54420
54423
|
],
|
|
54421
54424
|
"claude-code-cli": [
|
|
54422
|
-
{ id: "claude-sonnet-
|
|
54423
|
-
{ id: "claude-opus-4-
|
|
54424
|
-
{ id: "claude-
|
|
54425
|
+
{ id: "claude-sonnet-5", displayName: "Claude Sonnet 5", description: "Balanced performance and speed", isDefault: true },
|
|
54426
|
+
{ id: "claude-opus-4-8", displayName: "Claude Opus 4.8", description: "Most powerful Claude model" },
|
|
54427
|
+
{ id: "claude-opus-4-7", displayName: "Claude Opus 4.7", description: "High-end reasoning" },
|
|
54428
|
+
{ id: "claude-opus-4-6", displayName: "Claude Opus 4.6", description: "Advanced problem solving" },
|
|
54429
|
+
{ id: "claude-opus-4-5", displayName: "Claude Opus 4.5", description: "Previous Opus generation" },
|
|
54430
|
+
{ id: "claude-sonnet-4-6", displayName: "Claude Sonnet 4.6", description: "Fast Sonnet variant" },
|
|
54431
|
+
{ id: "claude-sonnet-4-5", displayName: "Claude Sonnet 4.5", description: "Previous Sonnet generation" },
|
|
54432
|
+
{ id: "claude-haiku-4-5", displayName: "Claude Haiku 4.5", description: "Fastest Claude model" }
|
|
54425
54433
|
],
|
|
54426
54434
|
"gemini-cli": [
|
|
54427
|
-
{ id: "gemini-
|
|
54428
|
-
{ id: "gemini-
|
|
54435
|
+
{ id: "gemini-3.5-flash", displayName: "Gemini 3.5 Flash", description: "Most intelligent for agentic tasks", isDefault: true },
|
|
54436
|
+
{ id: "gemini-3.1-pro", displayName: "Gemini 3.1 Pro", description: "Advanced problem solving (preview)" },
|
|
54437
|
+
{ id: "gemini-3.1-flash-lite", displayName: "Gemini 3.1 Flash Lite", description: "Budget-friendly performance" },
|
|
54438
|
+
{ id: "gemini-2.5-pro", displayName: "Gemini 2.5 Pro", description: "Complex reasoning and coding" },
|
|
54439
|
+
{ id: "gemini-2.5-flash", displayName: "Gemini 2.5 Flash", description: "Low-latency tasks" },
|
|
54440
|
+
{ id: "gemini-2.5-flash-lite", displayName: "Gemini 2.5 Flash Lite", description: "Fastest Gemini model" }
|
|
54429
54441
|
],
|
|
54430
54442
|
"antigravity-cli": [
|
|
54431
|
-
{ id: "gemini-
|
|
54443
|
+
{ id: "gemini-3.5-flash", displayName: "Gemini 3.5 Flash", description: "Most intelligent for agentic tasks", isDefault: true },
|
|
54444
|
+
{ id: "gemini-2.5-pro", displayName: "Gemini 2.5 Pro", description: "Complex reasoning and coding" },
|
|
54445
|
+
{ id: "gemini-2.5-flash", displayName: "Gemini 2.5 Flash", description: "Low-latency tasks" }
|
|
54432
54446
|
],
|
|
54433
54447
|
"openai-api": [
|
|
54434
|
-
{ id: "gpt-
|
|
54435
|
-
{ id: "gpt-
|
|
54436
|
-
{ id: "
|
|
54437
|
-
{ id: "
|
|
54438
|
-
{ id: "gpt-
|
|
54448
|
+
{ id: "gpt-5.5", displayName: "GPT-5.5", description: "Latest OpenAI model", isDefault: true },
|
|
54449
|
+
{ id: "gpt-5.4", displayName: "GPT-5.4", description: "Advanced reasoning and coding" },
|
|
54450
|
+
{ id: "gpt-5.4-mini", displayName: "GPT-5.4 Mini", description: "Fast, efficient variant" },
|
|
54451
|
+
{ id: "gpt-4o", displayName: "GPT-4o", description: "Previous generation flagship" },
|
|
54452
|
+
{ id: "gpt-4o-mini", displayName: "GPT-4o Mini", description: "Fast GPT-4o variant" },
|
|
54453
|
+
{ id: "o1", displayName: "o1", description: "Deep reasoning model" },
|
|
54454
|
+
{ id: "o3-mini", displayName: "o3-mini", description: "Fast reasoning model" }
|
|
54439
54455
|
],
|
|
54440
54456
|
"anthropic-api": [
|
|
54441
|
-
{ id: "claude-sonnet-
|
|
54442
|
-
{ id: "claude-opus-4-
|
|
54443
|
-
{ id: "claude-
|
|
54444
|
-
{ id: "claude-
|
|
54457
|
+
{ id: "claude-sonnet-5", displayName: "Claude Sonnet 5", description: "Balanced performance and speed", isDefault: true },
|
|
54458
|
+
{ id: "claude-opus-4-8", displayName: "Claude Opus 4.8", description: "Most powerful Claude model" },
|
|
54459
|
+
{ id: "claude-opus-4-7", displayName: "Claude Opus 4.7", description: "High-end reasoning" },
|
|
54460
|
+
{ id: "claude-opus-4-6", displayName: "Claude Opus 4.6", description: "Advanced problem solving" },
|
|
54461
|
+
{ id: "claude-opus-4-5", displayName: "Claude Opus 4.5", description: "Previous Opus generation" },
|
|
54462
|
+
{ id: "claude-sonnet-4-6", displayName: "Claude Sonnet 4.6", description: "Fast Sonnet variant" },
|
|
54463
|
+
{ id: "claude-sonnet-4-5", displayName: "Claude Sonnet 4.5", description: "Previous Sonnet generation" },
|
|
54464
|
+
{ id: "claude-haiku-4-5", displayName: "Claude Haiku 4.5", description: "Fastest Claude model" }
|
|
54445
54465
|
],
|
|
54446
54466
|
"gemini-api": [
|
|
54447
|
-
{ id: "gemini-
|
|
54448
|
-
{ id: "gemini-
|
|
54449
|
-
{ id: "gemini-1
|
|
54467
|
+
{ id: "gemini-3.5-flash", displayName: "Gemini 3.5 Flash", description: "Most intelligent for agentic tasks", isDefault: true },
|
|
54468
|
+
{ id: "gemini-3.1-pro", displayName: "Gemini 3.1 Pro", description: "Advanced problem solving (preview)" },
|
|
54469
|
+
{ id: "gemini-3.1-flash-lite", displayName: "Gemini 3.1 Flash Lite", description: "Budget-friendly performance" },
|
|
54470
|
+
{ id: "gemini-2.5-pro", displayName: "Gemini 2.5 Pro", description: "Complex reasoning and coding" },
|
|
54471
|
+
{ id: "gemini-2.5-flash", displayName: "Gemini 2.5 Flash", description: "Low-latency tasks" },
|
|
54472
|
+
{ id: "gemini-2.5-flash-lite", displayName: "Gemini 2.5 Flash Lite", description: "Fastest Gemini model" }
|
|
54450
54473
|
],
|
|
54451
54474
|
openrouter: [
|
|
54475
|
+
{ id: "openai/gpt-5.5", displayName: "GPT-5.5", description: "OpenAI GPT-5.5 via OpenRouter", isDefault: true },
|
|
54476
|
+
{ id: "openai/gpt-5.4", displayName: "GPT-5.4", description: "OpenAI GPT-5.4 via OpenRouter" },
|
|
54452
54477
|
{ id: "openai/gpt-4o", displayName: "GPT-4o", description: "OpenAI GPT-4o via OpenRouter" },
|
|
54453
|
-
{ id: "anthropic/claude-
|
|
54454
|
-
{ id: "
|
|
54478
|
+
{ id: "anthropic/claude-sonnet-5", displayName: "Claude Sonnet 5", description: "Anthropic Claude via OpenRouter" },
|
|
54479
|
+
{ id: "anthropic/claude-opus-4-8", displayName: "Claude Opus 4.8", description: "Anthropic Claude via OpenRouter" },
|
|
54480
|
+
{ id: "google/gemini-3.5-flash", displayName: "Gemini 3.5 Flash", description: "Google Gemini via OpenRouter" },
|
|
54481
|
+
{ id: "google/gemini-2.5-pro", displayName: "Gemini 2.5 Pro", description: "Google Gemini via OpenRouter" }
|
|
54455
54482
|
],
|
|
54456
54483
|
"openai-compatible": [
|
|
54457
54484
|
{ id: "custom", displayName: "Custom Model", description: "Model name from provider endpoint", isDynamic: true }
|
|
@@ -68170,7 +68197,7 @@ var init_auth = __esm(() => {
|
|
|
68170
68197
|
|
|
68171
68198
|
// src/utils/userAgent.ts
|
|
68172
68199
|
function getURCodeUserAgent() {
|
|
68173
|
-
return `ur/${"1.27.
|
|
68200
|
+
return `ur/${"1.27.1"}`;
|
|
68174
68201
|
}
|
|
68175
68202
|
|
|
68176
68203
|
// src/utils/workloadContext.ts
|
|
@@ -68192,7 +68219,7 @@ function getUserAgent() {
|
|
|
68192
68219
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
68193
68220
|
const workload = getWorkload();
|
|
68194
68221
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
68195
|
-
return `ur-cli/${"1.27.
|
|
68222
|
+
return `ur-cli/${"1.27.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
68196
68223
|
}
|
|
68197
68224
|
function getMCPUserAgent() {
|
|
68198
68225
|
const parts = [];
|
|
@@ -68206,7 +68233,7 @@ function getMCPUserAgent() {
|
|
|
68206
68233
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
68207
68234
|
}
|
|
68208
68235
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
68209
|
-
return `ur/${"1.27.
|
|
68236
|
+
return `ur/${"1.27.1"}${suffix}`;
|
|
68210
68237
|
}
|
|
68211
68238
|
function getWebFetchUserAgent() {
|
|
68212
68239
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -68344,7 +68371,7 @@ var init_user = __esm(() => {
|
|
|
68344
68371
|
deviceId,
|
|
68345
68372
|
sessionId: getSessionId(),
|
|
68346
68373
|
email: getEmail(),
|
|
68347
|
-
appVersion: "1.27.
|
|
68374
|
+
appVersion: "1.27.1",
|
|
68348
68375
|
platform: getHostPlatformForAnalytics(),
|
|
68349
68376
|
organizationUuid,
|
|
68350
68377
|
accountUuid,
|
|
@@ -74861,7 +74888,7 @@ var init_metadata = __esm(() => {
|
|
|
74861
74888
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
74862
74889
|
WHITESPACE_REGEX = /\s+/;
|
|
74863
74890
|
getVersionBase = memoize_default(() => {
|
|
74864
|
-
const match = "1.27.
|
|
74891
|
+
const match = "1.27.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
74865
74892
|
return match ? match[0] : undefined;
|
|
74866
74893
|
});
|
|
74867
74894
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -74901,7 +74928,7 @@ var init_metadata = __esm(() => {
|
|
|
74901
74928
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
74902
74929
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
74903
74930
|
isURAiAuth: isURAISubscriber2(),
|
|
74904
|
-
version: "1.27.
|
|
74931
|
+
version: "1.27.1",
|
|
74905
74932
|
versionBase: getVersionBase(),
|
|
74906
74933
|
buildTime: "",
|
|
74907
74934
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -75571,7 +75598,7 @@ function initialize1PEventLogging() {
|
|
|
75571
75598
|
const platform2 = getPlatform();
|
|
75572
75599
|
const attributes = {
|
|
75573
75600
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
75574
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.27.
|
|
75601
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.27.1"
|
|
75575
75602
|
};
|
|
75576
75603
|
if (platform2 === "wsl") {
|
|
75577
75604
|
const wslVersion = getWslVersion();
|
|
@@ -75598,7 +75625,7 @@ function initialize1PEventLogging() {
|
|
|
75598
75625
|
})
|
|
75599
75626
|
]
|
|
75600
75627
|
});
|
|
75601
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.27.
|
|
75628
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.27.1");
|
|
75602
75629
|
}
|
|
75603
75630
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
75604
75631
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -80895,7 +80922,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
80895
80922
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
80896
80923
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
80897
80924
|
}
|
|
80898
|
-
var urVersion = "1.27.
|
|
80925
|
+
var urVersion = "1.27.1", coverage, priorityRoadmap;
|
|
80899
80926
|
var init_trends = __esm(() => {
|
|
80900
80927
|
coverage = [
|
|
80901
80928
|
{
|
|
@@ -82887,7 +82914,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
82887
82914
|
if (!isAttributionHeaderEnabled()) {
|
|
82888
82915
|
return "";
|
|
82889
82916
|
}
|
|
82890
|
-
const version2 = `${"1.27.
|
|
82917
|
+
const version2 = `${"1.27.1"}.${fingerprint}`;
|
|
82891
82918
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
82892
82919
|
const cch = "";
|
|
82893
82920
|
const workload = getWorkload();
|
|
@@ -190556,7 +190583,7 @@ function getTelemetryAttributes() {
|
|
|
190556
190583
|
attributes["session.id"] = sessionId;
|
|
190557
190584
|
}
|
|
190558
190585
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
190559
|
-
attributes["app.version"] = "1.27.
|
|
190586
|
+
attributes["app.version"] = "1.27.1";
|
|
190560
190587
|
}
|
|
190561
190588
|
const oauthAccount = getOauthAccountInfo();
|
|
190562
190589
|
if (oauthAccount) {
|
|
@@ -225958,7 +225985,7 @@ function getInstallationEnv() {
|
|
|
225958
225985
|
return;
|
|
225959
225986
|
}
|
|
225960
225987
|
function getURCodeVersion() {
|
|
225961
|
-
return "1.27.
|
|
225988
|
+
return "1.27.1";
|
|
225962
225989
|
}
|
|
225963
225990
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
225964
225991
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -228797,7 +228824,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
228797
228824
|
const client2 = new Client({
|
|
228798
228825
|
name: "ur",
|
|
228799
228826
|
title: "UR",
|
|
228800
|
-
version: "1.27.
|
|
228827
|
+
version: "1.27.1",
|
|
228801
228828
|
description: "UR-AGENT autonomous engineering workflow engine",
|
|
228802
228829
|
websiteUrl: PRODUCT_URL
|
|
228803
228830
|
}, {
|
|
@@ -229151,7 +229178,7 @@ var init_client5 = __esm(() => {
|
|
|
229151
229178
|
const client2 = new Client({
|
|
229152
229179
|
name: "ur",
|
|
229153
229180
|
title: "UR",
|
|
229154
|
-
version: "1.27.
|
|
229181
|
+
version: "1.27.1",
|
|
229155
229182
|
description: "UR-AGENT autonomous engineering workflow engine",
|
|
229156
229183
|
websiteUrl: PRODUCT_URL
|
|
229157
229184
|
}, {
|
|
@@ -238964,9 +238991,9 @@ async function assertMinVersion() {
|
|
|
238964
238991
|
if (false) {}
|
|
238965
238992
|
try {
|
|
238966
238993
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
238967
|
-
if (versionConfig.minVersion && lt("1.27.
|
|
238994
|
+
if (versionConfig.minVersion && lt("1.27.1", versionConfig.minVersion)) {
|
|
238968
238995
|
console.error(`
|
|
238969
|
-
It looks like your version of UR (${"1.27.
|
|
238996
|
+
It looks like your version of UR (${"1.27.1"}) needs an update.
|
|
238970
238997
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
238971
238998
|
|
|
238972
238999
|
To update, please run:
|
|
@@ -239182,7 +239209,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
239182
239209
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
239183
239210
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
239184
239211
|
pid: process.pid,
|
|
239185
|
-
currentVersion: "1.27.
|
|
239212
|
+
currentVersion: "1.27.1"
|
|
239186
239213
|
});
|
|
239187
239214
|
return "in_progress";
|
|
239188
239215
|
}
|
|
@@ -239191,7 +239218,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
239191
239218
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
239192
239219
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
239193
239220
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
239194
|
-
currentVersion: "1.27.
|
|
239221
|
+
currentVersion: "1.27.1"
|
|
239195
239222
|
});
|
|
239196
239223
|
console.error(`
|
|
239197
239224
|
Error: Windows NPM detected in WSL
|
|
@@ -239726,7 +239753,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
239726
239753
|
}
|
|
239727
239754
|
async function getDoctorDiagnostic() {
|
|
239728
239755
|
const installationType = await getCurrentInstallationType();
|
|
239729
|
-
const version2 = typeof MACRO !== "undefined" ? "1.27.
|
|
239756
|
+
const version2 = typeof MACRO !== "undefined" ? "1.27.1" : "unknown";
|
|
239730
239757
|
const installationPath = await getInstallationPath();
|
|
239731
239758
|
const invokedBinary = getInvokedBinary();
|
|
239732
239759
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -240661,8 +240688,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
240661
240688
|
const maxVersion = await getMaxVersion();
|
|
240662
240689
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
240663
240690
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
240664
|
-
if (gte("1.27.
|
|
240665
|
-
logForDebugging(`Native installer: current version ${"1.27.
|
|
240691
|
+
if (gte("1.27.1", maxVersion)) {
|
|
240692
|
+
logForDebugging(`Native installer: current version ${"1.27.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
240666
240693
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
240667
240694
|
latency_ms: Date.now() - startTime,
|
|
240668
240695
|
max_version: maxVersion,
|
|
@@ -240673,7 +240700,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
240673
240700
|
version2 = maxVersion;
|
|
240674
240701
|
}
|
|
240675
240702
|
}
|
|
240676
|
-
if (!forceReinstall && version2 === "1.27.
|
|
240703
|
+
if (!forceReinstall && version2 === "1.27.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
240677
240704
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
240678
240705
|
logEvent("tengu_native_update_complete", {
|
|
240679
240706
|
latency_ms: Date.now() - startTime,
|
|
@@ -337585,7 +337612,7 @@ function Feedback({
|
|
|
337585
337612
|
platform: env2.platform,
|
|
337586
337613
|
gitRepo: envInfo.isGit,
|
|
337587
337614
|
terminal: env2.terminal,
|
|
337588
|
-
version: "1.27.
|
|
337615
|
+
version: "1.27.1",
|
|
337589
337616
|
transcript: normalizeMessagesForAPI(messages),
|
|
337590
337617
|
errors: sanitizedErrors,
|
|
337591
337618
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -337777,7 +337804,7 @@ function Feedback({
|
|
|
337777
337804
|
", ",
|
|
337778
337805
|
env2.terminal,
|
|
337779
337806
|
", v",
|
|
337780
|
-
"1.27.
|
|
337807
|
+
"1.27.1"
|
|
337781
337808
|
]
|
|
337782
337809
|
}, undefined, true, undefined, this)
|
|
337783
337810
|
]
|
|
@@ -337883,7 +337910,7 @@ ${sanitizedDescription}
|
|
|
337883
337910
|
` + `**Environment Info**
|
|
337884
337911
|
` + `- Platform: ${env2.platform}
|
|
337885
337912
|
` + `- Terminal: ${env2.terminal}
|
|
337886
|
-
` + `- Version: ${"1.27.
|
|
337913
|
+
` + `- Version: ${"1.27.1"}
|
|
337887
337914
|
` + `- Feedback ID: ${feedbackId}
|
|
337888
337915
|
` + `
|
|
337889
337916
|
**Errors**
|
|
@@ -340994,7 +341021,7 @@ function buildPrimarySection() {
|
|
|
340994
341021
|
}, undefined, false, undefined, this);
|
|
340995
341022
|
return [{
|
|
340996
341023
|
label: "Version",
|
|
340997
|
-
value: "1.27.
|
|
341024
|
+
value: "1.27.1"
|
|
340998
341025
|
}, {
|
|
340999
341026
|
label: "Session name",
|
|
341000
341027
|
value: nameValue
|
|
@@ -344300,7 +344327,7 @@ function Config({
|
|
|
344300
344327
|
}
|
|
344301
344328
|
}, undefined, false, undefined, this)
|
|
344302
344329
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
|
|
344303
|
-
currentVersion: "1.27.
|
|
344330
|
+
currentVersion: "1.27.1",
|
|
344304
344331
|
onChoice: (choice) => {
|
|
344305
344332
|
setShowSubmenu(null);
|
|
344306
344333
|
setTabsHidden(false);
|
|
@@ -344312,7 +344339,7 @@ function Config({
|
|
|
344312
344339
|
autoUpdatesChannel: "stable"
|
|
344313
344340
|
};
|
|
344314
344341
|
if (choice === "stay") {
|
|
344315
|
-
newSettings.minimumVersion = "1.27.
|
|
344342
|
+
newSettings.minimumVersion = "1.27.1";
|
|
344316
344343
|
}
|
|
344317
344344
|
updateSettingsForSource("userSettings", newSettings);
|
|
344318
344345
|
setSettingsData((prev_27) => ({
|
|
@@ -352382,7 +352409,7 @@ function HelpV2(t0) {
|
|
|
352382
352409
|
let t6;
|
|
352383
352410
|
if ($3[31] !== tabs) {
|
|
352384
352411
|
t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
|
|
352385
|
-
title: `UR v${"1.27.
|
|
352412
|
+
title: `UR v${"1.27.1"}`,
|
|
352386
352413
|
color: "professionalBlue",
|
|
352387
352414
|
defaultTab: "general",
|
|
352388
352415
|
children: tabs
|
|
@@ -372484,7 +372511,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
372484
372511
|
return [];
|
|
372485
372512
|
}
|
|
372486
372513
|
}
|
|
372487
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.27.
|
|
372514
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.27.1") {
|
|
372488
372515
|
if (process.env.USER_TYPE === "ant") {
|
|
372489
372516
|
const changelog = "";
|
|
372490
372517
|
if (changelog) {
|
|
@@ -372511,7 +372538,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.27.0")
|
|
|
372511
372538
|
releaseNotes
|
|
372512
372539
|
};
|
|
372513
372540
|
}
|
|
372514
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.27.
|
|
372541
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.27.1") {
|
|
372515
372542
|
if (process.env.USER_TYPE === "ant") {
|
|
372516
372543
|
const changelog = "";
|
|
372517
372544
|
if (changelog) {
|
|
@@ -373681,7 +373708,7 @@ function getRecentActivitySync() {
|
|
|
373681
373708
|
return cachedActivity;
|
|
373682
373709
|
}
|
|
373683
373710
|
function getLogoDisplayData() {
|
|
373684
|
-
const version2 = process.env.DEMO_VERSION ?? "1.27.
|
|
373711
|
+
const version2 = process.env.DEMO_VERSION ?? "1.27.1";
|
|
373685
373712
|
const serverUrl = getDirectConnectServerUrl();
|
|
373686
373713
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd2());
|
|
373687
373714
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -374470,7 +374497,7 @@ function LogoV2() {
|
|
|
374470
374497
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
374471
374498
|
t2 = () => {
|
|
374472
374499
|
const currentConfig = getGlobalConfig();
|
|
374473
|
-
if (currentConfig.lastReleaseNotesSeen === "1.27.
|
|
374500
|
+
if (currentConfig.lastReleaseNotesSeen === "1.27.1") {
|
|
374474
374501
|
return;
|
|
374475
374502
|
}
|
|
374476
374503
|
saveGlobalConfig(_temp326);
|
|
@@ -375155,12 +375182,12 @@ function LogoV2() {
|
|
|
375155
375182
|
return t41;
|
|
375156
375183
|
}
|
|
375157
375184
|
function _temp326(current) {
|
|
375158
|
-
if (current.lastReleaseNotesSeen === "1.27.
|
|
375185
|
+
if (current.lastReleaseNotesSeen === "1.27.1") {
|
|
375159
375186
|
return current;
|
|
375160
375187
|
}
|
|
375161
375188
|
return {
|
|
375162
375189
|
...current,
|
|
375163
|
-
lastReleaseNotesSeen: "1.27.
|
|
375190
|
+
lastReleaseNotesSeen: "1.27.1"
|
|
375164
375191
|
};
|
|
375165
375192
|
}
|
|
375166
375193
|
function _temp243(s_0) {
|
|
@@ -392149,7 +392176,7 @@ function buildToolUseContext(tools, readFileStateCache) {
|
|
|
392149
392176
|
async function handleInitialize() {
|
|
392150
392177
|
return {
|
|
392151
392178
|
name: "ur-agent",
|
|
392152
|
-
version: "1.27.
|
|
392179
|
+
version: "1.27.1",
|
|
392153
392180
|
protocolVersion: "0.1.0"
|
|
392154
392181
|
};
|
|
392155
392182
|
}
|
|
@@ -591143,7 +591170,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
591143
591170
|
smapsRollup,
|
|
591144
591171
|
platform: process.platform,
|
|
591145
591172
|
nodeVersion: process.version,
|
|
591146
|
-
ccVersion: "1.27.
|
|
591173
|
+
ccVersion: "1.27.1"
|
|
591147
591174
|
};
|
|
591148
591175
|
}
|
|
591149
591176
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -591729,7 +591756,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
591729
591756
|
var call136 = async () => {
|
|
591730
591757
|
return {
|
|
591731
591758
|
type: "text",
|
|
591732
|
-
value: "1.27.
|
|
591759
|
+
value: "1.27.1"
|
|
591733
591760
|
};
|
|
591734
591761
|
}, version2, version_default;
|
|
591735
591762
|
var init_version = __esm(() => {
|
|
@@ -601648,7 +601675,7 @@ function generateHtmlReport(data, insights) {
|
|
|
601648
601675
|
</html>`;
|
|
601649
601676
|
}
|
|
601650
601677
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
601651
|
-
const version3 = typeof MACRO !== "undefined" ? "1.27.
|
|
601678
|
+
const version3 = typeof MACRO !== "undefined" ? "1.27.1" : "unknown";
|
|
601652
601679
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
601653
601680
|
const facets_summary = {
|
|
601654
601681
|
total: facets.size,
|
|
@@ -605925,7 +605952,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
605925
605952
|
init_settings2();
|
|
605926
605953
|
init_slowOperations();
|
|
605927
605954
|
init_uuid();
|
|
605928
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.27.
|
|
605955
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.27.1" : "unknown";
|
|
605929
605956
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
605930
605957
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
605931
605958
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -607130,7 +607157,7 @@ var init_filesystem = __esm(() => {
|
|
|
607130
607157
|
});
|
|
607131
607158
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
607132
607159
|
const nonce = randomBytes18(16).toString("hex");
|
|
607133
|
-
return join200(getURTempDir(), "bundled-skills", "1.27.
|
|
607160
|
+
return join200(getURTempDir(), "bundled-skills", "1.27.1", nonce);
|
|
607134
607161
|
});
|
|
607135
607162
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
607136
607163
|
});
|
|
@@ -613420,7 +613447,7 @@ function computeFingerprint(messageText, version3) {
|
|
|
613420
613447
|
}
|
|
613421
613448
|
function computeFingerprintFromMessages(messages) {
|
|
613422
613449
|
const firstMessageText = extractFirstMessageText(messages);
|
|
613423
|
-
return computeFingerprint(firstMessageText, "1.27.
|
|
613450
|
+
return computeFingerprint(firstMessageText, "1.27.1");
|
|
613424
613451
|
}
|
|
613425
613452
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
613426
613453
|
var init_fingerprint = () => {};
|
|
@@ -615286,7 +615313,7 @@ async function sideQuery(opts) {
|
|
|
615286
615313
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
615287
615314
|
}
|
|
615288
615315
|
const messageText = extractFirstUserMessageText(messages);
|
|
615289
|
-
const fingerprint = computeFingerprint(messageText, "1.27.
|
|
615316
|
+
const fingerprint = computeFingerprint(messageText, "1.27.1");
|
|
615290
615317
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
615291
615318
|
const systemBlocks = [
|
|
615292
615319
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -620023,7 +620050,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
620023
620050
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
620024
620051
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
620025
620052
|
betas: getSdkBetas(),
|
|
620026
|
-
ur_version: "1.27.
|
|
620053
|
+
ur_version: "1.27.1",
|
|
620027
620054
|
output_style: outputStyle2,
|
|
620028
620055
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
620029
620056
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -634651,7 +634678,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
634651
634678
|
function getSemverPart(version3) {
|
|
634652
634679
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
634653
634680
|
}
|
|
634654
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.27.
|
|
634681
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.27.1") {
|
|
634655
634682
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
|
|
634656
634683
|
if (!updatedVersion) {
|
|
634657
634684
|
return null;
|
|
@@ -634700,7 +634727,7 @@ function AutoUpdater({
|
|
|
634700
634727
|
return;
|
|
634701
634728
|
}
|
|
634702
634729
|
if (false) {}
|
|
634703
|
-
const currentVersion = "1.27.
|
|
634730
|
+
const currentVersion = "1.27.1";
|
|
634704
634731
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
634705
634732
|
let latestVersion = await getLatestVersion(channel);
|
|
634706
634733
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -634929,12 +634956,12 @@ function NativeAutoUpdater({
|
|
|
634929
634956
|
logEvent("tengu_native_auto_updater_start", {});
|
|
634930
634957
|
try {
|
|
634931
634958
|
const maxVersion = await getMaxVersion();
|
|
634932
|
-
if (maxVersion && gt("1.27.
|
|
634959
|
+
if (maxVersion && gt("1.27.1", maxVersion)) {
|
|
634933
634960
|
const msg = await getMaxVersionMessage();
|
|
634934
634961
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
634935
634962
|
}
|
|
634936
634963
|
const result = await installLatest(channel);
|
|
634937
|
-
const currentVersion = "1.27.
|
|
634964
|
+
const currentVersion = "1.27.1";
|
|
634938
634965
|
const latencyMs = Date.now() - startTime;
|
|
634939
634966
|
if (result.lockFailed) {
|
|
634940
634967
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -635071,17 +635098,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
635071
635098
|
const maxVersion = await getMaxVersion();
|
|
635072
635099
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
635073
635100
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
635074
|
-
if (gte("1.27.
|
|
635075
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.27.
|
|
635101
|
+
if (gte("1.27.1", maxVersion)) {
|
|
635102
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.27.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
635076
635103
|
setUpdateAvailable(false);
|
|
635077
635104
|
return;
|
|
635078
635105
|
}
|
|
635079
635106
|
latest = maxVersion;
|
|
635080
635107
|
}
|
|
635081
|
-
const hasUpdate = latest && !gte("1.27.
|
|
635108
|
+
const hasUpdate = latest && !gte("1.27.1", latest) && !shouldSkipVersion(latest);
|
|
635082
635109
|
setUpdateAvailable(!!hasUpdate);
|
|
635083
635110
|
if (hasUpdate) {
|
|
635084
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.27.
|
|
635111
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.27.1"} -> ${latest}`);
|
|
635085
635112
|
}
|
|
635086
635113
|
};
|
|
635087
635114
|
$3[0] = t1;
|
|
@@ -635115,7 +635142,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
635115
635142
|
wrap: "truncate",
|
|
635116
635143
|
children: [
|
|
635117
635144
|
"currentVersion: ",
|
|
635118
|
-
"1.27.
|
|
635145
|
+
"1.27.1"
|
|
635119
635146
|
]
|
|
635120
635147
|
}, undefined, true, undefined, this);
|
|
635121
635148
|
$3[3] = verbose;
|
|
@@ -647561,7 +647588,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
647561
647588
|
project_dir: getOriginalCwd(),
|
|
647562
647589
|
added_dirs: addedDirs
|
|
647563
647590
|
},
|
|
647564
|
-
version: "1.27.
|
|
647591
|
+
version: "1.27.1",
|
|
647565
647592
|
output_style: {
|
|
647566
647593
|
name: outputStyleName
|
|
647567
647594
|
},
|
|
@@ -647636,7 +647663,7 @@ function StatusLineInner({
|
|
|
647636
647663
|
const taskValues = Object.values(tasks2);
|
|
647637
647664
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
647638
647665
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
647639
|
-
version: "1.27.
|
|
647666
|
+
version: "1.27.1",
|
|
647640
647667
|
providerLabel: providerRuntime.providerLabel,
|
|
647641
647668
|
authMode: providerRuntime.authLabel,
|
|
647642
647669
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -659122,7 +659149,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
659122
659149
|
} catch {}
|
|
659123
659150
|
const data = {
|
|
659124
659151
|
trigger: trigger2,
|
|
659125
|
-
version: "1.27.
|
|
659152
|
+
version: "1.27.1",
|
|
659126
659153
|
platform: process.platform,
|
|
659127
659154
|
transcript,
|
|
659128
659155
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -671004,7 +671031,7 @@ function WelcomeV2() {
|
|
|
671004
671031
|
dimColor: true,
|
|
671005
671032
|
children: [
|
|
671006
671033
|
"v",
|
|
671007
|
-
"1.27.
|
|
671034
|
+
"1.27.1"
|
|
671008
671035
|
]
|
|
671009
671036
|
}, undefined, true, undefined, this)
|
|
671010
671037
|
]
|
|
@@ -672264,7 +672291,7 @@ function completeOnboarding() {
|
|
|
672264
672291
|
saveGlobalConfig((current) => ({
|
|
672265
672292
|
...current,
|
|
672266
672293
|
hasCompletedOnboarding: true,
|
|
672267
|
-
lastOnboardingVersion: "1.27.
|
|
672294
|
+
lastOnboardingVersion: "1.27.1"
|
|
672268
672295
|
}));
|
|
672269
672296
|
}
|
|
672270
672297
|
function showDialog(root2, renderer) {
|
|
@@ -677365,7 +677392,7 @@ function appendToLog(path24, message) {
|
|
|
677365
677392
|
cwd: getFsImplementation().cwd(),
|
|
677366
677393
|
userType: process.env.USER_TYPE,
|
|
677367
677394
|
sessionId: getSessionId(),
|
|
677368
|
-
version: "1.27.
|
|
677395
|
+
version: "1.27.1"
|
|
677369
677396
|
};
|
|
677370
677397
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
677371
677398
|
}
|
|
@@ -681459,8 +681486,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
681459
681486
|
}
|
|
681460
681487
|
async function checkEnvLessBridgeMinVersion() {
|
|
681461
681488
|
const cfg = await getEnvLessBridgeConfig();
|
|
681462
|
-
if (cfg.min_version && lt("1.27.
|
|
681463
|
-
return `Your version of UR (${"1.27.
|
|
681489
|
+
if (cfg.min_version && lt("1.27.1", cfg.min_version)) {
|
|
681490
|
+
return `Your version of UR (${"1.27.1"}) is too old for Remote Control.
|
|
681464
681491
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
681465
681492
|
}
|
|
681466
681493
|
return null;
|
|
@@ -681934,7 +681961,7 @@ async function initBridgeCore(params) {
|
|
|
681934
681961
|
const rawApi = createBridgeApiClient({
|
|
681935
681962
|
baseUrl,
|
|
681936
681963
|
getAccessToken,
|
|
681937
|
-
runnerVersion: "1.27.
|
|
681964
|
+
runnerVersion: "1.27.1",
|
|
681938
681965
|
onDebug: logForDebugging,
|
|
681939
681966
|
onAuth401,
|
|
681940
681967
|
getTrustedDeviceToken
|
|
@@ -687615,7 +687642,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
|
|
|
687615
687642
|
setCwd(cwd3);
|
|
687616
687643
|
const server2 = new Server({
|
|
687617
687644
|
name: "ur/tengu",
|
|
687618
|
-
version: "1.27.
|
|
687645
|
+
version: "1.27.1"
|
|
687619
687646
|
}, {
|
|
687620
687647
|
capabilities: {
|
|
687621
687648
|
tools: {}
|
|
@@ -689428,7 +689455,7 @@ async function update() {
|
|
|
689428
689455
|
logEvent("tengu_update_check", {});
|
|
689429
689456
|
const diagnostic = await getDoctorDiagnostic();
|
|
689430
689457
|
const result = await checkUpgradeStatus({
|
|
689431
|
-
currentVersion: "1.27.
|
|
689458
|
+
currentVersion: "1.27.1",
|
|
689432
689459
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
689433
689460
|
installationType: diagnostic.installationType,
|
|
689434
689461
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -690674,7 +690701,7 @@ ${customInstructions}` : customInstructions;
|
|
|
690674
690701
|
}
|
|
690675
690702
|
}
|
|
690676
690703
|
logForDiagnosticsNoPII("info", "started", {
|
|
690677
|
-
version: "1.27.
|
|
690704
|
+
version: "1.27.1",
|
|
690678
690705
|
is_native_binary: isInBundledMode()
|
|
690679
690706
|
});
|
|
690680
690707
|
registerCleanup(async () => {
|
|
@@ -691458,7 +691485,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
691458
691485
|
pendingHookMessages
|
|
691459
691486
|
}, renderAndRun);
|
|
691460
691487
|
}
|
|
691461
|
-
}).version("1.27.
|
|
691488
|
+
}).version("1.27.1 (UR-AGENT)", "-v, --version", "Output the version number");
|
|
691462
691489
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
691463
691490
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
691464
691491
|
if (canUserConfigureAdvisor()) {
|
|
@@ -692335,7 +692362,7 @@ if (false) {}
|
|
|
692335
692362
|
async function main2() {
|
|
692336
692363
|
const args = process.argv.slice(2);
|
|
692337
692364
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
692338
|
-
console.log(`${"1.27.
|
|
692365
|
+
console.log(`${"1.27.1"} (UR-AGENT)`);
|
|
692339
692366
|
return;
|
|
692340
692367
|
}
|
|
692341
692368
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/package.json
CHANGED