ur-agent 1.58.0 → 1.58.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.58.1
|
|
4
|
+
|
|
5
|
+
- Unified vision-capability detection behind
|
|
6
|
+
`src/utils/model/visionCapability.ts`. Three implementations disagreed: the
|
|
7
|
+
Ollama adapter's `modelCapabilityEnabled` returned `has(x) ?? true`, so a
|
|
8
|
+
model advertising nothing was assumed capable; `ur model-doctor` matched
|
|
9
|
+
names privately; the router read a precomputed flag. The binary shape was the
|
|
10
|
+
defect — absence of evidence was reported as evidence, in opposite directions.
|
|
11
|
+
- Vision support is now tri-state. A capability list is authoritative both ways;
|
|
12
|
+
a recognised name can confirm support but never rule it out; anything else is
|
|
13
|
+
`unknown`. Images are withheld only on a confirmed no, so servers without a
|
|
14
|
+
capabilities endpoint keep working, and the note distinguishes "this model
|
|
15
|
+
cannot see" from "support could not be confirmed" — advice that had been
|
|
16
|
+
backwards for models like `kimi-k2.7-code:cloud`.
|
|
17
|
+
|
|
18
|
+
- Fixed choice menus where all three fields said the same thing. Neither the
|
|
19
|
+
schema nor the tool prompt stated that `header`, `label` and `description`
|
|
20
|
+
must carry different information, so the header restated the question and the
|
|
21
|
+
description paraphrased the label — leaving the one field with room to be
|
|
22
|
+
informative saying nothing. Each field now has a defined job, and the prompt
|
|
23
|
+
carries a contrasted bad/good example rather than an abstract instruction.
|
|
24
|
+
|
|
3
25
|
## 1.58.0
|
|
4
26
|
|
|
5
27
|
- Added per-agent cost and token attribution: `ur agent-inspect --costs`.
|
package/dist/cli.js
CHANGED
|
@@ -16738,6 +16738,48 @@ var init_git = __esm(() => {
|
|
|
16738
16738
|
});
|
|
16739
16739
|
});
|
|
16740
16740
|
|
|
16741
|
+
// src/utils/model/visionCapability.ts
|
|
16742
|
+
function nameSuggestsVision(model) {
|
|
16743
|
+
const lowered = model.toLowerCase();
|
|
16744
|
+
return VISION_NAME_HINTS.some((hint) => lowered.includes(hint));
|
|
16745
|
+
}
|
|
16746
|
+
function resolveVisionSupport(model, capabilities) {
|
|
16747
|
+
if (capabilities && capabilities.size > 0) {
|
|
16748
|
+
return capabilities.has("vision") ? "supported" : "unsupported";
|
|
16749
|
+
}
|
|
16750
|
+
return nameSuggestsVision(model) ? "supported" : "unknown";
|
|
16751
|
+
}
|
|
16752
|
+
function shouldSendImages(support) {
|
|
16753
|
+
return support !== "unsupported";
|
|
16754
|
+
}
|
|
16755
|
+
function describeVisionSupport(support, model, imageCount) {
|
|
16756
|
+
if (imageCount === 0 || support === "supported")
|
|
16757
|
+
return null;
|
|
16758
|
+
const plural = imageCount === 1 ? "1 image" : `${imageCount} images`;
|
|
16759
|
+
const named = model ? `"${model}"` : "the selected model";
|
|
16760
|
+
if (support === "unsupported") {
|
|
16761
|
+
return `[${plural} could not be sent: ${named} advertises its capabilities and ` + `vision is not among them, so it cannot see images. Tell the user this ` + `directly and suggest switching to a vision model with /model.]`;
|
|
16762
|
+
}
|
|
16763
|
+
return `[${plural} sent, but ${named} does not advertise its capabilities, so ` + `vision support could not be confirmed. If you cannot see the image, say ` + `so plainly rather than guessing at its contents.]`;
|
|
16764
|
+
}
|
|
16765
|
+
var VISION_NAME_HINTS;
|
|
16766
|
+
var init_visionCapability = __esm(() => {
|
|
16767
|
+
VISION_NAME_HINTS = [
|
|
16768
|
+
"vision",
|
|
16769
|
+
"llava",
|
|
16770
|
+
"moondream",
|
|
16771
|
+
"minicpm-v",
|
|
16772
|
+
"bakllava",
|
|
16773
|
+
"llama3.2-vision",
|
|
16774
|
+
"qwen2-vl",
|
|
16775
|
+
"qwen2.5vl",
|
|
16776
|
+
"gemma3",
|
|
16777
|
+
"pixtral",
|
|
16778
|
+
"internvl",
|
|
16779
|
+
"cogvlm"
|
|
16780
|
+
];
|
|
16781
|
+
});
|
|
16782
|
+
|
|
16741
16783
|
// node_modules/shell-quote/quote.js
|
|
16742
16784
|
var require_quote = __commonJS((exports, module) => {
|
|
16743
16785
|
var OPS = [
|
|
@@ -57512,7 +57554,7 @@ function toOllamaChatRequest(params, stream4, capabilities) {
|
|
|
57512
57554
|
model: params.model,
|
|
57513
57555
|
messages: [
|
|
57514
57556
|
systemMessage,
|
|
57515
|
-
...messagesToOllama(params.messages,
|
|
57557
|
+
...messagesToOllama(params.messages, resolveVisionSupport(params.model, capabilities), params.model)
|
|
57516
57558
|
].filter((message) => message.role === "tool" || message.content.trim() !== "" || (message.images?.length ?? 0) > 0 || (message.tool_calls?.length ?? 0) > 0),
|
|
57517
57559
|
stream: stream4,
|
|
57518
57560
|
...tools.length > 0 ? { tools } : {},
|
|
@@ -57558,7 +57600,8 @@ function systemToText(system) {
|
|
|
57558
57600
|
|
|
57559
57601
|
`);
|
|
57560
57602
|
}
|
|
57561
|
-
function messagesToOllama(messages,
|
|
57603
|
+
function messagesToOllama(messages, visionSupport, model = "") {
|
|
57604
|
+
const supportsVision = shouldSendImages(visionSupport);
|
|
57562
57605
|
const result = [];
|
|
57563
57606
|
const toolNamesById = new Map;
|
|
57564
57607
|
for (const message of messages) {
|
|
@@ -57608,7 +57651,7 @@ function messagesToOllama(messages, supportsVision, model = "") {
|
|
|
57608
57651
|
case "tool_result": {
|
|
57609
57652
|
const toolName = toolNamesById.get(block.tool_use_id) ?? block.tool_use_id;
|
|
57610
57653
|
const split = splitToolResultContent(block.content);
|
|
57611
|
-
const note = describeToolResultImages(split.images.length, toolName,
|
|
57654
|
+
const note = describeToolResultImages(split.images.length, toolName, visionSupport, model);
|
|
57612
57655
|
toolMessages.push({
|
|
57613
57656
|
role: "tool",
|
|
57614
57657
|
content: [split.text, note].filter(Boolean).join(`
|
|
@@ -57626,7 +57669,7 @@ function messagesToOllama(messages, supportsVision, model = "") {
|
|
|
57626
57669
|
if (supportsVision && block.source.type === "base64") {
|
|
57627
57670
|
images.push(block.source.data);
|
|
57628
57671
|
} else if (!supportsVision) {
|
|
57629
|
-
textParts.push("[Image input omitted
|
|
57672
|
+
textParts.push(describeVisionSupport(visionSupport, model, 1) ?? "[Image input omitted]");
|
|
57630
57673
|
} else {
|
|
57631
57674
|
textParts.push("[Image input omitted: unsupported image source]");
|
|
57632
57675
|
}
|
|
@@ -58299,15 +58342,15 @@ function splitToolResultContent(content) {
|
|
|
58299
58342
|
return { text: textParts.filter(Boolean).join(`
|
|
58300
58343
|
`), images };
|
|
58301
58344
|
}
|
|
58302
|
-
function describeToolResultImages(count3, toolName,
|
|
58345
|
+
function describeToolResultImages(count3, toolName, visionSupport, model) {
|
|
58303
58346
|
if (count3 === 0)
|
|
58304
58347
|
return "";
|
|
58305
58348
|
const plural = count3 === 1 ? "image" : `${count3} images`;
|
|
58306
|
-
if (
|
|
58349
|
+
if (visionSupport === "supported") {
|
|
58307
58350
|
return `[${plural} from ${toolName} attached to the following message]`;
|
|
58308
58351
|
}
|
|
58309
|
-
const
|
|
58310
|
-
return `[
|
|
58352
|
+
const detail = describeVisionSupport(visionSupport, model, count3);
|
|
58353
|
+
return detail ? `[from ${toolName}] ${detail}` : "";
|
|
58311
58354
|
}
|
|
58312
58355
|
function contentBlockToText(content) {
|
|
58313
58356
|
if (typeof content === "string") {
|
|
@@ -58387,6 +58430,7 @@ var init_ollama = __esm(() => {
|
|
|
58387
58430
|
init_ollamaTuning();
|
|
58388
58431
|
init_kimiToolCalls();
|
|
58389
58432
|
init_json();
|
|
58433
|
+
init_visionCapability();
|
|
58390
58434
|
init_debug();
|
|
58391
58435
|
ollamaModelCapabilitiesCache = new Map;
|
|
58392
58436
|
warnedToolsUnsupportedModels = new Set;
|
|
@@ -75160,7 +75204,7 @@ var init_auth = __esm(() => {
|
|
|
75160
75204
|
|
|
75161
75205
|
// src/utils/userAgent.ts
|
|
75162
75206
|
function getURCodeUserAgent() {
|
|
75163
|
-
return `ur/${"1.58.
|
|
75207
|
+
return `ur/${"1.58.1"}`;
|
|
75164
75208
|
}
|
|
75165
75209
|
|
|
75166
75210
|
// src/utils/workloadContext.ts
|
|
@@ -75182,7 +75226,7 @@ function getUserAgent() {
|
|
|
75182
75226
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
75183
75227
|
const workload = getWorkload();
|
|
75184
75228
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
75185
|
-
return `ur-cli/${"1.58.
|
|
75229
|
+
return `ur-cli/${"1.58.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
75186
75230
|
}
|
|
75187
75231
|
function getMCPUserAgent() {
|
|
75188
75232
|
const parts = [];
|
|
@@ -75196,7 +75240,7 @@ function getMCPUserAgent() {
|
|
|
75196
75240
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
75197
75241
|
}
|
|
75198
75242
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
75199
|
-
return `ur/${"1.58.
|
|
75243
|
+
return `ur/${"1.58.1"}${suffix}`;
|
|
75200
75244
|
}
|
|
75201
75245
|
function getWebFetchUserAgent() {
|
|
75202
75246
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -75334,7 +75378,7 @@ var init_user = __esm(() => {
|
|
|
75334
75378
|
deviceId,
|
|
75335
75379
|
sessionId: getSessionId(),
|
|
75336
75380
|
email: getEmail(),
|
|
75337
|
-
appVersion: "1.58.
|
|
75381
|
+
appVersion: "1.58.1",
|
|
75338
75382
|
platform: getHostPlatformForAnalytics(),
|
|
75339
75383
|
organizationUuid,
|
|
75340
75384
|
accountUuid,
|
|
@@ -83534,7 +83578,7 @@ var init_metadata = __esm(() => {
|
|
|
83534
83578
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
83535
83579
|
WHITESPACE_REGEX = /\s+/;
|
|
83536
83580
|
getVersionBase = memoize_default(() => {
|
|
83537
|
-
const match = "1.58.
|
|
83581
|
+
const match = "1.58.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
83538
83582
|
return match ? match[0] : undefined;
|
|
83539
83583
|
});
|
|
83540
83584
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -83574,7 +83618,7 @@ var init_metadata = __esm(() => {
|
|
|
83574
83618
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
83575
83619
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
83576
83620
|
isURAiAuth: isURAISubscriber(),
|
|
83577
|
-
version: "1.58.
|
|
83621
|
+
version: "1.58.1",
|
|
83578
83622
|
versionBase: getVersionBase(),
|
|
83579
83623
|
buildTime: "",
|
|
83580
83624
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -84244,7 +84288,7 @@ function initialize1PEventLogging() {
|
|
|
84244
84288
|
const platform2 = getPlatform();
|
|
84245
84289
|
const attributes = {
|
|
84246
84290
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
84247
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.58.
|
|
84291
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.58.1"
|
|
84248
84292
|
};
|
|
84249
84293
|
if (platform2 === "wsl") {
|
|
84250
84294
|
const wslVersion = getWslVersion();
|
|
@@ -84272,7 +84316,7 @@ function initialize1PEventLogging() {
|
|
|
84272
84316
|
})
|
|
84273
84317
|
]
|
|
84274
84318
|
});
|
|
84275
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.58.
|
|
84319
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.58.1");
|
|
84276
84320
|
}
|
|
84277
84321
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
84278
84322
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -88101,8 +88145,7 @@ function buildOllamaShowRequestBody(name) {
|
|
|
88101
88145
|
return JSON.stringify({ model: name });
|
|
88102
88146
|
}
|
|
88103
88147
|
function inferVision(name, capabilities) {
|
|
88104
|
-
|
|
88105
|
-
return capabilities.includes("vision") || lowered.includes("vision") || lowered.includes("llava") || lowered.includes("moondream") || lowered.includes("minicpm-v");
|
|
88148
|
+
return resolveVisionSupport(name, capabilities.length > 0 ? new Set(capabilities) : null) === "supported";
|
|
88106
88149
|
}
|
|
88107
88150
|
function inferCode(name, family) {
|
|
88108
88151
|
const lowered = `${name} ${family ?? ""}`.toLowerCase();
|
|
@@ -88173,6 +88216,7 @@ var call = async (args) => {
|
|
|
88173
88216
|
};
|
|
88174
88217
|
};
|
|
88175
88218
|
var init_model_doctor = __esm(() => {
|
|
88219
|
+
init_visionCapability();
|
|
88176
88220
|
init_argumentSubstitution();
|
|
88177
88221
|
init_ollamaConfig();
|
|
88178
88222
|
});
|
|
@@ -94111,7 +94155,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
94111
94155
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
94112
94156
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
94113
94157
|
}
|
|
94114
|
-
var urVersion = "1.58.
|
|
94158
|
+
var urVersion = "1.58.1", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
|
|
94115
94159
|
var init_trends = __esm(() => {
|
|
94116
94160
|
init_a2aCardSignature();
|
|
94117
94161
|
coverage = [
|
|
@@ -96912,7 +96956,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
96912
96956
|
if (!isAttributionHeaderEnabled()) {
|
|
96913
96957
|
return "";
|
|
96914
96958
|
}
|
|
96915
|
-
const version2 = `${"1.58.
|
|
96959
|
+
const version2 = `${"1.58.1"}.${fingerprint}`;
|
|
96916
96960
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
96917
96961
|
const cch = "";
|
|
96918
96962
|
const workload = getWorkload();
|
|
@@ -154501,7 +154545,7 @@ var init_projectSafety = __esm(() => {
|
|
|
154501
154545
|
function getInstruments() {
|
|
154502
154546
|
if (instruments)
|
|
154503
154547
|
return instruments;
|
|
154504
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.58.
|
|
154548
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.58.1");
|
|
154505
154549
|
instruments = {
|
|
154506
154550
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
154507
154551
|
description: "GenAI operation duration.",
|
|
@@ -154599,7 +154643,7 @@ function genAiAgentAttributes() {
|
|
|
154599
154643
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
154600
154644
|
"gen_ai.provider.name": "ur",
|
|
154601
154645
|
"gen_ai.agent.name": "UR-Nexus",
|
|
154602
|
-
"gen_ai.agent.version": "1.58.
|
|
154646
|
+
"gen_ai.agent.version": "1.58.1"
|
|
154603
154647
|
};
|
|
154604
154648
|
}
|
|
154605
154649
|
function genAiWorkflowAttributes(workflowName) {
|
|
@@ -154615,7 +154659,7 @@ function genAiWorkflowAttributes(workflowName) {
|
|
|
154615
154659
|
function startGenAiWorkflowSpan(workflowName) {
|
|
154616
154660
|
const attributes = genAiWorkflowAttributes(workflowName);
|
|
154617
154661
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
154618
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.58.
|
|
154662
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.58.1").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
154619
154663
|
}
|
|
154620
154664
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
154621
154665
|
try {
|
|
@@ -154653,7 +154697,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
154653
154697
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
154654
154698
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
154655
154699
|
}
|
|
154656
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.58.
|
|
154700
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.58.1").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
154657
154701
|
}
|
|
154658
154702
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
154659
154703
|
try {
|
|
@@ -206172,7 +206216,7 @@ function getTelemetryAttributes() {
|
|
|
206172
206216
|
attributes["session.id"] = sessionId;
|
|
206173
206217
|
}
|
|
206174
206218
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
206175
|
-
attributes["app.version"] = "1.58.
|
|
206219
|
+
attributes["app.version"] = "1.58.1";
|
|
206176
206220
|
}
|
|
206177
206221
|
const oauthAccount = getOauthAccountInfo();
|
|
206178
206222
|
if (oauthAccount) {
|
|
@@ -222363,6 +222407,24 @@ Usage notes:
|
|
|
222363
222407
|
- Use multiSelect: true to allow multiple answers to be selected for a question
|
|
222364
222408
|
- If you recommend a specific option, make that the first option in the list and add "(Recommended)" at the end of the label
|
|
222365
222409
|
|
|
222410
|
+
Writing the three fields \u2014 they must each carry DIFFERENT information:
|
|
222411
|
+
- \`header\` names the dimension being decided ("Database", "Auth method"). It is not a shortened copy of the question.
|
|
222412
|
+
- \`label\` names the choice ("PostgreSQL"). It is not a restatement of the question.
|
|
222413
|
+
- \`description\` says what happens if this is picked and what it costs \u2014 the trade-off, limitation or consequence the label does not already convey. It is the only field with room to be genuinely informative, so it must not paraphrase the label back to the user.
|
|
222414
|
+
|
|
222415
|
+
A description that can be derived from reading the label is wasted space and makes the menu harder to use, not easier. Before writing one, ask: does this tell the user something they could not already see? If not, replace it with the thing that actually distinguishes this option from its neighbours.
|
|
222416
|
+
|
|
222417
|
+
Bad \u2014 description restates the label:
|
|
222418
|
+
question: "Which database should we use?"
|
|
222419
|
+
header: "Which DB" (repeats the question)
|
|
222420
|
+
label: "Use PostgreSQL" description: "Use PostgreSQL as the database."
|
|
222421
|
+
|
|
222422
|
+
Good \u2014 each field adds something:
|
|
222423
|
+
question: "Which database should we use?"
|
|
222424
|
+
header: "Database"
|
|
222425
|
+
label: "PostgreSQL" description: "Relational with strong consistency; needs a running server and a migration step."
|
|
222426
|
+
label: "SQLite" description: "Zero setup, single file; no concurrent writers, so it will not survive multiple workers."
|
|
222427
|
+
|
|
222366
222428
|
Plan mode note: In plan mode, use this tool to clarify requirements or choose between approaches BEFORE finalizing your plan. Do NOT use this tool to ask "Is my plan ready?" or "Should I proceed?" - use ${EXIT_PLAN_MODE_TOOL_NAME} for plan approval. IMPORTANT: Do not reference "the plan" in your questions (e.g., "Do you have feedback about the plan?", "Does the plan look good?") because the user cannot see the plan in the UI until you call ${EXIT_PLAN_MODE_TOOL_NAME}. If you need plan approval, use ${EXIT_PLAN_MODE_TOOL_NAME} instead.
|
|
222367
222429
|
`;
|
|
222368
222430
|
});
|
|
@@ -241846,7 +241908,7 @@ function getInstallationEnv() {
|
|
|
241846
241908
|
return;
|
|
241847
241909
|
}
|
|
241848
241910
|
function getURCodeVersion() {
|
|
241849
|
-
return "1.58.
|
|
241911
|
+
return "1.58.1";
|
|
241850
241912
|
}
|
|
241851
241913
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
241852
241914
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -249177,7 +249239,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
249177
249239
|
const client2 = new Client({
|
|
249178
249240
|
name: "ur",
|
|
249179
249241
|
title: "UR",
|
|
249180
|
-
version: "1.58.
|
|
249242
|
+
version: "1.58.1",
|
|
249181
249243
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
249182
249244
|
websiteUrl: PRODUCT_URL
|
|
249183
249245
|
}, {
|
|
@@ -249537,7 +249599,7 @@ var init_client5 = __esm(() => {
|
|
|
249537
249599
|
const client2 = new Client({
|
|
249538
249600
|
name: "ur",
|
|
249539
249601
|
title: "UR",
|
|
249540
|
-
version: "1.58.
|
|
249602
|
+
version: "1.58.1",
|
|
249541
249603
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
249542
249604
|
websiteUrl: PRODUCT_URL
|
|
249543
249605
|
}, {
|
|
@@ -262138,7 +262200,7 @@ async function createRuntime() {
|
|
|
262138
262200
|
bootstrapTelemetry();
|
|
262139
262201
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
262140
262202
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
262141
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.58.
|
|
262203
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.58.1"
|
|
262142
262204
|
}));
|
|
262143
262205
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
262144
262206
|
resource,
|
|
@@ -262171,11 +262233,11 @@ async function createRuntime() {
|
|
|
262171
262233
|
setMeterProvider(meterProvider);
|
|
262172
262234
|
setLoggerProvider(loggerProvider);
|
|
262173
262235
|
if (meterProvider) {
|
|
262174
|
-
const meter = meterProvider.getMeter("ur-agent", "1.58.
|
|
262236
|
+
const meter = meterProvider.getMeter("ur-agent", "1.58.1");
|
|
262175
262237
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
262176
262238
|
}
|
|
262177
262239
|
if (loggerProvider) {
|
|
262178
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.58.
|
|
262240
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.58.1"));
|
|
262179
262241
|
}
|
|
262180
262242
|
if (!cleanupRegistered2) {
|
|
262181
262243
|
cleanupRegistered2 = true;
|
|
@@ -262837,9 +262899,9 @@ async function assertMinVersion() {
|
|
|
262837
262899
|
if (false) {}
|
|
262838
262900
|
try {
|
|
262839
262901
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
262840
|
-
if (versionConfig.minVersion && lt("1.58.
|
|
262902
|
+
if (versionConfig.minVersion && lt("1.58.1", versionConfig.minVersion)) {
|
|
262841
262903
|
console.error(`
|
|
262842
|
-
It looks like your version of UR (${"1.58.
|
|
262904
|
+
It looks like your version of UR (${"1.58.1"}) needs an update.
|
|
262843
262905
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
262844
262906
|
|
|
262845
262907
|
To update, please run:
|
|
@@ -263055,7 +263117,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
263055
263117
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
263056
263118
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
263057
263119
|
pid: process.pid,
|
|
263058
|
-
currentVersion: "1.58.
|
|
263120
|
+
currentVersion: "1.58.1"
|
|
263059
263121
|
});
|
|
263060
263122
|
return "in_progress";
|
|
263061
263123
|
}
|
|
@@ -263064,7 +263126,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
263064
263126
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
263065
263127
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
263066
263128
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
263067
|
-
currentVersion: "1.58.
|
|
263129
|
+
currentVersion: "1.58.1"
|
|
263068
263130
|
});
|
|
263069
263131
|
console.error(`
|
|
263070
263132
|
Error: Windows NPM detected in WSL
|
|
@@ -263599,7 +263661,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
263599
263661
|
}
|
|
263600
263662
|
async function getDoctorDiagnostic() {
|
|
263601
263663
|
const installationType = await getCurrentInstallationType();
|
|
263602
|
-
const version2 = typeof MACRO !== "undefined" ? "1.58.
|
|
263664
|
+
const version2 = typeof MACRO !== "undefined" ? "1.58.1" : "unknown";
|
|
263603
263665
|
const installationPath = await getInstallationPath();
|
|
263604
263666
|
const invokedBinary = getInvokedBinary();
|
|
263605
263667
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -264534,8 +264596,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
264534
264596
|
const maxVersion = await getMaxVersion();
|
|
264535
264597
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
264536
264598
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
264537
|
-
if (gte("1.58.
|
|
264538
|
-
logForDebugging(`Native installer: current version ${"1.58.
|
|
264599
|
+
if (gte("1.58.1", maxVersion)) {
|
|
264600
|
+
logForDebugging(`Native installer: current version ${"1.58.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
264539
264601
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
264540
264602
|
latency_ms: Date.now() - startTime,
|
|
264541
264603
|
max_version: maxVersion,
|
|
@@ -264546,7 +264608,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
264546
264608
|
version2 = maxVersion;
|
|
264547
264609
|
}
|
|
264548
264610
|
}
|
|
264549
|
-
if (!forceReinstall && version2 === "1.58.
|
|
264611
|
+
if (!forceReinstall && version2 === "1.58.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
264550
264612
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
264551
264613
|
logEvent("tengu_native_update_complete", {
|
|
264552
264614
|
latency_ms: Date.now() - startTime,
|
|
@@ -320508,13 +320570,13 @@ var init_AskUserQuestionTool = __esm(() => {
|
|
|
320508
320570
|
import_compiler_runtime117 = __toESM(require_compiler_runtime(), 1);
|
|
320509
320571
|
jsx_dev_runtime145 = __toESM(require_jsx_dev_runtime(), 1);
|
|
320510
320572
|
questionOptionSchema = lazySchema(() => exports_external.object({
|
|
320511
|
-
label: exports_external.string().describe(
|
|
320512
|
-
description: exports_external.string().describe(
|
|
320573
|
+
label: exports_external.string().describe('The choice itself, 1-5 words. Name the option, do not restate the question: for "Which database?" use "PostgreSQL", not "Use PostgreSQL for the database".'),
|
|
320574
|
+
description: exports_external.string().describe('What actually happens if this is chosen, and the cost of choosing it \u2014 the information the user needs that the label does not already give them. Must NOT restate the label in a full sentence. Bad: label "PostgreSQL" / description "Use PostgreSQL." Good: label "PostgreSQL" / description "Relational, strong consistency; needs a running server and a migration step." Include the trade-off, limitation, or consequence that makes this choice different from the others.'),
|
|
320513
320575
|
preview: exports_external.string().optional().describe("Optional preview content rendered when this option is focused. Use for mockups, code snippets, or visual comparisons that help users compare options. See the tool description for the expected content format.")
|
|
320514
320576
|
}));
|
|
320515
320577
|
questionSchema = lazySchema(() => exports_external.object({
|
|
320516
320578
|
question: exports_external.string().describe('The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"'),
|
|
320517
|
-
header: exports_external.string().describe(`
|
|
320579
|
+
header: exports_external.string().describe(`The category being decided, as a chip/tag (max ${ASK_USER_QUESTION_TOOL_CHIP_WIDTH} chars). Name the dimension, not the question: for "Which database should we use?" the header is "Database", not "Which DB". Examples: "Auth method", "Library", "Approach".`),
|
|
320518
320580
|
options: exports_external.array(questionOptionSchema()).min(2).max(8).describe(`The available choices for this question. Must have 2-8 options. Keep options concise and distinct; there should be no 'Other' option, that will be provided automatically.`),
|
|
320519
320581
|
multiSelect: exports_external.boolean().default(false).describe("Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive.")
|
|
320520
320582
|
}));
|
|
@@ -334741,7 +334803,7 @@ function isAnyTracingEnabled() {
|
|
|
334741
334803
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
334742
334804
|
}
|
|
334743
334805
|
function getTracer() {
|
|
334744
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.58.
|
|
334806
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.58.1");
|
|
334745
334807
|
}
|
|
334746
334808
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
334747
334809
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -364244,7 +364306,7 @@ function Feedback({
|
|
|
364244
364306
|
platform: env2.platform,
|
|
364245
364307
|
gitRepo: envInfo.isGit,
|
|
364246
364308
|
terminal: env2.terminal,
|
|
364247
|
-
version: "1.58.
|
|
364309
|
+
version: "1.58.1",
|
|
364248
364310
|
transcript: normalizeMessagesForAPI(messages),
|
|
364249
364311
|
errors: sanitizedErrors,
|
|
364250
364312
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -364436,7 +364498,7 @@ function Feedback({
|
|
|
364436
364498
|
", ",
|
|
364437
364499
|
env2.terminal,
|
|
364438
364500
|
", v",
|
|
364439
|
-
"1.58.
|
|
364501
|
+
"1.58.1"
|
|
364440
364502
|
]
|
|
364441
364503
|
}, undefined, true, undefined, this)
|
|
364442
364504
|
]
|
|
@@ -364542,7 +364604,7 @@ ${sanitizedDescription}
|
|
|
364542
364604
|
` + `**Environment Info**
|
|
364543
364605
|
` + `- Platform: ${env2.platform}
|
|
364544
364606
|
` + `- Terminal: ${env2.terminal}
|
|
364545
|
-
` + `- Version: ${"1.58.
|
|
364607
|
+
` + `- Version: ${"1.58.1"}
|
|
364546
364608
|
` + `- Feedback ID: ${feedbackId}
|
|
364547
364609
|
` + `
|
|
364548
364610
|
**Errors**
|
|
@@ -367652,7 +367714,7 @@ function buildPrimarySection() {
|
|
|
367652
367714
|
}, undefined, false, undefined, this);
|
|
367653
367715
|
return [{
|
|
367654
367716
|
label: "Version",
|
|
367655
|
-
value: "1.58.
|
|
367717
|
+
value: "1.58.1"
|
|
367656
367718
|
}, {
|
|
367657
367719
|
label: "Session name",
|
|
367658
367720
|
value: nameValue
|
|
@@ -370982,7 +371044,7 @@ function Config({
|
|
|
370982
371044
|
}
|
|
370983
371045
|
}, undefined, false, undefined, this)
|
|
370984
371046
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
370985
|
-
currentVersion: "1.58.
|
|
371047
|
+
currentVersion: "1.58.1",
|
|
370986
371048
|
onChoice: (choice) => {
|
|
370987
371049
|
setShowSubmenu(null);
|
|
370988
371050
|
setTabsHidden(false);
|
|
@@ -370994,7 +371056,7 @@ function Config({
|
|
|
370994
371056
|
autoUpdatesChannel: "stable"
|
|
370995
371057
|
};
|
|
370996
371058
|
if (choice === "stay") {
|
|
370997
|
-
newSettings.minimumVersion = "1.58.
|
|
371059
|
+
newSettings.minimumVersion = "1.58.1";
|
|
370998
371060
|
}
|
|
370999
371061
|
updateSettingsForSource("userSettings", newSettings);
|
|
371000
371062
|
setSettingsData((prev_27) => ({
|
|
@@ -379058,7 +379120,7 @@ function HelpV2(t0) {
|
|
|
379058
379120
|
let t6;
|
|
379059
379121
|
if ($2[31] !== tabs) {
|
|
379060
379122
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
379061
|
-
title: `UR v${"1.58.
|
|
379123
|
+
title: `UR v${"1.58.1"}`,
|
|
379062
379124
|
color: "professionalBlue",
|
|
379063
379125
|
defaultTab: "general",
|
|
379064
379126
|
children: tabs
|
|
@@ -379975,7 +380037,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
379975
380037
|
async function handleInitialize(options2) {
|
|
379976
380038
|
return {
|
|
379977
380039
|
name: "UR",
|
|
379978
|
-
version: "1.58.
|
|
380040
|
+
version: "1.58.1",
|
|
379979
380041
|
protocolVersion: "0.1.0",
|
|
379980
380042
|
workspaceRoot: options2.cwd,
|
|
379981
380043
|
capabilities: {
|
|
@@ -397083,7 +397145,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
397083
397145
|
return [];
|
|
397084
397146
|
}
|
|
397085
397147
|
}
|
|
397086
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.58.
|
|
397148
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.58.1") {
|
|
397087
397149
|
if (process.env.USER_TYPE === "ant") {
|
|
397088
397150
|
const changelog = "";
|
|
397089
397151
|
if (changelog) {
|
|
@@ -397110,7 +397172,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.58.0")
|
|
|
397110
397172
|
releaseNotes
|
|
397111
397173
|
};
|
|
397112
397174
|
}
|
|
397113
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.58.
|
|
397175
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.58.1") {
|
|
397114
397176
|
if (process.env.USER_TYPE === "ant") {
|
|
397115
397177
|
const changelog = "";
|
|
397116
397178
|
if (changelog) {
|
|
@@ -399967,7 +400029,7 @@ function getRecentActivitySync() {
|
|
|
399967
400029
|
return cachedActivity;
|
|
399968
400030
|
}
|
|
399969
400031
|
function getLogoDisplayData() {
|
|
399970
|
-
const version2 = process.env.DEMO_VERSION ?? "1.58.
|
|
400032
|
+
const version2 = process.env.DEMO_VERSION ?? "1.58.1";
|
|
399971
400033
|
const serverUrl = getDirectConnectServerUrl();
|
|
399972
400034
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
399973
400035
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -400851,7 +400913,7 @@ function LogoV2() {
|
|
|
400851
400913
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
400852
400914
|
t2 = () => {
|
|
400853
400915
|
const currentConfig2 = getGlobalConfig();
|
|
400854
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.58.
|
|
400916
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.58.1") {
|
|
400855
400917
|
return;
|
|
400856
400918
|
}
|
|
400857
400919
|
saveGlobalConfig(_temp327);
|
|
@@ -401536,12 +401598,12 @@ function LogoV2() {
|
|
|
401536
401598
|
return t41;
|
|
401537
401599
|
}
|
|
401538
401600
|
function _temp327(current) {
|
|
401539
|
-
if (current.lastReleaseNotesSeen === "1.58.
|
|
401601
|
+
if (current.lastReleaseNotesSeen === "1.58.1") {
|
|
401540
401602
|
return current;
|
|
401541
401603
|
}
|
|
401542
401604
|
return {
|
|
401543
401605
|
...current,
|
|
401544
|
-
lastReleaseNotesSeen: "1.58.
|
|
401606
|
+
lastReleaseNotesSeen: "1.58.1"
|
|
401545
401607
|
};
|
|
401546
401608
|
}
|
|
401547
401609
|
function _temp241(s_0) {
|
|
@@ -418339,7 +418401,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
418339
418401
|
if (spec.name !== specName) {
|
|
418340
418402
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
418341
418403
|
}
|
|
418342
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.58.
|
|
418404
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.58.1" : "1.58.1");
|
|
418343
418405
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
418344
418406
|
throw new Error("invalid ur-agent package version");
|
|
418345
418407
|
}
|
|
@@ -419332,7 +419394,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
419332
419394
|
path: ".github/workflows/ur.yml",
|
|
419333
419395
|
root: "project",
|
|
419334
419396
|
content: compileAgenticCiWorkflow("default", {
|
|
419335
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.58.
|
|
419397
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.58.1" : "1.58.1"
|
|
419336
419398
|
})
|
|
419337
419399
|
},
|
|
419338
419400
|
{
|
|
@@ -419395,7 +419457,7 @@ function value(tokens, flag) {
|
|
|
419395
419457
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
419396
419458
|
}
|
|
419397
419459
|
function cliVersion() {
|
|
419398
|
-
return typeof MACRO !== "undefined" ? "1.58.
|
|
419460
|
+
return typeof MACRO !== "undefined" ? "1.58.1" : "1.58.1";
|
|
419399
419461
|
}
|
|
419400
419462
|
function workflowPath(cwd2) {
|
|
419401
419463
|
return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -425251,7 +425313,7 @@ function createAcpStdioApp(deps) {
|
|
|
425251
425313
|
}
|
|
425252
425314
|
},
|
|
425253
425315
|
authMethods: [],
|
|
425254
|
-
agentInfo: { name: "UR-Nexus", version: "1.58.
|
|
425316
|
+
agentInfo: { name: "UR-Nexus", version: "1.58.1" }
|
|
425255
425317
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
425256
425318
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
425257
425319
|
await runtime2.announce({
|
|
@@ -425348,7 +425410,7 @@ function createAcpStdioAgent(deps) {
|
|
|
425348
425410
|
}
|
|
425349
425411
|
},
|
|
425350
425412
|
authMethods: [],
|
|
425351
|
-
agentInfo: { name: "UR-Nexus", version: "1.58.
|
|
425413
|
+
agentInfo: { name: "UR-Nexus", version: "1.58.1" }
|
|
425352
425414
|
});
|
|
425353
425415
|
return;
|
|
425354
425416
|
case "authenticate":
|
|
@@ -632851,7 +632913,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
632851
632913
|
smapsRollup,
|
|
632852
632914
|
platform: process.platform,
|
|
632853
632915
|
nodeVersion: process.version,
|
|
632854
|
-
ccVersion: "1.58.
|
|
632916
|
+
ccVersion: "1.58.1"
|
|
632855
632917
|
};
|
|
632856
632918
|
}
|
|
632857
632919
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -633431,7 +633493,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
633431
633493
|
var call149 = async () => {
|
|
633432
633494
|
return {
|
|
633433
633495
|
type: "text",
|
|
633434
|
-
value: "1.58.
|
|
633496
|
+
value: "1.58.1"
|
|
633435
633497
|
};
|
|
633436
633498
|
}, version2, version_default;
|
|
633437
633499
|
var init_version = __esm(() => {
|
|
@@ -644502,7 +644564,7 @@ function generateHtmlReport(data, insights) {
|
|
|
644502
644564
|
</html>`;
|
|
644503
644565
|
}
|
|
644504
644566
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
644505
|
-
const version3 = typeof MACRO !== "undefined" ? "1.58.
|
|
644567
|
+
const version3 = typeof MACRO !== "undefined" ? "1.58.1" : "unknown";
|
|
644506
644568
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
644507
644569
|
const facets_summary = {
|
|
644508
644570
|
total: facets.size,
|
|
@@ -648805,7 +648867,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
648805
648867
|
init_settings2();
|
|
648806
648868
|
init_slowOperations();
|
|
648807
648869
|
init_uuid();
|
|
648808
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.58.
|
|
648870
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.58.1" : "unknown";
|
|
648809
648871
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
648810
648872
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
648811
648873
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -650020,7 +650082,7 @@ var init_filesystem = __esm(() => {
|
|
|
650020
650082
|
});
|
|
650021
650083
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
650022
650084
|
const nonce = randomBytes20(16).toString("hex");
|
|
650023
|
-
return join228(getURTempDir(), "bundled-skills", "1.58.
|
|
650085
|
+
return join228(getURTempDir(), "bundled-skills", "1.58.1", nonce);
|
|
650024
650086
|
});
|
|
650025
650087
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
650026
650088
|
});
|
|
@@ -656315,7 +656377,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
656315
656377
|
}
|
|
656316
656378
|
function computeFingerprintFromMessages(messages) {
|
|
656317
656379
|
const firstMessageText = extractFirstMessageText(messages);
|
|
656318
|
-
return computeFingerprint(firstMessageText, "1.58.
|
|
656380
|
+
return computeFingerprint(firstMessageText, "1.58.1");
|
|
656319
656381
|
}
|
|
656320
656382
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
656321
656383
|
var init_fingerprint = () => {};
|
|
@@ -658211,7 +658273,7 @@ async function sideQuery(opts) {
|
|
|
658211
658273
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
658212
658274
|
}
|
|
658213
658275
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
658214
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.58.
|
|
658276
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.58.1");
|
|
658215
658277
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
658216
658278
|
const systemBlocks = [
|
|
658217
658279
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -662982,7 +663044,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
662982
663044
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
662983
663045
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
662984
663046
|
betas: getSdkBetas(),
|
|
662985
|
-
ur_version: "1.58.
|
|
663047
|
+
ur_version: "1.58.1",
|
|
662986
663048
|
output_style: outputStyle2,
|
|
662987
663049
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
662988
663050
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -676842,7 +676904,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
676842
676904
|
function getSemverPart(version3) {
|
|
676843
676905
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
676844
676906
|
}
|
|
676845
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.58.
|
|
676907
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.58.1") {
|
|
676846
676908
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
|
|
676847
676909
|
if (!updatedVersion) {
|
|
676848
676910
|
return null;
|
|
@@ -676891,7 +676953,7 @@ function AutoUpdater({
|
|
|
676891
676953
|
return;
|
|
676892
676954
|
}
|
|
676893
676955
|
if (false) {}
|
|
676894
|
-
const currentVersion = "1.58.
|
|
676956
|
+
const currentVersion = "1.58.1";
|
|
676895
676957
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
676896
676958
|
let latestVersion = await getLatestVersion(channel);
|
|
676897
676959
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -677120,12 +677182,12 @@ function NativeAutoUpdater({
|
|
|
677120
677182
|
logEvent("tengu_native_auto_updater_start", {});
|
|
677121
677183
|
try {
|
|
677122
677184
|
const maxVersion = await getMaxVersion();
|
|
677123
|
-
if (maxVersion && gt("1.58.
|
|
677185
|
+
if (maxVersion && gt("1.58.1", maxVersion)) {
|
|
677124
677186
|
const msg = await getMaxVersionMessage();
|
|
677125
677187
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
677126
677188
|
}
|
|
677127
677189
|
const result = await installLatest(channel);
|
|
677128
|
-
const currentVersion = "1.58.
|
|
677190
|
+
const currentVersion = "1.58.1";
|
|
677129
677191
|
const latencyMs = Date.now() - startTime;
|
|
677130
677192
|
if (result.lockFailed) {
|
|
677131
677193
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -677262,17 +677324,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
677262
677324
|
const maxVersion = await getMaxVersion();
|
|
677263
677325
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
677264
677326
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
677265
|
-
if (gte("1.58.
|
|
677266
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.58.
|
|
677327
|
+
if (gte("1.58.1", maxVersion)) {
|
|
677328
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.58.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
677267
677329
|
setUpdateAvailable(false);
|
|
677268
677330
|
return;
|
|
677269
677331
|
}
|
|
677270
677332
|
latest = maxVersion;
|
|
677271
677333
|
}
|
|
677272
|
-
const hasUpdate = latest && !gte("1.58.
|
|
677334
|
+
const hasUpdate = latest && !gte("1.58.1", latest) && !shouldSkipVersion(latest);
|
|
677273
677335
|
setUpdateAvailable(!!hasUpdate);
|
|
677274
677336
|
if (hasUpdate) {
|
|
677275
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.58.
|
|
677337
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.58.1"} -> ${latest}`);
|
|
677276
677338
|
}
|
|
677277
677339
|
};
|
|
677278
677340
|
$2[0] = t1;
|
|
@@ -677306,7 +677368,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
677306
677368
|
wrap: "truncate",
|
|
677307
677369
|
children: [
|
|
677308
677370
|
"currentVersion: ",
|
|
677309
|
-
"1.58.
|
|
677371
|
+
"1.58.1"
|
|
677310
677372
|
]
|
|
677311
677373
|
}, undefined, true, undefined, this);
|
|
677312
677374
|
$2[3] = verbose;
|
|
@@ -688003,7 +688065,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
688003
688065
|
project_dir: getOriginalCwd(),
|
|
688004
688066
|
added_dirs: addedDirs
|
|
688005
688067
|
},
|
|
688006
|
-
version: "1.58.
|
|
688068
|
+
version: "1.58.1",
|
|
688007
688069
|
output_style: {
|
|
688008
688070
|
name: outputStyleName
|
|
688009
688071
|
},
|
|
@@ -688086,7 +688148,7 @@ function StatusLineInner({
|
|
|
688086
688148
|
const taskValues = Object.values(tasks2);
|
|
688087
688149
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
688088
688150
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
688089
|
-
version: "1.58.
|
|
688151
|
+
version: "1.58.1",
|
|
688090
688152
|
providerLabel: providerRuntime.providerLabel,
|
|
688091
688153
|
authMode: providerRuntime.authLabel,
|
|
688092
688154
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -700229,7 +700291,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
700229
700291
|
} catch {}
|
|
700230
700292
|
const data = {
|
|
700231
700293
|
trigger: trigger2,
|
|
700232
|
-
version: "1.58.
|
|
700294
|
+
version: "1.58.1",
|
|
700233
700295
|
platform: process.platform,
|
|
700234
700296
|
transcript,
|
|
700235
700297
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -712509,7 +712571,7 @@ function WelcomeV2() {
|
|
|
712509
712571
|
dimColor: true,
|
|
712510
712572
|
children: [
|
|
712511
712573
|
"v",
|
|
712512
|
-
"1.58.
|
|
712574
|
+
"1.58.1"
|
|
712513
712575
|
]
|
|
712514
712576
|
}, undefined, true, undefined, this)
|
|
712515
712577
|
]
|
|
@@ -713769,7 +713831,7 @@ function completeOnboarding() {
|
|
|
713769
713831
|
saveGlobalConfig((current) => ({
|
|
713770
713832
|
...current,
|
|
713771
713833
|
hasCompletedOnboarding: true,
|
|
713772
|
-
lastOnboardingVersion: "1.58.
|
|
713834
|
+
lastOnboardingVersion: "1.58.1"
|
|
713773
713835
|
}));
|
|
713774
713836
|
}
|
|
713775
713837
|
function showDialog(root2, renderer) {
|
|
@@ -718813,7 +718875,7 @@ function appendToLog(path24, message) {
|
|
|
718813
718875
|
cwd: getFsImplementation().cwd(),
|
|
718814
718876
|
userType: process.env.USER_TYPE,
|
|
718815
718877
|
sessionId: getSessionId(),
|
|
718816
|
-
version: "1.58.
|
|
718878
|
+
version: "1.58.1"
|
|
718817
718879
|
};
|
|
718818
718880
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
718819
718881
|
}
|
|
@@ -722972,8 +723034,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
722972
723034
|
}
|
|
722973
723035
|
async function checkEnvLessBridgeMinVersion() {
|
|
722974
723036
|
const cfg = await getEnvLessBridgeConfig();
|
|
722975
|
-
if (cfg.min_version && lt("1.58.
|
|
722976
|
-
return `Your version of UR (${"1.58.
|
|
723037
|
+
if (cfg.min_version && lt("1.58.1", cfg.min_version)) {
|
|
723038
|
+
return `Your version of UR (${"1.58.1"}) is too old for Remote Control.
|
|
722977
723039
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
722978
723040
|
}
|
|
722979
723041
|
return null;
|
|
@@ -723447,7 +723509,7 @@ async function initBridgeCore(params) {
|
|
|
723447
723509
|
const rawApi = createBridgeApiClient({
|
|
723448
723510
|
baseUrl,
|
|
723449
723511
|
getAccessToken,
|
|
723450
|
-
runnerVersion: "1.58.
|
|
723512
|
+
runnerVersion: "1.58.1",
|
|
723451
723513
|
onDebug: logForDebugging,
|
|
723452
723514
|
onAuth401,
|
|
723453
723515
|
getTrustedDeviceToken
|
|
@@ -732923,7 +732985,7 @@ function getAgUiCapabilities() {
|
|
|
732923
732985
|
name: "UR-Nexus",
|
|
732924
732986
|
type: "ur-nexus",
|
|
732925
732987
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
732926
|
-
version: "1.58.
|
|
732988
|
+
version: "1.58.1",
|
|
732927
732989
|
provider: "UR",
|
|
732928
732990
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
732929
732991
|
},
|
|
@@ -734063,7 +734125,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
734063
734125
|
};
|
|
734064
734126
|
const server2 = new Server({
|
|
734065
734127
|
name: "ur-nexus",
|
|
734066
|
-
version: "1.58.
|
|
734128
|
+
version: "1.58.1"
|
|
734067
734129
|
}, {
|
|
734068
734130
|
capabilities: {
|
|
734069
734131
|
tools: {}
|
|
@@ -735221,7 +735283,7 @@ function thrownResponse(error40) {
|
|
|
735221
735283
|
}
|
|
735222
735284
|
async function createUrMcp2026Runtime(options4) {
|
|
735223
735285
|
const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
|
|
735224
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.58.
|
|
735286
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.58.1" }, { capabilities: {} });
|
|
735225
735287
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
735226
735288
|
try {
|
|
735227
735289
|
await server2.connect(serverTransport);
|
|
@@ -735232,7 +735294,7 @@ async function createUrMcp2026Runtime(options4) {
|
|
|
735232
735294
|
}
|
|
735233
735295
|
const runtime2 = new Mcp2026Runtime({
|
|
735234
735296
|
cwd: options4.cwd,
|
|
735235
|
-
version: "1.58.
|
|
735297
|
+
version: "1.58.1",
|
|
735236
735298
|
backend: {
|
|
735237
735299
|
listTools: async () => {
|
|
735238
735300
|
const listed = await client2.listTools();
|
|
@@ -737365,7 +737427,7 @@ async function update() {
|
|
|
737365
737427
|
logEvent("tengu_update_check", {});
|
|
737366
737428
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
737367
737429
|
const result = await checkUpgradeStatus({
|
|
737368
|
-
currentVersion: "1.58.
|
|
737430
|
+
currentVersion: "1.58.1",
|
|
737369
737431
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
737370
737432
|
installationType: diagnostic2.installationType,
|
|
737371
737433
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -738681,7 +738743,7 @@ ${customInstructions}` : customInstructions;
|
|
|
738681
738743
|
}
|
|
738682
738744
|
}
|
|
738683
738745
|
logForDiagnosticsNoPII("info", "started", {
|
|
738684
|
-
version: "1.58.
|
|
738746
|
+
version: "1.58.1",
|
|
738685
738747
|
is_native_binary: isInBundledMode()
|
|
738686
738748
|
});
|
|
738687
738749
|
registerCleanup(async () => {
|
|
@@ -739467,7 +739529,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
739467
739529
|
pendingHookMessages
|
|
739468
739530
|
}, renderAndRun);
|
|
739469
739531
|
}
|
|
739470
|
-
}).version("1.58.
|
|
739532
|
+
}).version("1.58.1 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
739471
739533
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
739472
739534
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
739473
739535
|
if (canUserConfigureAdvisor()) {
|
|
@@ -740503,7 +740565,7 @@ if (false) {}
|
|
|
740503
740565
|
async function main2() {
|
|
740504
740566
|
const args = process.argv.slice(2);
|
|
740505
740567
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
740506
|
-
console.log(`${"1.58.
|
|
740568
|
+
console.log(`${"1.58.1"} (UR-Nexus)`);
|
|
740507
740569
|
return;
|
|
740508
740570
|
}
|
|
740509
740571
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/docs/providers.md
CHANGED
|
@@ -47,7 +47,14 @@ multimodal input, external CLI boundary, and sandbox scope:
|
|
|
47
47
|
| Antigravity | subscription | subscription-cli | yes | no | no | no† | UR-run tools/output only† | `subscription-cli:antigravity` | official Antigravity CLI login, where supported |
|
|
48
48
|
|
|
49
49
|
\* Ollama forwards images only to models that advertise vision support;
|
|
50
|
-
|
|
50
|
+
a model whose advertised capabilities omit `vision` gets a text placeholder
|
|
51
|
+
instead. A model that advertises nothing at all is treated as *unknown*, not
|
|
52
|
+
unsupported: the image is still sent, and the note says support could not be
|
|
53
|
+
confirmed rather than asserting the model is blind. That distinction matters —
|
|
54
|
+
`/api/show` returns no capabilities for several cloud-suffixed models, and
|
|
55
|
+
reporting that as "no vision support" sends you to change models for no
|
|
56
|
+
reason. Resolution lives in `src/utils/model/visionCapability.ts` and is shared
|
|
57
|
+
by the adapter, `ur model-doctor` and the model router. This applies to
|
|
51
58
|
images returned by tools as well as images you paste: a `Computer` screenshot or
|
|
52
59
|
any other image-bearing tool result is extracted from the tool message and sent
|
|
53
60
|
as `images` on the following user message, because Ollama renders `images`
|
package/documentation/index.html
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
<main id="content" class="content">
|
|
46
46
|
<header class="topbar">
|
|
47
47
|
<div>
|
|
48
|
-
<p class="eyebrow">Version 1.58.
|
|
48
|
+
<p class="eyebrow">Version 1.58.1</p>
|
|
49
49
|
<h1>UR-Nexus Documentation</h1>
|
|
50
50
|
<p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
|
|
51
51
|
</div>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "ur-inline-diffs",
|
|
3
3
|
"displayName": "UR Inline Diffs",
|
|
4
4
|
"description": "Review, apply, and reject UR inline diff bundles from .ur/ide/diffs inside VS Code.",
|
|
5
|
-
"version": "1.58.
|
|
5
|
+
"version": "1.58.1",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED