ur-agent 1.81.2 → 1.81.4
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 +25 -0
- package/README.md +6 -0
- package/dist/cli.js +357 -182
- package/docs/CONFIGURATION.md +6 -0
- package/docs/VALIDATION.md +23 -1
- package/docs/providers.md +21 -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
|
@@ -55298,7 +55298,9 @@ function getValidModelIdsForProvider(providerId) {
|
|
|
55298
55298
|
}
|
|
55299
55299
|
function formatInvalidProviderModelMessage(providerId, modelId, validModels, suggestedModel) {
|
|
55300
55300
|
const provider = resolveProviderId(providerId) ?? String(providerId);
|
|
55301
|
-
const
|
|
55301
|
+
const visibleModels = validModels.slice(0, 8);
|
|
55302
|
+
const hiddenCount = validModels.length - visibleModels.length;
|
|
55303
|
+
const validList = validModels.length > 0 ? `${visibleModels.join(", ")}${hiddenCount > 0 ? `, \u2026 and ${hiddenCount} more` : ""}` : "(no models discovered)";
|
|
55302
55304
|
const suggested = suggestedModel ?? validModels[0] ?? "<valid-model>";
|
|
55303
55305
|
return `Model "${modelId}" is not available for provider "${provider}". Valid models for ${provider}: ${validList}. Run /model and choose a model from ${provider}, or run: ur config set model ${suggested}`;
|
|
55304
55306
|
}
|
|
@@ -91099,12 +91101,18 @@ function normalizeOpenAIChatUsage(usage) {
|
|
|
91099
91101
|
const promptTokens = count3(u2.prompt_tokens);
|
|
91100
91102
|
const cacheRead = count3(promptDetails.cached_tokens);
|
|
91101
91103
|
const cacheWrite2 = count3(promptDetails.cache_write_tokens);
|
|
91102
|
-
return
|
|
91103
|
-
|
|
91104
|
-
|
|
91105
|
-
|
|
91106
|
-
|
|
91107
|
-
|
|
91104
|
+
return {
|
|
91105
|
+
...withOptionalFields({
|
|
91106
|
+
input_tokens: remainder(promptTokens, cacheRead, cacheWrite2),
|
|
91107
|
+
output_tokens: count3(u2.completion_tokens),
|
|
91108
|
+
cache_creation_input_tokens: cacheWrite2,
|
|
91109
|
+
cache_read_input_tokens: cacheRead
|
|
91110
|
+
}, count3(completionDetails.reasoning_tokens), count3(u2.total_tokens)),
|
|
91111
|
+
server_tool_use: {
|
|
91112
|
+
web_search_requests: count3(u2.server_tool_use?.web_search_requests),
|
|
91113
|
+
web_fetch_requests: count3(u2.server_tool_use?.web_fetch_requests)
|
|
91114
|
+
}
|
|
91115
|
+
};
|
|
91108
91116
|
}
|
|
91109
91117
|
function normalizeOpenAIResponsesUsage(usage) {
|
|
91110
91118
|
const u2 = usage ?? {};
|
|
@@ -91148,6 +91156,45 @@ function getStoredGeminiThoughtSignature(block) {
|
|
|
91148
91156
|
}
|
|
91149
91157
|
var GEMINI_THOUGHT_SIGNATURE = "gemini_thought_signature";
|
|
91150
91158
|
|
|
91159
|
+
// src/services/api/openRouterCitations.ts
|
|
91160
|
+
function collectOpenRouterUrlCitations(annotations) {
|
|
91161
|
+
if (!Array.isArray(annotations))
|
|
91162
|
+
return [];
|
|
91163
|
+
const citations = new Map;
|
|
91164
|
+
for (const annotation of annotations) {
|
|
91165
|
+
if (!annotation || typeof annotation !== "object")
|
|
91166
|
+
continue;
|
|
91167
|
+
const record2 = annotation;
|
|
91168
|
+
if (record2.type !== "url_citation")
|
|
91169
|
+
continue;
|
|
91170
|
+
const citation = record2.url_citation;
|
|
91171
|
+
if (!citation || typeof citation !== "object")
|
|
91172
|
+
continue;
|
|
91173
|
+
const value = citation;
|
|
91174
|
+
if (typeof value.url !== "string" || !/^https?:\/\//i.test(value.url)) {
|
|
91175
|
+
continue;
|
|
91176
|
+
}
|
|
91177
|
+
const rawTitle = typeof value.title === "string" && value.title.trim() ? value.title.trim() : new URL(value.url).hostname;
|
|
91178
|
+
const title = rawTitle.replace(/[\r\n]+/g, " ").replace(/[\[\]]/g, "").trim();
|
|
91179
|
+
if (!citations.has(value.url)) {
|
|
91180
|
+
citations.set(value.url, { url: value.url, title });
|
|
91181
|
+
}
|
|
91182
|
+
}
|
|
91183
|
+
return [...citations.values()];
|
|
91184
|
+
}
|
|
91185
|
+
function formatOpenRouterCitations(citations) {
|
|
91186
|
+
const unique = new Map;
|
|
91187
|
+
for (const citation of citations)
|
|
91188
|
+
unique.set(citation.url, citation);
|
|
91189
|
+
if (unique.size === 0)
|
|
91190
|
+
return "";
|
|
91191
|
+
return `
|
|
91192
|
+
|
|
91193
|
+
Sources:
|
|
91194
|
+
${[...unique.values()].map((citation) => `- [${citation.title}](${citation.url})`).join(`
|
|
91195
|
+
`)}`;
|
|
91196
|
+
}
|
|
91197
|
+
|
|
91151
91198
|
// src/services/api/providerHttp.ts
|
|
91152
91199
|
function parsePositiveInteger(value) {
|
|
91153
91200
|
if (typeof value !== "string" && typeof value !== "number")
|
|
@@ -91572,6 +91619,7 @@ async function* streamOpenAIEvents(body, options) {
|
|
|
91572
91619
|
let finishReason;
|
|
91573
91620
|
let usage = EMPTY_USAGE;
|
|
91574
91621
|
const emittedToolIds = new Set;
|
|
91622
|
+
const urlCitations = new Map;
|
|
91575
91623
|
const toolStates = new Map;
|
|
91576
91624
|
let activeThinkingIndex = null;
|
|
91577
91625
|
const stopThinking = function* () {
|
|
@@ -91664,6 +91712,9 @@ async function* streamOpenAIEvents(body, options) {
|
|
|
91664
91712
|
}
|
|
91665
91713
|
for (const choice of chunk?.choices ?? []) {
|
|
91666
91714
|
const delta = choice?.delta ?? {};
|
|
91715
|
+
for (const citation of collectOpenRouterUrlCitations(delta.annotations ?? choice?.message?.annotations)) {
|
|
91716
|
+
urlCitations.set(citation.url, citation);
|
|
91717
|
+
}
|
|
91667
91718
|
const reasoning = typeof delta.reasoning_content === "string" ? delta.reasoning_content : typeof delta.reasoning === "string" ? delta.reasoning : "";
|
|
91668
91719
|
if (reasoning.length > 0) {
|
|
91669
91720
|
for (const event of ensureThinking())
|
|
@@ -91738,6 +91789,16 @@ async function* streamOpenAIEvents(body, options) {
|
|
|
91738
91789
|
}
|
|
91739
91790
|
}
|
|
91740
91791
|
}
|
|
91792
|
+
const citationText = formatOpenRouterCitations(urlCitations.values());
|
|
91793
|
+
if (citationText) {
|
|
91794
|
+
for (const event of ensureText())
|
|
91795
|
+
yield event;
|
|
91796
|
+
yield {
|
|
91797
|
+
type: "content_block_delta",
|
|
91798
|
+
index: activeTextIndex,
|
|
91799
|
+
delta: { type: "text_delta", text: citationText }
|
|
91800
|
+
};
|
|
91801
|
+
}
|
|
91741
91802
|
for (const event of stopText())
|
|
91742
91803
|
yield event;
|
|
91743
91804
|
for (const event of stopThinking())
|
|
@@ -92671,6 +92732,8 @@ function toOpenAICompatibleRequest(params, providerName = "openai-compatible") {
|
|
|
92671
92732
|
effort: toOpenRouterReasoningEffort(String(params.model ?? ""), reasoningEffort)
|
|
92672
92733
|
} : undefined;
|
|
92673
92734
|
const compatibleReasoningEffort = reasoningEffort === "max" ? "high" : reasoningEffort;
|
|
92735
|
+
const openRouterServerSearch = providerName === "openrouter" && tools.some((tool) => tool?.type === "openrouter:web_search");
|
|
92736
|
+
const toolChoice = openRouterServerSearch ? undefined : mapOpenAIToolChoice(params.tool_choice);
|
|
92674
92737
|
return {
|
|
92675
92738
|
model: params.model,
|
|
92676
92739
|
messages: toOpenAIMessages(params, providerName),
|
|
@@ -92684,7 +92747,7 @@ function toOpenAICompatibleRequest(params, providerName = "openai-compatible") {
|
|
|
92684
92747
|
stream: Boolean(params.stream),
|
|
92685
92748
|
...params.stream && providerName !== "openrouter" ? { stream_options: { include_usage: true } } : {},
|
|
92686
92749
|
...tools.length > 0 ? { tools } : {},
|
|
92687
|
-
...
|
|
92750
|
+
...toolChoice !== undefined ? { tool_choice: toolChoice } : {}
|
|
92688
92751
|
};
|
|
92689
92752
|
}
|
|
92690
92753
|
function toOpenAIResponseFormat(format4) {
|
|
@@ -92830,7 +92893,7 @@ function toOpenAITools(tools, providerName = "OpenAI") {
|
|
|
92830
92893
|
throw new ToolSchemaValidationError(`${providerName} tools must be an array.`);
|
|
92831
92894
|
}
|
|
92832
92895
|
const result = tools.map((tool) => toOpenAITool(tool, providerName));
|
|
92833
|
-
assertUniqueToolNames(result.map((tool) => tool.function.name), providerName);
|
|
92896
|
+
assertUniqueToolNames(result.filter((tool) => tool?.type === "function").map((tool) => tool.function.name), providerName);
|
|
92834
92897
|
return result;
|
|
92835
92898
|
}
|
|
92836
92899
|
function mapOpenAIToolChoice(toolChoice) {
|
|
@@ -92906,6 +92969,16 @@ function isOpenAIToolStopReason2(reason) {
|
|
|
92906
92969
|
return reason === "tool_calls" || reason === "function_call" || reason === "tool_use";
|
|
92907
92970
|
}
|
|
92908
92971
|
function toOpenAITool(tool, providerName) {
|
|
92972
|
+
if (providerName === "openrouter" && tool?.type === "web_search_20250305") {
|
|
92973
|
+
return {
|
|
92974
|
+
type: "openrouter:web_search",
|
|
92975
|
+
parameters: {
|
|
92976
|
+
...Number.isInteger(tool.max_uses) && tool.max_uses > 0 ? { max_uses: tool.max_uses } : {},
|
|
92977
|
+
...Array.isArray(tool.allowed_domains) && tool.allowed_domains.length > 0 ? { allowed_domains: tool.allowed_domains } : {},
|
|
92978
|
+
...Array.isArray(tool.blocked_domains) && tool.blocked_domains.length > 0 ? { excluded_domains: tool.blocked_domains } : {}
|
|
92979
|
+
}
|
|
92980
|
+
};
|
|
92981
|
+
}
|
|
92909
92982
|
if (tool?.type === "function" && tool.function) {
|
|
92910
92983
|
assertValidToolName(tool.function.name, providerName);
|
|
92911
92984
|
const strict2 = tool.function.strict === true;
|
|
@@ -93044,7 +93117,8 @@ function parseOpenAIMessageContent(message, legacyText, providerName) {
|
|
|
93044
93117
|
if (reasoning.length > 0) {
|
|
93045
93118
|
content.push({ type: "thinking", thinking: reasoning });
|
|
93046
93119
|
}
|
|
93047
|
-
const
|
|
93120
|
+
const citationText = formatOpenRouterCitations(collectOpenRouterUrlCitations(message?.annotations));
|
|
93121
|
+
const text = openAIMessageText(message?.content, legacyText) + citationText;
|
|
93048
93122
|
if (text.length > 0) {
|
|
93049
93123
|
content.push({ type: "text", text });
|
|
93050
93124
|
}
|
|
@@ -95425,7 +95499,10 @@ function formatRuntimeDispatchError({
|
|
|
95425
95499
|
suggestedModel
|
|
95426
95500
|
}) {
|
|
95427
95501
|
const provider = resolveProviderId(providerId) ?? String(providerId);
|
|
95428
|
-
const
|
|
95502
|
+
const discoveredModels = validModels?.length ? validModels : getValidModelIdsForProvider(provider);
|
|
95503
|
+
const visibleModels = discoveredModels.slice(0, 8);
|
|
95504
|
+
const hiddenCount = discoveredModels.length - visibleModels.length;
|
|
95505
|
+
const valid = discoveredModels.length ? `${visibleModels.join(", ")}${hiddenCount > 0 ? `, \u2026 and ${hiddenCount} more` : ""}` : "(no models discovered)";
|
|
95429
95506
|
const suggestion = suggestedModel ?? getDefaultModelForProvider(provider) ?? "<valid-model>";
|
|
95430
95507
|
return `Provider "${provider}" is selected with model "${model}", but runtime dispatch cannot use that provider/model pair. Reason: ${why}. Valid models for ${provider}: ${valid}. Run /model and choose a model from ${provider}, or run: ur config set model ${suggestion}`;
|
|
95431
95508
|
}
|
|
@@ -96627,13 +96704,14 @@ function getDefaultOllamaModel() {
|
|
|
96627
96704
|
}
|
|
96628
96705
|
return DEFAULT_OLLAMA_MODEL2;
|
|
96629
96706
|
}
|
|
96630
|
-
function getSmallFastModel() {
|
|
96631
|
-
|
|
96707
|
+
function getSmallFastModel(providerSettings) {
|
|
96708
|
+
const activeProvider = providerSettings?.active ?? getActiveProviderSettings().active;
|
|
96709
|
+
if (activeProvider === "ollama" && process.env.OLLAMA_MODEL !== undefined && process.env.OLLAMA_SMALL_FAST_MODEL === undefined) {
|
|
96632
96710
|
const mainLoopModel = getMainLoopModel();
|
|
96633
96711
|
if (mainLoopModel)
|
|
96634
96712
|
return mainLoopModel;
|
|
96635
96713
|
}
|
|
96636
|
-
if (getAPIProvider() === "ollama") {
|
|
96714
|
+
if (activeProvider === "ollama" || !activeProvider && getAPIProvider() === "ollama") {
|
|
96637
96715
|
if (process.env.OLLAMA_SMALL_FAST_MODEL) {
|
|
96638
96716
|
return process.env.OLLAMA_SMALL_FAST_MODEL;
|
|
96639
96717
|
}
|
|
@@ -96651,7 +96729,11 @@ function getSmallFastModel() {
|
|
|
96651
96729
|
return sessionModel;
|
|
96652
96730
|
return getDefaultOllamaModel();
|
|
96653
96731
|
}
|
|
96654
|
-
|
|
96732
|
+
if (process.env.URHQ_SMALL_FAST_MODEL) {
|
|
96733
|
+
return process.env.URHQ_SMALL_FAST_MODEL;
|
|
96734
|
+
}
|
|
96735
|
+
const selectedModel = providerSettings?.model ?? getMainLoopModel();
|
|
96736
|
+
return selectedModel || getDefaultmodelHModel();
|
|
96655
96737
|
}
|
|
96656
96738
|
function isNonCustommodelOModel(model) {
|
|
96657
96739
|
return model === getModelStrings2().modelO40 || model === getModelStrings2().modelO41 || model === getModelStrings2().modelO45 || model === getModelStrings2().modelO46;
|
|
@@ -108154,7 +108236,7 @@ var init_auth = __esm(() => {
|
|
|
108154
108236
|
|
|
108155
108237
|
// src/utils/userAgent.ts
|
|
108156
108238
|
function getURCodeUserAgent() {
|
|
108157
|
-
return `ur/${"1.81.
|
|
108239
|
+
return `ur/${"1.81.4"}`;
|
|
108158
108240
|
}
|
|
108159
108241
|
|
|
108160
108242
|
// src/utils/workloadContext.ts
|
|
@@ -108176,7 +108258,7 @@ function getUserAgent() {
|
|
|
108176
108258
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
108177
108259
|
const workload = getWorkload();
|
|
108178
108260
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
108179
|
-
return `ur-cli/${"1.81.
|
|
108261
|
+
return `ur-cli/${"1.81.4"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
108180
108262
|
}
|
|
108181
108263
|
function getMCPUserAgent() {
|
|
108182
108264
|
const parts = [];
|
|
@@ -108190,7 +108272,7 @@ function getMCPUserAgent() {
|
|
|
108190
108272
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
108191
108273
|
}
|
|
108192
108274
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
108193
|
-
return `ur/${"1.81.
|
|
108275
|
+
return `ur/${"1.81.4"}${suffix}`;
|
|
108194
108276
|
}
|
|
108195
108277
|
function getWebFetchUserAgent() {
|
|
108196
108278
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -108328,7 +108410,7 @@ var init_user = __esm(() => {
|
|
|
108328
108410
|
deviceId,
|
|
108329
108411
|
sessionId: getSessionId(),
|
|
108330
108412
|
email: getEmail(),
|
|
108331
|
-
appVersion: "1.81.
|
|
108413
|
+
appVersion: "1.81.4",
|
|
108332
108414
|
platform: getHostPlatformForAnalytics(),
|
|
108333
108415
|
organizationUuid,
|
|
108334
108416
|
accountUuid,
|
|
@@ -116215,7 +116297,7 @@ var init_metadata = __esm(() => {
|
|
|
116215
116297
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
116216
116298
|
WHITESPACE_REGEX = /\s+/;
|
|
116217
116299
|
getVersionBase = memoize_default(() => {
|
|
116218
|
-
const match = "1.81.
|
|
116300
|
+
const match = "1.81.4".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
116219
116301
|
return match ? match[0] : undefined;
|
|
116220
116302
|
});
|
|
116221
116303
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -116255,7 +116337,7 @@ var init_metadata = __esm(() => {
|
|
|
116255
116337
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
116256
116338
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
116257
116339
|
isURAiAuth: isURAISubscriber(),
|
|
116258
|
-
version: "1.81.
|
|
116340
|
+
version: "1.81.4",
|
|
116259
116341
|
versionBase: getVersionBase(),
|
|
116260
116342
|
buildTime: "",
|
|
116261
116343
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -116925,7 +117007,7 @@ function initialize1PEventLogging() {
|
|
|
116925
117007
|
const platform2 = getPlatform();
|
|
116926
117008
|
const attributes = {
|
|
116927
117009
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
116928
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.
|
|
117010
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.4"
|
|
116929
117011
|
};
|
|
116930
117012
|
if (platform2 === "wsl") {
|
|
116931
117013
|
const wslVersion = getWslVersion();
|
|
@@ -116953,7 +117035,7 @@ function initialize1PEventLogging() {
|
|
|
116953
117035
|
})
|
|
116954
117036
|
]
|
|
116955
117037
|
});
|
|
116956
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.
|
|
117038
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.4");
|
|
116957
117039
|
}
|
|
116958
117040
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
116959
117041
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -126919,7 +127001,7 @@ function formatA2AAgentCard(options = {}, pretty = true) {
|
|
|
126919
127001
|
function formatA2AV1AgentCard(options = {}, pretty = true) {
|
|
126920
127002
|
return JSON.stringify(buildA2AV1AgentCard(options), null, pretty ? 2 : 0);
|
|
126921
127003
|
}
|
|
126922
|
-
var urVersion = "1.81.
|
|
127004
|
+
var urVersion = "1.81.4", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
|
|
126923
127005
|
var init_trends = __esm(() => {
|
|
126924
127006
|
init_a2aCardSignature();
|
|
126925
127007
|
coverage = [
|
|
@@ -129809,7 +129891,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
129809
129891
|
if (!isAttributionHeaderEnabled()) {
|
|
129810
129892
|
return "";
|
|
129811
129893
|
}
|
|
129812
|
-
const version2 = `${"1.81.
|
|
129894
|
+
const version2 = `${"1.81.4"}.${fingerprint}`;
|
|
129813
129895
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
129814
129896
|
const cch = "";
|
|
129815
129897
|
const workload = getWorkload();
|
|
@@ -184730,7 +184812,7 @@ var init_projectSafety = __esm(() => {
|
|
|
184730
184812
|
function getInstruments() {
|
|
184731
184813
|
if (instruments)
|
|
184732
184814
|
return instruments;
|
|
184733
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.
|
|
184815
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.4");
|
|
184734
184816
|
instruments = {
|
|
184735
184817
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
184736
184818
|
description: "GenAI operation duration.",
|
|
@@ -184828,7 +184910,7 @@ function genAiAgentAttributes() {
|
|
|
184828
184910
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
184829
184911
|
"gen_ai.provider.name": "ur",
|
|
184830
184912
|
"gen_ai.agent.name": "UR-Nexus",
|
|
184831
|
-
"gen_ai.agent.version": "1.81.
|
|
184913
|
+
"gen_ai.agent.version": "1.81.4"
|
|
184832
184914
|
};
|
|
184833
184915
|
}
|
|
184834
184916
|
function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
@@ -184849,7 +184931,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
|
184849
184931
|
function startGenAiWorkflowSpan(workflowName, workflowRunId) {
|
|
184850
184932
|
const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
|
|
184851
184933
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
184852
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.
|
|
184934
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.4").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184853
184935
|
}
|
|
184854
184936
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
184855
184937
|
try {
|
|
@@ -184887,7 +184969,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
184887
184969
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
184888
184970
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
184889
184971
|
}
|
|
184890
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.
|
|
184972
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.4").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184891
184973
|
}
|
|
184892
184974
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
184893
184975
|
try {
|
|
@@ -278602,7 +278684,7 @@ function getTelemetryAttributes() {
|
|
|
278602
278684
|
attributes["session.id"] = sessionId;
|
|
278603
278685
|
}
|
|
278604
278686
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
278605
|
-
attributes["app.version"] = "1.81.
|
|
278687
|
+
attributes["app.version"] = "1.81.4";
|
|
278606
278688
|
}
|
|
278607
278689
|
const oauthAccount = getOauthAccountInfo();
|
|
278608
278690
|
if (oauthAccount) {
|
|
@@ -320006,7 +320088,7 @@ function getInstallationEnv() {
|
|
|
320006
320088
|
return;
|
|
320007
320089
|
}
|
|
320008
320090
|
function getURCodeVersion() {
|
|
320009
|
-
return "1.81.
|
|
320091
|
+
return "1.81.4";
|
|
320010
320092
|
}
|
|
320011
320093
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
320012
320094
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -327376,7 +327458,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
327376
327458
|
const client2 = new Client({
|
|
327377
327459
|
name: "ur",
|
|
327378
327460
|
title: "UR",
|
|
327379
|
-
version: "1.81.
|
|
327461
|
+
version: "1.81.4",
|
|
327380
327462
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
327381
327463
|
websiteUrl: PRODUCT_URL
|
|
327382
327464
|
}, {
|
|
@@ -327737,7 +327819,7 @@ var init_client5 = __esm(() => {
|
|
|
327737
327819
|
const client2 = new Client({
|
|
327738
327820
|
name: "ur",
|
|
327739
327821
|
title: "UR",
|
|
327740
|
-
version: "1.81.
|
|
327822
|
+
version: "1.81.4",
|
|
327741
327823
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
327742
327824
|
websiteUrl: PRODUCT_URL
|
|
327743
327825
|
}, {
|
|
@@ -340510,7 +340592,7 @@ async function createRuntime() {
|
|
|
340510
340592
|
bootstrapTelemetry();
|
|
340511
340593
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
340512
340594
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
340513
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.
|
|
340595
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.4"
|
|
340514
340596
|
}));
|
|
340515
340597
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
340516
340598
|
resource,
|
|
@@ -340543,11 +340625,11 @@ async function createRuntime() {
|
|
|
340543
340625
|
setMeterProvider(meterProvider);
|
|
340544
340626
|
setLoggerProvider(loggerProvider);
|
|
340545
340627
|
if (meterProvider) {
|
|
340546
|
-
const meter = meterProvider.getMeter("ur-agent", "1.81.
|
|
340628
|
+
const meter = meterProvider.getMeter("ur-agent", "1.81.4");
|
|
340547
340629
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
340548
340630
|
}
|
|
340549
340631
|
if (loggerProvider) {
|
|
340550
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.
|
|
340632
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.4"));
|
|
340551
340633
|
}
|
|
340552
340634
|
if (!cleanupRegistered3) {
|
|
340553
340635
|
cleanupRegistered3 = true;
|
|
@@ -341209,9 +341291,9 @@ async function assertMinVersion() {
|
|
|
341209
341291
|
if (false) {}
|
|
341210
341292
|
try {
|
|
341211
341293
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
341212
|
-
if (versionConfig.minVersion && lt("1.81.
|
|
341294
|
+
if (versionConfig.minVersion && lt("1.81.4", versionConfig.minVersion)) {
|
|
341213
341295
|
console.error(`
|
|
341214
|
-
It looks like your version of UR (${"1.81.
|
|
341296
|
+
It looks like your version of UR (${"1.81.4"}) needs an update.
|
|
341215
341297
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
341216
341298
|
|
|
341217
341299
|
To update, please run:
|
|
@@ -341427,7 +341509,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
341427
341509
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
341428
341510
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
341429
341511
|
pid: process.pid,
|
|
341430
|
-
currentVersion: "1.81.
|
|
341512
|
+
currentVersion: "1.81.4"
|
|
341431
341513
|
});
|
|
341432
341514
|
return "in_progress";
|
|
341433
341515
|
}
|
|
@@ -341436,7 +341518,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
341436
341518
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
341437
341519
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
341438
341520
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
341439
|
-
currentVersion: "1.81.
|
|
341521
|
+
currentVersion: "1.81.4"
|
|
341440
341522
|
});
|
|
341441
341523
|
console.error(`
|
|
341442
341524
|
Error: Windows NPM detected in WSL
|
|
@@ -341971,7 +342053,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
341971
342053
|
}
|
|
341972
342054
|
async function getDoctorDiagnostic() {
|
|
341973
342055
|
const installationType = await getCurrentInstallationType();
|
|
341974
|
-
const version2 = typeof MACRO !== "undefined" ? "1.81.
|
|
342056
|
+
const version2 = typeof MACRO !== "undefined" ? "1.81.4" : "unknown";
|
|
341975
342057
|
const installationPath = await getInstallationPath();
|
|
341976
342058
|
const invokedBinary = getInvokedBinary();
|
|
341977
342059
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -342906,8 +342988,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
342906
342988
|
const maxVersion = await getMaxVersion();
|
|
342907
342989
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
342908
342990
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
342909
|
-
if (gte("1.81.
|
|
342910
|
-
logForDebugging(`Native installer: current version ${"1.81.
|
|
342991
|
+
if (gte("1.81.4", maxVersion)) {
|
|
342992
|
+
logForDebugging(`Native installer: current version ${"1.81.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
342911
342993
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
342912
342994
|
latency_ms: Date.now() - startTime,
|
|
342913
342995
|
max_version: maxVersion,
|
|
@@ -342918,7 +343000,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
342918
343000
|
version2 = maxVersion;
|
|
342919
343001
|
}
|
|
342920
343002
|
}
|
|
342921
|
-
if (!forceReinstall && version2 === "1.81.
|
|
343003
|
+
if (!forceReinstall && version2 === "1.81.4" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
342922
343004
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
342923
343005
|
logEvent("tengu_native_update_complete", {
|
|
342924
343006
|
latency_ms: Date.now() - startTime,
|
|
@@ -393124,7 +393206,7 @@ async function getURLMarkdownContent(url3, abortController) {
|
|
|
393124
393206
|
URL_CACHE.set(url3, entry, { size: Math.max(1, contentBytes) });
|
|
393125
393207
|
return entry;
|
|
393126
393208
|
}
|
|
393127
|
-
async function applyPromptToMarkdown(prompt, markdownContent, signal, isNonInteractiveSession, isPreapprovedDomain) {
|
|
393209
|
+
async function applyPromptToMarkdown(prompt, markdownContent, signal, isNonInteractiveSession, isPreapprovedDomain, providerSettings) {
|
|
393128
393210
|
const truncatedContent = markdownContent.length > MAX_MARKDOWN_LENGTH ? markdownContent.slice(0, MAX_MARKDOWN_LENGTH) + `
|
|
393129
393211
|
|
|
393130
393212
|
[Content truncated due to length...]` : markdownContent;
|
|
@@ -393138,7 +393220,8 @@ async function applyPromptToMarkdown(prompt, markdownContent, signal, isNonInter
|
|
|
393138
393220
|
agents: [],
|
|
393139
393221
|
isNonInteractiveSession,
|
|
393140
393222
|
hasAppendSystemPrompt: false,
|
|
393141
|
-
mcpTools: []
|
|
393223
|
+
mcpTools: [],
|
|
393224
|
+
providerSettings
|
|
393142
393225
|
}
|
|
393143
393226
|
});
|
|
393144
393227
|
if (signal.aborted) {
|
|
@@ -393582,7 +393665,7 @@ To complete your request, I need to fetch content from the redirected URL. Pleas
|
|
|
393582
393665
|
if (isPreapproved && contentType2.includes("text/markdown") && content.length < MAX_MARKDOWN_LENGTH) {
|
|
393583
393666
|
result = content;
|
|
393584
393667
|
} else {
|
|
393585
|
-
result = await applyPromptToMarkdown(prompt, content, abortController.signal, isNonInteractiveSession, isPreapproved);
|
|
393668
|
+
result = await applyPromptToMarkdown(prompt, content, abortController.signal, isNonInteractiveSession, isPreapproved, context5.getAppState().provider);
|
|
393586
393669
|
}
|
|
393587
393670
|
if (persistedPath) {
|
|
393588
393671
|
result += `
|
|
@@ -396300,8 +396383,9 @@ function renderToolUseProgressMessage9(progressMessages) {
|
|
|
396300
396383
|
}
|
|
396301
396384
|
function renderToolResultMessage17(output) {
|
|
396302
396385
|
const {
|
|
396303
|
-
searchCount
|
|
396386
|
+
searchCount: inferredSearchCount
|
|
396304
396387
|
} = getSearchSummary(output.results ?? []);
|
|
396388
|
+
const searchCount = output.searchCount ?? inferredSearchCount;
|
|
396305
396389
|
const timeDisplay = output.durationSeconds >= 1 ? `${Math.round(output.durationSeconds)}s` : `${Math.round(output.durationSeconds * 1000)}ms`;
|
|
396306
396390
|
return /* @__PURE__ */ jsx_dev_runtime144.jsxDEV(ThemedBox_default, {
|
|
396307
396391
|
justifyContent: "space-between",
|
|
@@ -396346,7 +396430,7 @@ function makeToolSchema(input, maxUses) {
|
|
|
396346
396430
|
max_uses: maxUses
|
|
396347
396431
|
};
|
|
396348
396432
|
}
|
|
396349
|
-
function makeOutputFromSearchResponse(result, query2, durationSeconds) {
|
|
396433
|
+
function makeOutputFromSearchResponse(result, query2, durationSeconds, searchCount) {
|
|
396350
396434
|
const results = [];
|
|
396351
396435
|
let textAcc = "";
|
|
396352
396436
|
let inText = true;
|
|
@@ -396389,7 +396473,8 @@ function makeOutputFromSearchResponse(result, query2, durationSeconds) {
|
|
|
396389
396473
|
return {
|
|
396390
396474
|
query: query2,
|
|
396391
396475
|
results,
|
|
396392
|
-
durationSeconds
|
|
396476
|
+
durationSeconds,
|
|
396477
|
+
...searchCount !== undefined ? { searchCount } : {}
|
|
396393
396478
|
};
|
|
396394
396479
|
}
|
|
396395
396480
|
var inputSchema28, searchResultSchema, outputSchema24, WebSearchTool;
|
|
@@ -396426,7 +396511,8 @@ var init_WebSearchTool = __esm(() => {
|
|
|
396426
396511
|
outputSchema24 = lazySchema(() => exports_external.object({
|
|
396427
396512
|
query: exports_external.string().describe("The search query that was executed"),
|
|
396428
396513
|
results: exports_external.array(exports_external.union([searchResultSchema(), exports_external.string()])).describe("Search results and/or text commentary from the model"),
|
|
396429
|
-
durationSeconds: exports_external.number().describe("Time taken to complete the search operation")
|
|
396514
|
+
durationSeconds: exports_external.number().describe("Time taken to complete the search operation"),
|
|
396515
|
+
searchCount: exports_external.number().int().nonnegative().optional().describe("Provider-reported number of web searches performed")
|
|
396430
396516
|
}));
|
|
396431
396517
|
WebSearchTool = buildTool({
|
|
396432
396518
|
name: WEB_SEARCH_TOOL_NAME,
|
|
@@ -396561,7 +396647,7 @@ var init_WebSearchTool = __esm(() => {
|
|
|
396561
396647
|
const startTime = performance.now();
|
|
396562
396648
|
const { query: query2 } = input;
|
|
396563
396649
|
const userMessage = createUserMessage({
|
|
396564
|
-
content: "Perform a web search for the query: " + query2
|
|
396650
|
+
content: "You MUST use the provided web search tool at least once. Perform a web search for the query: " + query2
|
|
396565
396651
|
});
|
|
396566
396652
|
const budget = reserveWebSearchBudget(8);
|
|
396567
396653
|
if (budget.granted === 0) {
|
|
@@ -396580,7 +396666,7 @@ var init_WebSearchTool = __esm(() => {
|
|
|
396580
396666
|
signal: context5.abortController.signal,
|
|
396581
396667
|
options: {
|
|
396582
396668
|
getToolPermissionContext: async () => appState.toolPermissionContext,
|
|
396583
|
-
model: usemodelH ? getSmallFastModel() : context5.options.mainLoopModel,
|
|
396669
|
+
model: usemodelH ? getSmallFastModel(appState.provider) : context5.options.mainLoopModel,
|
|
396584
396670
|
toolChoice: usemodelH ? { type: "tool", name: "web_search" } : undefined,
|
|
396585
396671
|
isNonInteractiveSession: context5.options.isNonInteractiveSession,
|
|
396586
396672
|
hasAppendSystemPrompt: !!context5.options.appendSystemPrompt,
|
|
@@ -396603,6 +396689,7 @@ var init_WebSearchTool = __esm(() => {
|
|
|
396603
396689
|
for await (const event of queryStream) {
|
|
396604
396690
|
if (event.type === "assistant") {
|
|
396605
396691
|
allContentBlocks.push(...event.message.content);
|
|
396692
|
+
actualSearches = Math.max(actualSearches, event.message.usage?.server_tool_use?.web_search_requests ?? 0);
|
|
396606
396693
|
continue;
|
|
396607
396694
|
}
|
|
396608
396695
|
if (event.type === "stream_event" && event.event?.type === "content_block_start") {
|
|
@@ -396664,7 +396751,10 @@ var init_WebSearchTool = __esm(() => {
|
|
|
396664
396751
|
}
|
|
396665
396752
|
const endTime = performance.now();
|
|
396666
396753
|
const durationSeconds = (endTime - startTime) / 1000;
|
|
396667
|
-
const data = makeOutputFromSearchResponse(allContentBlocks, query2, durationSeconds);
|
|
396754
|
+
const data = makeOutputFromSearchResponse(allContentBlocks, query2, durationSeconds, actualSearches);
|
|
396755
|
+
if (actualSearches === 0) {
|
|
396756
|
+
throw new Error("The selected provider returned text without performing a web search. Retry with a model that supports OpenRouter web search or switch providers.");
|
|
396757
|
+
}
|
|
396668
396758
|
return { data };
|
|
396669
396759
|
},
|
|
396670
396760
|
mapToolResultToToolResultBlockParam(output, toolUseID) {
|
|
@@ -413597,7 +413687,7 @@ function isAnyTracingEnabled() {
|
|
|
413597
413687
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
413598
413688
|
}
|
|
413599
413689
|
function getTracer() {
|
|
413600
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.
|
|
413690
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.4");
|
|
413601
413691
|
}
|
|
413602
413692
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
413603
413693
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -443756,7 +443846,7 @@ function Feedback({
|
|
|
443756
443846
|
platform: env2.platform,
|
|
443757
443847
|
gitRepo: envInfo.isGit,
|
|
443758
443848
|
terminal: env2.terminal,
|
|
443759
|
-
version: "1.81.
|
|
443849
|
+
version: "1.81.4",
|
|
443760
443850
|
transcript: normalizeMessagesForAPI(messages),
|
|
443761
443851
|
errors: sanitizedErrors,
|
|
443762
443852
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -443948,7 +444038,7 @@ function Feedback({
|
|
|
443948
444038
|
", ",
|
|
443949
444039
|
env2.terminal,
|
|
443950
444040
|
", v",
|
|
443951
|
-
"1.81.
|
|
444041
|
+
"1.81.4"
|
|
443952
444042
|
]
|
|
443953
444043
|
}, undefined, true, undefined, this)
|
|
443954
444044
|
]
|
|
@@ -444054,7 +444144,7 @@ ${sanitizedDescription}
|
|
|
444054
444144
|
` + `**Environment Info**
|
|
444055
444145
|
` + `- Platform: ${env2.platform}
|
|
444056
444146
|
` + `- Terminal: ${env2.terminal}
|
|
444057
|
-
` + `- Version: ${"1.81.
|
|
444147
|
+
` + `- Version: ${"1.81.4"}
|
|
444058
444148
|
` + `- Feedback ID: ${feedbackId}
|
|
444059
444149
|
` + `
|
|
444060
444150
|
**Errors**
|
|
@@ -447164,7 +447254,7 @@ function buildPrimarySection() {
|
|
|
447164
447254
|
}, undefined, false, undefined, this);
|
|
447165
447255
|
return [{
|
|
447166
447256
|
label: "Version",
|
|
447167
|
-
value: "1.81.
|
|
447257
|
+
value: "1.81.4"
|
|
447168
447258
|
}, {
|
|
447169
447259
|
label: "Session name",
|
|
447170
447260
|
value: nameValue
|
|
@@ -450546,7 +450636,7 @@ function Config({
|
|
|
450546
450636
|
}
|
|
450547
450637
|
}, undefined, false, undefined, this)
|
|
450548
450638
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
450549
|
-
currentVersion: "1.81.
|
|
450639
|
+
currentVersion: "1.81.4",
|
|
450550
450640
|
onChoice: (choice) => {
|
|
450551
450641
|
setShowSubmenu(null);
|
|
450552
450642
|
setTabsHidden(false);
|
|
@@ -450558,7 +450648,7 @@ function Config({
|
|
|
450558
450648
|
autoUpdatesChannel: "stable"
|
|
450559
450649
|
};
|
|
450560
450650
|
if (choice === "stay") {
|
|
450561
|
-
newSettings.minimumVersion = "1.81.
|
|
450651
|
+
newSettings.minimumVersion = "1.81.4";
|
|
450562
450652
|
}
|
|
450563
450653
|
updateSettingsForSource("userSettings", newSettings);
|
|
450564
450654
|
setSettingsData((prev_27) => ({
|
|
@@ -458867,7 +458957,7 @@ function HelpV2(t0) {
|
|
|
458867
458957
|
let t6;
|
|
458868
458958
|
if ($2[31] !== tabs) {
|
|
458869
458959
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
458870
|
-
title: `UR v${"1.81.
|
|
458960
|
+
title: `UR v${"1.81.4"}`,
|
|
458871
458961
|
color: "professionalBlue",
|
|
458872
458962
|
defaultTab: "general",
|
|
458873
458963
|
children: tabs
|
|
@@ -459800,7 +459890,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
459800
459890
|
async function handleInitialize(options2) {
|
|
459801
459891
|
return {
|
|
459802
459892
|
name: "UR",
|
|
459803
|
-
version: "1.81.
|
|
459893
|
+
version: "1.81.4",
|
|
459804
459894
|
protocolVersion: "0.1.0",
|
|
459805
459895
|
workspaceRoot: options2.cwd,
|
|
459806
459896
|
capabilities: {
|
|
@@ -476908,7 +476998,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
476908
476998
|
return [];
|
|
476909
476999
|
}
|
|
476910
477000
|
}
|
|
476911
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.
|
|
477001
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.4") {
|
|
476912
477002
|
if (process.env.USER_TYPE === "ant") {
|
|
476913
477003
|
const changelog = "";
|
|
476914
477004
|
if (changelog) {
|
|
@@ -476935,7 +477025,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.2")
|
|
|
476935
477025
|
releaseNotes
|
|
476936
477026
|
};
|
|
476937
477027
|
}
|
|
476938
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.
|
|
477028
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.4") {
|
|
476939
477029
|
if (process.env.USER_TYPE === "ant") {
|
|
476940
477030
|
const changelog = "";
|
|
476941
477031
|
if (changelog) {
|
|
@@ -479840,7 +479930,7 @@ function getRecentActivitySync() {
|
|
|
479840
479930
|
return cachedActivity;
|
|
479841
479931
|
}
|
|
479842
479932
|
function getLogoDisplayData() {
|
|
479843
|
-
const version2 = process.env.DEMO_VERSION ?? "1.81.
|
|
479933
|
+
const version2 = process.env.DEMO_VERSION ?? "1.81.4";
|
|
479844
479934
|
const serverUrl = getDirectConnectServerUrl();
|
|
479845
479935
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
479846
479936
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -479914,6 +480004,9 @@ var init_logoV2Utils = __esm(() => {
|
|
|
479914
480004
|
});
|
|
479915
480005
|
|
|
479916
480006
|
// src/components/LogoV2/URBanner.tsx
|
|
480007
|
+
function getURWordmarkGlyphTone(glyph, _row, _column) {
|
|
480008
|
+
return glyph === " " ? undefined : "ur";
|
|
480009
|
+
}
|
|
479917
480010
|
function URBanner() {
|
|
479918
480011
|
if (isScreenReaderMode()) {
|
|
479919
480012
|
return /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
|
|
@@ -479925,30 +480018,23 @@ function URBanner() {
|
|
|
479925
480018
|
alignItems: "center",
|
|
479926
480019
|
children: [
|
|
479927
480020
|
UR_WORDMARK_ROWS.map((row, i3) => /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
|
|
479928
|
-
color: "ur",
|
|
479929
480021
|
bold: true,
|
|
479930
|
-
children: row
|
|
480022
|
+
children: [...row].map((glyph, column) => /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
|
|
480023
|
+
color: getURWordmarkGlyphTone(glyph, i3, column),
|
|
480024
|
+
children: glyph
|
|
480025
|
+
}, `${i3}:${column}`, false, undefined, this))
|
|
479931
480026
|
}, i3, false, undefined, this)),
|
|
479932
480027
|
/* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
|
|
479933
|
-
|
|
479934
|
-
|
|
479935
|
-
|
|
479936
|
-
|
|
479937
|
-
|
|
479938
|
-
|
|
479939
|
-
|
|
479940
|
-
|
|
479941
|
-
|
|
479942
|
-
|
|
479943
|
-
" "
|
|
479944
|
-
]
|
|
479945
|
-
}, undefined, true, undefined, this),
|
|
479946
|
-
/* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
|
|
479947
|
-
color: "ur",
|
|
479948
|
-
children: "\u25C6"
|
|
479949
|
-
}, undefined, false, undefined, this)
|
|
479950
|
-
]
|
|
479951
|
-
}, undefined, true, undefined, this)
|
|
480028
|
+
bold: true,
|
|
480029
|
+
children: /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
|
|
480030
|
+
color: "ur",
|
|
480031
|
+
children: [
|
|
480032
|
+
"\u2726 ",
|
|
480033
|
+
UR_WORDMARK_TAGLINE,
|
|
480034
|
+
" \u2726"
|
|
480035
|
+
]
|
|
480036
|
+
}, undefined, true, undefined, this)
|
|
480037
|
+
}, undefined, false, undefined, this)
|
|
479952
480038
|
]
|
|
479953
480039
|
}, undefined, true, undefined, this);
|
|
479954
480040
|
}
|
|
@@ -480732,7 +480818,7 @@ function LogoV2() {
|
|
|
480732
480818
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
480733
480819
|
t2 = () => {
|
|
480734
480820
|
const currentConfig = getGlobalConfig();
|
|
480735
|
-
if (currentConfig.lastReleaseNotesSeen === "1.81.
|
|
480821
|
+
if (currentConfig.lastReleaseNotesSeen === "1.81.4") {
|
|
480736
480822
|
return;
|
|
480737
480823
|
}
|
|
480738
480824
|
saveGlobalConfig(_temp325);
|
|
@@ -481417,12 +481503,12 @@ function LogoV2() {
|
|
|
481417
481503
|
return t41;
|
|
481418
481504
|
}
|
|
481419
481505
|
function _temp325(current) {
|
|
481420
|
-
if (current.lastReleaseNotesSeen === "1.81.
|
|
481506
|
+
if (current.lastReleaseNotesSeen === "1.81.4") {
|
|
481421
481507
|
return current;
|
|
481422
481508
|
}
|
|
481423
481509
|
return {
|
|
481424
481510
|
...current,
|
|
481425
|
-
lastReleaseNotesSeen: "1.81.
|
|
481511
|
+
lastReleaseNotesSeen: "1.81.4"
|
|
481426
481512
|
};
|
|
481427
481513
|
}
|
|
481428
481514
|
function _temp241(s_0) {
|
|
@@ -497372,7 +497458,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
497372
497458
|
if (spec.name !== specName) {
|
|
497373
497459
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
497374
497460
|
}
|
|
497375
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.
|
|
497461
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.4" : "1.81.4");
|
|
497376
497462
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
497377
497463
|
throw new Error("invalid ur-agent package version");
|
|
497378
497464
|
}
|
|
@@ -498365,7 +498451,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
498365
498451
|
path: ".github/workflows/ur.yml",
|
|
498366
498452
|
root: "project",
|
|
498367
498453
|
content: compileAgenticCiWorkflow("default", {
|
|
498368
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.81.
|
|
498454
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.81.4" : "1.81.4"
|
|
498369
498455
|
})
|
|
498370
498456
|
},
|
|
498371
498457
|
{
|
|
@@ -498428,7 +498514,7 @@ function value(tokens, flag) {
|
|
|
498428
498514
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
498429
498515
|
}
|
|
498430
498516
|
function cliVersion() {
|
|
498431
|
-
return typeof MACRO !== "undefined" ? "1.81.
|
|
498517
|
+
return typeof MACRO !== "undefined" ? "1.81.4" : "1.81.4";
|
|
498432
498518
|
}
|
|
498433
498519
|
function workflowPath(cwd2) {
|
|
498434
498520
|
return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -504284,7 +504370,7 @@ function createAcpStdioApp(deps) {
|
|
|
504284
504370
|
}
|
|
504285
504371
|
},
|
|
504286
504372
|
authMethods: [],
|
|
504287
|
-
agentInfo: { name: "UR-Nexus", version: "1.81.
|
|
504373
|
+
agentInfo: { name: "UR-Nexus", version: "1.81.4" }
|
|
504288
504374
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
504289
504375
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
504290
504376
|
await runtime2.announce({
|
|
@@ -504381,7 +504467,7 @@ function createAcpStdioAgent(deps) {
|
|
|
504381
504467
|
}
|
|
504382
504468
|
},
|
|
504383
504469
|
authMethods: [],
|
|
504384
|
-
agentInfo: { name: "UR-Nexus", version: "1.81.
|
|
504470
|
+
agentInfo: { name: "UR-Nexus", version: "1.81.4" }
|
|
504385
504471
|
});
|
|
504386
504472
|
return;
|
|
504387
504473
|
case "authenticate":
|
|
@@ -715633,7 +715719,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
715633
715719
|
smapsRollup,
|
|
715634
715720
|
platform: process.platform,
|
|
715635
715721
|
nodeVersion: process.version,
|
|
715636
|
-
ccVersion: "1.81.
|
|
715722
|
+
ccVersion: "1.81.4"
|
|
715637
715723
|
};
|
|
715638
715724
|
}
|
|
715639
715725
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -716222,7 +716308,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
716222
716308
|
var call154 = async () => {
|
|
716223
716309
|
return {
|
|
716224
716310
|
type: "text",
|
|
716225
|
-
value: "1.81.
|
|
716311
|
+
value: "1.81.4"
|
|
716226
716312
|
};
|
|
716227
716313
|
}, version2, version_default;
|
|
716228
716314
|
var init_version = __esm(() => {
|
|
@@ -719236,9 +719322,10 @@ function ProviderFirstModelPicker({
|
|
|
719236
719322
|
const [credentialNotice, setCredentialNotice] = import_react186.useState(null);
|
|
719237
719323
|
const [modelReloadToken, setModelReloadToken] = import_react186.useState(0);
|
|
719238
719324
|
const terminalSize = import_react186.useContext(TerminalSizeContext);
|
|
719239
|
-
const keyInputColumns =
|
|
719325
|
+
const keyInputColumns = getProviderKeyInputColumns(terminalSize?.columns);
|
|
719240
719326
|
const effortValue = useAppState(selectEffortValue2);
|
|
719241
|
-
const [effort] = import_react186.useState(effortValue !== undefined ? convertEffortValueToLevel(effortValue) : undefined);
|
|
719327
|
+
const [effort, setEffort] = import_react186.useState(effortValue !== undefined ? convertEffortValueToLevel(effortValue) : undefined);
|
|
719328
|
+
const [hasToggledEffort, setHasToggledEffort] = import_react186.useState(false);
|
|
719242
719329
|
const appThinkingEnabled = useAppState(selectThinkingEnabled2);
|
|
719243
719330
|
const hasToggledThinking = false;
|
|
719244
719331
|
const [thinkingEnabled] = import_react186.useState(() => appThinkingEnabled ?? shouldEnableThinkingByDefault());
|
|
@@ -719288,7 +719375,11 @@ function ProviderFirstModelPicker({
|
|
|
719288
719375
|
const options5 = result.models.map((model) => ({
|
|
719289
719376
|
value: model.id,
|
|
719290
719377
|
label: model.displayName,
|
|
719291
|
-
description:
|
|
719378
|
+
description: formatProviderModelDescription(model, result.source, providerId),
|
|
719379
|
+
pricing: model.pricing,
|
|
719380
|
+
contextLength: model.contextLength,
|
|
719381
|
+
supportedParameters: model.supportedParameters,
|
|
719382
|
+
reasoning: model.reasoning,
|
|
719292
719383
|
...model.supportedParameters !== undefined && !model.supportedParameters.includes("tools") ? { disabled: true } : {}
|
|
719293
719384
|
}));
|
|
719294
719385
|
setModelOptions(options5);
|
|
@@ -719333,6 +719424,11 @@ function ProviderFirstModelPicker({
|
|
|
719333
719424
|
const modelVisibleCount = Math.max(1, Math.min(modelSelectOptions.length, Math.max(5, (terminalSize?.rows ?? 24) - 14)));
|
|
719334
719425
|
const focusedProvider = providerOptions.find((p2) => p2.value === focusedProviderValue);
|
|
719335
719426
|
const focusedModel = modelOptions.find((m) => m.value === focusedModelValue);
|
|
719427
|
+
const focusedResolvedModel = focusedModel ? parseUserSpecifiedModel(focusedModel.value) : undefined;
|
|
719428
|
+
const focusedSupportsEffort = focusedResolvedModel ? modelSupportsEffort(focusedResolvedModel) : false;
|
|
719429
|
+
const focusedSupportsMax = focusedResolvedModel ? modelSupportsMaxEffort(focusedResolvedModel) : false;
|
|
719430
|
+
const focusedDefaultEffort = focusedResolvedModel ? convertEffortValueToLevel(getDefaultEffortForModel(focusedResolvedModel) ?? "high") : "high";
|
|
719431
|
+
const displayedEffort = effort === "max" && !focusedSupportsMax ? "high" : effort ?? focusedDefaultEffort;
|
|
719336
719432
|
function handleProviderFocus(value2) {
|
|
719337
719433
|
setFocusedProviderValue(value2);
|
|
719338
719434
|
setProviderWarning(null);
|
|
@@ -719340,6 +719436,20 @@ function ProviderFirstModelPicker({
|
|
|
719340
719436
|
function handleModelFocus(value2) {
|
|
719341
719437
|
setFocusedModelValue(value2);
|
|
719342
719438
|
}
|
|
719439
|
+
function handleCycleEffort(direction) {
|
|
719440
|
+
if (!focusedSupportsEffort)
|
|
719441
|
+
return;
|
|
719442
|
+
setEffort((previous) => cycleProviderPickerEffort(previous ?? focusedDefaultEffort, direction, focusedSupportsMax));
|
|
719443
|
+
setHasToggledEffort(true);
|
|
719444
|
+
}
|
|
719445
|
+
use_input_default((_input, key, event) => {
|
|
719446
|
+
if (!key.leftArrow && !key.rightArrow)
|
|
719447
|
+
return;
|
|
719448
|
+
handleCycleEffort(key.rightArrow ? "right" : "left");
|
|
719449
|
+
event.stopImmediatePropagation();
|
|
719450
|
+
}, {
|
|
719451
|
+
isActive: step === "model" && !loadingModels && focusedSupportsEffort
|
|
719452
|
+
});
|
|
719343
719453
|
function handleProviderSelect(value2) {
|
|
719344
719454
|
const provider = providerOptions.find((p2) => p2.value === value2);
|
|
719345
719455
|
if (provider) {
|
|
@@ -719421,6 +719531,14 @@ function ProviderFirstModelPicker({
|
|
|
719421
719531
|
return;
|
|
719422
719532
|
}
|
|
719423
719533
|
}
|
|
719534
|
+
if (hasToggledEffort) {
|
|
719535
|
+
const persistable = effort ? toPersistableEffort(effort) : undefined;
|
|
719536
|
+
if (persistable !== undefined) {
|
|
719537
|
+
updateSettingsForSource("userSettings", {
|
|
719538
|
+
effortLevel: persistable
|
|
719539
|
+
});
|
|
719540
|
+
}
|
|
719541
|
+
}
|
|
719424
719542
|
setAppState((prev) => ({
|
|
719425
719543
|
...prev,
|
|
719426
719544
|
provider: {
|
|
@@ -719428,10 +719546,10 @@ function ProviderFirstModelPicker({
|
|
|
719428
719546
|
active: selectedProvider?.value,
|
|
719429
719547
|
model: value2
|
|
719430
719548
|
},
|
|
719431
|
-
effortValue: effort,
|
|
719549
|
+
...hasToggledEffort ? { effortValue: effort } : {},
|
|
719432
719550
|
...hasToggledThinking ? { thinkingEnabled } : {}
|
|
719433
719551
|
}));
|
|
719434
|
-
onSelect(value2, effort, selectedProvider ? {
|
|
719552
|
+
onSelect(value2, hasToggledEffort ? effort : undefined, selectedProvider ? {
|
|
719435
719553
|
providerId: selectedProvider.value,
|
|
719436
719554
|
providerName: selectedProvider.label,
|
|
719437
719555
|
accessType: selectedProvider.accessType,
|
|
@@ -719601,22 +719719,33 @@ function ProviderFirstModelPicker({
|
|
|
719601
719719
|
]
|
|
719602
719720
|
}, undefined, true, undefined, this),
|
|
719603
719721
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedBox_default, {
|
|
719722
|
+
width: "100%",
|
|
719723
|
+
flexDirection: "row",
|
|
719604
719724
|
children: [
|
|
719605
|
-
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(
|
|
719606
|
-
|
|
719725
|
+
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedBox_default, {
|
|
719726
|
+
width: 12,
|
|
719727
|
+
flexShrink: 0,
|
|
719728
|
+
children: /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
719729
|
+
bold: true,
|
|
719730
|
+
color: "subtle",
|
|
719731
|
+
children: "API key"
|
|
719732
|
+
}, undefined, false, undefined, this)
|
|
719607
719733
|
}, undefined, false, undefined, this),
|
|
719608
|
-
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(
|
|
719609
|
-
|
|
719610
|
-
|
|
719611
|
-
|
|
719612
|
-
|
|
719613
|
-
|
|
719614
|
-
|
|
719615
|
-
|
|
719616
|
-
|
|
719617
|
-
|
|
719618
|
-
|
|
719619
|
-
|
|
719734
|
+
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedBox_default, {
|
|
719735
|
+
flexGrow: 1,
|
|
719736
|
+
children: /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(TextInput, {
|
|
719737
|
+
value: apiKeyInput,
|
|
719738
|
+
onChange: setApiKeyInput,
|
|
719739
|
+
onSubmit: handleKeySubmit,
|
|
719740
|
+
mask: "*",
|
|
719741
|
+
placeholder: "paste key, then Enter",
|
|
719742
|
+
focus: true,
|
|
719743
|
+
showCursor: true,
|
|
719744
|
+
multiline: false,
|
|
719745
|
+
columns: keyInputColumns,
|
|
719746
|
+
cursorOffset: apiKeyCursorOffset,
|
|
719747
|
+
onChangeCursorOffset: setApiKeyCursorOffset
|
|
719748
|
+
}, undefined, false, undefined, this)
|
|
719620
719749
|
}, undefined, false, undefined, this)
|
|
719621
719750
|
]
|
|
719622
719751
|
}, undefined, true, undefined, this),
|
|
@@ -719809,34 +719938,31 @@ function ProviderFirstModelPicker({
|
|
|
719809
719938
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
719810
719939
|
color: "remember",
|
|
719811
719940
|
bold: true,
|
|
719812
|
-
children: "Select model"
|
|
719941
|
+
children: selectedProvider?.value === "openrouter" ? "OpenRouter model catalog" : "Select model"
|
|
719813
719942
|
}, undefined, false, undefined, this),
|
|
719814
719943
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
719815
719944
|
dimColor: true,
|
|
719816
|
-
children:
|
|
719817
|
-
|
|
719818
|
-
selectedProvider?.label,
|
|
719819
|
-
" (",
|
|
719820
|
-
selectedProvider?.accessType,
|
|
719821
|
-
")"
|
|
719822
|
-
]
|
|
719823
|
-
}, undefined, true, undefined, this),
|
|
719945
|
+
children: selectedProvider?.value === "openrouter" ? `${modelOptions.length} current models from your OpenRouter account` : `Showing models for ${selectedProvider?.label} (${selectedProvider?.accessType})`
|
|
719946
|
+
}, undefined, false, undefined, this),
|
|
719824
719947
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
719825
|
-
|
|
719826
|
-
color: "subtle",
|
|
719948
|
+
color: modelSource === "live" ? "success" : "subtle",
|
|
719827
719949
|
children: [
|
|
719828
|
-
|
|
719829
|
-
|
|
719950
|
+
formatModelSourceLabel(modelSource),
|
|
719951
|
+
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
719952
|
+
dimColor: true,
|
|
719953
|
+
color: "subtle",
|
|
719954
|
+
children: [
|
|
719955
|
+
" ",
|
|
719956
|
+
"\xB7 agent-capable models can be selected"
|
|
719957
|
+
]
|
|
719958
|
+
}, undefined, true, undefined, this)
|
|
719830
719959
|
]
|
|
719831
719960
|
}, undefined, true, undefined, this),
|
|
719832
719961
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
719833
719962
|
dimColor: true,
|
|
719834
719963
|
color: "subtle",
|
|
719835
|
-
children:
|
|
719836
|
-
|
|
719837
|
-
selectedProvider?.label
|
|
719838
|
-
]
|
|
719839
|
-
}, undefined, true, undefined, this)
|
|
719964
|
+
children: "\u2191\u2193 browse \xB7 Enter select \xB7 \u2190\u2192 effort \xB7 Ctrl+R refresh \xB7 Esc providers"
|
|
719965
|
+
}, undefined, false, undefined, this)
|
|
719840
719966
|
]
|
|
719841
719967
|
}, undefined, true, undefined, this),
|
|
719842
719968
|
loadingModels ? /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedBox_default, {
|
|
@@ -719868,25 +719994,34 @@ function ProviderFirstModelPicker({
|
|
|
719868
719994
|
flexDirection: "column",
|
|
719869
719995
|
children: [
|
|
719870
719996
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
719871
|
-
|
|
719872
|
-
|
|
719873
|
-
|
|
719874
|
-
|
|
719875
|
-
focusedModel.description
|
|
719876
|
-
]
|
|
719877
|
-
}, undefined, true, undefined, this),
|
|
719997
|
+
bold: true,
|
|
719998
|
+
color: "text",
|
|
719999
|
+
children: focusedModel.label
|
|
720000
|
+
}, undefined, false, undefined, this),
|
|
719878
720001
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
719879
720002
|
dimColor: true,
|
|
719880
|
-
|
|
720003
|
+
children: focusedModel.description
|
|
720004
|
+
}, undefined, false, undefined, this),
|
|
720005
|
+
focusedSupportsEffort && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
719881
720006
|
children: [
|
|
719882
|
-
|
|
719883
|
-
|
|
720007
|
+
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720008
|
+
color: "ur",
|
|
720009
|
+
children: [
|
|
720010
|
+
effortLevelToSymbol(displayedEffort),
|
|
720011
|
+
" ",
|
|
720012
|
+
displayedEffort.toUpperCase()
|
|
720013
|
+
]
|
|
720014
|
+
}, undefined, true, undefined, this),
|
|
720015
|
+
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720016
|
+
dimColor: true,
|
|
720017
|
+
color: "subtle",
|
|
720018
|
+
children: [
|
|
720019
|
+
" ",
|
|
720020
|
+
"effort \xB7 use \u2190 \u2192 to adjust"
|
|
720021
|
+
]
|
|
720022
|
+
}, undefined, true, undefined, this)
|
|
719884
720023
|
]
|
|
719885
|
-
}, undefined, true, undefined, this)
|
|
719886
|
-
modelSupportsEffort(parseUserSpecifiedModel(focusedModel.value)) && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
719887
|
-
dimColor: true,
|
|
719888
|
-
children: "\u2190 \u2192 to adjust effort"
|
|
719889
|
-
}, undefined, false, undefined, this)
|
|
720024
|
+
}, undefined, true, undefined, this)
|
|
719890
720025
|
]
|
|
719891
720026
|
}, undefined, true, undefined, this),
|
|
719892
720027
|
modelWarning && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedBox_default, {
|
|
@@ -719949,6 +720084,45 @@ function ProviderFirstModelPicker({
|
|
|
719949
720084
|
}, undefined, false, undefined, this);
|
|
719950
720085
|
}
|
|
719951
720086
|
function noop8() {}
|
|
720087
|
+
function getProviderKeyInputColumns(terminalColumns) {
|
|
720088
|
+
const columns = Number.isFinite(terminalColumns) && terminalColumns > 0 ? Math.floor(terminalColumns) : 80;
|
|
720089
|
+
return Math.max(8, columns - 20);
|
|
720090
|
+
}
|
|
720091
|
+
function cycleProviderPickerEffort(current, direction, includeMax) {
|
|
720092
|
+
const levels = includeMax ? ["low", "medium", "high", "max"] : ["low", "medium", "high"];
|
|
720093
|
+
const index2 = levels.indexOf(current);
|
|
720094
|
+
const currentIndex = index2 >= 0 ? index2 : levels.indexOf("high");
|
|
720095
|
+
const delta = direction === "right" ? 1 : -1;
|
|
720096
|
+
return levels[(currentIndex + delta + levels.length) % levels.length];
|
|
720097
|
+
}
|
|
720098
|
+
function formatModelSourceLabel(source) {
|
|
720099
|
+
if (source === "live")
|
|
720100
|
+
return "\u25CF LIVE CATALOG";
|
|
720101
|
+
if (source === "cache")
|
|
720102
|
+
return "\u25D0 CACHED CATALOG";
|
|
720103
|
+
return "\u25CB BUILT-IN CATALOG";
|
|
720104
|
+
}
|
|
720105
|
+
function formatProviderModelDescription(model, source, providerId) {
|
|
720106
|
+
if (providerId !== "openrouter") {
|
|
720107
|
+
return `${model.description} \xB7 ${source}`;
|
|
720108
|
+
}
|
|
720109
|
+
const details = [];
|
|
720110
|
+
if (model.pricing === "free")
|
|
720111
|
+
details.push("FREE");
|
|
720112
|
+
else if (model.pricing === "paid")
|
|
720113
|
+
details.push("PAID");
|
|
720114
|
+
if (model.contextLength) {
|
|
720115
|
+
details.push(model.contextLength >= 1e6 ? `${Math.round(model.contextLength / 1e6)}M context` : `${Math.round(model.contextLength / 1000)}K context`);
|
|
720116
|
+
}
|
|
720117
|
+
if (model.supportedParameters?.includes("tools"))
|
|
720118
|
+
details.push("tools");
|
|
720119
|
+
else if (model.supportedParameters)
|
|
720120
|
+
details.push("chat only");
|
|
720121
|
+
if (model.reasoning || model.supportedParameters?.some((parameter) => parameter === "reasoning" || parameter === "reasoning_effort")) {
|
|
720122
|
+
details.push("reasoning");
|
|
720123
|
+
}
|
|
720124
|
+
return details.length > 0 ? details.join(" \xB7 ") : model.description;
|
|
720125
|
+
}
|
|
719952
720126
|
var import_react186, jsx_dev_runtime336, selectCurrentProvider = (s) => s.provider?.active ?? "ollama", selectEffortValue2 = (s) => s.effortValue, selectThinkingEnabled2 = (s) => s.thinkingEnabled;
|
|
719953
720127
|
var init_ProviderFirstModelPicker = __esm(() => {
|
|
719954
720128
|
init_analytics();
|
|
@@ -719970,6 +720144,7 @@ var init_ProviderFirstModelPicker = __esm(() => {
|
|
|
719970
720144
|
init_model();
|
|
719971
720145
|
init_thinking();
|
|
719972
720146
|
init_providerClient();
|
|
720147
|
+
init_EffortIndicator();
|
|
719973
720148
|
import_react186 = __toESM(require_react(), 1);
|
|
719974
720149
|
jsx_dev_runtime336 = __toESM(require_jsx_dev_runtime(), 1);
|
|
719975
720150
|
});
|
|
@@ -727492,7 +727667,7 @@ function generateHtmlReport(data, insights) {
|
|
|
727492
727667
|
</html>`;
|
|
727493
727668
|
}
|
|
727494
727669
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
727495
|
-
const version3 = typeof MACRO !== "undefined" ? "1.81.
|
|
727670
|
+
const version3 = typeof MACRO !== "undefined" ? "1.81.4" : "unknown";
|
|
727496
727671
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
727497
727672
|
const facets_summary = {
|
|
727498
727673
|
total: facets.size,
|
|
@@ -731805,7 +731980,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
731805
731980
|
init_settings2();
|
|
731806
731981
|
init_slowOperations();
|
|
731807
731982
|
init_uuid();
|
|
731808
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.81.
|
|
731983
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.81.4" : "unknown";
|
|
731809
731984
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
731810
731985
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
731811
731986
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -733020,7 +733195,7 @@ var init_filesystem = __esm(() => {
|
|
|
733020
733195
|
});
|
|
733021
733196
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
733022
733197
|
const nonce = randomBytes24(16).toString("hex");
|
|
733023
|
-
return join243(getURTempDir(), "bundled-skills", "1.81.
|
|
733198
|
+
return join243(getURTempDir(), "bundled-skills", "1.81.4", nonce);
|
|
733024
733199
|
});
|
|
733025
733200
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
733026
733201
|
});
|
|
@@ -739420,7 +739595,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
739420
739595
|
}
|
|
739421
739596
|
function computeFingerprintFromMessages(messages) {
|
|
739422
739597
|
const firstMessageText = extractFirstMessageText(messages);
|
|
739423
|
-
return computeFingerprint(firstMessageText, "1.81.
|
|
739598
|
+
return computeFingerprint(firstMessageText, "1.81.4");
|
|
739424
739599
|
}
|
|
739425
739600
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
739426
739601
|
var init_fingerprint = () => {};
|
|
@@ -741178,7 +741353,7 @@ async function querymodelH({
|
|
|
741178
741353
|
signal,
|
|
741179
741354
|
options: {
|
|
741180
741355
|
...options5,
|
|
741181
|
-
model: getSmallFastModel(),
|
|
741356
|
+
model: getSmallFastModel(options5.providerSettings),
|
|
741182
741357
|
enablePromptCaching: options5.enablePromptCaching ?? false,
|
|
741183
741358
|
outputFormat,
|
|
741184
741359
|
async getToolPermissionContext() {
|
|
@@ -741355,7 +741530,7 @@ async function sideQuery(opts) {
|
|
|
741355
741530
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
741356
741531
|
}
|
|
741357
741532
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
741358
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.81.
|
|
741533
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.81.4");
|
|
741359
741534
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
741360
741535
|
const systemBlocks = [
|
|
741361
741536
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -746189,7 +746364,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
746189
746364
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
746190
746365
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
746191
746366
|
betas: getSdkBetas(),
|
|
746192
|
-
ur_version: "1.81.
|
|
746367
|
+
ur_version: "1.81.4",
|
|
746193
746368
|
output_style: outputStyle,
|
|
746194
746369
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
746195
746370
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -760025,7 +760200,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
760025
760200
|
function getSemverPart(version3) {
|
|
760026
760201
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
760027
760202
|
}
|
|
760028
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.81.
|
|
760203
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.81.4") {
|
|
760029
760204
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
|
|
760030
760205
|
if (!updatedVersion) {
|
|
760031
760206
|
return null;
|
|
@@ -760074,7 +760249,7 @@ function AutoUpdater({
|
|
|
760074
760249
|
return;
|
|
760075
760250
|
}
|
|
760076
760251
|
if (false) {}
|
|
760077
|
-
const currentVersion = "1.81.
|
|
760252
|
+
const currentVersion = "1.81.4";
|
|
760078
760253
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
760079
760254
|
let latestVersion = await getLatestVersion(channel);
|
|
760080
760255
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -760303,12 +760478,12 @@ function NativeAutoUpdater({
|
|
|
760303
760478
|
logEvent("tengu_native_auto_updater_start", {});
|
|
760304
760479
|
try {
|
|
760305
760480
|
const maxVersion = await getMaxVersion();
|
|
760306
|
-
if (maxVersion && gt("1.81.
|
|
760481
|
+
if (maxVersion && gt("1.81.4", maxVersion)) {
|
|
760307
760482
|
const msg = await getMaxVersionMessage();
|
|
760308
760483
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
760309
760484
|
}
|
|
760310
760485
|
const result = await installLatest(channel);
|
|
760311
|
-
const currentVersion = "1.81.
|
|
760486
|
+
const currentVersion = "1.81.4";
|
|
760312
760487
|
const latencyMs = Date.now() - startTime;
|
|
760313
760488
|
if (result.lockFailed) {
|
|
760314
760489
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -760445,17 +760620,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
760445
760620
|
const maxVersion = await getMaxVersion();
|
|
760446
760621
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
760447
760622
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
760448
|
-
if (gte("1.81.
|
|
760449
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.
|
|
760623
|
+
if (gte("1.81.4", maxVersion)) {
|
|
760624
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
760450
760625
|
setUpdateAvailable(false);
|
|
760451
760626
|
return;
|
|
760452
760627
|
}
|
|
760453
760628
|
latest = maxVersion;
|
|
760454
760629
|
}
|
|
760455
|
-
const hasUpdate = latest && !gte("1.81.
|
|
760630
|
+
const hasUpdate = latest && !gte("1.81.4", latest) && !shouldSkipVersion(latest);
|
|
760456
760631
|
setUpdateAvailable(!!hasUpdate);
|
|
760457
760632
|
if (hasUpdate) {
|
|
760458
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.
|
|
760633
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.4"} -> ${latest}`);
|
|
760459
760634
|
}
|
|
760460
760635
|
};
|
|
760461
760636
|
$2[0] = t1;
|
|
@@ -760489,7 +760664,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
760489
760664
|
wrap: "truncate",
|
|
760490
760665
|
children: [
|
|
760491
760666
|
"currentVersion: ",
|
|
760492
|
-
"1.81.
|
|
760667
|
+
"1.81.4"
|
|
760493
760668
|
]
|
|
760494
760669
|
}, undefined, true, undefined, this);
|
|
760495
760670
|
$2[3] = verbose;
|
|
@@ -771342,7 +771517,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
771342
771517
|
project_dir: getOriginalCwd(),
|
|
771343
771518
|
added_dirs: addedDirs
|
|
771344
771519
|
},
|
|
771345
|
-
version: "1.81.
|
|
771520
|
+
version: "1.81.4",
|
|
771346
771521
|
output_style: {
|
|
771347
771522
|
name: outputStyleName
|
|
771348
771523
|
},
|
|
@@ -771477,7 +771652,7 @@ function StatusLineInner({
|
|
|
771477
771652
|
const attention = customStatusError ?? taskAttention;
|
|
771478
771653
|
const terminalSize = React133.useContext(TerminalSizeContext);
|
|
771479
771654
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
771480
|
-
version: "1.81.
|
|
771655
|
+
version: "1.81.4",
|
|
771481
771656
|
providerLabel: providerRuntime.providerLabel,
|
|
771482
771657
|
authMode: providerRuntime.authLabel,
|
|
771483
771658
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -783733,7 +783908,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
783733
783908
|
} catch {}
|
|
783734
783909
|
const data = {
|
|
783735
783910
|
trigger: trigger2,
|
|
783736
|
-
version: "1.81.
|
|
783911
|
+
version: "1.81.4",
|
|
783737
783912
|
platform: process.platform,
|
|
783738
783913
|
transcript,
|
|
783739
783914
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -796102,7 +796277,7 @@ function WelcomeV2() {
|
|
|
796102
796277
|
dimColor: true,
|
|
796103
796278
|
children: [
|
|
796104
796279
|
"v",
|
|
796105
|
-
"1.81.
|
|
796280
|
+
"1.81.4"
|
|
796106
796281
|
]
|
|
796107
796282
|
}, undefined, true, undefined, this)
|
|
796108
796283
|
]
|
|
@@ -797362,7 +797537,7 @@ function completeOnboarding() {
|
|
|
797362
797537
|
saveGlobalConfig((current) => ({
|
|
797363
797538
|
...current,
|
|
797364
797539
|
hasCompletedOnboarding: true,
|
|
797365
|
-
lastOnboardingVersion: "1.81.
|
|
797540
|
+
lastOnboardingVersion: "1.81.4"
|
|
797366
797541
|
}));
|
|
797367
797542
|
}
|
|
797368
797543
|
function showDialog(root2, renderer) {
|
|
@@ -802508,7 +802683,7 @@ function appendToLog(path28, message) {
|
|
|
802508
802683
|
cwd: getFsImplementation().cwd(),
|
|
802509
802684
|
userType: process.env.USER_TYPE,
|
|
802510
802685
|
sessionId: getSessionId(),
|
|
802511
|
-
version: "1.81.
|
|
802686
|
+
version: "1.81.4"
|
|
802512
802687
|
};
|
|
802513
802688
|
getLogWriter(path28).write(messageWithTimestamp);
|
|
802514
802689
|
}
|
|
@@ -806672,8 +806847,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
806672
806847
|
}
|
|
806673
806848
|
async function checkEnvLessBridgeMinVersion() {
|
|
806674
806849
|
const cfg = await getEnvLessBridgeConfig();
|
|
806675
|
-
if (cfg.min_version && lt("1.81.
|
|
806676
|
-
return `Your version of UR (${"1.81.
|
|
806850
|
+
if (cfg.min_version && lt("1.81.4", cfg.min_version)) {
|
|
806851
|
+
return `Your version of UR (${"1.81.4"}) is too old for Remote Control.
|
|
806677
806852
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
806678
806853
|
}
|
|
806679
806854
|
return null;
|
|
@@ -807147,7 +807322,7 @@ async function initBridgeCore(params) {
|
|
|
807147
807322
|
const rawApi = createBridgeApiClient({
|
|
807148
807323
|
baseUrl,
|
|
807149
807324
|
getAccessToken,
|
|
807150
|
-
runnerVersion: "1.81.
|
|
807325
|
+
runnerVersion: "1.81.4",
|
|
807151
807326
|
onDebug: logForDebugging,
|
|
807152
807327
|
onAuth401,
|
|
807153
807328
|
getTrustedDeviceToken
|
|
@@ -816620,7 +816795,7 @@ function getAgUiCapabilities() {
|
|
|
816620
816795
|
name: "UR-Nexus",
|
|
816621
816796
|
type: "ur-nexus",
|
|
816622
816797
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
816623
|
-
version: "1.81.
|
|
816798
|
+
version: "1.81.4",
|
|
816624
816799
|
provider: "UR",
|
|
816625
816800
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
816626
816801
|
},
|
|
@@ -817847,7 +818022,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
817847
818022
|
};
|
|
817848
818023
|
const server2 = new Server({
|
|
817849
818024
|
name: "ur-nexus",
|
|
817850
|
-
version: "1.81.
|
|
818025
|
+
version: "1.81.4"
|
|
817851
818026
|
}, {
|
|
817852
818027
|
capabilities: {
|
|
817853
818028
|
tools: {}
|
|
@@ -819051,7 +819226,7 @@ function thrownResponse(error40) {
|
|
|
819051
819226
|
}
|
|
819052
819227
|
async function createUrMcp2026Runtime(options5) {
|
|
819053
819228
|
const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
|
|
819054
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.
|
|
819229
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.4" }, { capabilities: {} });
|
|
819055
819230
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
819056
819231
|
try {
|
|
819057
819232
|
await server2.connect(serverTransport);
|
|
@@ -819062,7 +819237,7 @@ async function createUrMcp2026Runtime(options5) {
|
|
|
819062
819237
|
}
|
|
819063
819238
|
const runtime2 = new Mcp2026Runtime({
|
|
819064
819239
|
cwd: options5.cwd,
|
|
819065
|
-
version: "1.81.
|
|
819240
|
+
version: "1.81.4",
|
|
819066
819241
|
backend: {
|
|
819067
819242
|
listTools: async () => {
|
|
819068
819243
|
const listed = await client2.listTools();
|
|
@@ -821797,7 +821972,7 @@ async function update() {
|
|
|
821797
821972
|
logEvent("tengu_update_check", {});
|
|
821798
821973
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
821799
821974
|
const result = await checkUpgradeStatus({
|
|
821800
|
-
currentVersion: "1.81.
|
|
821975
|
+
currentVersion: "1.81.4",
|
|
821801
821976
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
821802
821977
|
installationType: diagnostic2.installationType,
|
|
821803
821978
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -823125,7 +823300,7 @@ ${customInstructions}` : customInstructions;
|
|
|
823125
823300
|
}
|
|
823126
823301
|
}
|
|
823127
823302
|
logForDiagnosticsNoPII("info", "started", {
|
|
823128
|
-
version: "1.81.
|
|
823303
|
+
version: "1.81.4",
|
|
823129
823304
|
is_native_binary: isInBundledMode()
|
|
823130
823305
|
});
|
|
823131
823306
|
registerCleanup(async () => {
|
|
@@ -823912,7 +824087,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
823912
824087
|
pendingHookMessages
|
|
823913
824088
|
}, renderAndRun);
|
|
823914
824089
|
}
|
|
823915
|
-
}).version("1.81.
|
|
824090
|
+
}).version("1.81.4 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
823916
824091
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
823917
824092
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
823918
824093
|
if (canUserConfigureAdvisor()) {
|
|
@@ -825039,7 +825214,7 @@ if (false) {}
|
|
|
825039
825214
|
async function main2() {
|
|
825040
825215
|
const args = process.argv.slice(2);
|
|
825041
825216
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
825042
|
-
console.log(`${"1.81.
|
|
825217
|
+
console.log(`${"1.81.4"} (UR-Nexus)`);
|
|
825043
825218
|
return;
|
|
825044
825219
|
}
|
|
825045
825220
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|