ur-agent 1.80.0 → 1.80.2
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/CHANGELOG.md +22 -0
- package/dist/cli.js +183 -1251
- package/docs/AGENT_FEATURES.md +1 -1
- package/docs/GAP_ANALYSIS_2026-08-11.md +10 -6
- package/docs/USAGE.md +3 -1
- package/docs/VALIDATION.md +1 -1
- package/documentation/index.html +1 -1
- package/extensions/jetbrains-ur/build.gradle.kts +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -87675,6 +87675,33 @@ function dedupeQuestions(questions) {
|
|
|
87675
87675
|
}
|
|
87676
87676
|
return out;
|
|
87677
87677
|
}
|
|
87678
|
+
function repairSingleOptionQuestions(questions) {
|
|
87679
|
+
return dedupeQuestions(questions).map((question) => {
|
|
87680
|
+
if (!isRecord2(question) || !Array.isArray(question.options))
|
|
87681
|
+
return question;
|
|
87682
|
+
if (question.options.length !== 1)
|
|
87683
|
+
return question;
|
|
87684
|
+
const onlyOption = question.options[0];
|
|
87685
|
+
if (!isRecord2(onlyOption) || typeof onlyOption.label !== "string") {
|
|
87686
|
+
return question;
|
|
87687
|
+
}
|
|
87688
|
+
const onlyLabel = duplicateKey(onlyOption.label);
|
|
87689
|
+
if (!onlyLabel)
|
|
87690
|
+
return question;
|
|
87691
|
+
const fallbackLabels = ["Different answer", "Reject suggestion"];
|
|
87692
|
+
const fallbackLabel = fallbackLabels.find((label) => duplicateKey(label) !== onlyLabel);
|
|
87693
|
+
return {
|
|
87694
|
+
...question,
|
|
87695
|
+
options: [
|
|
87696
|
+
onlyOption,
|
|
87697
|
+
{
|
|
87698
|
+
label: fallbackLabel,
|
|
87699
|
+
description: "Reject the suggested option so the agent can ask for a different answer."
|
|
87700
|
+
}
|
|
87701
|
+
]
|
|
87702
|
+
};
|
|
87703
|
+
});
|
|
87704
|
+
}
|
|
87678
87705
|
function describeQuestionPayloadProblems(value) {
|
|
87679
87706
|
const problems = [];
|
|
87680
87707
|
if (!isRecord2(value)) {
|
|
@@ -87921,7 +87948,7 @@ function looksLikeOptionEntry(value) {
|
|
|
87921
87948
|
return typeof entry.label === "string" || typeof entry.value === "string" || typeof entry.header === "string" || typeof entry.description === "string";
|
|
87922
87949
|
}
|
|
87923
87950
|
function recoverFlattenedOptions(input, entries) {
|
|
87924
|
-
if (entries.length <
|
|
87951
|
+
if (entries.length < 1 || !entries.every(looksLikeOptionEntry))
|
|
87925
87952
|
return null;
|
|
87926
87953
|
const questionText = stringField(input, [
|
|
87927
87954
|
"question",
|
|
@@ -88010,7 +88037,7 @@ function normalizeAskUserQuestionInput(value) {
|
|
|
88010
88037
|
const entry = typeof raw === "string" || Array.isArray(raw) || objectValue(raw) ? normalizeQuestionInput({ question: questionText, options: raw }, index2) : null;
|
|
88011
88038
|
return entry;
|
|
88012
88039
|
});
|
|
88013
|
-
const normalized =
|
|
88040
|
+
const normalized = repairSingleOptionQuestions(questions.filter((entry) => entry !== null && typeof entry === "object"));
|
|
88014
88041
|
if (normalized.length > 0) {
|
|
88015
88042
|
return {
|
|
88016
88043
|
questions: normalized.slice(0, 4),
|
|
@@ -88023,14 +88050,14 @@ function normalizeAskUserQuestionInput(value) {
|
|
|
88023
88050
|
const normalized = input.questions.map((entry, index2) => normalizeQuestionInput(entry, index2)).filter((entry) => entry !== null && typeof entry === "object");
|
|
88024
88051
|
if (normalized.length > 0) {
|
|
88025
88052
|
return {
|
|
88026
|
-
questions:
|
|
88053
|
+
questions: repairSingleOptionQuestions(normalized),
|
|
88027
88054
|
...commonFields
|
|
88028
88055
|
};
|
|
88029
88056
|
}
|
|
88030
88057
|
const recovered = recoverFlattenedOptions(input, input.questions);
|
|
88031
88058
|
if (recovered && typeof recovered === "object") {
|
|
88032
88059
|
return {
|
|
88033
|
-
questions:
|
|
88060
|
+
questions: repairSingleOptionQuestions([recovered]),
|
|
88034
88061
|
...commonFields
|
|
88035
88062
|
};
|
|
88036
88063
|
}
|
|
@@ -88040,7 +88067,7 @@ function normalizeAskUserQuestionInput(value) {
|
|
|
88040
88067
|
const singleQuestion = normalizeQuestionInput(input, 0);
|
|
88041
88068
|
if (singleQuestion && singleQuestion !== input) {
|
|
88042
88069
|
return {
|
|
88043
|
-
questions:
|
|
88070
|
+
questions: repairSingleOptionQuestions([singleQuestion]),
|
|
88044
88071
|
...commonFields
|
|
88045
88072
|
};
|
|
88046
88073
|
}
|
|
@@ -107757,7 +107784,7 @@ var init_auth = __esm(() => {
|
|
|
107757
107784
|
|
|
107758
107785
|
// src/utils/userAgent.ts
|
|
107759
107786
|
function getURCodeUserAgent() {
|
|
107760
|
-
return `ur/${"1.80.
|
|
107787
|
+
return `ur/${"1.80.2"}`;
|
|
107761
107788
|
}
|
|
107762
107789
|
|
|
107763
107790
|
// src/utils/workloadContext.ts
|
|
@@ -107779,7 +107806,7 @@ function getUserAgent() {
|
|
|
107779
107806
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
107780
107807
|
const workload = getWorkload();
|
|
107781
107808
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
107782
|
-
return `ur-cli/${"1.80.
|
|
107809
|
+
return `ur-cli/${"1.80.2"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
107783
107810
|
}
|
|
107784
107811
|
function getMCPUserAgent() {
|
|
107785
107812
|
const parts = [];
|
|
@@ -107793,7 +107820,7 @@ function getMCPUserAgent() {
|
|
|
107793
107820
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
107794
107821
|
}
|
|
107795
107822
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
107796
|
-
return `ur/${"1.80.
|
|
107823
|
+
return `ur/${"1.80.2"}${suffix}`;
|
|
107797
107824
|
}
|
|
107798
107825
|
function getWebFetchUserAgent() {
|
|
107799
107826
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -107931,7 +107958,7 @@ var init_user = __esm(() => {
|
|
|
107931
107958
|
deviceId,
|
|
107932
107959
|
sessionId: getSessionId(),
|
|
107933
107960
|
email: getEmail(),
|
|
107934
|
-
appVersion: "1.80.
|
|
107961
|
+
appVersion: "1.80.2",
|
|
107935
107962
|
platform: getHostPlatformForAnalytics(),
|
|
107936
107963
|
organizationUuid,
|
|
107937
107964
|
accountUuid,
|
|
@@ -115818,7 +115845,7 @@ var init_metadata = __esm(() => {
|
|
|
115818
115845
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
115819
115846
|
WHITESPACE_REGEX = /\s+/;
|
|
115820
115847
|
getVersionBase = memoize_default(() => {
|
|
115821
|
-
const match = "1.80.
|
|
115848
|
+
const match = "1.80.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
115822
115849
|
return match ? match[0] : undefined;
|
|
115823
115850
|
});
|
|
115824
115851
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -115858,7 +115885,7 @@ var init_metadata = __esm(() => {
|
|
|
115858
115885
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
115859
115886
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
115860
115887
|
isURAiAuth: isURAISubscriber(),
|
|
115861
|
-
version: "1.80.
|
|
115888
|
+
version: "1.80.2",
|
|
115862
115889
|
versionBase: getVersionBase(),
|
|
115863
115890
|
buildTime: "",
|
|
115864
115891
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -116528,7 +116555,7 @@ function initialize1PEventLogging() {
|
|
|
116528
116555
|
const platform2 = getPlatform();
|
|
116529
116556
|
const attributes = {
|
|
116530
116557
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
116531
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.80.
|
|
116558
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.80.2"
|
|
116532
116559
|
};
|
|
116533
116560
|
if (platform2 === "wsl") {
|
|
116534
116561
|
const wslVersion = getWslVersion();
|
|
@@ -116556,7 +116583,7 @@ function initialize1PEventLogging() {
|
|
|
116556
116583
|
})
|
|
116557
116584
|
]
|
|
116558
116585
|
});
|
|
116559
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.80.
|
|
116586
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.80.2");
|
|
116560
116587
|
}
|
|
116561
116588
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
116562
116589
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -126515,7 +126542,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
126515
126542
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
126516
126543
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
126517
126544
|
}
|
|
126518
|
-
var urVersion = "1.80.
|
|
126545
|
+
var urVersion = "1.80.2", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
|
|
126519
126546
|
var init_trends = __esm(() => {
|
|
126520
126547
|
init_a2aCardSignature();
|
|
126521
126548
|
coverage = [
|
|
@@ -129405,7 +129432,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
129405
129432
|
if (!isAttributionHeaderEnabled()) {
|
|
129406
129433
|
return "";
|
|
129407
129434
|
}
|
|
129408
|
-
const version2 = `${"1.80.
|
|
129435
|
+
const version2 = `${"1.80.2"}.${fingerprint}`;
|
|
129409
129436
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
129410
129437
|
const cch = "";
|
|
129411
129438
|
const workload = getWorkload();
|
|
@@ -184598,7 +184625,7 @@ var init_projectSafety = __esm(() => {
|
|
|
184598
184625
|
function getInstruments() {
|
|
184599
184626
|
if (instruments)
|
|
184600
184627
|
return instruments;
|
|
184601
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.80.
|
|
184628
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.80.2");
|
|
184602
184629
|
instruments = {
|
|
184603
184630
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
184604
184631
|
description: "GenAI operation duration.",
|
|
@@ -184696,7 +184723,7 @@ function genAiAgentAttributes() {
|
|
|
184696
184723
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
184697
184724
|
"gen_ai.provider.name": "ur",
|
|
184698
184725
|
"gen_ai.agent.name": "UR-Nexus",
|
|
184699
|
-
"gen_ai.agent.version": "1.80.
|
|
184726
|
+
"gen_ai.agent.version": "1.80.2"
|
|
184700
184727
|
};
|
|
184701
184728
|
}
|
|
184702
184729
|
function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
@@ -184717,7 +184744,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
|
184717
184744
|
function startGenAiWorkflowSpan(workflowName, workflowRunId) {
|
|
184718
184745
|
const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
|
|
184719
184746
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
184720
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.
|
|
184747
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.2").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184721
184748
|
}
|
|
184722
184749
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
184723
184750
|
try {
|
|
@@ -184755,7 +184782,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
184755
184782
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
184756
184783
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
184757
184784
|
}
|
|
184758
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.
|
|
184785
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.2").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184759
184786
|
}
|
|
184760
184787
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
184761
184788
|
try {
|
|
@@ -278470,7 +278497,7 @@ function getTelemetryAttributes() {
|
|
|
278470
278497
|
attributes["session.id"] = sessionId;
|
|
278471
278498
|
}
|
|
278472
278499
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
278473
|
-
attributes["app.version"] = "1.80.
|
|
278500
|
+
attributes["app.version"] = "1.80.2";
|
|
278474
278501
|
}
|
|
278475
278502
|
const oauthAccount = getOauthAccountInfo();
|
|
278476
278503
|
if (oauthAccount) {
|
|
@@ -319461,7 +319488,7 @@ function getInstallationEnv() {
|
|
|
319461
319488
|
return;
|
|
319462
319489
|
}
|
|
319463
319490
|
function getURCodeVersion() {
|
|
319464
|
-
return "1.80.
|
|
319491
|
+
return "1.80.2";
|
|
319465
319492
|
}
|
|
319466
319493
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
319467
319494
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -326831,7 +326858,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
326831
326858
|
const client2 = new Client({
|
|
326832
326859
|
name: "ur",
|
|
326833
326860
|
title: "UR",
|
|
326834
|
-
version: "1.80.
|
|
326861
|
+
version: "1.80.2",
|
|
326835
326862
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
326836
326863
|
websiteUrl: PRODUCT_URL
|
|
326837
326864
|
}, {
|
|
@@ -327192,7 +327219,7 @@ var init_client5 = __esm(() => {
|
|
|
327192
327219
|
const client2 = new Client({
|
|
327193
327220
|
name: "ur",
|
|
327194
327221
|
title: "UR",
|
|
327195
|
-
version: "1.80.
|
|
327222
|
+
version: "1.80.2",
|
|
327196
327223
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
327197
327224
|
websiteUrl: PRODUCT_URL
|
|
327198
327225
|
}, {
|
|
@@ -339930,7 +339957,7 @@ async function createRuntime() {
|
|
|
339930
339957
|
bootstrapTelemetry();
|
|
339931
339958
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
339932
339959
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
339933
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.80.
|
|
339960
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.80.2"
|
|
339934
339961
|
}));
|
|
339935
339962
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
339936
339963
|
resource,
|
|
@@ -339963,11 +339990,11 @@ async function createRuntime() {
|
|
|
339963
339990
|
setMeterProvider(meterProvider);
|
|
339964
339991
|
setLoggerProvider(loggerProvider);
|
|
339965
339992
|
if (meterProvider) {
|
|
339966
|
-
const meter = meterProvider.getMeter("ur-agent", "1.80.
|
|
339993
|
+
const meter = meterProvider.getMeter("ur-agent", "1.80.2");
|
|
339967
339994
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
339968
339995
|
}
|
|
339969
339996
|
if (loggerProvider) {
|
|
339970
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.80.
|
|
339997
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.80.2"));
|
|
339971
339998
|
}
|
|
339972
339999
|
if (!cleanupRegistered3) {
|
|
339973
340000
|
cleanupRegistered3 = true;
|
|
@@ -340629,9 +340656,9 @@ async function assertMinVersion() {
|
|
|
340629
340656
|
if (false) {}
|
|
340630
340657
|
try {
|
|
340631
340658
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
340632
|
-
if (versionConfig.minVersion && lt("1.80.
|
|
340659
|
+
if (versionConfig.minVersion && lt("1.80.2", versionConfig.minVersion)) {
|
|
340633
340660
|
console.error(`
|
|
340634
|
-
It looks like your version of UR (${"1.80.
|
|
340661
|
+
It looks like your version of UR (${"1.80.2"}) needs an update.
|
|
340635
340662
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
340636
340663
|
|
|
340637
340664
|
To update, please run:
|
|
@@ -340847,7 +340874,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
340847
340874
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
340848
340875
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
340849
340876
|
pid: process.pid,
|
|
340850
|
-
currentVersion: "1.80.
|
|
340877
|
+
currentVersion: "1.80.2"
|
|
340851
340878
|
});
|
|
340852
340879
|
return "in_progress";
|
|
340853
340880
|
}
|
|
@@ -340856,7 +340883,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
340856
340883
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
340857
340884
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
340858
340885
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
340859
|
-
currentVersion: "1.80.
|
|
340886
|
+
currentVersion: "1.80.2"
|
|
340860
340887
|
});
|
|
340861
340888
|
console.error(`
|
|
340862
340889
|
Error: Windows NPM detected in WSL
|
|
@@ -341391,7 +341418,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
341391
341418
|
}
|
|
341392
341419
|
async function getDoctorDiagnostic() {
|
|
341393
341420
|
const installationType = await getCurrentInstallationType();
|
|
341394
|
-
const version2 = typeof MACRO !== "undefined" ? "1.80.
|
|
341421
|
+
const version2 = typeof MACRO !== "undefined" ? "1.80.2" : "unknown";
|
|
341395
341422
|
const installationPath = await getInstallationPath();
|
|
341396
341423
|
const invokedBinary = getInvokedBinary();
|
|
341397
341424
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -342326,8 +342353,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
342326
342353
|
const maxVersion = await getMaxVersion();
|
|
342327
342354
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
342328
342355
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
342329
|
-
if (gte("1.80.
|
|
342330
|
-
logForDebugging(`Native installer: current version ${"1.80.
|
|
342356
|
+
if (gte("1.80.2", maxVersion)) {
|
|
342357
|
+
logForDebugging(`Native installer: current version ${"1.80.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
342331
342358
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
342332
342359
|
latency_ms: Date.now() - startTime,
|
|
342333
342360
|
max_version: maxVersion,
|
|
@@ -342338,7 +342365,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
342338
342365
|
version2 = maxVersion;
|
|
342339
342366
|
}
|
|
342340
342367
|
}
|
|
342341
|
-
if (!forceReinstall && version2 === "1.80.
|
|
342368
|
+
if (!forceReinstall && version2 === "1.80.2" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
342342
342369
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
342343
342370
|
logEvent("tengu_native_update_complete", {
|
|
342344
342371
|
latency_ms: Date.now() - startTime,
|
|
@@ -359252,17 +359279,6 @@ function getPillLabel(tasks) {
|
|
|
359252
359279
|
case "local_agent":
|
|
359253
359280
|
return n2 === 1 ? "1 local agent" : `${n2} local agents`;
|
|
359254
359281
|
case "remote_agent": {
|
|
359255
|
-
const first = tasks[0];
|
|
359256
|
-
if (n2 === 1 && first.type === "remote_agent" && first.isUltraplan) {
|
|
359257
|
-
switch (first.ultraplanPhase) {
|
|
359258
|
-
case "plan_ready":
|
|
359259
|
-
return `${DIAMOND_FILLED} ultraplan ready`;
|
|
359260
|
-
case "needs_input":
|
|
359261
|
-
return `${DIAMOND_OPEN} ultraplan needs your input`;
|
|
359262
|
-
default:
|
|
359263
|
-
return `${DIAMOND_OPEN} ultraplan`;
|
|
359264
|
-
}
|
|
359265
|
-
}
|
|
359266
359282
|
return n2 === 1 ? `${DIAMOND_OPEN} 1 cloud session` : `${DIAMOND_OPEN} ${n2} cloud sessions`;
|
|
359267
359283
|
}
|
|
359268
359284
|
case "local_workflow":
|
|
@@ -359275,12 +359291,6 @@ function getPillLabel(tasks) {
|
|
|
359275
359291
|
}
|
|
359276
359292
|
return `${n2} background ${n2 === 1 ? "task" : "tasks"}`;
|
|
359277
359293
|
}
|
|
359278
|
-
function pillNeedsCta(tasks) {
|
|
359279
|
-
if (tasks.length !== 1)
|
|
359280
|
-
return false;
|
|
359281
|
-
const t = tasks[0];
|
|
359282
|
-
return t.type === "remote_agent" && t.isUltraplan === true && t.ultraplanPhase !== undefined;
|
|
359283
|
-
}
|
|
359284
359294
|
var init_pillLabel = __esm(() => {
|
|
359285
359295
|
init_figures2();
|
|
359286
359296
|
});
|
|
@@ -368953,8 +368963,7 @@ async function teleportToRemote(options2) {
|
|
|
368953
368963
|
request_id: `set-mode-${randomUUID36()}`,
|
|
368954
368964
|
request: {
|
|
368955
368965
|
subtype: "set_permission_mode",
|
|
368956
|
-
mode: options2.permissionMode
|
|
368957
|
-
ultraplan: options2.ultraplan
|
|
368966
|
+
mode: options2.permissionMode
|
|
368958
368967
|
}
|
|
368959
368968
|
}
|
|
368960
368969
|
});
|
|
@@ -368975,7 +368984,7 @@ async function teleportToRemote(options2) {
|
|
|
368975
368984
|
});
|
|
368976
368985
|
}
|
|
368977
368986
|
const requestBody = {
|
|
368978
|
-
title:
|
|
368987
|
+
title: sessionTitle,
|
|
368979
368988
|
events: events2,
|
|
368980
368989
|
session_context: sessionContext,
|
|
368981
368990
|
environment_id: environmentId
|
|
@@ -369283,7 +369292,6 @@ function registerRemoteAgentTask(options2) {
|
|
|
369283
369292
|
context: context5,
|
|
369284
369293
|
toolUseId,
|
|
369285
369294
|
isRemoteReview,
|
|
369286
|
-
isUltraplan,
|
|
369287
369295
|
isLongRunning,
|
|
369288
369296
|
remoteTaskMetadata
|
|
369289
369297
|
} = options2;
|
|
@@ -369300,7 +369308,6 @@ function registerRemoteAgentTask(options2) {
|
|
|
369300
369308
|
todoList: [],
|
|
369301
369309
|
log: [],
|
|
369302
369310
|
isRemoteReview,
|
|
369303
|
-
isUltraplan,
|
|
369304
369311
|
isLongRunning,
|
|
369305
369312
|
pollStartedAt: Date.now(),
|
|
369306
369313
|
remoteTaskMetadata
|
|
@@ -369314,7 +369321,6 @@ function registerRemoteAgentTask(options2) {
|
|
|
369314
369321
|
command,
|
|
369315
369322
|
spawnedAt: Date.now(),
|
|
369316
369323
|
toolUseId,
|
|
369317
|
-
isUltraplan,
|
|
369318
369324
|
isRemoteReview,
|
|
369319
369325
|
isLongRunning,
|
|
369320
369326
|
remoteTaskMetadata
|
|
@@ -369366,7 +369372,6 @@ async function restoreRemoteAgentTasksImpl(context5) {
|
|
|
369366
369372
|
todoList: [],
|
|
369367
369373
|
log: [],
|
|
369368
369374
|
isRemoteReview: meta.isRemoteReview,
|
|
369369
|
-
isUltraplan: meta.isUltraplan,
|
|
369370
369375
|
isLongRunning: meta.isLongRunning,
|
|
369371
369376
|
startTime: meta.spawnedAt,
|
|
369372
369377
|
pollStartedAt: Date.now(),
|
|
@@ -369439,7 +369444,7 @@ function startRemoteSessionPolling(taskId, context5) {
|
|
|
369439
369444
|
return;
|
|
369440
369445
|
}
|
|
369441
369446
|
}
|
|
369442
|
-
const result = task.
|
|
369447
|
+
const result = task.isLongRunning ? undefined : accumulatedLog.findLast((msg) => msg.type === "result");
|
|
369443
369448
|
if (task.isRemoteReview && logGrew && cachedReviewContent === null) {
|
|
369444
369449
|
cachedReviewContent = extractReviewTagFromLog(response.newEvents);
|
|
369445
369450
|
}
|
|
@@ -369572,7 +369577,7 @@ var init_RemoteAgentTask = __esm(() => {
|
|
|
369572
369577
|
init_framework();
|
|
369573
369578
|
init_api2();
|
|
369574
369579
|
init_teleport();
|
|
369575
|
-
REMOTE_TASK_TYPES = ["remote-agent", "
|
|
369580
|
+
REMOTE_TASK_TYPES = ["remote-agent", "ultrareview", "autofix-pr", "background-pr"];
|
|
369576
369581
|
completionCheckers = new Map;
|
|
369577
369582
|
RemoteAgentTask = {
|
|
369578
369583
|
name: "RemoteAgentTask",
|
|
@@ -412380,7 +412385,7 @@ function isAnyTracingEnabled() {
|
|
|
412380
412385
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
412381
412386
|
}
|
|
412382
412387
|
function getTracer() {
|
|
412383
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.80.
|
|
412388
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.80.2");
|
|
412384
412389
|
}
|
|
412385
412390
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
412386
412391
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -442812,7 +442817,7 @@ function Feedback({
|
|
|
442812
442817
|
platform: env2.platform,
|
|
442813
442818
|
gitRepo: envInfo.isGit,
|
|
442814
442819
|
terminal: env2.terminal,
|
|
442815
|
-
version: "1.80.
|
|
442820
|
+
version: "1.80.2",
|
|
442816
442821
|
transcript: normalizeMessagesForAPI(messages),
|
|
442817
442822
|
errors: sanitizedErrors,
|
|
442818
442823
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -443004,7 +443009,7 @@ function Feedback({
|
|
|
443004
443009
|
", ",
|
|
443005
443010
|
env2.terminal,
|
|
443006
443011
|
", v",
|
|
443007
|
-
"1.80.
|
|
443012
|
+
"1.80.2"
|
|
443008
443013
|
]
|
|
443009
443014
|
}, undefined, true, undefined, this)
|
|
443010
443015
|
]
|
|
@@ -443110,7 +443115,7 @@ ${sanitizedDescription}
|
|
|
443110
443115
|
` + `**Environment Info**
|
|
443111
443116
|
` + `- Platform: ${env2.platform}
|
|
443112
443117
|
` + `- Terminal: ${env2.terminal}
|
|
443113
|
-
` + `- Version: ${"1.80.
|
|
443118
|
+
` + `- Version: ${"1.80.2"}
|
|
443114
443119
|
` + `- Feedback ID: ${feedbackId}
|
|
443115
443120
|
` + `
|
|
443116
443121
|
**Errors**
|
|
@@ -446220,7 +446225,7 @@ function buildPrimarySection() {
|
|
|
446220
446225
|
}, undefined, false, undefined, this);
|
|
446221
446226
|
return [{
|
|
446222
446227
|
label: "Version",
|
|
446223
|
-
value: "1.80.
|
|
446228
|
+
value: "1.80.2"
|
|
446224
446229
|
}, {
|
|
446225
446230
|
label: "Session name",
|
|
446226
446231
|
value: nameValue
|
|
@@ -449602,7 +449607,7 @@ function Config({
|
|
|
449602
449607
|
}
|
|
449603
449608
|
}, undefined, false, undefined, this)
|
|
449604
449609
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
449605
|
-
currentVersion: "1.80.
|
|
449610
|
+
currentVersion: "1.80.2",
|
|
449606
449611
|
onChoice: (choice) => {
|
|
449607
449612
|
setShowSubmenu(null);
|
|
449608
449613
|
setTabsHidden(false);
|
|
@@ -449614,7 +449619,7 @@ function Config({
|
|
|
449614
449619
|
autoUpdatesChannel: "stable"
|
|
449615
449620
|
};
|
|
449616
449621
|
if (choice === "stay") {
|
|
449617
|
-
newSettings.minimumVersion = "1.80.
|
|
449622
|
+
newSettings.minimumVersion = "1.80.2";
|
|
449618
449623
|
}
|
|
449619
449624
|
updateSettingsForSource("userSettings", newSettings);
|
|
449620
449625
|
setSettingsData((prev_27) => ({
|
|
@@ -457872,7 +457877,7 @@ function HelpV2(t0) {
|
|
|
457872
457877
|
let t6;
|
|
457873
457878
|
if ($2[31] !== tabs) {
|
|
457874
457879
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
457875
|
-
title: `UR v${"1.80.
|
|
457880
|
+
title: `UR v${"1.80.2"}`,
|
|
457876
457881
|
color: "professionalBlue",
|
|
457877
457882
|
defaultTab: "general",
|
|
457878
457883
|
children: tabs
|
|
@@ -458805,7 +458810,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
458805
458810
|
async function handleInitialize(options2) {
|
|
458806
458811
|
return {
|
|
458807
458812
|
name: "UR",
|
|
458808
|
-
version: "1.80.
|
|
458813
|
+
version: "1.80.2",
|
|
458809
458814
|
protocolVersion: "0.1.0",
|
|
458810
458815
|
workspaceRoot: options2.cwd,
|
|
458811
458816
|
capabilities: {
|
|
@@ -475913,7 +475918,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
475913
475918
|
return [];
|
|
475914
475919
|
}
|
|
475915
475920
|
}
|
|
475916
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.
|
|
475921
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.2") {
|
|
475917
475922
|
if (process.env.USER_TYPE === "ant") {
|
|
475918
475923
|
const changelog = "";
|
|
475919
475924
|
if (changelog) {
|
|
@@ -475940,7 +475945,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.0")
|
|
|
475940
475945
|
releaseNotes
|
|
475941
475946
|
};
|
|
475942
475947
|
}
|
|
475943
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.80.
|
|
475948
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.80.2") {
|
|
475944
475949
|
if (process.env.USER_TYPE === "ant") {
|
|
475945
475950
|
const changelog = "";
|
|
475946
475951
|
if (changelog) {
|
|
@@ -478845,7 +478850,7 @@ function getRecentActivitySync() {
|
|
|
478845
478850
|
return cachedActivity;
|
|
478846
478851
|
}
|
|
478847
478852
|
function getLogoDisplayData() {
|
|
478848
|
-
const version2 = process.env.DEMO_VERSION ?? "1.80.
|
|
478853
|
+
const version2 = process.env.DEMO_VERSION ?? "1.80.2";
|
|
478849
478854
|
const serverUrl = getDirectConnectServerUrl();
|
|
478850
478855
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
478851
478856
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -479713,7 +479718,7 @@ function LogoV2() {
|
|
|
479713
479718
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
479714
479719
|
t2 = () => {
|
|
479715
479720
|
const currentConfig = getGlobalConfig();
|
|
479716
|
-
if (currentConfig.lastReleaseNotesSeen === "1.80.
|
|
479721
|
+
if (currentConfig.lastReleaseNotesSeen === "1.80.2") {
|
|
479717
479722
|
return;
|
|
479718
479723
|
}
|
|
479719
479724
|
saveGlobalConfig(_temp325);
|
|
@@ -480398,12 +480403,12 @@ function LogoV2() {
|
|
|
480398
480403
|
return t41;
|
|
480399
480404
|
}
|
|
480400
480405
|
function _temp325(current) {
|
|
480401
|
-
if (current.lastReleaseNotesSeen === "1.80.
|
|
480406
|
+
if (current.lastReleaseNotesSeen === "1.80.2") {
|
|
480402
480407
|
return current;
|
|
480403
480408
|
}
|
|
480404
480409
|
return {
|
|
480405
480410
|
...current,
|
|
480406
|
-
lastReleaseNotesSeen: "1.80.
|
|
480411
|
+
lastReleaseNotesSeen: "1.80.2"
|
|
480407
480412
|
};
|
|
480408
480413
|
}
|
|
480409
480414
|
function _temp241(s_0) {
|
|
@@ -488720,528 +488725,6 @@ var init_teammateViewHelpers = __esm(() => {
|
|
|
488720
488725
|
init_Task();
|
|
488721
488726
|
});
|
|
488722
488727
|
|
|
488723
|
-
// src/bridge/types.ts
|
|
488724
|
-
var DEFAULT_SESSION_TIMEOUT_MS, BRIDGE_LOGIN_INSTRUCTION = "Remote Control is only available with ur.com subscriptions. Please use `/login` to sign in with your ur.com account.", BRIDGE_LOGIN_ERROR, REMOTE_CONTROL_DISCONNECTED_MSG = "Remote Control disconnected.";
|
|
488725
|
-
var init_types14 = __esm(() => {
|
|
488726
|
-
DEFAULT_SESSION_TIMEOUT_MS = 24 * 60 * 60 * 1000;
|
|
488727
|
-
BRIDGE_LOGIN_ERROR = `Error: You must be logged in to use Remote Control.
|
|
488728
|
-
|
|
488729
|
-
` + BRIDGE_LOGIN_INSTRUCTION;
|
|
488730
|
-
});
|
|
488731
|
-
|
|
488732
|
-
// src/utils/ultraplan/ccrSession.ts
|
|
488733
|
-
function sdkMessageContent(message) {
|
|
488734
|
-
if (!("message" in message)) {
|
|
488735
|
-
return;
|
|
488736
|
-
}
|
|
488737
|
-
const sdkMessage = message.message;
|
|
488738
|
-
if (!sdkMessage || typeof sdkMessage !== "object") {
|
|
488739
|
-
return;
|
|
488740
|
-
}
|
|
488741
|
-
return sdkMessage.content;
|
|
488742
|
-
}
|
|
488743
|
-
function isToolUseBlock(block2) {
|
|
488744
|
-
return !!block2 && typeof block2 === "object" && block2.type === "tool_use" && typeof block2.id === "string" && typeof block2.name === "string";
|
|
488745
|
-
}
|
|
488746
|
-
function isToolResultBlockParam(block2) {
|
|
488747
|
-
return !!block2 && typeof block2 === "object" && block2.type === "tool_result" && typeof block2.tool_use_id === "string";
|
|
488748
|
-
}
|
|
488749
|
-
|
|
488750
|
-
class ExitPlanModeScanner {
|
|
488751
|
-
exitPlanCalls = [];
|
|
488752
|
-
results = new Map;
|
|
488753
|
-
rejectedIds = new Set;
|
|
488754
|
-
terminated = null;
|
|
488755
|
-
rescanAfterRejection = false;
|
|
488756
|
-
everSeenPending = false;
|
|
488757
|
-
get rejectCount() {
|
|
488758
|
-
return this.rejectedIds.size;
|
|
488759
|
-
}
|
|
488760
|
-
get hasPendingPlan() {
|
|
488761
|
-
const id = this.exitPlanCalls.findLast((c4) => !this.rejectedIds.has(c4));
|
|
488762
|
-
return id !== undefined && !this.results.has(id);
|
|
488763
|
-
}
|
|
488764
|
-
ingest(newEvents) {
|
|
488765
|
-
for (const m of newEvents) {
|
|
488766
|
-
if (m.type === "assistant") {
|
|
488767
|
-
const content = sdkMessageContent(m);
|
|
488768
|
-
if (!Array.isArray(content))
|
|
488769
|
-
continue;
|
|
488770
|
-
for (const block2 of content) {
|
|
488771
|
-
if (isToolUseBlock(block2) && block2.name === EXIT_PLAN_MODE_V2_TOOL_NAME) {
|
|
488772
|
-
this.exitPlanCalls.push(block2.id);
|
|
488773
|
-
}
|
|
488774
|
-
}
|
|
488775
|
-
} else if (m.type === "user") {
|
|
488776
|
-
const content = sdkMessageContent(m);
|
|
488777
|
-
if (!Array.isArray(content))
|
|
488778
|
-
continue;
|
|
488779
|
-
for (const block2 of content) {
|
|
488780
|
-
if (isToolResultBlockParam(block2)) {
|
|
488781
|
-
this.results.set(block2.tool_use_id, block2);
|
|
488782
|
-
}
|
|
488783
|
-
}
|
|
488784
|
-
} else if (m.type === "result" && m.subtype !== "success") {
|
|
488785
|
-
this.terminated = { subtype: m.subtype };
|
|
488786
|
-
}
|
|
488787
|
-
}
|
|
488788
|
-
const shouldScan = newEvents.length > 0 || this.rescanAfterRejection;
|
|
488789
|
-
this.rescanAfterRejection = false;
|
|
488790
|
-
let found = null;
|
|
488791
|
-
if (shouldScan) {
|
|
488792
|
-
for (let i3 = this.exitPlanCalls.length - 1;i3 >= 0; i3--) {
|
|
488793
|
-
const id = this.exitPlanCalls[i3];
|
|
488794
|
-
if (this.rejectedIds.has(id))
|
|
488795
|
-
continue;
|
|
488796
|
-
const tr = this.results.get(id);
|
|
488797
|
-
if (!tr) {
|
|
488798
|
-
found = { kind: "pending" };
|
|
488799
|
-
} else if (tr.is_error === true) {
|
|
488800
|
-
const teleportPlan = extractTeleportPlan(tr.content);
|
|
488801
|
-
found = teleportPlan !== null ? { kind: "teleport", plan: teleportPlan } : { kind: "rejected", id };
|
|
488802
|
-
} else {
|
|
488803
|
-
found = { kind: "approved", plan: extractApprovedPlan(tr.content) };
|
|
488804
|
-
}
|
|
488805
|
-
break;
|
|
488806
|
-
}
|
|
488807
|
-
if (found?.kind === "approved" || found?.kind === "teleport")
|
|
488808
|
-
return found;
|
|
488809
|
-
}
|
|
488810
|
-
if (found?.kind === "rejected") {
|
|
488811
|
-
this.rejectedIds.add(found.id);
|
|
488812
|
-
this.rescanAfterRejection = true;
|
|
488813
|
-
}
|
|
488814
|
-
if (this.terminated) {
|
|
488815
|
-
return { kind: "terminated", subtype: this.terminated.subtype };
|
|
488816
|
-
}
|
|
488817
|
-
if (found?.kind === "rejected") {
|
|
488818
|
-
return found;
|
|
488819
|
-
}
|
|
488820
|
-
if (found?.kind === "pending") {
|
|
488821
|
-
this.everSeenPending = true;
|
|
488822
|
-
return found;
|
|
488823
|
-
}
|
|
488824
|
-
return { kind: "unchanged" };
|
|
488825
|
-
}
|
|
488826
|
-
}
|
|
488827
|
-
async function pollForApprovedExitPlanMode(sessionId, timeoutMs, onPhaseChange, shouldStop) {
|
|
488828
|
-
const deadline = Date.now() + timeoutMs;
|
|
488829
|
-
const scanner = new ExitPlanModeScanner;
|
|
488830
|
-
let cursor = null;
|
|
488831
|
-
let failures = 0;
|
|
488832
|
-
let lastPhase = "running";
|
|
488833
|
-
while (Date.now() < deadline) {
|
|
488834
|
-
if (shouldStop?.()) {
|
|
488835
|
-
throw new UltraplanPollError("poll stopped by caller", "stopped", scanner.rejectCount);
|
|
488836
|
-
}
|
|
488837
|
-
let newEvents;
|
|
488838
|
-
let sessionStatus;
|
|
488839
|
-
try {
|
|
488840
|
-
const resp = await pollRemoteSessionEvents(sessionId, cursor);
|
|
488841
|
-
newEvents = resp.newEvents;
|
|
488842
|
-
cursor = resp.lastEventId;
|
|
488843
|
-
sessionStatus = resp.sessionStatus;
|
|
488844
|
-
failures = 0;
|
|
488845
|
-
} catch (e) {
|
|
488846
|
-
const transient = isTransientNetworkError(e);
|
|
488847
|
-
if (!transient || ++failures >= MAX_CONSECUTIVE_FAILURES) {
|
|
488848
|
-
throw new UltraplanPollError(e instanceof Error ? e.message : String(e), "network_or_unknown", scanner.rejectCount, { cause: e });
|
|
488849
|
-
}
|
|
488850
|
-
await sleep2(POLL_INTERVAL_MS2);
|
|
488851
|
-
continue;
|
|
488852
|
-
}
|
|
488853
|
-
let result;
|
|
488854
|
-
try {
|
|
488855
|
-
result = scanner.ingest(newEvents);
|
|
488856
|
-
} catch (e) {
|
|
488857
|
-
throw new UltraplanPollError(e instanceof Error ? e.message : String(e), "extract_marker_missing", scanner.rejectCount);
|
|
488858
|
-
}
|
|
488859
|
-
if (result.kind === "approved") {
|
|
488860
|
-
return {
|
|
488861
|
-
plan: result.plan,
|
|
488862
|
-
rejectCount: scanner.rejectCount,
|
|
488863
|
-
executionTarget: "remote"
|
|
488864
|
-
};
|
|
488865
|
-
}
|
|
488866
|
-
if (result.kind === "teleport") {
|
|
488867
|
-
return {
|
|
488868
|
-
plan: result.plan,
|
|
488869
|
-
rejectCount: scanner.rejectCount,
|
|
488870
|
-
executionTarget: "local"
|
|
488871
|
-
};
|
|
488872
|
-
}
|
|
488873
|
-
if (result.kind === "terminated") {
|
|
488874
|
-
throw new UltraplanPollError(`remote session ended (${result.subtype}) before plan approval`, "terminated", scanner.rejectCount);
|
|
488875
|
-
}
|
|
488876
|
-
const quietIdle = (sessionStatus === "idle" || sessionStatus === "requires_action") && newEvents.length === 0;
|
|
488877
|
-
const phase = scanner.hasPendingPlan ? "plan_ready" : quietIdle ? "needs_input" : "running";
|
|
488878
|
-
if (phase !== lastPhase) {
|
|
488879
|
-
logForDebugging(`[ultraplan] phase ${lastPhase} \u2192 ${phase}`);
|
|
488880
|
-
lastPhase = phase;
|
|
488881
|
-
onPhaseChange?.(phase);
|
|
488882
|
-
}
|
|
488883
|
-
await sleep2(POLL_INTERVAL_MS2);
|
|
488884
|
-
}
|
|
488885
|
-
throw new UltraplanPollError(scanner.everSeenPending ? `no approval after ${timeoutMs / 1000}s` : `ExitPlanMode never reached after ${timeoutMs / 1000}s (the remote container failed to start, or session ID mismatch?)`, scanner.everSeenPending ? "timeout_pending" : "timeout_no_plan", scanner.rejectCount);
|
|
488886
|
-
}
|
|
488887
|
-
function contentToText3(content) {
|
|
488888
|
-
return typeof content === "string" ? content : Array.isArray(content) ? content.map((b) => ("text" in b) ? b.text : "").join("") : "";
|
|
488889
|
-
}
|
|
488890
|
-
function extractTeleportPlan(content) {
|
|
488891
|
-
const text2 = contentToText3(content);
|
|
488892
|
-
const marker = `${ULTRAPLAN_TELEPORT_SENTINEL}
|
|
488893
|
-
`;
|
|
488894
|
-
const idx = text2.indexOf(marker);
|
|
488895
|
-
if (idx === -1)
|
|
488896
|
-
return null;
|
|
488897
|
-
return text2.slice(idx + marker.length).trimEnd();
|
|
488898
|
-
}
|
|
488899
|
-
function extractApprovedPlan(content) {
|
|
488900
|
-
const text2 = contentToText3(content);
|
|
488901
|
-
const markers = [
|
|
488902
|
-
`## Approved Plan (edited by user):
|
|
488903
|
-
`,
|
|
488904
|
-
`## Approved Plan:
|
|
488905
|
-
`
|
|
488906
|
-
];
|
|
488907
|
-
for (const marker of markers) {
|
|
488908
|
-
const idx = text2.indexOf(marker);
|
|
488909
|
-
if (idx !== -1) {
|
|
488910
|
-
return text2.slice(idx + marker.length).trimEnd();
|
|
488911
|
-
}
|
|
488912
|
-
}
|
|
488913
|
-
throw new Error(`ExitPlanMode approved but tool_result has no "## Approved Plan:" marker \u2014 remote may have hit the empty-plan or isAgent branch. Content preview: ${text2.slice(0, 200)}`);
|
|
488914
|
-
}
|
|
488915
|
-
var POLL_INTERVAL_MS2 = 3000, MAX_CONSECUTIVE_FAILURES = 5, UltraplanPollError, ULTRAPLAN_TELEPORT_SENTINEL = "__ULTRAPLAN_TELEPORT_LOCAL__";
|
|
488916
|
-
var init_ccrSession = __esm(() => {
|
|
488917
|
-
init_debug();
|
|
488918
|
-
init_api2();
|
|
488919
|
-
init_teleport();
|
|
488920
|
-
UltraplanPollError = class UltraplanPollError extends Error {
|
|
488921
|
-
reason;
|
|
488922
|
-
rejectCount;
|
|
488923
|
-
constructor(message, reason, rejectCount, options2) {
|
|
488924
|
-
super(message, options2);
|
|
488925
|
-
this.reason = reason;
|
|
488926
|
-
this.rejectCount = rejectCount;
|
|
488927
|
-
this.name = "UltraplanPollError";
|
|
488928
|
-
}
|
|
488929
|
-
};
|
|
488930
|
-
});
|
|
488931
|
-
|
|
488932
|
-
// src/utils/ultraplan/prompt.txt
|
|
488933
|
-
var require_prompt = __commonJS((exports, module) => {
|
|
488934
|
-
module.exports = `<system-reminder>
|
|
488935
|
-
You are preparing a careful implementation plan for the user's request.
|
|
488936
|
-
|
|
488937
|
-
Clarify the goal, inspect the relevant repository context, identify risks, and produce a concrete plan that can be reviewed before execution. Keep the plan focused on the requested change and avoid unrelated refactors.
|
|
488938
|
-
</system-reminder>
|
|
488939
|
-
`;
|
|
488940
|
-
});
|
|
488941
|
-
|
|
488942
|
-
// src/commands/ultraplan.tsx
|
|
488943
|
-
function getUltraplanModel() {
|
|
488944
|
-
return getFeatureValue_CACHED_MAY_BE_STALE("tengu_ultraplan_model", ALL_MODEL_CONFIGS.modelO46.firstParty);
|
|
488945
|
-
}
|
|
488946
|
-
function buildUltraplanPrompt(blurb, seedPlan) {
|
|
488947
|
-
const parts = [];
|
|
488948
|
-
if (seedPlan) {
|
|
488949
|
-
parts.push("Here is a draft plan to refine:", "", seedPlan, "");
|
|
488950
|
-
}
|
|
488951
|
-
parts.push(ULTRAPLAN_INSTRUCTIONS);
|
|
488952
|
-
if (blurb) {
|
|
488953
|
-
parts.push("", blurb);
|
|
488954
|
-
}
|
|
488955
|
-
return parts.join(`
|
|
488956
|
-
`);
|
|
488957
|
-
}
|
|
488958
|
-
function startDetachedPoll(taskId, sessionId, url3, getAppState, setAppState) {
|
|
488959
|
-
const started = Date.now();
|
|
488960
|
-
let failed = false;
|
|
488961
|
-
(async () => {
|
|
488962
|
-
try {
|
|
488963
|
-
const {
|
|
488964
|
-
plan,
|
|
488965
|
-
rejectCount,
|
|
488966
|
-
executionTarget
|
|
488967
|
-
} = await pollForApprovedExitPlanMode(sessionId, ULTRAPLAN_TIMEOUT_MS, (phase) => {
|
|
488968
|
-
if (phase === "needs_input")
|
|
488969
|
-
logEvent("tengu_ultraplan_awaiting_input", {});
|
|
488970
|
-
updateTaskState(taskId, setAppState, (t) => {
|
|
488971
|
-
if (t.status !== "running")
|
|
488972
|
-
return t;
|
|
488973
|
-
const next = phase === "running" ? undefined : phase;
|
|
488974
|
-
return t.ultraplanPhase === next ? t : {
|
|
488975
|
-
...t,
|
|
488976
|
-
ultraplanPhase: next
|
|
488977
|
-
};
|
|
488978
|
-
});
|
|
488979
|
-
}, () => getAppState().tasks?.[taskId]?.status !== "running");
|
|
488980
|
-
logEvent("tengu_ultraplan_approved", {
|
|
488981
|
-
duration_ms: Date.now() - started,
|
|
488982
|
-
plan_length: plan.length,
|
|
488983
|
-
reject_count: rejectCount,
|
|
488984
|
-
execution_target: executionTarget
|
|
488985
|
-
});
|
|
488986
|
-
if (executionTarget === "remote") {
|
|
488987
|
-
const task = getAppState().tasks?.[taskId];
|
|
488988
|
-
if (task?.status !== "running")
|
|
488989
|
-
return;
|
|
488990
|
-
updateTaskState(taskId, setAppState, (t) => t.status !== "running" ? t : {
|
|
488991
|
-
...t,
|
|
488992
|
-
status: "completed",
|
|
488993
|
-
endTime: Date.now()
|
|
488994
|
-
});
|
|
488995
|
-
setAppState((prev) => prev.ultraplanSessionUrl === url3 ? {
|
|
488996
|
-
...prev,
|
|
488997
|
-
ultraplanSessionUrl: undefined
|
|
488998
|
-
} : prev);
|
|
488999
|
-
enqueuePendingNotification({
|
|
489000
|
-
value: [`Ultraplan approved \u2014 executing in UR on the web. Follow along at: ${url3}`, "", "Results will land as a pull request when the remote session finishes. There is nothing to do here."].join(`
|
|
489001
|
-
`),
|
|
489002
|
-
mode: "task-notification"
|
|
489003
|
-
});
|
|
489004
|
-
} else {
|
|
489005
|
-
setAppState((prev) => {
|
|
489006
|
-
const task = prev.tasks?.[taskId];
|
|
489007
|
-
if (!task || task.status !== "running")
|
|
489008
|
-
return prev;
|
|
489009
|
-
return {
|
|
489010
|
-
...prev,
|
|
489011
|
-
ultraplanPendingChoice: {
|
|
489012
|
-
plan,
|
|
489013
|
-
sessionId,
|
|
489014
|
-
taskId
|
|
489015
|
-
}
|
|
489016
|
-
};
|
|
489017
|
-
});
|
|
489018
|
-
}
|
|
489019
|
-
} catch (e) {
|
|
489020
|
-
const task = getAppState().tasks?.[taskId];
|
|
489021
|
-
if (task?.status !== "running")
|
|
489022
|
-
return;
|
|
489023
|
-
failed = true;
|
|
489024
|
-
logEvent("tengu_ultraplan_failed", {
|
|
489025
|
-
duration_ms: Date.now() - started,
|
|
489026
|
-
reason: e instanceof UltraplanPollError ? e.reason : "network_or_unknown",
|
|
489027
|
-
reject_count: e instanceof UltraplanPollError ? e.rejectCount : undefined
|
|
489028
|
-
});
|
|
489029
|
-
enqueuePendingNotification({
|
|
489030
|
-
value: `Ultraplan failed: ${errorMessage2(e)}
|
|
489031
|
-
|
|
489032
|
-
Session: ${url3}`,
|
|
489033
|
-
mode: "task-notification"
|
|
489034
|
-
});
|
|
489035
|
-
archiveRemoteSession(sessionId).catch((e2) => logForDebugging(`ultraplan archive failed: ${String(e2)}`));
|
|
489036
|
-
setAppState((prev) => prev.ultraplanSessionUrl === url3 ? {
|
|
489037
|
-
...prev,
|
|
489038
|
-
ultraplanSessionUrl: undefined
|
|
489039
|
-
} : prev);
|
|
489040
|
-
} finally {
|
|
489041
|
-
if (failed) {
|
|
489042
|
-
updateTaskState(taskId, setAppState, (t) => t.status !== "running" ? t : {
|
|
489043
|
-
...t,
|
|
489044
|
-
status: "failed",
|
|
489045
|
-
endTime: Date.now()
|
|
489046
|
-
});
|
|
489047
|
-
}
|
|
489048
|
-
}
|
|
489049
|
-
})();
|
|
489050
|
-
}
|
|
489051
|
-
function buildLaunchMessage(disconnectedBridge) {
|
|
489052
|
-
const prefix = disconnectedBridge ? `${REMOTE_CONTROL_DISCONNECTED_MSG} ` : "";
|
|
489053
|
-
return `${DIAMOND_OPEN} ultraplan
|
|
489054
|
-
${prefix}Starting UR on the web\u2026`;
|
|
489055
|
-
}
|
|
489056
|
-
function buildSessionReadyMessage(url3) {
|
|
489057
|
-
return `${DIAMOND_OPEN} ultraplan \xB7 Monitor progress in UR on the web ${url3}
|
|
489058
|
-
You can continue working \u2014 when the ${DIAMOND_OPEN} fills, press \u2193 to view results`;
|
|
489059
|
-
}
|
|
489060
|
-
function buildAlreadyActiveMessage(url3) {
|
|
489061
|
-
return url3 ? `ultraplan: already polling. Open ${url3} to check status, or wait for the plan to land here.` : "ultraplan: already launching. Please wait for the session to start.";
|
|
489062
|
-
}
|
|
489063
|
-
async function stopUltraplan(taskId, sessionId, setAppState) {
|
|
489064
|
-
await RemoteAgentTask.kill(taskId, setAppState);
|
|
489065
|
-
setAppState((prev) => prev.ultraplanSessionUrl || prev.ultraplanPendingChoice || prev.ultraplanLaunching ? {
|
|
489066
|
-
...prev,
|
|
489067
|
-
ultraplanSessionUrl: undefined,
|
|
489068
|
-
ultraplanPendingChoice: undefined,
|
|
489069
|
-
ultraplanLaunching: undefined
|
|
489070
|
-
} : prev);
|
|
489071
|
-
const url3 = getRemoteSessionUrl(sessionId, process.env.SESSION_INGRESS_URL);
|
|
489072
|
-
enqueuePendingNotification({
|
|
489073
|
-
value: `Ultraplan stopped.
|
|
489074
|
-
|
|
489075
|
-
Session: ${url3}`,
|
|
489076
|
-
mode: "task-notification"
|
|
489077
|
-
});
|
|
489078
|
-
enqueuePendingNotification({
|
|
489079
|
-
value: "The user stopped the ultraplan session above. Do not respond to the stop notification \u2014 wait for their next message.",
|
|
489080
|
-
mode: "task-notification",
|
|
489081
|
-
isMeta: true
|
|
489082
|
-
});
|
|
489083
|
-
}
|
|
489084
|
-
async function launchUltraplan(opts) {
|
|
489085
|
-
const {
|
|
489086
|
-
blurb,
|
|
489087
|
-
seedPlan,
|
|
489088
|
-
getAppState,
|
|
489089
|
-
setAppState,
|
|
489090
|
-
signal,
|
|
489091
|
-
disconnectedBridge,
|
|
489092
|
-
onSessionReady
|
|
489093
|
-
} = opts;
|
|
489094
|
-
const {
|
|
489095
|
-
ultraplanSessionUrl: active2,
|
|
489096
|
-
ultraplanLaunching
|
|
489097
|
-
} = getAppState();
|
|
489098
|
-
if (active2 || ultraplanLaunching) {
|
|
489099
|
-
logEvent("tengu_ultraplan_create_failed", {
|
|
489100
|
-
reason: active2 ? "already_polling" : "already_launching"
|
|
489101
|
-
});
|
|
489102
|
-
return buildAlreadyActiveMessage(active2);
|
|
489103
|
-
}
|
|
489104
|
-
if (!blurb && !seedPlan) {
|
|
489105
|
-
return "Advanced remote planning needs a prompt or an approved draft plan.";
|
|
489106
|
-
}
|
|
489107
|
-
setAppState((prev) => prev.ultraplanLaunching ? prev : {
|
|
489108
|
-
...prev,
|
|
489109
|
-
ultraplanLaunching: true
|
|
489110
|
-
});
|
|
489111
|
-
launchDetached({
|
|
489112
|
-
blurb,
|
|
489113
|
-
seedPlan,
|
|
489114
|
-
getAppState,
|
|
489115
|
-
setAppState,
|
|
489116
|
-
signal,
|
|
489117
|
-
onSessionReady
|
|
489118
|
-
});
|
|
489119
|
-
return buildLaunchMessage(disconnectedBridge);
|
|
489120
|
-
}
|
|
489121
|
-
async function launchDetached(opts) {
|
|
489122
|
-
const {
|
|
489123
|
-
blurb,
|
|
489124
|
-
seedPlan,
|
|
489125
|
-
getAppState,
|
|
489126
|
-
setAppState,
|
|
489127
|
-
signal,
|
|
489128
|
-
onSessionReady
|
|
489129
|
-
} = opts;
|
|
489130
|
-
let sessionId;
|
|
489131
|
-
try {
|
|
489132
|
-
const model = getUltraplanModel();
|
|
489133
|
-
const eligibility = await checkRemoteAgentEligibility();
|
|
489134
|
-
if (!eligibility.eligible) {
|
|
489135
|
-
logEvent("tengu_ultraplan_create_failed", {
|
|
489136
|
-
reason: "precondition",
|
|
489137
|
-
precondition_errors: eligibility.errors.map((e) => e.type).join(",")
|
|
489138
|
-
});
|
|
489139
|
-
const reasons = eligibility.errors.map(formatPreconditionError).join(`
|
|
489140
|
-
`);
|
|
489141
|
-
enqueuePendingNotification({
|
|
489142
|
-
value: `ultraplan: cannot launch remote session \u2014
|
|
489143
|
-
${reasons}`,
|
|
489144
|
-
mode: "task-notification"
|
|
489145
|
-
});
|
|
489146
|
-
return;
|
|
489147
|
-
}
|
|
489148
|
-
const prompt = buildUltraplanPrompt(blurb, seedPlan);
|
|
489149
|
-
let bundleFailMsg;
|
|
489150
|
-
const session2 = await teleportToRemote({
|
|
489151
|
-
initialMessage: prompt,
|
|
489152
|
-
description: blurb || "Refine local plan",
|
|
489153
|
-
model,
|
|
489154
|
-
permissionMode: "plan",
|
|
489155
|
-
ultraplan: true,
|
|
489156
|
-
signal,
|
|
489157
|
-
useDefaultEnvironment: true,
|
|
489158
|
-
onBundleFail: (msg) => {
|
|
489159
|
-
bundleFailMsg = msg;
|
|
489160
|
-
}
|
|
489161
|
-
});
|
|
489162
|
-
if (!session2) {
|
|
489163
|
-
logEvent("tengu_ultraplan_create_failed", {
|
|
489164
|
-
reason: bundleFailMsg ? "bundle_fail" : "teleport_null"
|
|
489165
|
-
});
|
|
489166
|
-
enqueuePendingNotification({
|
|
489167
|
-
value: `ultraplan: session creation failed${bundleFailMsg ? ` \u2014 ${bundleFailMsg}` : ""}. See --debug for details.`,
|
|
489168
|
-
mode: "task-notification"
|
|
489169
|
-
});
|
|
489170
|
-
return;
|
|
489171
|
-
}
|
|
489172
|
-
sessionId = session2.id;
|
|
489173
|
-
const url3 = getRemoteSessionUrl(session2.id, process.env.SESSION_INGRESS_URL);
|
|
489174
|
-
setAppState((prev) => ({
|
|
489175
|
-
...prev,
|
|
489176
|
-
ultraplanSessionUrl: url3,
|
|
489177
|
-
ultraplanLaunching: undefined
|
|
489178
|
-
}));
|
|
489179
|
-
onSessionReady?.(buildSessionReadyMessage(url3));
|
|
489180
|
-
logEvent("tengu_ultraplan_launched", {
|
|
489181
|
-
has_seed_plan: Boolean(seedPlan),
|
|
489182
|
-
model
|
|
489183
|
-
});
|
|
489184
|
-
const {
|
|
489185
|
-
taskId
|
|
489186
|
-
} = registerRemoteAgentTask({
|
|
489187
|
-
remoteTaskType: "ultraplan",
|
|
489188
|
-
session: {
|
|
489189
|
-
id: session2.id,
|
|
489190
|
-
title: blurb || "Ultraplan"
|
|
489191
|
-
},
|
|
489192
|
-
command: blurb,
|
|
489193
|
-
context: {
|
|
489194
|
-
abortController: new AbortController,
|
|
489195
|
-
getAppState,
|
|
489196
|
-
setAppState
|
|
489197
|
-
},
|
|
489198
|
-
isUltraplan: true
|
|
489199
|
-
});
|
|
489200
|
-
startDetachedPoll(taskId, session2.id, url3, getAppState, setAppState);
|
|
489201
|
-
} catch (e) {
|
|
489202
|
-
logError2(e);
|
|
489203
|
-
logEvent("tengu_ultraplan_create_failed", {
|
|
489204
|
-
reason: "unexpected_error"
|
|
489205
|
-
});
|
|
489206
|
-
enqueuePendingNotification({
|
|
489207
|
-
value: `ultraplan: unexpected error \u2014 ${errorMessage2(e)}`,
|
|
489208
|
-
mode: "task-notification"
|
|
489209
|
-
});
|
|
489210
|
-
if (sessionId) {
|
|
489211
|
-
archiveRemoteSession(sessionId).catch((err2) => logForDebugging("ultraplan: failed to archive orphaned session", err2));
|
|
489212
|
-
setAppState((prev) => prev.ultraplanSessionUrl ? {
|
|
489213
|
-
...prev,
|
|
489214
|
-
ultraplanSessionUrl: undefined
|
|
489215
|
-
} : prev);
|
|
489216
|
-
}
|
|
489217
|
-
} finally {
|
|
489218
|
-
setAppState((prev) => prev.ultraplanLaunching ? {
|
|
489219
|
-
...prev,
|
|
489220
|
-
ultraplanLaunching: undefined
|
|
489221
|
-
} : prev);
|
|
489222
|
-
}
|
|
489223
|
-
}
|
|
489224
|
-
var ULTRAPLAN_TIMEOUT_MS, _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS;
|
|
489225
|
-
var init_ultraplan = __esm(() => {
|
|
489226
|
-
init_types14();
|
|
489227
|
-
init_figures2();
|
|
489228
|
-
init_growthbook();
|
|
489229
|
-
init_analytics();
|
|
489230
|
-
init_RemoteAgentTask();
|
|
489231
|
-
init_debug();
|
|
489232
|
-
init_errors();
|
|
489233
|
-
init_log2();
|
|
489234
|
-
init_messageQueueManager();
|
|
489235
|
-
init_configs();
|
|
489236
|
-
init_framework();
|
|
489237
|
-
init_teleport();
|
|
489238
|
-
init_ccrSession();
|
|
489239
|
-
ULTRAPLAN_TIMEOUT_MS = 30 * 60 * 1000;
|
|
489240
|
-
_rawPrompt = require_prompt();
|
|
489241
|
-
DEFAULT_INSTRUCTIONS = (typeof _rawPrompt === "string" ? _rawPrompt : _rawPrompt.default).trimEnd();
|
|
489242
|
-
ULTRAPLAN_INSTRUCTIONS = DEFAULT_INSTRUCTIONS;
|
|
489243
|
-
});
|
|
489244
|
-
|
|
489245
488728
|
// src/components/tasks/renderToolActivity.tsx
|
|
489246
488729
|
function renderToolActivity(activity, tools, theme) {
|
|
489247
488730
|
const tool = findToolByName(tools, activity.toolName);
|
|
@@ -491516,445 +490999,6 @@ var init_mappers = __esm(() => {
|
|
|
491516
490999
|
});
|
|
491517
491000
|
|
|
491518
491001
|
// src/components/tasks/RemoteSessionDetailDialog.tsx
|
|
491519
|
-
function formatToolUseSummary(name, input) {
|
|
491520
|
-
if (name === EXIT_PLAN_MODE_V2_TOOL_NAME) {
|
|
491521
|
-
return "Review the plan in UR on the web";
|
|
491522
|
-
}
|
|
491523
|
-
if (!input || typeof input !== "object")
|
|
491524
|
-
return name;
|
|
491525
|
-
if (name === ASK_USER_QUESTION_TOOL_NAME && "questions" in input) {
|
|
491526
|
-
const qs = input.questions;
|
|
491527
|
-
if (Array.isArray(qs) && qs[0] && typeof qs[0] === "object") {
|
|
491528
|
-
const q = "question" in qs[0] && typeof qs[0].question === "string" && qs[0].question ? qs[0].question : ("header" in qs[0]) && typeof qs[0].header === "string" ? qs[0].header : null;
|
|
491529
|
-
if (q) {
|
|
491530
|
-
const oneLine2 = q.replace(/\s+/g, " ").trim();
|
|
491531
|
-
return `Answer in browser: ${truncateToWidth(oneLine2, 50)}`;
|
|
491532
|
-
}
|
|
491533
|
-
}
|
|
491534
|
-
}
|
|
491535
|
-
for (const v of Object.values(input)) {
|
|
491536
|
-
if (typeof v === "string" && v.trim()) {
|
|
491537
|
-
const oneLine2 = v.replace(/\s+/g, " ").trim();
|
|
491538
|
-
return `${name} ${truncateToWidth(oneLine2, 60)}`;
|
|
491539
|
-
}
|
|
491540
|
-
}
|
|
491541
|
-
return name;
|
|
491542
|
-
}
|
|
491543
|
-
function UltraplanSessionDetail(t0) {
|
|
491544
|
-
const $2 = import_compiler_runtime200.c(70);
|
|
491545
|
-
const {
|
|
491546
|
-
session: session2,
|
|
491547
|
-
onDone,
|
|
491548
|
-
onBack,
|
|
491549
|
-
onKill
|
|
491550
|
-
} = t0;
|
|
491551
|
-
const running = session2.status === "running" || session2.status === "pending";
|
|
491552
|
-
const phase = session2.ultraplanPhase;
|
|
491553
|
-
const statusText = running ? phase ? PHASE_LABEL[phase] : "running" : session2.status;
|
|
491554
|
-
const elapsedTime = useElapsedTime(session2.startTime, running, 1000, 0, session2.endTime);
|
|
491555
|
-
let spawns = 0;
|
|
491556
|
-
let calls = 0;
|
|
491557
|
-
let lastBlock = null;
|
|
491558
|
-
for (const msg of session2.log) {
|
|
491559
|
-
if (msg.type !== "assistant") {
|
|
491560
|
-
continue;
|
|
491561
|
-
}
|
|
491562
|
-
for (const block2 of msg.message.content) {
|
|
491563
|
-
if (block2.type !== "tool_use") {
|
|
491564
|
-
continue;
|
|
491565
|
-
}
|
|
491566
|
-
calls++;
|
|
491567
|
-
lastBlock = block2;
|
|
491568
|
-
if (block2.name === AGENT_TOOL_NAME || block2.name === LEGACY_AGENT_TOOL_NAME) {
|
|
491569
|
-
spawns++;
|
|
491570
|
-
}
|
|
491571
|
-
}
|
|
491572
|
-
}
|
|
491573
|
-
const t1 = 1 + spawns;
|
|
491574
|
-
let t2;
|
|
491575
|
-
if ($2[0] !== lastBlock) {
|
|
491576
|
-
t2 = lastBlock ? formatToolUseSummary(lastBlock.name, lastBlock.input) : null;
|
|
491577
|
-
$2[0] = lastBlock;
|
|
491578
|
-
$2[1] = t2;
|
|
491579
|
-
} else {
|
|
491580
|
-
t2 = $2[1];
|
|
491581
|
-
}
|
|
491582
|
-
let t3;
|
|
491583
|
-
if ($2[2] !== calls || $2[3] !== t1 || $2[4] !== t2) {
|
|
491584
|
-
t3 = {
|
|
491585
|
-
agentsWorking: t1,
|
|
491586
|
-
toolCalls: calls,
|
|
491587
|
-
lastToolCall: t2
|
|
491588
|
-
};
|
|
491589
|
-
$2[2] = calls;
|
|
491590
|
-
$2[3] = t1;
|
|
491591
|
-
$2[4] = t2;
|
|
491592
|
-
$2[5] = t3;
|
|
491593
|
-
} else {
|
|
491594
|
-
t3 = $2[5];
|
|
491595
|
-
}
|
|
491596
|
-
const {
|
|
491597
|
-
agentsWorking,
|
|
491598
|
-
toolCalls,
|
|
491599
|
-
lastToolCall
|
|
491600
|
-
} = t3;
|
|
491601
|
-
let t4;
|
|
491602
|
-
if ($2[6] !== session2.sessionId) {
|
|
491603
|
-
t4 = getRemoteTaskSessionUrl(session2.sessionId);
|
|
491604
|
-
$2[6] = session2.sessionId;
|
|
491605
|
-
$2[7] = t4;
|
|
491606
|
-
} else {
|
|
491607
|
-
t4 = $2[7];
|
|
491608
|
-
}
|
|
491609
|
-
const sessionUrl = t4;
|
|
491610
|
-
let t5;
|
|
491611
|
-
if ($2[8] !== onBack || $2[9] !== onDone) {
|
|
491612
|
-
t5 = onBack ?? (() => onDone("Remote session details dismissed", {
|
|
491613
|
-
display: "system"
|
|
491614
|
-
}));
|
|
491615
|
-
$2[8] = onBack;
|
|
491616
|
-
$2[9] = onDone;
|
|
491617
|
-
$2[10] = t5;
|
|
491618
|
-
} else {
|
|
491619
|
-
t5 = $2[10];
|
|
491620
|
-
}
|
|
491621
|
-
const goBackOrClose = t5;
|
|
491622
|
-
const [confirmingStop, setConfirmingStop] = import_react157.useState(false);
|
|
491623
|
-
if (confirmingStop) {
|
|
491624
|
-
let t62;
|
|
491625
|
-
if ($2[11] === Symbol.for("react.memo_cache_sentinel")) {
|
|
491626
|
-
t62 = () => setConfirmingStop(false);
|
|
491627
|
-
$2[11] = t62;
|
|
491628
|
-
} else {
|
|
491629
|
-
t62 = $2[11];
|
|
491630
|
-
}
|
|
491631
|
-
let t72;
|
|
491632
|
-
if ($2[12] === Symbol.for("react.memo_cache_sentinel")) {
|
|
491633
|
-
t72 = /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ThemedText, {
|
|
491634
|
-
dimColor: true,
|
|
491635
|
-
children: "This will terminate the UR on the web session."
|
|
491636
|
-
}, undefined, false, undefined, this);
|
|
491637
|
-
$2[12] = t72;
|
|
491638
|
-
} else {
|
|
491639
|
-
t72 = $2[12];
|
|
491640
|
-
}
|
|
491641
|
-
let t82;
|
|
491642
|
-
if ($2[13] === Symbol.for("react.memo_cache_sentinel")) {
|
|
491643
|
-
t82 = {
|
|
491644
|
-
label: "Terminate session",
|
|
491645
|
-
value: "stop"
|
|
491646
|
-
};
|
|
491647
|
-
$2[13] = t82;
|
|
491648
|
-
} else {
|
|
491649
|
-
t82 = $2[13];
|
|
491650
|
-
}
|
|
491651
|
-
let t92;
|
|
491652
|
-
if ($2[14] === Symbol.for("react.memo_cache_sentinel")) {
|
|
491653
|
-
t92 = [t82, {
|
|
491654
|
-
label: "Back",
|
|
491655
|
-
value: "back"
|
|
491656
|
-
}];
|
|
491657
|
-
$2[14] = t92;
|
|
491658
|
-
} else {
|
|
491659
|
-
t92 = $2[14];
|
|
491660
|
-
}
|
|
491661
|
-
let t102;
|
|
491662
|
-
if ($2[15] !== goBackOrClose || $2[16] !== onKill) {
|
|
491663
|
-
t102 = /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(Dialog, {
|
|
491664
|
-
title: "Stop ultraplan?",
|
|
491665
|
-
onCancel: t62,
|
|
491666
|
-
color: "background",
|
|
491667
|
-
children: /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ThemedBox_default, {
|
|
491668
|
-
flexDirection: "column",
|
|
491669
|
-
gap: 1,
|
|
491670
|
-
children: [
|
|
491671
|
-
t72,
|
|
491672
|
-
/* @__PURE__ */ jsx_dev_runtime269.jsxDEV(Select, {
|
|
491673
|
-
options: t92,
|
|
491674
|
-
onChange: (v) => {
|
|
491675
|
-
if (v === "stop") {
|
|
491676
|
-
onKill?.();
|
|
491677
|
-
goBackOrClose();
|
|
491678
|
-
} else {
|
|
491679
|
-
setConfirmingStop(false);
|
|
491680
|
-
}
|
|
491681
|
-
}
|
|
491682
|
-
}, undefined, false, undefined, this)
|
|
491683
|
-
]
|
|
491684
|
-
}, undefined, true, undefined, this)
|
|
491685
|
-
}, undefined, false, undefined, this);
|
|
491686
|
-
$2[15] = goBackOrClose;
|
|
491687
|
-
$2[16] = onKill;
|
|
491688
|
-
$2[17] = t102;
|
|
491689
|
-
} else {
|
|
491690
|
-
t102 = $2[17];
|
|
491691
|
-
}
|
|
491692
|
-
return t102;
|
|
491693
|
-
}
|
|
491694
|
-
const t6 = phase === "plan_ready" ? DIAMOND_FILLED : DIAMOND_OPEN;
|
|
491695
|
-
let t7;
|
|
491696
|
-
if ($2[18] !== t6) {
|
|
491697
|
-
t7 = /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ThemedText, {
|
|
491698
|
-
color: "background",
|
|
491699
|
-
children: [
|
|
491700
|
-
t6,
|
|
491701
|
-
" "
|
|
491702
|
-
]
|
|
491703
|
-
}, undefined, true, undefined, this);
|
|
491704
|
-
$2[18] = t6;
|
|
491705
|
-
$2[19] = t7;
|
|
491706
|
-
} else {
|
|
491707
|
-
t7 = $2[19];
|
|
491708
|
-
}
|
|
491709
|
-
let t8;
|
|
491710
|
-
if ($2[20] === Symbol.for("react.memo_cache_sentinel")) {
|
|
491711
|
-
t8 = /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ThemedText, {
|
|
491712
|
-
bold: true,
|
|
491713
|
-
children: "ultraplan"
|
|
491714
|
-
}, undefined, false, undefined, this);
|
|
491715
|
-
$2[20] = t8;
|
|
491716
|
-
} else {
|
|
491717
|
-
t8 = $2[20];
|
|
491718
|
-
}
|
|
491719
|
-
let t9;
|
|
491720
|
-
if ($2[21] !== elapsedTime || $2[22] !== statusText) {
|
|
491721
|
-
t9 = /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ThemedText, {
|
|
491722
|
-
dimColor: true,
|
|
491723
|
-
children: [
|
|
491724
|
-
" \xB7 ",
|
|
491725
|
-
elapsedTime,
|
|
491726
|
-
" \xB7 ",
|
|
491727
|
-
statusText
|
|
491728
|
-
]
|
|
491729
|
-
}, undefined, true, undefined, this);
|
|
491730
|
-
$2[21] = elapsedTime;
|
|
491731
|
-
$2[22] = statusText;
|
|
491732
|
-
$2[23] = t9;
|
|
491733
|
-
} else {
|
|
491734
|
-
t9 = $2[23];
|
|
491735
|
-
}
|
|
491736
|
-
let t10;
|
|
491737
|
-
if ($2[24] !== t7 || $2[25] !== t9) {
|
|
491738
|
-
t10 = /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ThemedText, {
|
|
491739
|
-
children: [
|
|
491740
|
-
t7,
|
|
491741
|
-
t8,
|
|
491742
|
-
t9
|
|
491743
|
-
]
|
|
491744
|
-
}, undefined, true, undefined, this);
|
|
491745
|
-
$2[24] = t7;
|
|
491746
|
-
$2[25] = t9;
|
|
491747
|
-
$2[26] = t10;
|
|
491748
|
-
} else {
|
|
491749
|
-
t10 = $2[26];
|
|
491750
|
-
}
|
|
491751
|
-
let t11;
|
|
491752
|
-
if ($2[27] !== phase) {
|
|
491753
|
-
t11 = phase === "plan_ready" && /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ThemedText, {
|
|
491754
|
-
color: "success",
|
|
491755
|
-
children: [
|
|
491756
|
-
figures_default.tick,
|
|
491757
|
-
" "
|
|
491758
|
-
]
|
|
491759
|
-
}, undefined, true, undefined, this);
|
|
491760
|
-
$2[27] = phase;
|
|
491761
|
-
$2[28] = t11;
|
|
491762
|
-
} else {
|
|
491763
|
-
t11 = $2[28];
|
|
491764
|
-
}
|
|
491765
|
-
let t12;
|
|
491766
|
-
if ($2[29] !== agentsWorking) {
|
|
491767
|
-
t12 = plural(agentsWorking, "agent");
|
|
491768
|
-
$2[29] = agentsWorking;
|
|
491769
|
-
$2[30] = t12;
|
|
491770
|
-
} else {
|
|
491771
|
-
t12 = $2[30];
|
|
491772
|
-
}
|
|
491773
|
-
const t13 = phase ? AGENT_VERB[phase] : "working";
|
|
491774
|
-
let t14;
|
|
491775
|
-
if ($2[31] !== toolCalls) {
|
|
491776
|
-
t14 = plural(toolCalls, "call");
|
|
491777
|
-
$2[31] = toolCalls;
|
|
491778
|
-
$2[32] = t14;
|
|
491779
|
-
} else {
|
|
491780
|
-
t14 = $2[32];
|
|
491781
|
-
}
|
|
491782
|
-
let t15;
|
|
491783
|
-
if ($2[33] !== agentsWorking || $2[34] !== t11 || $2[35] !== t12 || $2[36] !== t13 || $2[37] !== t14 || $2[38] !== toolCalls) {
|
|
491784
|
-
t15 = /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ThemedText, {
|
|
491785
|
-
children: [
|
|
491786
|
-
t11,
|
|
491787
|
-
agentsWorking,
|
|
491788
|
-
" ",
|
|
491789
|
-
t12,
|
|
491790
|
-
" ",
|
|
491791
|
-
t13,
|
|
491792
|
-
" \xB7 ",
|
|
491793
|
-
toolCalls,
|
|
491794
|
-
" tool",
|
|
491795
|
-
" ",
|
|
491796
|
-
t14
|
|
491797
|
-
]
|
|
491798
|
-
}, undefined, true, undefined, this);
|
|
491799
|
-
$2[33] = agentsWorking;
|
|
491800
|
-
$2[34] = t11;
|
|
491801
|
-
$2[35] = t12;
|
|
491802
|
-
$2[36] = t13;
|
|
491803
|
-
$2[37] = t14;
|
|
491804
|
-
$2[38] = toolCalls;
|
|
491805
|
-
$2[39] = t15;
|
|
491806
|
-
} else {
|
|
491807
|
-
t15 = $2[39];
|
|
491808
|
-
}
|
|
491809
|
-
let t16;
|
|
491810
|
-
if ($2[40] !== lastToolCall) {
|
|
491811
|
-
t16 = lastToolCall && /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ThemedText, {
|
|
491812
|
-
dimColor: true,
|
|
491813
|
-
children: lastToolCall
|
|
491814
|
-
}, undefined, false, undefined, this);
|
|
491815
|
-
$2[40] = lastToolCall;
|
|
491816
|
-
$2[41] = t16;
|
|
491817
|
-
} else {
|
|
491818
|
-
t16 = $2[41];
|
|
491819
|
-
}
|
|
491820
|
-
let t17;
|
|
491821
|
-
if ($2[42] !== sessionUrl) {
|
|
491822
|
-
t17 = /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ThemedText, {
|
|
491823
|
-
dimColor: true,
|
|
491824
|
-
children: sessionUrl
|
|
491825
|
-
}, undefined, false, undefined, this);
|
|
491826
|
-
$2[42] = sessionUrl;
|
|
491827
|
-
$2[43] = t17;
|
|
491828
|
-
} else {
|
|
491829
|
-
t17 = $2[43];
|
|
491830
|
-
}
|
|
491831
|
-
let t18;
|
|
491832
|
-
if ($2[44] !== sessionUrl || $2[45] !== t17) {
|
|
491833
|
-
t18 = /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(Link, {
|
|
491834
|
-
url: sessionUrl,
|
|
491835
|
-
children: t17
|
|
491836
|
-
}, undefined, false, undefined, this);
|
|
491837
|
-
$2[44] = sessionUrl;
|
|
491838
|
-
$2[45] = t17;
|
|
491839
|
-
$2[46] = t18;
|
|
491840
|
-
} else {
|
|
491841
|
-
t18 = $2[46];
|
|
491842
|
-
}
|
|
491843
|
-
let t19;
|
|
491844
|
-
if ($2[47] === Symbol.for("react.memo_cache_sentinel")) {
|
|
491845
|
-
t19 = {
|
|
491846
|
-
label: "Review in UR on the web",
|
|
491847
|
-
value: "open"
|
|
491848
|
-
};
|
|
491849
|
-
$2[47] = t19;
|
|
491850
|
-
} else {
|
|
491851
|
-
t19 = $2[47];
|
|
491852
|
-
}
|
|
491853
|
-
let t20;
|
|
491854
|
-
if ($2[48] !== onKill || $2[49] !== running) {
|
|
491855
|
-
t20 = onKill && running ? [{
|
|
491856
|
-
label: "Stop ultraplan",
|
|
491857
|
-
value: "stop"
|
|
491858
|
-
}] : [];
|
|
491859
|
-
$2[48] = onKill;
|
|
491860
|
-
$2[49] = running;
|
|
491861
|
-
$2[50] = t20;
|
|
491862
|
-
} else {
|
|
491863
|
-
t20 = $2[50];
|
|
491864
|
-
}
|
|
491865
|
-
let t21;
|
|
491866
|
-
if ($2[51] === Symbol.for("react.memo_cache_sentinel")) {
|
|
491867
|
-
t21 = {
|
|
491868
|
-
label: "Back",
|
|
491869
|
-
value: "back"
|
|
491870
|
-
};
|
|
491871
|
-
$2[51] = t21;
|
|
491872
|
-
} else {
|
|
491873
|
-
t21 = $2[51];
|
|
491874
|
-
}
|
|
491875
|
-
let t22;
|
|
491876
|
-
if ($2[52] !== t20) {
|
|
491877
|
-
t22 = [t19, ...t20, t21];
|
|
491878
|
-
$2[52] = t20;
|
|
491879
|
-
$2[53] = t22;
|
|
491880
|
-
} else {
|
|
491881
|
-
t22 = $2[53];
|
|
491882
|
-
}
|
|
491883
|
-
let t23;
|
|
491884
|
-
if ($2[54] !== goBackOrClose || $2[55] !== onDone || $2[56] !== sessionUrl) {
|
|
491885
|
-
t23 = (v_0) => {
|
|
491886
|
-
switch (v_0) {
|
|
491887
|
-
case "open": {
|
|
491888
|
-
openBrowser(sessionUrl);
|
|
491889
|
-
onDone();
|
|
491890
|
-
return;
|
|
491891
|
-
}
|
|
491892
|
-
case "stop": {
|
|
491893
|
-
setConfirmingStop(true);
|
|
491894
|
-
return;
|
|
491895
|
-
}
|
|
491896
|
-
case "back": {
|
|
491897
|
-
goBackOrClose();
|
|
491898
|
-
return;
|
|
491899
|
-
}
|
|
491900
|
-
}
|
|
491901
|
-
};
|
|
491902
|
-
$2[54] = goBackOrClose;
|
|
491903
|
-
$2[55] = onDone;
|
|
491904
|
-
$2[56] = sessionUrl;
|
|
491905
|
-
$2[57] = t23;
|
|
491906
|
-
} else {
|
|
491907
|
-
t23 = $2[57];
|
|
491908
|
-
}
|
|
491909
|
-
let t24;
|
|
491910
|
-
if ($2[58] !== t22 || $2[59] !== t23) {
|
|
491911
|
-
t24 = /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(Select, {
|
|
491912
|
-
options: t22,
|
|
491913
|
-
onChange: t23
|
|
491914
|
-
}, undefined, false, undefined, this);
|
|
491915
|
-
$2[58] = t22;
|
|
491916
|
-
$2[59] = t23;
|
|
491917
|
-
$2[60] = t24;
|
|
491918
|
-
} else {
|
|
491919
|
-
t24 = $2[60];
|
|
491920
|
-
}
|
|
491921
|
-
let t25;
|
|
491922
|
-
if ($2[61] !== t15 || $2[62] !== t16 || $2[63] !== t18 || $2[64] !== t24) {
|
|
491923
|
-
t25 = /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ThemedBox_default, {
|
|
491924
|
-
flexDirection: "column",
|
|
491925
|
-
gap: 1,
|
|
491926
|
-
children: [
|
|
491927
|
-
t15,
|
|
491928
|
-
t16,
|
|
491929
|
-
t18,
|
|
491930
|
-
t24
|
|
491931
|
-
]
|
|
491932
|
-
}, undefined, true, undefined, this);
|
|
491933
|
-
$2[61] = t15;
|
|
491934
|
-
$2[62] = t16;
|
|
491935
|
-
$2[63] = t18;
|
|
491936
|
-
$2[64] = t24;
|
|
491937
|
-
$2[65] = t25;
|
|
491938
|
-
} else {
|
|
491939
|
-
t25 = $2[65];
|
|
491940
|
-
}
|
|
491941
|
-
let t26;
|
|
491942
|
-
if ($2[66] !== goBackOrClose || $2[67] !== t10 || $2[68] !== t25) {
|
|
491943
|
-
t26 = /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(Dialog, {
|
|
491944
|
-
title: t10,
|
|
491945
|
-
onCancel: goBackOrClose,
|
|
491946
|
-
color: "background",
|
|
491947
|
-
children: t25
|
|
491948
|
-
}, undefined, false, undefined, this);
|
|
491949
|
-
$2[66] = goBackOrClose;
|
|
491950
|
-
$2[67] = t10;
|
|
491951
|
-
$2[68] = t25;
|
|
491952
|
-
$2[69] = t26;
|
|
491953
|
-
} else {
|
|
491954
|
-
t26 = $2[69];
|
|
491955
|
-
}
|
|
491956
|
-
return t26;
|
|
491957
|
-
}
|
|
491958
491002
|
function StagePipeline(t0) {
|
|
491959
491003
|
const $2 = import_compiler_runtime200.c(15);
|
|
491960
491004
|
const {
|
|
@@ -492437,18 +491481,10 @@ function RemoteSessionDetailDialog({
|
|
|
492437
491481
|
const [isTeleporting, setIsTeleporting] = import_react157.useState(false);
|
|
492438
491482
|
const [teleportError, setTeleportError] = import_react157.useState(null);
|
|
492439
491483
|
const lastMessages = import_react157.useMemo(() => {
|
|
492440
|
-
if (session2.
|
|
491484
|
+
if (session2.isRemoteReview)
|
|
492441
491485
|
return [];
|
|
492442
491486
|
return normalizeMessages(toInternalMessages(session2.log)).filter((_) => _.type !== "progress").slice(-3);
|
|
492443
491487
|
}, [session2]);
|
|
492444
|
-
if (session2.isUltraplan) {
|
|
492445
|
-
return /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(UltraplanSessionDetail, {
|
|
492446
|
-
session: session2,
|
|
492447
|
-
onDone,
|
|
492448
|
-
onBack,
|
|
492449
|
-
onKill
|
|
492450
|
-
}, undefined, false, undefined, this);
|
|
492451
|
-
}
|
|
492452
491488
|
if (session2.isRemoteReview) {
|
|
492453
491489
|
return /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ReviewSessionDetail, {
|
|
492454
491490
|
session: session2,
|
|
@@ -492667,15 +491703,12 @@ function RemoteSessionDetailDialog({
|
|
|
492667
491703
|
}, undefined, true, undefined, this)
|
|
492668
491704
|
}, undefined, false, undefined, this);
|
|
492669
491705
|
}
|
|
492670
|
-
var import_compiler_runtime200, import_react157, jsx_dev_runtime269,
|
|
491706
|
+
var import_compiler_runtime200, import_react157, jsx_dev_runtime269, STAGES, STAGE_LABELS;
|
|
492671
491707
|
var init_RemoteSessionDetailDialog = __esm(() => {
|
|
492672
|
-
init_figures();
|
|
492673
491708
|
init_figures2();
|
|
492674
491709
|
init_useElapsedTime();
|
|
492675
491710
|
init_ink2();
|
|
492676
491711
|
init_RemoteAgentTask();
|
|
492677
|
-
init_constants2();
|
|
492678
|
-
init_prompt();
|
|
492679
491712
|
init_browser();
|
|
492680
491713
|
init_errors();
|
|
492681
491714
|
init_format2();
|
|
@@ -492692,14 +491725,6 @@ var init_RemoteSessionDetailDialog = __esm(() => {
|
|
|
492692
491725
|
import_compiler_runtime200 = __toESM(require_compiler_runtime(), 1);
|
|
492693
491726
|
import_react157 = __toESM(require_react(), 1);
|
|
492694
491727
|
jsx_dev_runtime269 = __toESM(require_jsx_dev_runtime(), 1);
|
|
492695
|
-
PHASE_LABEL = {
|
|
492696
|
-
needs_input: "input required",
|
|
492697
|
-
plan_ready: "ready"
|
|
492698
|
-
};
|
|
492699
|
-
AGENT_VERB = {
|
|
492700
|
-
needs_input: "waiting",
|
|
492701
|
-
plan_ready: "done"
|
|
492702
|
-
};
|
|
492703
491728
|
STAGES = ["finding", "verifying", "synthesizing"];
|
|
492704
491729
|
STAGE_LABELS = {
|
|
492705
491730
|
finding: "Find",
|
|
@@ -493362,11 +492387,7 @@ function BackgroundTasksDialog({
|
|
|
493362
492387
|
} else if (currentSelection_0.type === "dream" && currentSelection_0.status === "running") {
|
|
493363
492388
|
killDreamTask(currentSelection_0.id);
|
|
493364
492389
|
} else if (currentSelection_0.type === "remote_agent" && currentSelection_0.status === "running") {
|
|
493365
|
-
|
|
493366
|
-
stopUltraplan(currentSelection_0.id, currentSelection_0.task.sessionId, setAppState);
|
|
493367
|
-
} else {
|
|
493368
|
-
killRemoteAgentTask(currentSelection_0.id);
|
|
493369
|
-
}
|
|
492390
|
+
killRemoteAgentTask(currentSelection_0.id);
|
|
493370
492391
|
}
|
|
493371
492392
|
}
|
|
493372
492393
|
if (e.key === "f") {
|
|
@@ -493459,7 +492480,7 @@ function BackgroundTasksDialog({
|
|
|
493459
492480
|
onDone,
|
|
493460
492481
|
toolUseContext,
|
|
493461
492482
|
onBack: goBackToList,
|
|
493462
|
-
onKill: task_0.status !== "running" ? undefined :
|
|
492483
|
+
onKill: task_0.status !== "running" ? undefined : () => void killRemoteAgentTask(task_0.id)
|
|
493463
492484
|
}, `session-${task_0.id}`, false, undefined, this);
|
|
493464
492485
|
case "in_process_teammate":
|
|
493465
492486
|
return /* @__PURE__ */ jsx_dev_runtime271.jsxDEV(InProcessTeammateDetailDialog, {
|
|
@@ -493983,7 +493004,6 @@ var init_BackgroundTasksDialog = __esm(() => {
|
|
|
493983
493004
|
init_LocalAgentTask();
|
|
493984
493005
|
init_LocalShellTask();
|
|
493985
493006
|
init_RemoteAgentTask();
|
|
493986
|
-
init_ultraplan();
|
|
493987
493007
|
init_overlayContext();
|
|
493988
493008
|
init_ink2();
|
|
493989
493009
|
init_useKeybinding();
|
|
@@ -497480,7 +496500,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
497480
496500
|
if (spec.name !== specName) {
|
|
497481
496501
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
497482
496502
|
}
|
|
497483
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.80.
|
|
496503
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.80.2" : "1.80.2");
|
|
497484
496504
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
497485
496505
|
throw new Error("invalid ur-agent package version");
|
|
497486
496506
|
}
|
|
@@ -498473,7 +497493,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
498473
497493
|
path: ".github/workflows/ur.yml",
|
|
498474
497494
|
root: "project",
|
|
498475
497495
|
content: compileAgenticCiWorkflow("default", {
|
|
498476
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.80.
|
|
497496
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.80.2" : "1.80.2"
|
|
498477
497497
|
})
|
|
498478
497498
|
},
|
|
498479
497499
|
{
|
|
@@ -498536,7 +497556,7 @@ function value(tokens, flag) {
|
|
|
498536
497556
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
498537
497557
|
}
|
|
498538
497558
|
function cliVersion() {
|
|
498539
|
-
return typeof MACRO !== "undefined" ? "1.80.
|
|
497559
|
+
return typeof MACRO !== "undefined" ? "1.80.2" : "1.80.2";
|
|
498540
497560
|
}
|
|
498541
497561
|
function workflowPath(cwd2) {
|
|
498542
497562
|
return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -504392,7 +503412,7 @@ function createAcpStdioApp(deps) {
|
|
|
504392
503412
|
}
|
|
504393
503413
|
},
|
|
504394
503414
|
authMethods: [],
|
|
504395
|
-
agentInfo: { name: "UR-Nexus", version: "1.80.
|
|
503415
|
+
agentInfo: { name: "UR-Nexus", version: "1.80.2" }
|
|
504396
503416
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
504397
503417
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
504398
503418
|
await runtime2.announce({
|
|
@@ -504489,7 +503509,7 @@ function createAcpStdioAgent(deps) {
|
|
|
504489
503509
|
}
|
|
504490
503510
|
},
|
|
504491
503511
|
authMethods: [],
|
|
504492
|
-
agentInfo: { name: "UR-Nexus", version: "1.80.
|
|
503512
|
+
agentInfo: { name: "UR-Nexus", version: "1.80.2" }
|
|
504493
503513
|
});
|
|
504494
503514
|
return;
|
|
504495
503515
|
case "authenticate":
|
|
@@ -709490,7 +708510,7 @@ var init_agentDisplay = __esm(() => {
|
|
|
709490
708510
|
|
|
709491
708511
|
// src/components/agents/types.ts
|
|
709492
708512
|
var AGENT_PATHS;
|
|
709493
|
-
var
|
|
708513
|
+
var init_types14 = __esm(() => {
|
|
709494
708514
|
AGENT_PATHS = {
|
|
709495
708515
|
FOLDER_NAME: ".ur",
|
|
709496
708516
|
AGENTS_DIR: "agents"
|
|
@@ -709637,7 +708657,7 @@ var init_agentFileUtils = __esm(() => {
|
|
|
709637
708657
|
init_cwd2();
|
|
709638
708658
|
init_envUtils();
|
|
709639
708659
|
init_errors();
|
|
709640
|
-
|
|
708660
|
+
init_types14();
|
|
709641
708661
|
});
|
|
709642
708662
|
|
|
709643
708663
|
// src/components/agents/AgentDetail.tsx
|
|
@@ -715375,7 +714395,7 @@ var init_plugin2 = __esm(() => {
|
|
|
715375
714395
|
|
|
715376
714396
|
// src/services/settingsSync/types.ts
|
|
715377
714397
|
var UserSyncContentSchema, UserSyncDataSchema;
|
|
715378
|
-
var
|
|
714398
|
+
var init_types15 = __esm(() => {
|
|
715379
714399
|
init_v4();
|
|
715380
714400
|
UserSyncContentSchema = lazySchema(() => exports_external.object({
|
|
715381
714401
|
entries: exports_external.record(exports_external.string(), exports_external.string())
|
|
@@ -715407,7 +714427,7 @@ var init_settingsSync = __esm(() => {
|
|
|
715407
714427
|
init_growthbook();
|
|
715408
714428
|
init_analytics();
|
|
715409
714429
|
init_withRetry();
|
|
715410
|
-
|
|
714430
|
+
init_types15();
|
|
715411
714431
|
MAX_FILE_SIZE_BYTES3 = 500 * 1024;
|
|
715412
714432
|
});
|
|
715413
714433
|
|
|
@@ -715715,7 +714735,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
715715
714735
|
smapsRollup,
|
|
715716
714736
|
platform: process.platform,
|
|
715717
714737
|
nodeVersion: process.version,
|
|
715718
|
-
ccVersion: "1.80.
|
|
714738
|
+
ccVersion: "1.80.2"
|
|
715719
714739
|
};
|
|
715720
714740
|
}
|
|
715721
714741
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -715820,6 +714840,15 @@ var init_heapdump2 = __esm(() => {
|
|
|
715820
714840
|
heapdump_default = heapDump;
|
|
715821
714841
|
});
|
|
715822
714842
|
|
|
714843
|
+
// src/bridge/types.ts
|
|
714844
|
+
var DEFAULT_SESSION_TIMEOUT_MS, BRIDGE_LOGIN_INSTRUCTION = "Remote Control is only available with ur.com subscriptions. Please use `/login` to sign in with your ur.com account.", BRIDGE_LOGIN_ERROR;
|
|
714845
|
+
var init_types16 = __esm(() => {
|
|
714846
|
+
DEFAULT_SESSION_TIMEOUT_MS = 24 * 60 * 60 * 1000;
|
|
714847
|
+
BRIDGE_LOGIN_ERROR = `Error: You must be logged in to use Remote Control.
|
|
714848
|
+
|
|
714849
|
+
` + BRIDGE_LOGIN_INSTRUCTION;
|
|
714850
|
+
});
|
|
714851
|
+
|
|
715823
714852
|
// src/bridge/bridgeApi.ts
|
|
715824
714853
|
function validateBridgeId(id, label) {
|
|
715825
714854
|
if (!id || !SAFE_ID_PATTERN.test(id)) {
|
|
@@ -716061,7 +715090,7 @@ var BETA_HEADER = "environments-2025-11-01", SAFE_ID_PATTERN, BridgeFatalError;
|
|
|
716061
715090
|
var init_bridgeApi = __esm(() => {
|
|
716062
715091
|
init_axios2();
|
|
716063
715092
|
init_debugUtils();
|
|
716064
|
-
|
|
715093
|
+
init_types16();
|
|
716065
715094
|
SAFE_ID_PATTERN = /^[a-zA-Z0-9_-]+$/;
|
|
716066
715095
|
BridgeFatalError = class BridgeFatalError extends Error {
|
|
716067
715096
|
status;
|
|
@@ -716295,7 +715324,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
716295
715324
|
var call154 = async () => {
|
|
716296
715325
|
return {
|
|
716297
715326
|
type: "text",
|
|
716298
|
-
value: "1.80.
|
|
715327
|
+
value: "1.80.2"
|
|
716299
715328
|
};
|
|
716300
715329
|
}, version2, version_default;
|
|
716301
715330
|
var init_version = __esm(() => {
|
|
@@ -727538,7 +726567,7 @@ function generateHtmlReport(data, insights) {
|
|
|
727538
726567
|
</html>`;
|
|
727539
726568
|
}
|
|
727540
726569
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
727541
|
-
const version3 = typeof MACRO !== "undefined" ? "1.80.
|
|
726570
|
+
const version3 = typeof MACRO !== "undefined" ? "1.80.2" : "unknown";
|
|
727542
726571
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
727543
726572
|
const facets_summary = {
|
|
727544
726573
|
total: facets.size,
|
|
@@ -731851,7 +730880,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
731851
730880
|
init_settings2();
|
|
731852
730881
|
init_slowOperations();
|
|
731853
730882
|
init_uuid();
|
|
731854
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.80.
|
|
730883
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.80.2" : "unknown";
|
|
731855
730884
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
731856
730885
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
731857
730886
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -733066,7 +732095,7 @@ var init_filesystem = __esm(() => {
|
|
|
733066
732095
|
});
|
|
733067
732096
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
733068
732097
|
const nonce = randomBytes24(16).toString("hex");
|
|
733069
|
-
return join243(getURTempDir(), "bundled-skills", "1.80.
|
|
732098
|
+
return join243(getURTempDir(), "bundled-skills", "1.80.2", nonce);
|
|
733070
732099
|
});
|
|
733071
732100
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
733072
732101
|
});
|
|
@@ -739455,7 +738484,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
739455
738484
|
}
|
|
739456
738485
|
function computeFingerprintFromMessages(messages) {
|
|
739457
738486
|
const firstMessageText = extractFirstMessageText(messages);
|
|
739458
|
-
return computeFingerprint(firstMessageText, "1.80.
|
|
738487
|
+
return computeFingerprint(firstMessageText, "1.80.2");
|
|
739459
738488
|
}
|
|
739460
738489
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
739461
738490
|
var init_fingerprint = () => {};
|
|
@@ -741380,7 +740409,7 @@ async function sideQuery(opts) {
|
|
|
741380
740409
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
741381
740410
|
}
|
|
741382
740411
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
741383
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.80.
|
|
740412
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.80.2");
|
|
741384
740413
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
741385
740414
|
const systemBlocks = [
|
|
741386
740415
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -745305,8 +744334,7 @@ function externalMetadataToAppState(metadata) {
|
|
|
745305
744334
|
...prev.toolPermissionContext,
|
|
745306
744335
|
mode: permissionModeFromString(metadata.permission_mode)
|
|
745307
744336
|
}
|
|
745308
|
-
} : {}
|
|
745309
|
-
...typeof metadata.is_ultraplan_mode === "boolean" ? { isUltraplanMode: metadata.is_ultraplan_mode } : {}
|
|
744337
|
+
} : {}
|
|
745310
744338
|
});
|
|
745311
744339
|
}
|
|
745312
744340
|
function onChangeAppState({
|
|
@@ -745319,10 +744347,8 @@ function onChangeAppState({
|
|
|
745319
744347
|
const prevExternal = toExternalPermissionMode(prevMode);
|
|
745320
744348
|
const newExternal = toExternalPermissionMode(newMode);
|
|
745321
744349
|
if (prevExternal !== newExternal) {
|
|
745322
|
-
const isUltraplan = newExternal === "plan" && newState.isUltraplanMode && !oldState.isUltraplanMode ? true : null;
|
|
745323
744350
|
notifySessionMetadataChanged({
|
|
745324
|
-
permission_mode: newExternal
|
|
745325
|
-
is_ultraplan_mode: isUltraplan
|
|
744351
|
+
permission_mode: newExternal
|
|
745326
744352
|
});
|
|
745327
744353
|
}
|
|
745328
744354
|
notifyPermissionModeChanged(newMode);
|
|
@@ -746217,7 +745243,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
746217
745243
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
746218
745244
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
746219
745245
|
betas: getSdkBetas(),
|
|
746220
|
-
ur_version: "1.80.
|
|
745246
|
+
ur_version: "1.80.2",
|
|
746221
745247
|
output_style: outputStyle,
|
|
746222
745248
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
746223
745249
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -753773,7 +752799,6 @@ function ExitPlanModePermissionRequest({
|
|
|
753773
752799
|
}) {
|
|
753774
752800
|
const toolPermissionContext = useAppState((s) => s.toolPermissionContext);
|
|
753775
752801
|
const setAppState = useSetAppState();
|
|
753776
|
-
const store2 = useAppStateStore();
|
|
753777
752802
|
const {
|
|
753778
752803
|
addNotification
|
|
753779
752804
|
} = useNotifications();
|
|
@@ -753781,9 +752806,6 @@ function ExitPlanModePermissionRequest({
|
|
|
753781
752806
|
const [pastedContents, setPastedContents] = import_react214.useState({});
|
|
753782
752807
|
const nextPasteIdRef = import_react214.useRef(0);
|
|
753783
752808
|
const showClearContext = useAppState((s) => s.settings.showClearContextOnPlanAccept) ?? false;
|
|
753784
|
-
const ultraplanSessionUrl = useAppState((s) => s.ultraplanSessionUrl);
|
|
753785
|
-
const ultraplanLaunching = useAppState((s) => s.ultraplanLaunching);
|
|
753786
|
-
const showUltraplan = false;
|
|
753787
752809
|
const usage30 = toolUseConfirm.assistantMessage.message.usage;
|
|
753788
752810
|
const {
|
|
753789
752811
|
mode: mode2,
|
|
@@ -753792,12 +752814,11 @@ function ExitPlanModePermissionRequest({
|
|
|
753792
752814
|
} = toolPermissionContext;
|
|
753793
752815
|
const options5 = import_react214.useMemo(() => buildPlanApprovalOptions({
|
|
753794
752816
|
showClearContext,
|
|
753795
|
-
showUltraplan,
|
|
753796
752817
|
usedPercent: showClearContext ? getContextUsedPercent(usage30, mode2) : null,
|
|
753797
752818
|
isAutoModeAvailable,
|
|
753798
752819
|
isBypassPermissionsModeAvailable,
|
|
753799
752820
|
onFeedbackChange: setPlanFeedback
|
|
753800
|
-
}), [showClearContext,
|
|
752821
|
+
}), [showClearContext, usage30, mode2, isAutoModeAvailable, isBypassPermissionsModeAvailable]);
|
|
753801
752822
|
function onImagePaste(base64Image, mediaType, filename, dimensions, _sourcePath) {
|
|
753802
752823
|
const pasteId = nextPasteIdRef.current++;
|
|
753803
752824
|
const newContent = {
|
|
@@ -753895,28 +752916,6 @@ function ExitPlanModePermissionRequest({
|
|
|
753895
752916
|
async function handleResponse(value2) {
|
|
753896
752917
|
const trimmedFeedback = planFeedback.trim();
|
|
753897
752918
|
const acceptFeedback = trimmedFeedback || undefined;
|
|
753898
|
-
if (value2 === "ultraplan") {
|
|
753899
|
-
logEvent("tengu_plan_exit", {
|
|
753900
|
-
planLengthChars: currentPlan.length,
|
|
753901
|
-
outcome: "ultraplan",
|
|
753902
|
-
interviewPhaseEnabled: isPlanModeInterviewPhaseEnabled(),
|
|
753903
|
-
planStructureVariant
|
|
753904
|
-
});
|
|
753905
|
-
onDone();
|
|
753906
|
-
onReject();
|
|
753907
|
-
toolUseConfirm.onReject("Plan being refined via Ultraplan \u2014 please wait for the result.");
|
|
753908
|
-
launchUltraplan({
|
|
753909
|
-
blurb: "",
|
|
753910
|
-
seedPlan: currentPlan,
|
|
753911
|
-
getAppState: store2.getState,
|
|
753912
|
-
setAppState: store2.setState,
|
|
753913
|
-
signal: new AbortController().signal
|
|
753914
|
-
}).then((msg) => enqueuePendingNotification({
|
|
753915
|
-
value: msg,
|
|
753916
|
-
mode: "task-notification"
|
|
753917
|
-
})).catch(logError2);
|
|
753918
|
-
return;
|
|
753919
|
-
}
|
|
753920
752919
|
const updatedInput = isV2 && !planEditedLocally ? {} : {
|
|
753921
752920
|
plan: currentPlan
|
|
753922
752921
|
};
|
|
@@ -754339,7 +753338,6 @@ ${currentPlan}${verificationInstruction}${transcriptHint}${teamHint}${feedbackSu
|
|
|
754339
753338
|
}
|
|
754340
753339
|
function buildPlanApprovalOptions({
|
|
754341
753340
|
showClearContext,
|
|
754342
|
-
showUltraplan,
|
|
754343
753341
|
usedPercent,
|
|
754344
753342
|
isAutoModeAvailable,
|
|
754345
753343
|
isBypassPermissionsModeAvailable,
|
|
@@ -754375,12 +753373,6 @@ function buildPlanApprovalOptions({
|
|
|
754375
753373
|
label: "Yes, manually approve edits",
|
|
754376
753374
|
value: "yes-default-keep-context"
|
|
754377
753375
|
});
|
|
754378
|
-
if (showUltraplan) {
|
|
754379
|
-
options5.push({
|
|
754380
|
-
label: "No, refine with Ultraplan on UR on the web",
|
|
754381
|
-
value: "ultraplan"
|
|
754382
|
-
});
|
|
754383
|
-
}
|
|
754384
753376
|
options5.push({
|
|
754385
753377
|
type: "input",
|
|
754386
753378
|
label: "No, keep planning",
|
|
@@ -754417,7 +753409,6 @@ var init_ExitPlanModePermissionRequest = __esm(() => {
|
|
|
754417
753409
|
init_AppState();
|
|
754418
753410
|
init_state();
|
|
754419
753411
|
init_generateSessionName();
|
|
754420
|
-
init_ultraplan();
|
|
754421
753412
|
init_ink2();
|
|
754422
753413
|
init_constants2();
|
|
754423
753414
|
init_agentSwarmsEnabled();
|
|
@@ -754426,7 +753417,6 @@ var init_ExitPlanModePermissionRequest = __esm(() => {
|
|
|
754426
753417
|
init_file();
|
|
754427
753418
|
init_ide();
|
|
754428
753419
|
init_log2();
|
|
754429
|
-
init_messageQueueManager();
|
|
754430
753420
|
init_messages();
|
|
754431
753421
|
init_model();
|
|
754432
753422
|
init_PermissionMode();
|
|
@@ -760089,7 +759079,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
760089
759079
|
function getSemverPart(version3) {
|
|
760090
759080
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
760091
759081
|
}
|
|
760092
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.80.
|
|
759082
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.80.2") {
|
|
760093
759083
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
|
|
760094
759084
|
if (!updatedVersion) {
|
|
760095
759085
|
return null;
|
|
@@ -760138,7 +759128,7 @@ function AutoUpdater({
|
|
|
760138
759128
|
return;
|
|
760139
759129
|
}
|
|
760140
759130
|
if (false) {}
|
|
760141
|
-
const currentVersion = "1.80.
|
|
759131
|
+
const currentVersion = "1.80.2";
|
|
760142
759132
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
760143
759133
|
let latestVersion = await getLatestVersion(channel);
|
|
760144
759134
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -760367,12 +759357,12 @@ function NativeAutoUpdater({
|
|
|
760367
759357
|
logEvent("tengu_native_auto_updater_start", {});
|
|
760368
759358
|
try {
|
|
760369
759359
|
const maxVersion = await getMaxVersion();
|
|
760370
|
-
if (maxVersion && gt("1.80.
|
|
759360
|
+
if (maxVersion && gt("1.80.2", maxVersion)) {
|
|
760371
759361
|
const msg = await getMaxVersionMessage();
|
|
760372
759362
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
760373
759363
|
}
|
|
760374
759364
|
const result = await installLatest(channel);
|
|
760375
|
-
const currentVersion = "1.80.
|
|
759365
|
+
const currentVersion = "1.80.2";
|
|
760376
759366
|
const latencyMs = Date.now() - startTime;
|
|
760377
759367
|
if (result.lockFailed) {
|
|
760378
759368
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -760509,17 +759499,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
760509
759499
|
const maxVersion = await getMaxVersion();
|
|
760510
759500
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
760511
759501
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
760512
|
-
if (gte("1.80.
|
|
760513
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.80.
|
|
759502
|
+
if (gte("1.80.2", maxVersion)) {
|
|
759503
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.80.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
760514
759504
|
setUpdateAvailable(false);
|
|
760515
759505
|
return;
|
|
760516
759506
|
}
|
|
760517
759507
|
latest = maxVersion;
|
|
760518
759508
|
}
|
|
760519
|
-
const hasUpdate = latest && !gte("1.80.
|
|
759509
|
+
const hasUpdate = latest && !gte("1.80.2", latest) && !shouldSkipVersion(latest);
|
|
760520
759510
|
setUpdateAvailable(!!hasUpdate);
|
|
760521
759511
|
if (hasUpdate) {
|
|
760522
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.80.
|
|
759512
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.80.2"} -> ${latest}`);
|
|
760523
759513
|
}
|
|
760524
759514
|
};
|
|
760525
759515
|
$2[0] = t1;
|
|
@@ -760553,7 +759543,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
760553
759543
|
wrap: "truncate",
|
|
760554
759544
|
children: [
|
|
760555
759545
|
"currentVersion: ",
|
|
760556
|
-
"1.80.
|
|
759546
|
+
"1.80.2"
|
|
760557
759547
|
]
|
|
760558
759548
|
}, undefined, true, undefined, this);
|
|
760559
759549
|
$2[3] = verbose;
|
|
@@ -763964,17 +762954,15 @@ var init_getNextPermissionMode = __esm(() => {
|
|
|
763964
762954
|
init_permissionSetup();
|
|
763965
762955
|
});
|
|
763966
762956
|
|
|
763967
|
-
// src/utils/
|
|
763968
|
-
function
|
|
763969
|
-
const
|
|
763970
|
-
if (!
|
|
763971
|
-
return [];
|
|
763972
|
-
if (text2.startsWith("/"))
|
|
762957
|
+
// src/utils/remoteReviewKeyword.ts
|
|
762958
|
+
function findRemoteReviewTriggerPositions(text2) {
|
|
762959
|
+
const keyword = "ultrareview";
|
|
762960
|
+
if (!new RegExp(keyword, "i").test(text2) || text2.startsWith("/"))
|
|
763973
762961
|
return [];
|
|
763974
762962
|
const quotedRanges = [];
|
|
763975
762963
|
let openQuote = null;
|
|
763976
762964
|
let openAt = 0;
|
|
763977
|
-
const isWord = (ch2) =>
|
|
762965
|
+
const isWord = (ch2) => Boolean(ch2 && /[\p{L}\p{N}_]/u.test(ch2));
|
|
763978
762966
|
for (let i3 = 0;i3 < text2.length; i3++) {
|
|
763979
762967
|
const ch2 = text2[i3];
|
|
763980
762968
|
if (openQuote) {
|
|
@@ -763994,32 +762982,29 @@ function findKeywordTriggerPositions(text2, keyword) {
|
|
|
763994
762982
|
}
|
|
763995
762983
|
}
|
|
763996
762984
|
const positions = [];
|
|
763997
|
-
const
|
|
763998
|
-
const matches = text2.matchAll(wordRe);
|
|
763999
|
-
for (const match of matches) {
|
|
762985
|
+
for (const match of text2.matchAll(/\bultrareview\b/gi)) {
|
|
764000
762986
|
if (match.index === undefined)
|
|
764001
762987
|
continue;
|
|
764002
762988
|
const start = match.index;
|
|
764003
762989
|
const end = start + match[0].length;
|
|
764004
|
-
if (quotedRanges.some((
|
|
762990
|
+
if (quotedRanges.some((range) => start >= range.start && start < range.end)) {
|
|
764005
762991
|
continue;
|
|
762992
|
+
}
|
|
764006
762993
|
const before = text2[start - 1];
|
|
764007
762994
|
const after = text2[end];
|
|
764008
762995
|
if (before === "/" || before === "\\" || before === "-")
|
|
764009
762996
|
continue;
|
|
764010
|
-
if (after === "/" || after === "\\" || after === "-" || after === "?")
|
|
762997
|
+
if (after === "/" || after === "\\" || after === "-" || after === "?") {
|
|
764011
762998
|
continue;
|
|
762999
|
+
}
|
|
764012
763000
|
if (after === "." && isWord(text2[end + 1]))
|
|
764013
763001
|
continue;
|
|
764014
763002
|
positions.push({ word: match[0], start, end });
|
|
764015
763003
|
}
|
|
764016
763004
|
return positions;
|
|
764017
763005
|
}
|
|
764018
|
-
function findUltrareviewTriggerPositions(text2) {
|
|
764019
|
-
return findKeywordTriggerPositions(text2, "ultrareview");
|
|
764020
|
-
}
|
|
764021
763006
|
var OPEN_TO_CLOSE;
|
|
764022
|
-
var
|
|
763007
|
+
var init_remoteReviewKeyword = __esm(() => {
|
|
764023
763008
|
OPEN_TO_CLOSE = {
|
|
764024
763009
|
"`": "`",
|
|
764025
763010
|
'"': '"',
|
|
@@ -771411,7 +770396,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
771411
770396
|
project_dir: getOriginalCwd(),
|
|
771412
770397
|
added_dirs: addedDirs
|
|
771413
770398
|
},
|
|
771414
|
-
version: "1.80.
|
|
770399
|
+
version: "1.80.2",
|
|
771415
770400
|
output_style: {
|
|
771416
770401
|
name: outputStyleName
|
|
771417
770402
|
},
|
|
@@ -771546,7 +770531,7 @@ function StatusLineInner({
|
|
|
771546
770531
|
const attention = customStatusError ?? taskAttention;
|
|
771547
770532
|
const terminalSize = React133.useContext(TerminalSizeContext);
|
|
771548
770533
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
771549
|
-
version: "1.80.
|
|
770534
|
+
version: "1.80.2",
|
|
771550
770535
|
providerLabel: providerRuntime.providerLabel,
|
|
771551
770536
|
authMode: providerRuntime.authLabel,
|
|
771552
770537
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -771949,33 +770934,33 @@ function BackgroundTaskStatus(t0) {
|
|
|
771949
770934
|
const viewedIdx = t82;
|
|
771950
770935
|
const availableWidth = Math.max(20, columns - 20 - 4);
|
|
771951
770936
|
const t92 = selectedIdx >= 0 ? selectedIdx : 0;
|
|
771952
|
-
let
|
|
770937
|
+
let t10;
|
|
771953
770938
|
if ($2[15] !== availableWidth || $2[16] !== pillWidths || $2[17] !== t92) {
|
|
771954
|
-
|
|
770939
|
+
t10 = calculateHorizontalScrollWindow(pillWidths, availableWidth, 2, t92);
|
|
771955
770940
|
$2[15] = availableWidth;
|
|
771956
770941
|
$2[16] = pillWidths;
|
|
771957
770942
|
$2[17] = t92;
|
|
771958
|
-
$2[18] =
|
|
770943
|
+
$2[18] = t10;
|
|
771959
770944
|
} else {
|
|
771960
|
-
|
|
770945
|
+
t10 = $2[18];
|
|
771961
770946
|
}
|
|
771962
770947
|
const {
|
|
771963
770948
|
startIndex,
|
|
771964
770949
|
endIndex,
|
|
771965
770950
|
showLeftArrow,
|
|
771966
770951
|
showRightArrow
|
|
771967
|
-
} =
|
|
771968
|
-
let
|
|
770952
|
+
} = t10;
|
|
770953
|
+
let t11;
|
|
771969
770954
|
if ($2[19] !== allPills || $2[20] !== endIndex || $2[21] !== startIndex) {
|
|
771970
|
-
|
|
770955
|
+
t11 = allPills.slice(startIndex, endIndex);
|
|
771971
770956
|
$2[19] = allPills;
|
|
771972
770957
|
$2[20] = endIndex;
|
|
771973
770958
|
$2[21] = startIndex;
|
|
771974
|
-
$2[22] =
|
|
770959
|
+
$2[22] = t11;
|
|
771975
770960
|
} else {
|
|
771976
|
-
|
|
770961
|
+
t11 = $2[22];
|
|
771977
770962
|
}
|
|
771978
|
-
const visiblePills =
|
|
770963
|
+
const visiblePills = t11;
|
|
771979
770964
|
let t12;
|
|
771980
770965
|
if ($2[23] !== showLeftArrow) {
|
|
771981
770966
|
t12 = showLeftArrow && /* @__PURE__ */ jsx_dev_runtime416.jsxDEV(ThemedText, {
|
|
@@ -772095,36 +771080,7 @@ function BackgroundTaskStatus(t0) {
|
|
|
772095
771080
|
} else {
|
|
772096
771081
|
t9 = $2[42];
|
|
772097
771082
|
}
|
|
772098
|
-
|
|
772099
|
-
if ($2[43] !== runningTasks) {
|
|
772100
|
-
t10 = pillNeedsCta(runningTasks) && /* @__PURE__ */ jsx_dev_runtime416.jsxDEV(ThemedText, {
|
|
772101
|
-
dimColor: true,
|
|
772102
|
-
children: [
|
|
772103
|
-
" \xB7 ",
|
|
772104
|
-
figures_default.arrowDown,
|
|
772105
|
-
" to view"
|
|
772106
|
-
]
|
|
772107
|
-
}, undefined, true, undefined, this);
|
|
772108
|
-
$2[43] = runningTasks;
|
|
772109
|
-
$2[44] = t10;
|
|
772110
|
-
} else {
|
|
772111
|
-
t10 = $2[44];
|
|
772112
|
-
}
|
|
772113
|
-
let t11;
|
|
772114
|
-
if ($2[45] !== t10 || $2[46] !== t9) {
|
|
772115
|
-
t11 = /* @__PURE__ */ jsx_dev_runtime416.jsxDEV(jsx_dev_runtime416.Fragment, {
|
|
772116
|
-
children: [
|
|
772117
|
-
t9,
|
|
772118
|
-
t10
|
|
772119
|
-
]
|
|
772120
|
-
}, undefined, true, undefined, this);
|
|
772121
|
-
$2[45] = t10;
|
|
772122
|
-
$2[46] = t9;
|
|
772123
|
-
$2[47] = t11;
|
|
772124
|
-
} else {
|
|
772125
|
-
t11 = $2[47];
|
|
772126
|
-
}
|
|
772127
|
-
return t11;
|
|
771083
|
+
return t9;
|
|
772128
771084
|
}
|
|
772129
771085
|
function _temp164(pill_0, i_0) {
|
|
772130
771086
|
const pillText = `@${pill_0.name}`;
|
|
@@ -772654,14 +771610,14 @@ function usePrStatus(isLoading, enabled = true) {
|
|
|
772654
771610
|
return;
|
|
772655
771611
|
}
|
|
772656
771612
|
if (!cancelled) {
|
|
772657
|
-
timeoutRef.current = setTimeout(poll,
|
|
771613
|
+
timeoutRef.current = setTimeout(poll, POLL_INTERVAL_MS2);
|
|
772658
771614
|
}
|
|
772659
771615
|
}
|
|
772660
771616
|
const elapsed = Date.now() - lastFetchRef.current;
|
|
772661
|
-
if (elapsed >=
|
|
771617
|
+
if (elapsed >= POLL_INTERVAL_MS2) {
|
|
772662
771618
|
poll();
|
|
772663
771619
|
} else {
|
|
772664
|
-
timeoutRef.current = setTimeout(poll,
|
|
771620
|
+
timeoutRef.current = setTimeout(poll, POLL_INTERVAL_MS2 - elapsed);
|
|
772665
771621
|
}
|
|
772666
771622
|
return () => {
|
|
772667
771623
|
cancelled = true;
|
|
@@ -772673,7 +771629,7 @@ function usePrStatus(isLoading, enabled = true) {
|
|
|
772673
771629
|
}, [isLoading, enabled]);
|
|
772674
771630
|
return prStatus;
|
|
772675
771631
|
}
|
|
772676
|
-
var import_react251,
|
|
771632
|
+
var import_react251, POLL_INTERVAL_MS2 = 60000, SLOW_GH_THRESHOLD_MS = 4000, IDLE_STOP_MS, INITIAL_STATE3;
|
|
772677
771633
|
var init_usePrStatus = __esm(() => {
|
|
772678
771634
|
init_state();
|
|
772679
771635
|
init_ghPrStatus();
|
|
@@ -774224,10 +773180,7 @@ function PromptInput({
|
|
|
774224
773180
|
});
|
|
774225
773181
|
const displayedValue = import_react258.useMemo(() => isSearchingHistory && historyMatch ? getValueFromInput(typeof historyMatch === "string" ? historyMatch : historyMatch.display) : input, [isSearchingHistory, historyMatch, input]);
|
|
774226
773182
|
const thinkTriggers = import_react258.useMemo(() => findThinkingTriggerPositions(displayedValue), [displayedValue]);
|
|
774227
|
-
const
|
|
774228
|
-
const ultraplanLaunching = useAppState((s) => s.ultraplanLaunching);
|
|
774229
|
-
const ultraplanTriggers = import_react258.useMemo(() => [], [displayedValue, ultraplanSessionUrl, ultraplanLaunching]);
|
|
774230
|
-
const ultrareviewTriggers = import_react258.useMemo(() => isUltrareviewEnabled() ? findUltrareviewTriggerPositions(displayedValue) : [], [displayedValue]);
|
|
773183
|
+
const ultrareviewTriggers = import_react258.useMemo(() => isUltrareviewEnabled() ? findRemoteReviewTriggerPositions(displayedValue) : [], [displayedValue]);
|
|
774231
773184
|
const btwTriggers = import_react258.useMemo(() => findBtwTriggerPositions(displayedValue), [displayedValue]);
|
|
774232
773185
|
const buddyTriggers = import_react258.useMemo(() => findBuddyTriggerPositions(displayedValue), [displayedValue]);
|
|
774233
773186
|
const slashCommandTriggers = import_react258.useMemo(() => {
|
|
@@ -774366,7 +773319,6 @@ function PromptInput({
|
|
|
774366
773319
|
}
|
|
774367
773320
|
}
|
|
774368
773321
|
}
|
|
774369
|
-
if (false) {}
|
|
774370
773322
|
for (const trigger2 of ultrareviewTriggers) {
|
|
774371
773323
|
for (let i3 = trigger2.start;i3 < trigger2.end; i3++) {
|
|
774372
773324
|
highlights.push({
|
|
@@ -774390,7 +773342,7 @@ function PromptInput({
|
|
|
774390
773342
|
}
|
|
774391
773343
|
}
|
|
774392
773344
|
return highlights;
|
|
774393
|
-
}, [isSearchingHistory, historyQuery, historyMatch, historyFailedMatch, cursorOffset, btwTriggers, imageRefPositions, memberMentionHighlights, slashCommandTriggers, tokenBudgetTriggers, slackChannelTriggers, displayedValue, voiceInterimRange, thinkTriggers,
|
|
773345
|
+
}, [isSearchingHistory, historyQuery, historyMatch, historyFailedMatch, cursorOffset, btwTriggers, imageRefPositions, memberMentionHighlights, slashCommandTriggers, tokenBudgetTriggers, slackChannelTriggers, displayedValue, voiceInterimRange, thinkTriggers, ultrareviewTriggers, buddyTriggers]);
|
|
774394
773346
|
const {
|
|
774395
773347
|
addNotification,
|
|
774396
773348
|
removeNotification
|
|
@@ -774407,11 +773359,6 @@ function PromptInput({
|
|
|
774407
773359
|
removeNotification("ultrathink-active");
|
|
774408
773360
|
}
|
|
774409
773361
|
}, [addNotification, removeNotification, thinkTriggers.length]);
|
|
774410
|
-
import_react258.useEffect(() => {
|
|
774411
|
-
if (false) {} else {
|
|
774412
|
-
removeNotification("ultraplan-active");
|
|
774413
|
-
}
|
|
774414
|
-
}, [addNotification, removeNotification, ultraplanTriggers.length]);
|
|
774415
773362
|
import_react258.useEffect(() => {
|
|
774416
773363
|
if (isUltrareviewEnabled() && ultrareviewTriggers.length) {
|
|
774417
773364
|
addNotification({
|
|
@@ -775780,7 +774727,7 @@ var init_PromptInput = __esm(() => {
|
|
|
775780
774727
|
init_teammateMailbox();
|
|
775781
774728
|
init_thinking();
|
|
775782
774729
|
init_tokenBudget();
|
|
775783
|
-
|
|
774730
|
+
init_remoteReviewKeyword();
|
|
775784
774731
|
init_AutoModeOptInDialog();
|
|
775785
774732
|
init_BridgeDialog();
|
|
775786
774733
|
init_ConfigurableShortcutHint();
|
|
@@ -780302,7 +779249,6 @@ var init_processBashCommand = __esm(() => {
|
|
|
780302
779249
|
import { randomUUID as randomUUID83 } from "crypto";
|
|
780303
779250
|
async function processUserInput({
|
|
780304
779251
|
input,
|
|
780305
|
-
preExpansionInput,
|
|
780306
779252
|
mode: mode2,
|
|
780307
779253
|
setToolJSX,
|
|
780308
779254
|
context: context6,
|
|
@@ -780325,7 +779271,7 @@ async function processUserInput({
|
|
|
780325
779271
|
}
|
|
780326
779272
|
queryCheckpoint("query_process_user_input_base_start");
|
|
780327
779273
|
const appState = context6.getAppState();
|
|
780328
|
-
const result = await processUserInputBase(input, mode2, setToolJSX, context6, pastedContents, ideSelection, messages, uuid3, isAlreadyProcessing, querySource, canUseTool, appState.toolPermissionContext.mode, skipSlashCommands, bridgeOrigin, isMeta, skipAttachments
|
|
779274
|
+
const result = await processUserInputBase(input, mode2, setToolJSX, context6, pastedContents, ideSelection, messages, uuid3, isAlreadyProcessing, querySource, canUseTool, appState.toolPermissionContext.mode, skipSlashCommands, bridgeOrigin, isMeta, skipAttachments);
|
|
780329
779275
|
queryCheckpoint("query_process_user_input_base_end");
|
|
780330
779276
|
if (!result.shouldQuery) {
|
|
780331
779277
|
return result;
|
|
@@ -780394,7 +779340,7 @@ function applyTruncation(content) {
|
|
|
780394
779340
|
}
|
|
780395
779341
|
return content;
|
|
780396
779342
|
}
|
|
780397
|
-
async function processUserInputBase(input, mode2, setToolJSX, context6, pastedContents, ideSelection, messages, uuid3, isAlreadyProcessing, querySource, canUseTool, permissionMode, skipSlashCommands, bridgeOrigin, isMeta, skipAttachments
|
|
779343
|
+
async function processUserInputBase(input, mode2, setToolJSX, context6, pastedContents, ideSelection, messages, uuid3, isAlreadyProcessing, querySource, canUseTool, permissionMode, skipSlashCommands, bridgeOrigin, isMeta, skipAttachments) {
|
|
780398
779344
|
let inputString = null;
|
|
780399
779345
|
let precedingInputBlocks = [];
|
|
780400
779346
|
const imageMetadataTexts = [];
|
|
@@ -780496,7 +779442,6 @@ async function processUserInputBase(input, mode2, setToolJSX, context6, pastedCo
|
|
|
780496
779442
|
}
|
|
780497
779443
|
}
|
|
780498
779444
|
}
|
|
780499
|
-
if (false) {}
|
|
780500
779445
|
const shouldExtractAttachments = !skipAttachments && inputString !== null && (mode2 !== "prompt" || effectiveSkipSlash || !inputString.startsWith("/"));
|
|
780501
779446
|
queryCheckpoint("query_attachment_loading_start");
|
|
780502
779447
|
const attachmentMessages = shouldExtractAttachments ? await toArray2(getAttachmentMessages(inputString, context6, ideSelection ?? null, [], messages, querySource)) : [];
|
|
@@ -780546,7 +779491,6 @@ var init_processUserInput = __esm(() => {
|
|
|
780546
779491
|
init_imageStore();
|
|
780547
779492
|
init_messages();
|
|
780548
779493
|
init_queryProfiler();
|
|
780549
|
-
init_keyword();
|
|
780550
779494
|
init_processTextPrompt();
|
|
780551
779495
|
});
|
|
780552
779496
|
|
|
@@ -780794,7 +779738,6 @@ async function executeUserInput(params) {
|
|
|
780794
779738
|
const isFirst = i3 === 0;
|
|
780795
779739
|
const result = await processUserInput({
|
|
780796
779740
|
input: cmd.value,
|
|
780797
|
-
preExpansionInput: cmd.preExpansionValue,
|
|
780798
779741
|
mode: cmd.mode,
|
|
780799
779742
|
setToolJSX,
|
|
780800
779743
|
context: makeContext(),
|
|
@@ -783843,7 +782786,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
783843
782786
|
} catch {}
|
|
783844
782787
|
const data = {
|
|
783845
782788
|
trigger: trigger2,
|
|
783846
|
-
version: "1.80.
|
|
782789
|
+
version: "1.80.2",
|
|
783847
782790
|
platform: process.platform,
|
|
783848
782791
|
transcript,
|
|
783849
782792
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -786424,8 +785367,7 @@ var init_controlSchemas = __esm(() => {
|
|
|
786424
785367
|
}).describe("Requests permission to use a tool with the given input."));
|
|
786425
785368
|
SDKControlSetPermissionModeRequestSchema = lazySchema(() => exports_external.object({
|
|
786426
785369
|
subtype: exports_external.literal("set_permission_mode"),
|
|
786427
|
-
mode: PermissionModeSchema()
|
|
786428
|
-
ultraplan: exports_external.boolean().optional().describe("@internal CCR ultraplan session marker.")
|
|
785370
|
+
mode: PermissionModeSchema()
|
|
786429
785371
|
}).describe("Sets the permission mode for tool execution handling."));
|
|
786430
785372
|
SDKControlSetModelRequestSchema = lazySchema(() => exports_external.object({
|
|
786431
785373
|
subtype: exports_external.literal("set_model"),
|
|
@@ -791872,7 +790814,6 @@ function REPL({
|
|
|
791872
790814
|
const tasks2 = useAppState((s) => s.tasks);
|
|
791873
790815
|
const workerSandboxPermissions = useAppState((s) => s.workerSandboxPermissions);
|
|
791874
790816
|
const elicitation = useAppState((s) => s.elicitation);
|
|
791875
|
-
const ultraplanPendingChoice = useAppState((s) => s.ultraplanPendingChoice);
|
|
791876
790817
|
const viewingAgentTaskId = useAppState((s) => s.viewingAgentTaskId);
|
|
791877
790818
|
const setAppState = useSetAppState();
|
|
791878
790819
|
const viewedLocalAgent = viewingAgentTaskId ? tasks2[viewingAgentTaskId] : undefined;
|
|
@@ -792330,11 +791271,6 @@ function REPL({
|
|
|
792330
791271
|
const [showBashesDialog, setShowBashesDialog] = import_react317.useState(false);
|
|
792331
791272
|
const [isSearchingHistory, setIsSearchingHistory] = import_react317.useState(false);
|
|
792332
791273
|
const [isHelpOpen, setIsHelpOpen] = import_react317.useState(false);
|
|
792333
|
-
import_react317.useEffect(() => {
|
|
792334
|
-
if (ultraplanPendingChoice && showBashesDialog) {
|
|
792335
|
-
setShowBashesDialog(false);
|
|
792336
|
-
}
|
|
792337
|
-
}, [ultraplanPendingChoice, showBashesDialog]);
|
|
792338
791274
|
const isTerminalFocused = useTerminalFocus();
|
|
792339
791275
|
const terminalFocusRef = import_react317.useRef(isTerminalFocused);
|
|
792340
791276
|
terminalFocusRef.current = isTerminalFocused;
|
|
@@ -792622,8 +791558,6 @@ function REPL({
|
|
|
792622
791558
|
return "cost";
|
|
792623
791559
|
if (allowDialogsWithAnimation && idleReturnPending)
|
|
792624
791560
|
return "idle-return";
|
|
792625
|
-
if (false)
|
|
792626
|
-
;
|
|
792627
791561
|
if (allowDialogsWithAnimation && showIdeOnboarding)
|
|
792628
791562
|
return "ide-onboarding";
|
|
792629
791563
|
if (false)
|
|
@@ -794265,7 +793199,7 @@ Note: ctrl + z now suspends UR, ctrl + _ undoes input.
|
|
|
794265
793199
|
}, undefined, false, undefined, this),
|
|
794266
793200
|
transcriptScrollRef ? /* @__PURE__ */ jsx_dev_runtime456.jsxDEV(ScrollKeybindingHandler, {
|
|
794267
793201
|
scrollRef,
|
|
794268
|
-
isActive:
|
|
793202
|
+
isActive: true,
|
|
794269
793203
|
isModal: !searchOpen,
|
|
794270
793204
|
onScroll: () => jumpRef.current?.disarmSearch()
|
|
794271
793205
|
}, undefined, false, undefined, this) : null,
|
|
@@ -794749,7 +793683,6 @@ Note: ctrl + z now suspends UR, ctrl + _ undoes input.
|
|
|
794749
793683
|
focusedInputDialog === "desktop-upsell" && /* @__PURE__ */ jsx_dev_runtime456.jsxDEV(DesktopUpsellStartup, {
|
|
794750
793684
|
onDone: () => setShowDesktopUpsellStartup(false)
|
|
794751
793685
|
}, undefined, false, undefined, this),
|
|
794752
|
-
null,
|
|
794753
793686
|
mrRender(),
|
|
794754
793687
|
!toolJSX?.shouldHidePromptInput && !focusedInputDialog && !isExiting && !disabled && !cursor && /* @__PURE__ */ jsx_dev_runtime456.jsxDEV(jsx_dev_runtime456.Fragment, {
|
|
794755
793688
|
children: [
|
|
@@ -796222,7 +795155,7 @@ function WelcomeV2() {
|
|
|
796222
795155
|
dimColor: true,
|
|
796223
795156
|
children: [
|
|
796224
795157
|
"v",
|
|
796225
|
-
"1.80.
|
|
795158
|
+
"1.80.2"
|
|
796226
795159
|
]
|
|
796227
795160
|
}, undefined, true, undefined, this)
|
|
796228
795161
|
]
|
|
@@ -797482,7 +796415,7 @@ function completeOnboarding() {
|
|
|
797482
796415
|
saveGlobalConfig((current) => ({
|
|
797483
796416
|
...current,
|
|
797484
796417
|
hasCompletedOnboarding: true,
|
|
797485
|
-
lastOnboardingVersion: "1.80.
|
|
796418
|
+
lastOnboardingVersion: "1.80.2"
|
|
797486
796419
|
}));
|
|
797487
796420
|
}
|
|
797488
796421
|
function showDialog(root2, renderer) {
|
|
@@ -799460,7 +798393,7 @@ var init_debug2 = __esm(() => {
|
|
|
799460
798393
|
TAIL_READ_BYTES = 64 * 1024;
|
|
799461
798394
|
});
|
|
799462
798395
|
|
|
799463
|
-
// src/skills/bundled/
|
|
798396
|
+
// src/skills/bundled/fix-bug.ts
|
|
799464
798397
|
function registerFixBugSkill() {
|
|
799465
798398
|
registerBundledSkill({
|
|
799466
798399
|
name: "fix-bug",
|
|
@@ -799469,7 +798402,7 @@ function registerFixBugSkill() {
|
|
|
799469
798402
|
argumentHint: "[bug description or reproduction steps]",
|
|
799470
798403
|
userInvocable: true,
|
|
799471
798404
|
async getPromptForCommand(args) {
|
|
799472
|
-
let prompt =
|
|
798405
|
+
let prompt = FIX_BUG_PROMPT;
|
|
799473
798406
|
if (args)
|
|
799474
798407
|
prompt += `
|
|
799475
798408
|
|
|
@@ -799480,17 +798413,17 @@ ${args}`;
|
|
|
799480
798413
|
}
|
|
799481
798414
|
});
|
|
799482
798415
|
}
|
|
799483
|
-
var
|
|
799484
|
-
var
|
|
798416
|
+
var FIX_BUG_PROMPT;
|
|
798417
|
+
var init_fix_bug = __esm(() => {
|
|
799485
798418
|
init_constants2();
|
|
799486
798419
|
init_bundledSkills();
|
|
799487
|
-
|
|
798420
|
+
FIX_BUG_PROMPT = `# Fix Bug Skill: Reproduce, Root-Cause, and Repair
|
|
799488
798421
|
|
|
799489
798422
|
Reproduce, root-cause, and fix the described bug in an isolated worktree. Produce a regression test and keep publishing user-controlled.
|
|
799490
798423
|
|
|
799491
798424
|
## Setup
|
|
799492
798425
|
|
|
799493
|
-
1. Use the ${AGENT_TOOL_NAME} tool with "isolation: worktree" and model "route: strong" to create a fresh git worktree and branch named "ur/
|
|
798426
|
+
1. Use the ${AGENT_TOOL_NAME} tool with "isolation: worktree" and model "route: strong" to create a fresh git worktree and branch named "ur/fix-bug-<timestamp>-<slug>".
|
|
799494
798427
|
2. Inside the worktree, inspect the relevant files, tests, and reproduction steps. Read the current git state with "git status" and "git log --oneline -5".
|
|
799495
798428
|
|
|
799496
798429
|
## Reproduction
|
|
@@ -801696,7 +800629,7 @@ var init_bundled = __esm(() => {
|
|
|
801696
800629
|
init_batch();
|
|
801697
800630
|
init_urInChrome();
|
|
801698
800631
|
init_debug2();
|
|
801699
|
-
|
|
800632
|
+
init_fix_bug();
|
|
801700
800633
|
init_refactor();
|
|
801701
800634
|
init_paper_implementation();
|
|
801702
800635
|
init_benchmark();
|
|
@@ -802628,7 +801561,7 @@ function appendToLog(path28, message) {
|
|
|
802628
801561
|
cwd: getFsImplementation().cwd(),
|
|
802629
801562
|
userType: process.env.USER_TYPE,
|
|
802630
801563
|
sessionId: getSessionId(),
|
|
802631
|
-
version: "1.80.
|
|
801564
|
+
version: "1.80.2"
|
|
802632
801565
|
};
|
|
802633
801566
|
getLogWriter(path28).write(messageWithTimestamp);
|
|
802634
801567
|
}
|
|
@@ -806792,8 +805725,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
806792
805725
|
}
|
|
806793
805726
|
async function checkEnvLessBridgeMinVersion() {
|
|
806794
805727
|
const cfg = await getEnvLessBridgeConfig();
|
|
806795
|
-
if (cfg.min_version && lt("1.80.
|
|
806796
|
-
return `Your version of UR (${"1.80.
|
|
805728
|
+
if (cfg.min_version && lt("1.80.2", cfg.min_version)) {
|
|
805729
|
+
return `Your version of UR (${"1.80.2"}) is too old for Remote Control.
|
|
806797
805730
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
806798
805731
|
}
|
|
806799
805732
|
return null;
|
|
@@ -807267,7 +806200,7 @@ async function initBridgeCore(params) {
|
|
|
807267
806200
|
const rawApi = createBridgeApiClient({
|
|
807268
806201
|
baseUrl,
|
|
807269
806202
|
getAccessToken,
|
|
807270
|
-
runnerVersion: "1.80.
|
|
806203
|
+
runnerVersion: "1.80.2",
|
|
807271
806204
|
onDebug: logForDebugging,
|
|
807272
806205
|
onAuth401,
|
|
807273
806206
|
getTrustedDeviceToken
|
|
@@ -810229,7 +809162,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
|
|
|
810229
809162
|
const teamContext = currentAppState.teamContext;
|
|
810230
809163
|
if (teamContext && isTeamLead(teamContext)) {
|
|
810231
809164
|
const agentName = "team-lead";
|
|
810232
|
-
const
|
|
809165
|
+
const POLL_INTERVAL_MS3 = 500;
|
|
810233
809166
|
while (true) {
|
|
810234
809167
|
const refreshedState = getAppState();
|
|
810235
809168
|
const hasActiveTeammates = hasActiveInProcessTeammates(refreshedState) || refreshedState.teamContext && Object.keys(refreshedState.teamContext.teammates).length > 0;
|
|
@@ -810296,7 +809229,7 @@ ${m.text}
|
|
|
810296
809229
|
run3();
|
|
810297
809230
|
return;
|
|
810298
809231
|
}
|
|
810299
|
-
await sleep2(
|
|
809232
|
+
await sleep2(POLL_INTERVAL_MS3);
|
|
810300
809233
|
}
|
|
810301
809234
|
}
|
|
810302
809235
|
}
|
|
@@ -810429,8 +809362,7 @@ ${m.text}
|
|
|
810429
809362
|
const m = message.request;
|
|
810430
809363
|
setAppState((prev) => ({
|
|
810431
809364
|
...prev,
|
|
810432
|
-
toolPermissionContext: handleSetPermissionMode(m, message.request_id, prev.toolPermissionContext, output)
|
|
810433
|
-
isUltraplanMode: m.ultraplan ?? prev.isUltraplanMode
|
|
809365
|
+
toolPermissionContext: handleSetPermissionMode(m, message.request_id, prev.toolPermissionContext, output)
|
|
810434
809366
|
}));
|
|
810435
809367
|
} else if (message.request.subtype === "set_model") {
|
|
810436
809368
|
const requestedModel = message.request.model ?? "default";
|
|
@@ -816741,7 +815673,7 @@ function getAgUiCapabilities() {
|
|
|
816741
815673
|
name: "UR-Nexus",
|
|
816742
815674
|
type: "ur-nexus",
|
|
816743
815675
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
816744
|
-
version: "1.80.
|
|
815676
|
+
version: "1.80.2",
|
|
816745
815677
|
provider: "UR",
|
|
816746
815678
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
816747
815679
|
},
|
|
@@ -817872,7 +816804,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
817872
816804
|
};
|
|
817873
816805
|
const server2 = new Server({
|
|
817874
816806
|
name: "ur-nexus",
|
|
817875
|
-
version: "1.80.
|
|
816807
|
+
version: "1.80.2"
|
|
817876
816808
|
}, {
|
|
817877
816809
|
capabilities: {
|
|
817878
816810
|
tools: {}
|
|
@@ -819076,7 +818008,7 @@ function thrownResponse(error40) {
|
|
|
819076
818008
|
}
|
|
819077
818009
|
async function createUrMcp2026Runtime(options5) {
|
|
819078
818010
|
const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
|
|
819079
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.80.
|
|
818011
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.80.2" }, { capabilities: {} });
|
|
819080
818012
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
819081
818013
|
try {
|
|
819082
818014
|
await server2.connect(serverTransport);
|
|
@@ -819087,7 +818019,7 @@ async function createUrMcp2026Runtime(options5) {
|
|
|
819087
818019
|
}
|
|
819088
818020
|
const runtime2 = new Mcp2026Runtime({
|
|
819089
818021
|
cwd: options5.cwd,
|
|
819090
|
-
version: "1.80.
|
|
818022
|
+
version: "1.80.2",
|
|
819091
818023
|
backend: {
|
|
819092
818024
|
listTools: async () => {
|
|
819093
818025
|
const listed = await client2.listTools();
|
|
@@ -821689,7 +820621,7 @@ async function update() {
|
|
|
821689
820621
|
logEvent("tengu_update_check", {});
|
|
821690
820622
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
821691
820623
|
const result = await checkUpgradeStatus({
|
|
821692
|
-
currentVersion: "1.80.
|
|
820624
|
+
currentVersion: "1.80.2",
|
|
821693
820625
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
821694
820626
|
installationType: diagnostic2.installationType,
|
|
821695
820627
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -823017,7 +821949,7 @@ ${customInstructions}` : customInstructions;
|
|
|
823017
821949
|
}
|
|
823018
821950
|
}
|
|
823019
821951
|
logForDiagnosticsNoPII("info", "started", {
|
|
823020
|
-
version: "1.80.
|
|
821952
|
+
version: "1.80.2",
|
|
823021
821953
|
is_native_binary: isInBundledMode()
|
|
823022
821954
|
});
|
|
823023
821955
|
registerCleanup(async () => {
|
|
@@ -823804,7 +822736,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
823804
822736
|
pendingHookMessages
|
|
823805
822737
|
}, renderAndRun);
|
|
823806
822738
|
}
|
|
823807
|
-
}).version("1.80.
|
|
822739
|
+
}).version("1.80.2 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
823808
822740
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
823809
822741
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
823810
822742
|
if (canUserConfigureAdvisor()) {
|
|
@@ -824912,7 +823844,7 @@ if (false) {}
|
|
|
824912
823844
|
async function main2() {
|
|
824913
823845
|
const args = process.argv.slice(2);
|
|
824914
823846
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
824915
|
-
console.log(`${"1.80.
|
|
823847
|
+
console.log(`${"1.80.2"} (UR-Nexus)`);
|
|
824916
823848
|
return;
|
|
824917
823849
|
}
|
|
824918
823850
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|