ur-agent 1.65.1 → 1.65.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js
CHANGED
|
@@ -53915,7 +53915,7 @@ function isLocalBaseUrl(value) {
|
|
|
53915
53915
|
async function checkEndpoint(definition, settings, adapters, result) {
|
|
53916
53916
|
if (!definition.endpointKind)
|
|
53917
53917
|
return;
|
|
53918
|
-
const baseUrl = settings.baseUrl ?? (definition.id === "ollama" ? getOllamaBaseUrl() : definition.defaultBaseUrl);
|
|
53918
|
+
const baseUrl = (definition.id === "ollama" ? getOllamaSessionOverride() : undefined) ?? settings.baseUrl ?? (definition.id === "ollama" ? getOllamaBaseUrl() : definition.defaultBaseUrl);
|
|
53919
53919
|
if (!baseUrl) {
|
|
53920
53920
|
result.checks.push({
|
|
53921
53921
|
name: "base_url",
|
|
@@ -54482,6 +54482,12 @@ function clearProviderModelCacheForTests() {
|
|
|
54482
54482
|
cachedModelsByProvider.clear();
|
|
54483
54483
|
}
|
|
54484
54484
|
function providerBaseUrl(provider, definition, settings) {
|
|
54485
|
+
if (provider === "ollama") {
|
|
54486
|
+
const sessionHost = getOllamaSessionOverride();
|
|
54487
|
+
if (sessionHost) {
|
|
54488
|
+
return sessionHost;
|
|
54489
|
+
}
|
|
54490
|
+
}
|
|
54485
54491
|
const providerSettings = getActiveProviderSettings(settings);
|
|
54486
54492
|
if (providerSettings.baseUrl) {
|
|
54487
54493
|
return providerSettings.baseUrl;
|
|
@@ -57388,6 +57394,7 @@ __export(exports_ollama, {
|
|
|
57388
57394
|
getOllamaRequestTimeoutMs: () => getOllamaRequestTimeoutMs,
|
|
57389
57395
|
getEffectiveOllamaBaseUrl: () => getEffectiveOllamaBaseUrl,
|
|
57390
57396
|
createOllamaURHQClient: () => createOllamaURHQClient,
|
|
57397
|
+
consumePendingProviderNotice: () => consumePendingProviderNotice,
|
|
57391
57398
|
buildOllamaHeaders: () => buildOllamaHeaders
|
|
57392
57399
|
});
|
|
57393
57400
|
import { randomUUID as randomUUID2 } from "crypto";
|
|
@@ -57552,6 +57559,11 @@ function isTruthyEnv(value) {
|
|
|
57552
57559
|
}
|
|
57553
57560
|
return !["0", "false", "no", "off"].includes(value.toLowerCase());
|
|
57554
57561
|
}
|
|
57562
|
+
function consumePendingProviderNotice() {
|
|
57563
|
+
const notice = pendingProviderNotice;
|
|
57564
|
+
pendingProviderNotice = null;
|
|
57565
|
+
return notice;
|
|
57566
|
+
}
|
|
57555
57567
|
function toOllamaChatRequest(params, stream4, capabilities) {
|
|
57556
57568
|
const supportsTools = modelCapabilityEnabled(capabilities, "tools");
|
|
57557
57569
|
const tools = supportsTools ? toOllamaTools(params.tools) : [];
|
|
@@ -57559,7 +57571,9 @@ function toOllamaChatRequest(params, stream4, capabilities) {
|
|
|
57559
57571
|
const toolsDropped = toolsRequested && !supportsTools;
|
|
57560
57572
|
if (toolsDropped && !warnedToolsUnsupportedModels.has(params.model)) {
|
|
57561
57573
|
warnedToolsUnsupportedModels.add(params.model);
|
|
57562
|
-
|
|
57574
|
+
const message = `"${params.model}" does not advertise the 'tools' capability, so tool ` + `definitions are not sent to it. It cannot read or write files, run ` + `commands, or use any tool \u2014 asked to, it will describe what it would ` + `do and may report work it did not perform. Pick a tools-capable model ` + `with /model (check with: ur model-doctor).`;
|
|
57575
|
+
logForDebugging(message, { level: "warn" });
|
|
57576
|
+
pendingProviderNotice = message;
|
|
57563
57577
|
}
|
|
57564
57578
|
const systemMessage = {
|
|
57565
57579
|
role: "system",
|
|
@@ -58438,7 +58452,7 @@ function parseToolInput(input) {
|
|
|
58438
58452
|
}
|
|
58439
58453
|
return parsed ?? {};
|
|
58440
58454
|
}
|
|
58441
|
-
var DEFAULT_OLLAMA_REQUEST_TIMEOUT_MS = 300000, REMOTE_OLLAMA_REQUEST_TIMEOUT_MS = 120000, CLOUD_OLLAMA_REQUEST_TIMEOUT_MS = 120000, OLLAMA_GATEWAY_TIMEOUT_MESSAGE = "Ollama gateway timed out while waiting for the model to respond. Check the selected Ollama endpoint or increase API_TIMEOUT_MS if the model needs more time.", ollamaModelCapabilitiesCache, ollamaBaseUrlOverride, warnedToolsUnsupportedModels, TEXT_TOOL_CALL_HINT, LEVELED_THINK_MODEL_RE;
|
|
58455
|
+
var DEFAULT_OLLAMA_REQUEST_TIMEOUT_MS = 300000, REMOTE_OLLAMA_REQUEST_TIMEOUT_MS = 120000, CLOUD_OLLAMA_REQUEST_TIMEOUT_MS = 120000, OLLAMA_GATEWAY_TIMEOUT_MESSAGE = "Ollama gateway timed out while waiting for the model to respond. Check the selected Ollama endpoint or increase API_TIMEOUT_MS if the model needs more time.", ollamaModelCapabilitiesCache, ollamaBaseUrlOverride, warnedToolsUnsupportedModels, TEXT_TOOL_CALL_HINT, pendingProviderNotice = null, LEVELED_THINK_MODEL_RE;
|
|
58442
58456
|
var init_ollama = __esm(() => {
|
|
58443
58457
|
init_urhq_sdk();
|
|
58444
58458
|
init_ollamaModels();
|
|
@@ -62586,7 +62600,8 @@ async function createLocalProviderClient(providerId, options = {}) {
|
|
|
62586
62600
|
const { createOllamaURHQClient: createOllamaURHQClient2 } = await Promise.resolve().then(() => (init_ollama(), exports_ollama));
|
|
62587
62601
|
const settings = getInitialSettings();
|
|
62588
62602
|
const configured = getActiveProviderSettings(settings);
|
|
62589
|
-
const
|
|
62603
|
+
const sessionHost = getOllamaSessionOverride();
|
|
62604
|
+
const baseUrlOverride = sessionHost ? sessionHost : configured.active === providerId ? configured.baseUrl ?? getOllamaBaseUrl(process.env, settings) : getOllamaBaseUrl(process.env, settings);
|
|
62590
62605
|
return createOllamaURHQClient2({ baseUrlOverride });
|
|
62591
62606
|
}
|
|
62592
62607
|
async function createOpenAICompatibleProviderClient(providerId, options = {}) {
|
|
@@ -75223,7 +75238,7 @@ var init_auth = __esm(() => {
|
|
|
75223
75238
|
|
|
75224
75239
|
// src/utils/userAgent.ts
|
|
75225
75240
|
function getURCodeUserAgent() {
|
|
75226
|
-
return `ur/${"1.65.
|
|
75241
|
+
return `ur/${"1.65.3"}`;
|
|
75227
75242
|
}
|
|
75228
75243
|
|
|
75229
75244
|
// src/utils/workloadContext.ts
|
|
@@ -75245,7 +75260,7 @@ function getUserAgent() {
|
|
|
75245
75260
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
75246
75261
|
const workload = getWorkload();
|
|
75247
75262
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
75248
|
-
return `ur-cli/${"1.65.
|
|
75263
|
+
return `ur-cli/${"1.65.3"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
75249
75264
|
}
|
|
75250
75265
|
function getMCPUserAgent() {
|
|
75251
75266
|
const parts = [];
|
|
@@ -75259,7 +75274,7 @@ function getMCPUserAgent() {
|
|
|
75259
75274
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
75260
75275
|
}
|
|
75261
75276
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
75262
|
-
return `ur/${"1.65.
|
|
75277
|
+
return `ur/${"1.65.3"}${suffix}`;
|
|
75263
75278
|
}
|
|
75264
75279
|
function getWebFetchUserAgent() {
|
|
75265
75280
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -75397,7 +75412,7 @@ var init_user = __esm(() => {
|
|
|
75397
75412
|
deviceId,
|
|
75398
75413
|
sessionId: getSessionId(),
|
|
75399
75414
|
email: getEmail(),
|
|
75400
|
-
appVersion: "1.65.
|
|
75415
|
+
appVersion: "1.65.3",
|
|
75401
75416
|
platform: getHostPlatformForAnalytics(),
|
|
75402
75417
|
organizationUuid,
|
|
75403
75418
|
accountUuid,
|
|
@@ -83597,7 +83612,7 @@ var init_metadata = __esm(() => {
|
|
|
83597
83612
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
83598
83613
|
WHITESPACE_REGEX = /\s+/;
|
|
83599
83614
|
getVersionBase = memoize_default(() => {
|
|
83600
|
-
const match = "1.65.
|
|
83615
|
+
const match = "1.65.3".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
83601
83616
|
return match ? match[0] : undefined;
|
|
83602
83617
|
});
|
|
83603
83618
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -83637,7 +83652,7 @@ var init_metadata = __esm(() => {
|
|
|
83637
83652
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
83638
83653
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
83639
83654
|
isURAiAuth: isURAISubscriber(),
|
|
83640
|
-
version: "1.65.
|
|
83655
|
+
version: "1.65.3",
|
|
83641
83656
|
versionBase: getVersionBase(),
|
|
83642
83657
|
buildTime: "",
|
|
83643
83658
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -84307,7 +84322,7 @@ function initialize1PEventLogging() {
|
|
|
84307
84322
|
const platform2 = getPlatform();
|
|
84308
84323
|
const attributes = {
|
|
84309
84324
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
84310
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.65.
|
|
84325
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.65.3"
|
|
84311
84326
|
};
|
|
84312
84327
|
if (platform2 === "wsl") {
|
|
84313
84328
|
const wslVersion = getWslVersion();
|
|
@@ -84335,7 +84350,7 @@ function initialize1PEventLogging() {
|
|
|
84335
84350
|
})
|
|
84336
84351
|
]
|
|
84337
84352
|
});
|
|
84338
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.65.
|
|
84353
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.65.3");
|
|
84339
84354
|
}
|
|
84340
84355
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
84341
84356
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -86854,6 +86869,12 @@ var init_types2 = __esm(() => {
|
|
|
86854
86869
|
name: exports_external.string().optional().describe("Synthesiser voice name"),
|
|
86855
86870
|
rate: exports_external.number().optional().describe("Words per minute")
|
|
86856
86871
|
}).optional().describe("Spoken output settings"),
|
|
86872
|
+
tasks: exports_external.object({
|
|
86873
|
+
requireBeforeChanges: exports_external.object({
|
|
86874
|
+
enabled: exports_external.boolean().optional(),
|
|
86875
|
+
freeReads: exports_external.number().optional()
|
|
86876
|
+
}).optional().describe("Require a task list before any tool that changes the workspace (Edit, Write, Bash, ...). " + "Reads are never blocked, so the agent can investigate before planning; freeReads is how many " + "tool calls may run before the gate applies at all. Set enabled=false to make the task list advisory again.")
|
|
86877
|
+
}).optional().describe("Task list behaviour."),
|
|
86857
86878
|
context: exports_external.object({
|
|
86858
86879
|
pruneToolResults: exports_external.object({
|
|
86859
86880
|
enabled: exports_external.boolean().optional(),
|
|
@@ -88095,6 +88116,9 @@ function getOllamaBaseUrl(env4 = process.env, settings) {
|
|
|
88095
88116
|
function setOllamaBaseUrlOverride(url3) {
|
|
88096
88117
|
sessionOverride = url3;
|
|
88097
88118
|
}
|
|
88119
|
+
function getOllamaSessionOverride() {
|
|
88120
|
+
return sessionOverride ? normalizeOllamaBaseUrl(sessionOverride) : undefined;
|
|
88121
|
+
}
|
|
88098
88122
|
var sessionOverride, OLLAMA_CLOUD_BASE_URL = "https://ollama.com";
|
|
88099
88123
|
var init_ollamaConfig = __esm(() => {
|
|
88100
88124
|
init_settings2();
|
|
@@ -94181,7 +94205,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
94181
94205
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
94182
94206
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
94183
94207
|
}
|
|
94184
|
-
var urVersion = "1.65.
|
|
94208
|
+
var urVersion = "1.65.3", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
|
|
94185
94209
|
var init_trends = __esm(() => {
|
|
94186
94210
|
init_a2aCardSignature();
|
|
94187
94211
|
coverage = [
|
|
@@ -96984,7 +97008,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
96984
97008
|
if (!isAttributionHeaderEnabled()) {
|
|
96985
97009
|
return "";
|
|
96986
97010
|
}
|
|
96987
|
-
const version2 = `${"1.65.
|
|
97011
|
+
const version2 = `${"1.65.3"}.${fingerprint}`;
|
|
96988
97012
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
96989
97013
|
const cch = "";
|
|
96990
97014
|
const workload = getWorkload();
|
|
@@ -154748,7 +154772,7 @@ var init_projectSafety = __esm(() => {
|
|
|
154748
154772
|
function getInstruments() {
|
|
154749
154773
|
if (instruments)
|
|
154750
154774
|
return instruments;
|
|
154751
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.65.
|
|
154775
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.65.3");
|
|
154752
154776
|
instruments = {
|
|
154753
154777
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
154754
154778
|
description: "GenAI operation duration.",
|
|
@@ -154846,7 +154870,7 @@ function genAiAgentAttributes() {
|
|
|
154846
154870
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
154847
154871
|
"gen_ai.provider.name": "ur",
|
|
154848
154872
|
"gen_ai.agent.name": "UR-Nexus",
|
|
154849
|
-
"gen_ai.agent.version": "1.65.
|
|
154873
|
+
"gen_ai.agent.version": "1.65.3"
|
|
154850
154874
|
};
|
|
154851
154875
|
}
|
|
154852
154876
|
function genAiWorkflowAttributes(workflowName) {
|
|
@@ -154862,7 +154886,7 @@ function genAiWorkflowAttributes(workflowName) {
|
|
|
154862
154886
|
function startGenAiWorkflowSpan(workflowName) {
|
|
154863
154887
|
const attributes = genAiWorkflowAttributes(workflowName);
|
|
154864
154888
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
154865
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.65.
|
|
154889
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.65.3").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
154866
154890
|
}
|
|
154867
154891
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
154868
154892
|
try {
|
|
@@ -154900,7 +154924,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
154900
154924
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
154901
154925
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
154902
154926
|
}
|
|
154903
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.65.
|
|
154927
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.65.3").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
154904
154928
|
}
|
|
154905
154929
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
154906
154930
|
try {
|
|
@@ -206419,7 +206443,7 @@ function getTelemetryAttributes() {
|
|
|
206419
206443
|
attributes["session.id"] = sessionId;
|
|
206420
206444
|
}
|
|
206421
206445
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
206422
|
-
attributes["app.version"] = "1.65.
|
|
206446
|
+
attributes["app.version"] = "1.65.3";
|
|
206423
206447
|
}
|
|
206424
206448
|
const oauthAccount = getOauthAccountInfo();
|
|
206425
206449
|
if (oauthAccount) {
|
|
@@ -252956,7 +252980,7 @@ function getInstallationEnv() {
|
|
|
252956
252980
|
return;
|
|
252957
252981
|
}
|
|
252958
252982
|
function getURCodeVersion() {
|
|
252959
|
-
return "1.65.
|
|
252983
|
+
return "1.65.3";
|
|
252960
252984
|
}
|
|
252961
252985
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
252962
252986
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -260287,7 +260311,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
260287
260311
|
const client2 = new Client({
|
|
260288
260312
|
name: "ur",
|
|
260289
260313
|
title: "UR",
|
|
260290
|
-
version: "1.65.
|
|
260314
|
+
version: "1.65.3",
|
|
260291
260315
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
260292
260316
|
websiteUrl: PRODUCT_URL
|
|
260293
260317
|
}, {
|
|
@@ -260647,7 +260671,7 @@ var init_client5 = __esm(() => {
|
|
|
260647
260671
|
const client2 = new Client({
|
|
260648
260672
|
name: "ur",
|
|
260649
260673
|
title: "UR",
|
|
260650
|
-
version: "1.65.
|
|
260674
|
+
version: "1.65.3",
|
|
260651
260675
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
260652
260676
|
websiteUrl: PRODUCT_URL
|
|
260653
260677
|
}, {
|
|
@@ -273248,7 +273272,7 @@ async function createRuntime() {
|
|
|
273248
273272
|
bootstrapTelemetry();
|
|
273249
273273
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
273250
273274
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
273251
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.65.
|
|
273275
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.65.3"
|
|
273252
273276
|
}));
|
|
273253
273277
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
273254
273278
|
resource,
|
|
@@ -273281,11 +273305,11 @@ async function createRuntime() {
|
|
|
273281
273305
|
setMeterProvider(meterProvider);
|
|
273282
273306
|
setLoggerProvider(loggerProvider);
|
|
273283
273307
|
if (meterProvider) {
|
|
273284
|
-
const meter = meterProvider.getMeter("ur-agent", "1.65.
|
|
273308
|
+
const meter = meterProvider.getMeter("ur-agent", "1.65.3");
|
|
273285
273309
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
273286
273310
|
}
|
|
273287
273311
|
if (loggerProvider) {
|
|
273288
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.65.
|
|
273312
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.65.3"));
|
|
273289
273313
|
}
|
|
273290
273314
|
if (!cleanupRegistered2) {
|
|
273291
273315
|
cleanupRegistered2 = true;
|
|
@@ -273947,9 +273971,9 @@ async function assertMinVersion() {
|
|
|
273947
273971
|
if (false) {}
|
|
273948
273972
|
try {
|
|
273949
273973
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
273950
|
-
if (versionConfig.minVersion && lt("1.65.
|
|
273974
|
+
if (versionConfig.minVersion && lt("1.65.3", versionConfig.minVersion)) {
|
|
273951
273975
|
console.error(`
|
|
273952
|
-
It looks like your version of UR (${"1.65.
|
|
273976
|
+
It looks like your version of UR (${"1.65.3"}) needs an update.
|
|
273953
273977
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
273954
273978
|
|
|
273955
273979
|
To update, please run:
|
|
@@ -274165,7 +274189,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
274165
274189
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
274166
274190
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
274167
274191
|
pid: process.pid,
|
|
274168
|
-
currentVersion: "1.65.
|
|
274192
|
+
currentVersion: "1.65.3"
|
|
274169
274193
|
});
|
|
274170
274194
|
return "in_progress";
|
|
274171
274195
|
}
|
|
@@ -274174,7 +274198,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
274174
274198
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
274175
274199
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
274176
274200
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
274177
|
-
currentVersion: "1.65.
|
|
274201
|
+
currentVersion: "1.65.3"
|
|
274178
274202
|
});
|
|
274179
274203
|
console.error(`
|
|
274180
274204
|
Error: Windows NPM detected in WSL
|
|
@@ -274709,7 +274733,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
274709
274733
|
}
|
|
274710
274734
|
async function getDoctorDiagnostic() {
|
|
274711
274735
|
const installationType = await getCurrentInstallationType();
|
|
274712
|
-
const version2 = typeof MACRO !== "undefined" ? "1.65.
|
|
274736
|
+
const version2 = typeof MACRO !== "undefined" ? "1.65.3" : "unknown";
|
|
274713
274737
|
const installationPath = await getInstallationPath();
|
|
274714
274738
|
const invokedBinary = getInvokedBinary();
|
|
274715
274739
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -275644,8 +275668,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
275644
275668
|
const maxVersion = await getMaxVersion();
|
|
275645
275669
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
275646
275670
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
275647
|
-
if (gte("1.65.
|
|
275648
|
-
logForDebugging(`Native installer: current version ${"1.65.
|
|
275671
|
+
if (gte("1.65.3", maxVersion)) {
|
|
275672
|
+
logForDebugging(`Native installer: current version ${"1.65.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
275649
275673
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
275650
275674
|
latency_ms: Date.now() - startTime,
|
|
275651
275675
|
max_version: maxVersion,
|
|
@@ -275656,7 +275680,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
275656
275680
|
version2 = maxVersion;
|
|
275657
275681
|
}
|
|
275658
275682
|
}
|
|
275659
|
-
if (!forceReinstall && version2 === "1.65.
|
|
275683
|
+
if (!forceReinstall && version2 === "1.65.3" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
275660
275684
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
275661
275685
|
logEvent("tengu_native_update_complete", {
|
|
275662
275686
|
latency_ms: Date.now() - startTime,
|
|
@@ -277525,6 +277549,34 @@ var init_spinnerVerbs = __esm(() => {
|
|
|
277525
277549
|
});
|
|
277526
277550
|
|
|
277527
277551
|
// src/utils/tasks.ts
|
|
277552
|
+
var exports_tasks = {};
|
|
277553
|
+
__export(exports_tasks, {
|
|
277554
|
+
updateTask: () => updateTask2,
|
|
277555
|
+
unassignTeammateTasks: () => unassignTeammateTasks,
|
|
277556
|
+
setLeaderTeamName: () => setLeaderTeamName,
|
|
277557
|
+
sanitizePathComponent: () => sanitizePathComponent,
|
|
277558
|
+
resetTaskList: () => resetTaskList,
|
|
277559
|
+
onTasksUpdated: () => onTasksUpdated,
|
|
277560
|
+
notifyTasksUpdated: () => notifyTasksUpdated,
|
|
277561
|
+
listTasks: () => listTasks,
|
|
277562
|
+
isTodoV2Enabled: () => isTodoV2Enabled,
|
|
277563
|
+
getTasksDir: () => getTasksDir,
|
|
277564
|
+
getTaskPath: () => getTaskPath,
|
|
277565
|
+
getTaskListId: () => getTaskListId,
|
|
277566
|
+
getTask: () => getTask,
|
|
277567
|
+
getAgentStatuses: () => getAgentStatuses,
|
|
277568
|
+
ensureTasksDir: () => ensureTasksDir,
|
|
277569
|
+
deleteTask: () => deleteTask,
|
|
277570
|
+
createTask: () => createTask,
|
|
277571
|
+
compareTaskIds: () => compareTaskIds,
|
|
277572
|
+
clearLeaderTeamName: () => clearLeaderTeamName,
|
|
277573
|
+
claimTask: () => claimTask,
|
|
277574
|
+
blockTask: () => blockTask,
|
|
277575
|
+
TaskStatusSchema: () => TaskStatusSchema2,
|
|
277576
|
+
TaskSchema: () => TaskSchema2,
|
|
277577
|
+
TASK_STATUSES: () => TASK_STATUSES,
|
|
277578
|
+
DEFAULT_TASKS_MODE_TASK_LIST_ID: () => DEFAULT_TASKS_MODE_TASK_LIST_ID
|
|
277579
|
+
});
|
|
277528
277580
|
import { mkdir as mkdir13, readdir as readdir10, readFile as readFile16, unlink as unlink10, writeFile as writeFile15 } from "fs/promises";
|
|
277529
277581
|
import { join as join83 } from "path";
|
|
277530
277582
|
function setLeaderTeamName(teamName) {
|
|
@@ -277762,6 +277814,19 @@ async function deleteTask(taskListId, taskId) {
|
|
|
277762
277814
|
return false;
|
|
277763
277815
|
}
|
|
277764
277816
|
}
|
|
277817
|
+
function compareTaskIds(a2, b) {
|
|
277818
|
+
const left = Number.parseInt(a2, 10);
|
|
277819
|
+
const right = Number.parseInt(b, 10);
|
|
277820
|
+
const leftIsNumeric = !Number.isNaN(left);
|
|
277821
|
+
const rightIsNumeric = !Number.isNaN(right);
|
|
277822
|
+
if (leftIsNumeric && rightIsNumeric)
|
|
277823
|
+
return left - right;
|
|
277824
|
+
if (leftIsNumeric)
|
|
277825
|
+
return -1;
|
|
277826
|
+
if (rightIsNumeric)
|
|
277827
|
+
return 1;
|
|
277828
|
+
return a2.localeCompare(b);
|
|
277829
|
+
}
|
|
277765
277830
|
async function listTasks(taskListId) {
|
|
277766
277831
|
const dir = getTasksDir(taskListId);
|
|
277767
277832
|
let files;
|
|
@@ -277770,7 +277835,7 @@ async function listTasks(taskListId) {
|
|
|
277770
277835
|
} catch {
|
|
277771
277836
|
return [];
|
|
277772
277837
|
}
|
|
277773
|
-
const taskIds = files.filter((f) => f.endsWith(".json")).map((f) => f.replace(".json", ""));
|
|
277838
|
+
const taskIds = files.filter((f) => f.endsWith(".json")).map((f) => f.replace(".json", "")).sort(compareTaskIds);
|
|
277774
277839
|
const results = await Promise.all(taskIds.map((id) => getTask(taskListId, id)));
|
|
277775
277840
|
return results.filter((t) => t !== null);
|
|
277776
277841
|
}
|
|
@@ -277891,6 +277956,60 @@ async function claimTaskWithBusyCheck(taskListId, taskId, claimantAgentId) {
|
|
|
277891
277956
|
}
|
|
277892
277957
|
}
|
|
277893
277958
|
}
|
|
277959
|
+
function sanitizeName(name) {
|
|
277960
|
+
return name.replace(/[^a-zA-Z0-9]/g, "-").toLowerCase();
|
|
277961
|
+
}
|
|
277962
|
+
async function readTeamMembers(teamName) {
|
|
277963
|
+
const teamsDir = getTeamsDir();
|
|
277964
|
+
const teamFilePath = join83(teamsDir, sanitizeName(teamName), "config.json");
|
|
277965
|
+
try {
|
|
277966
|
+
const content = await readFile16(teamFilePath, "utf-8");
|
|
277967
|
+
const teamFile = jsonParse(content);
|
|
277968
|
+
return {
|
|
277969
|
+
leadAgentId: teamFile.leadAgentId,
|
|
277970
|
+
members: teamFile.members.map((m) => ({
|
|
277971
|
+
agentId: m.agentId,
|
|
277972
|
+
name: m.name,
|
|
277973
|
+
agentType: m.agentType
|
|
277974
|
+
}))
|
|
277975
|
+
};
|
|
277976
|
+
} catch (e) {
|
|
277977
|
+
const code = getErrnoCode(e);
|
|
277978
|
+
if (code === "ENOENT") {
|
|
277979
|
+
return null;
|
|
277980
|
+
}
|
|
277981
|
+
logForDebugging(`[Tasks] Failed to read team file for ${teamName}: ${errorMessage2(e)}`);
|
|
277982
|
+
return null;
|
|
277983
|
+
}
|
|
277984
|
+
}
|
|
277985
|
+
async function getAgentStatuses(teamName) {
|
|
277986
|
+
const teamData = await readTeamMembers(teamName);
|
|
277987
|
+
if (!teamData) {
|
|
277988
|
+
return null;
|
|
277989
|
+
}
|
|
277990
|
+
const taskListId = sanitizeName(teamName);
|
|
277991
|
+
const allTasks = await listTasks(taskListId);
|
|
277992
|
+
const unresolvedTasksByOwner = new Map;
|
|
277993
|
+
for (const task of allTasks) {
|
|
277994
|
+
if (task.status !== "completed" && task.owner) {
|
|
277995
|
+
const existing2 = unresolvedTasksByOwner.get(task.owner) || [];
|
|
277996
|
+
existing2.push(task.id);
|
|
277997
|
+
unresolvedTasksByOwner.set(task.owner, existing2);
|
|
277998
|
+
}
|
|
277999
|
+
}
|
|
278000
|
+
return teamData.members.map((member) => {
|
|
278001
|
+
const tasksByName = unresolvedTasksByOwner.get(member.name) || [];
|
|
278002
|
+
const tasksById = unresolvedTasksByOwner.get(member.agentId) || [];
|
|
278003
|
+
const currentTasks = uniq([...tasksByName, ...tasksById]);
|
|
278004
|
+
return {
|
|
278005
|
+
agentId: member.agentId,
|
|
278006
|
+
name: member.name,
|
|
278007
|
+
agentType: member.agentType,
|
|
278008
|
+
status: currentTasks.length === 0 ? "idle" : "busy",
|
|
278009
|
+
currentTasks
|
|
278010
|
+
};
|
|
278011
|
+
});
|
|
278012
|
+
}
|
|
277894
278013
|
async function unassignTeammateTasks(teamName, teammateId, teammateName, reason) {
|
|
277895
278014
|
const tasks = await listTasks(teamName);
|
|
277896
278015
|
const unresolvedAssignedTasks = tasks.filter((t) => t.status !== "completed" && (t.owner === teammateId || t.owner === teammateName));
|
|
@@ -277914,7 +278033,7 @@ async function unassignTeammateTasks(teamName, teammateId, teammateName, reason)
|
|
|
277914
278033
|
notificationMessage
|
|
277915
278034
|
};
|
|
277916
278035
|
}
|
|
277917
|
-
var tasksUpdated, leaderTeamName, onTasksUpdated, TaskStatusSchema2, TaskSchema2, HIGH_WATER_MARK_FILE = ".highwatermark", LOCK_OPTIONS, DEFAULT_TASKS_MODE_TASK_LIST_ID = "tasklist";
|
|
278036
|
+
var tasksUpdated, leaderTeamName, onTasksUpdated, TASK_STATUSES, TaskStatusSchema2, TaskSchema2, HIGH_WATER_MARK_FILE = ".highwatermark", LOCK_OPTIONS, DEFAULT_TASKS_MODE_TASK_LIST_ID = "tasklist";
|
|
277918
278037
|
var init_tasks = __esm(() => {
|
|
277919
278038
|
init_v4();
|
|
277920
278039
|
init_state();
|
|
@@ -277927,6 +278046,7 @@ var init_tasks = __esm(() => {
|
|
|
277927
278046
|
init_teammateContext();
|
|
277928
278047
|
tasksUpdated = createSignal();
|
|
277929
278048
|
onTasksUpdated = tasksUpdated.subscribe;
|
|
278049
|
+
TASK_STATUSES = ["pending", "in_progress", "completed"];
|
|
277930
278050
|
TaskStatusSchema2 = lazySchema(() => exports_external.enum(["pending", "in_progress", "completed", "failed", "skipped"]));
|
|
277931
278051
|
TaskSchema2 = lazySchema(() => exports_external.object({
|
|
277932
278052
|
id: exports_external.string(),
|
|
@@ -283545,7 +283665,7 @@ __export(exports_teamHelpers, {
|
|
|
283545
283665
|
setMultipleMemberModes: () => setMultipleMemberModes,
|
|
283546
283666
|
setMemberMode: () => setMemberMode,
|
|
283547
283667
|
setMemberActive: () => setMemberActive,
|
|
283548
|
-
sanitizeName: () =>
|
|
283668
|
+
sanitizeName: () => sanitizeName2,
|
|
283549
283669
|
sanitizeAgentName: () => sanitizeAgentName,
|
|
283550
283670
|
removeTeammateFromTeamFile: () => removeTeammateFromTeamFile,
|
|
283551
283671
|
removeMemberFromTeam: () => removeMemberFromTeam,
|
|
@@ -283564,14 +283684,14 @@ __export(exports_teamHelpers, {
|
|
|
283564
283684
|
import { mkdirSync as mkdirSync16, readFileSync as readFileSync24, writeFileSync as writeFileSync16 } from "fs";
|
|
283565
283685
|
import { mkdir as mkdir15, readFile as readFile18, rm as rm4, writeFile as writeFile17 } from "fs/promises";
|
|
283566
283686
|
import { join as join85 } from "path";
|
|
283567
|
-
function
|
|
283687
|
+
function sanitizeName2(name) {
|
|
283568
283688
|
return name.replace(/[^a-zA-Z0-9]/g, "-").toLowerCase();
|
|
283569
283689
|
}
|
|
283570
283690
|
function sanitizeAgentName(name) {
|
|
283571
283691
|
return name.replace(/@/g, "-");
|
|
283572
283692
|
}
|
|
283573
283693
|
function getTeamDir(teamName) {
|
|
283574
|
-
return join85(getTeamsDir(),
|
|
283694
|
+
return join85(getTeamsDir(), sanitizeName2(teamName));
|
|
283575
283695
|
}
|
|
283576
283696
|
function getTeamFilePath(teamName) {
|
|
283577
283697
|
return join85(getTeamDir(teamName), "config.json");
|
|
@@ -283833,7 +283953,7 @@ async function killOrphanedTeammatePanes(teamName) {
|
|
|
283833
283953
|
}));
|
|
283834
283954
|
}
|
|
283835
283955
|
async function cleanupTeamDirectories(teamName) {
|
|
283836
|
-
const sanitizedName =
|
|
283956
|
+
const sanitizedName = sanitizeName2(teamName);
|
|
283837
283957
|
const teamFile = readTeamFile(teamName);
|
|
283838
283958
|
const worktreePaths = [];
|
|
283839
283959
|
if (teamFile) {
|
|
@@ -331629,7 +331749,7 @@ var init_AskUserQuestionTool = __esm(() => {
|
|
|
331629
331749
|
questionSchema = lazySchema(() => exports_external.object({
|
|
331630
331750
|
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?"'),
|
|
331631
331751
|
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".`),
|
|
331632
|
-
options: exports_external.array(questionOptionSchema()).min(2).max(8).describe(`
|
|
331752
|
+
options: exports_external.array(questionOptionSchema()).min(2).max(8).describe(`REQUIRED: 2-8 concrete choices. A question with no options is not askable here \u2014 if you cannot name at least two specific answers, the question is open-ended, so ask it in plain assistant text instead of calling this tool. Do not call this tool with a prose question and omit options. Keep options concise and distinct; there should be no 'Other' option, that will be provided automatically.`),
|
|
331633
331753
|
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.")
|
|
331634
331754
|
}));
|
|
331635
331755
|
annotationsSchema = lazySchema(() => {
|
|
@@ -336802,10 +336922,10 @@ var init_TeamCreateTool = __esm(() => {
|
|
|
336802
336922
|
};
|
|
336803
336923
|
await writeTeamFileAsync(finalTeamName, teamFile);
|
|
336804
336924
|
registerTeamForSessionCleanup(finalTeamName);
|
|
336805
|
-
const taskListId =
|
|
336925
|
+
const taskListId = sanitizeName2(finalTeamName);
|
|
336806
336926
|
await resetTaskList(taskListId);
|
|
336807
336927
|
await ensureTasksDir(taskListId);
|
|
336808
|
-
setLeaderTeamName(
|
|
336928
|
+
setLeaderTeamName(sanitizeName2(finalTeamName));
|
|
336809
336929
|
setAppState((prev) => ({
|
|
336810
336930
|
...prev,
|
|
336811
336931
|
teamContext: {
|
|
@@ -339226,7 +339346,7 @@ async function handleSpawnSeparateWindow(input, context5) {
|
|
|
339226
339346
|
const uniqueName = await generateUniqueTeammateName(name, teamName);
|
|
339227
339347
|
const sanitizedName = sanitizeAgentName(uniqueName);
|
|
339228
339348
|
const teammateId = formatAgentId(sanitizedName, teamName);
|
|
339229
|
-
const windowName = `teammate-${
|
|
339349
|
+
const windowName = `teammate-${sanitizeName2(sanitizedName)}`;
|
|
339230
339350
|
const workingDir = cwd2 || getCwd();
|
|
339231
339351
|
await ensureSession(SWARM_SESSION_NAME);
|
|
339232
339352
|
const teammateColor = assignTeammateColor(teammateId);
|
|
@@ -345855,7 +345975,7 @@ function isAnyTracingEnabled() {
|
|
|
345855
345975
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
345856
345976
|
}
|
|
345857
345977
|
function getTracer() {
|
|
345858
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.65.
|
|
345978
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.65.3");
|
|
345859
345979
|
}
|
|
345860
345980
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
345861
345981
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -346513,6 +346633,53 @@ var init_toolErrors = __esm(() => {
|
|
|
346513
346633
|
init_messages();
|
|
346514
346634
|
});
|
|
346515
346635
|
|
|
346636
|
+
// src/services/tools/taskListGate.ts
|
|
346637
|
+
function getTaskListGateConfig() {
|
|
346638
|
+
const configured = getInitialSettings()?.tasks?.requireBeforeChanges;
|
|
346639
|
+
if (!configured)
|
|
346640
|
+
return TASK_LIST_GATE_DEFAULTS;
|
|
346641
|
+
return {
|
|
346642
|
+
enabled: typeof configured.enabled === "boolean" ? configured.enabled : TASK_LIST_GATE_DEFAULTS.enabled,
|
|
346643
|
+
freeReads: typeof configured.freeReads === "number" && Number.isInteger(configured.freeReads) && configured.freeReads >= 0 ? configured.freeReads : TASK_LIST_GATE_DEFAULTS.freeReads
|
|
346644
|
+
};
|
|
346645
|
+
}
|
|
346646
|
+
function isMutatingTool2(toolName) {
|
|
346647
|
+
return MUTATING_TOOLS2.has(toolName);
|
|
346648
|
+
}
|
|
346649
|
+
function checkTaskListGate(input) {
|
|
346650
|
+
const config2 = input.config ?? getTaskListGateConfig();
|
|
346651
|
+
if (!config2.enabled)
|
|
346652
|
+
return { allowed: true };
|
|
346653
|
+
if (input.isSubagent)
|
|
346654
|
+
return { allowed: true };
|
|
346655
|
+
if (!isMutatingTool2(input.toolName))
|
|
346656
|
+
return { allowed: true };
|
|
346657
|
+
if (input.taskCount > 0)
|
|
346658
|
+
return { allowed: true };
|
|
346659
|
+
if (input.readsSoFar < config2.freeReads)
|
|
346660
|
+
return { allowed: true };
|
|
346661
|
+
return {
|
|
346662
|
+
allowed: false,
|
|
346663
|
+
reason: `No task list exists, and ${input.toolName} changes the workspace. ` + `Call TaskCreate first with the steps you intend to take, then retry ` + `this call. Reads are unrestricted, so investigate as much as you need ` + `before writing the list. ` + `Disable with tasks.requireBeforeChanges.enabled=false in settings.`
|
|
346664
|
+
};
|
|
346665
|
+
}
|
|
346666
|
+
var TASK_LIST_GATE_DEFAULTS, MUTATING_TOOLS2;
|
|
346667
|
+
var init_taskListGate = __esm(() => {
|
|
346668
|
+
init_settings2();
|
|
346669
|
+
TASK_LIST_GATE_DEFAULTS = {
|
|
346670
|
+
enabled: true,
|
|
346671
|
+
freeReads: 3
|
|
346672
|
+
};
|
|
346673
|
+
MUTATING_TOOLS2 = new Set([
|
|
346674
|
+
"Edit",
|
|
346675
|
+
"MultiEdit",
|
|
346676
|
+
"Write",
|
|
346677
|
+
"NotebookEdit",
|
|
346678
|
+
"Bash",
|
|
346679
|
+
"Shell"
|
|
346680
|
+
]);
|
|
346681
|
+
});
|
|
346682
|
+
|
|
346516
346683
|
// src/stability/types.ts
|
|
346517
346684
|
var DEFAULT_LIMITS;
|
|
346518
346685
|
var init_types12 = __esm(() => {
|
|
@@ -347254,6 +347421,14 @@ var init_toolHooks = __esm(() => {
|
|
|
347254
347421
|
});
|
|
347255
347422
|
|
|
347256
347423
|
// src/services/tools/toolExecution.ts
|
|
347424
|
+
async function countTasksForGate() {
|
|
347425
|
+
try {
|
|
347426
|
+
const { getTaskListId: getTaskListId2, listTasks: listTasks3 } = await Promise.resolve().then(() => (init_tasks(), exports_tasks));
|
|
347427
|
+
return (await listTasks3(getTaskListId2())).length;
|
|
347428
|
+
} catch {
|
|
347429
|
+
return Number.POSITIVE_INFINITY;
|
|
347430
|
+
}
|
|
347431
|
+
}
|
|
347257
347432
|
function classifyToolError(error40) {
|
|
347258
347433
|
if (error40 instanceof TelemetrySafeError_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS) {
|
|
347259
347434
|
return error40.telemetryMessage.slice(0, 200);
|
|
@@ -347518,7 +347693,7 @@ function buildSchemaNotSentHint(tool, messages, tools) {
|
|
|
347518
347693
|
return null;
|
|
347519
347694
|
return `
|
|
347520
347695
|
|
|
347521
|
-
This tool's schema was not sent to the API \u2014 it was not in the discovered-tool set derived from message history. ` + `Without the schema in your prompt, typed parameters (arrays, numbers, booleans) get emitted as strings and the client-side parser rejects them.
|
|
347696
|
+
This tool's schema was not sent to the API \u2014 it was not in the discovered-tool set derived from message history. ` + `Without the schema in your prompt, typed parameters (arrays, numbers, booleans) get emitted as strings and the client-side parser rejects them. Load the tool first: call ${TOOL_SEARCH_TOOL_NAME} with query "select:${tool.name}", then retry this call.`;
|
|
347522
347697
|
}
|
|
347523
347698
|
async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContext, canUseTool, assistantMessage, messageId, requestId, mcpServerType, mcpServerBaseUrl, onToolProgress) {
|
|
347524
347699
|
let parsedInput = tool.inputSchema.safeParse(input);
|
|
@@ -347535,6 +347710,32 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
|
|
|
347535
347710
|
}
|
|
347536
347711
|
}
|
|
347537
347712
|
}
|
|
347713
|
+
const gate = checkTaskListGate({
|
|
347714
|
+
toolName: tool.name,
|
|
347715
|
+
taskCount: await countTasksForGate(),
|
|
347716
|
+
readsSoFar: toolUseContext.messages?.length ?? 0,
|
|
347717
|
+
isSubagent: Boolean(toolUseContext.agentId)
|
|
347718
|
+
});
|
|
347719
|
+
if (!gate.allowed) {
|
|
347720
|
+
logEvent("tengu_task_list_gate_blocked", {
|
|
347721
|
+
toolName: sanitizeToolNameForAnalytics(tool.name)
|
|
347722
|
+
});
|
|
347723
|
+
return [
|
|
347724
|
+
{
|
|
347725
|
+
message: createUserMessage({
|
|
347726
|
+
content: [
|
|
347727
|
+
{
|
|
347728
|
+
type: "tool_result",
|
|
347729
|
+
content: `<tool_use_error>TaskListRequired: ${gate.reason}</tool_use_error>`,
|
|
347730
|
+
is_error: true,
|
|
347731
|
+
tool_use_id: toolUseID
|
|
347732
|
+
}
|
|
347733
|
+
]
|
|
347734
|
+
}),
|
|
347735
|
+
shouldSkipPermissionCheck: false
|
|
347736
|
+
}
|
|
347737
|
+
];
|
|
347738
|
+
}
|
|
347538
347739
|
if (!parsedInput.success) {
|
|
347539
347740
|
let errorContent = formatZodValidationError(tool.name, parsedInput.error);
|
|
347540
347741
|
const schemaHint = buildSchemaNotSentHint(tool, toolUseContext.messages, toolUseContext.options.tools);
|
|
@@ -347717,7 +347918,7 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
|
|
|
347717
347918
|
processedInput = resolved.input;
|
|
347718
347919
|
const permissionDurationMs = Date.now() - permissionStart;
|
|
347719
347920
|
if (permissionDurationMs >= SLOW_PHASE_LOG_THRESHOLD_MS && permissionMode === "auto") {
|
|
347720
|
-
logForDebugging(`Slow permission decision: ${permissionDurationMs}ms for ${tool.name}
|
|
347921
|
+
logForDebugging(`Slow permission decision: ${permissionDurationMs}ms for ${tool.name} (mode=${permissionMode}, behavior=${permissionDecision.behavior})`, { level: "info" });
|
|
347721
347922
|
}
|
|
347722
347923
|
if (permissionDecision.behavior !== "ask" && !toolUseContext.toolDecisions?.has(toolUseID)) {
|
|
347723
347924
|
const decision = permissionDecision.behavior === "allow" ? "accept" : "reject";
|
|
@@ -348225,6 +348426,7 @@ var init_toolExecution = __esm(() => {
|
|
|
348225
348426
|
init_toolErrors();
|
|
348226
348427
|
init_toolResultStorage();
|
|
348227
348428
|
init_toolSearch();
|
|
348429
|
+
init_taskListGate();
|
|
348228
348430
|
init_client5();
|
|
348229
348431
|
init_mcpStringUtils();
|
|
348230
348432
|
init_utils3();
|
|
@@ -350334,6 +350536,10 @@ async function* queryLoop(params, consumedCommandUuids) {
|
|
|
350334
350536
|
}
|
|
350335
350537
|
const pendingCacheEdits2 = undefined;
|
|
350336
350538
|
queryCheckpoint("query_microcompact_end");
|
|
350539
|
+
const providerNotice = consumePendingProviderNotice();
|
|
350540
|
+
if (providerNotice) {
|
|
350541
|
+
yield createSystemMessage(providerNotice, "warning");
|
|
350542
|
+
}
|
|
350337
350543
|
if (false) {}
|
|
350338
350544
|
const fullSystemPrompt = asSystemPrompt(appendSystemContext(systemPrompt, systemContext));
|
|
350339
350545
|
queryCheckpoint("query_autocompact_start");
|
|
@@ -351095,6 +351301,7 @@ var init_query = __esm(() => {
|
|
|
351095
351301
|
init_log2();
|
|
351096
351302
|
init_errors6();
|
|
351097
351303
|
init_debug();
|
|
351304
|
+
init_ollama();
|
|
351098
351305
|
init_messages();
|
|
351099
351306
|
init_toolUseSummaryGenerator();
|
|
351100
351307
|
init_api3();
|
|
@@ -375361,7 +375568,7 @@ function Feedback({
|
|
|
375361
375568
|
platform: env2.platform,
|
|
375362
375569
|
gitRepo: envInfo.isGit,
|
|
375363
375570
|
terminal: env2.terminal,
|
|
375364
|
-
version: "1.65.
|
|
375571
|
+
version: "1.65.3",
|
|
375365
375572
|
transcript: normalizeMessagesForAPI(messages),
|
|
375366
375573
|
errors: sanitizedErrors,
|
|
375367
375574
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -375553,7 +375760,7 @@ function Feedback({
|
|
|
375553
375760
|
", ",
|
|
375554
375761
|
env2.terminal,
|
|
375555
375762
|
", v",
|
|
375556
|
-
"1.65.
|
|
375763
|
+
"1.65.3"
|
|
375557
375764
|
]
|
|
375558
375765
|
}, undefined, true, undefined, this)
|
|
375559
375766
|
]
|
|
@@ -375659,7 +375866,7 @@ ${sanitizedDescription}
|
|
|
375659
375866
|
` + `**Environment Info**
|
|
375660
375867
|
` + `- Platform: ${env2.platform}
|
|
375661
375868
|
` + `- Terminal: ${env2.terminal}
|
|
375662
|
-
` + `- Version: ${"1.65.
|
|
375869
|
+
` + `- Version: ${"1.65.3"}
|
|
375663
375870
|
` + `- Feedback ID: ${feedbackId}
|
|
375664
375871
|
` + `
|
|
375665
375872
|
**Errors**
|
|
@@ -378769,7 +378976,7 @@ function buildPrimarySection() {
|
|
|
378769
378976
|
}, undefined, false, undefined, this);
|
|
378770
378977
|
return [{
|
|
378771
378978
|
label: "Version",
|
|
378772
|
-
value: "1.65.
|
|
378979
|
+
value: "1.65.3"
|
|
378773
378980
|
}, {
|
|
378774
378981
|
label: "Session name",
|
|
378775
378982
|
value: nameValue
|
|
@@ -382099,7 +382306,7 @@ function Config({
|
|
|
382099
382306
|
}
|
|
382100
382307
|
}, undefined, false, undefined, this)
|
|
382101
382308
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
382102
|
-
currentVersion: "1.65.
|
|
382309
|
+
currentVersion: "1.65.3",
|
|
382103
382310
|
onChoice: (choice) => {
|
|
382104
382311
|
setShowSubmenu(null);
|
|
382105
382312
|
setTabsHidden(false);
|
|
@@ -382111,7 +382318,7 @@ function Config({
|
|
|
382111
382318
|
autoUpdatesChannel: "stable"
|
|
382112
382319
|
};
|
|
382113
382320
|
if (choice === "stay") {
|
|
382114
|
-
newSettings.minimumVersion = "1.65.
|
|
382321
|
+
newSettings.minimumVersion = "1.65.3";
|
|
382115
382322
|
}
|
|
382116
382323
|
updateSettingsForSource("userSettings", newSettings);
|
|
382117
382324
|
setSettingsData((prev_27) => ({
|
|
@@ -390175,7 +390382,7 @@ function HelpV2(t0) {
|
|
|
390175
390382
|
let t6;
|
|
390176
390383
|
if ($2[31] !== tabs) {
|
|
390177
390384
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
390178
|
-
title: `UR v${"1.65.
|
|
390385
|
+
title: `UR v${"1.65.3"}`,
|
|
390179
390386
|
color: "professionalBlue",
|
|
390180
390387
|
defaultTab: "general",
|
|
390181
390388
|
children: tabs
|
|
@@ -391092,7 +391299,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
391092
391299
|
async function handleInitialize(options2) {
|
|
391093
391300
|
return {
|
|
391094
391301
|
name: "UR",
|
|
391095
|
-
version: "1.65.
|
|
391302
|
+
version: "1.65.3",
|
|
391096
391303
|
protocolVersion: "0.1.0",
|
|
391097
391304
|
workspaceRoot: options2.cwd,
|
|
391098
391305
|
capabilities: {
|
|
@@ -408200,7 +408407,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
408200
408407
|
return [];
|
|
408201
408408
|
}
|
|
408202
408409
|
}
|
|
408203
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.65.
|
|
408410
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.65.3") {
|
|
408204
408411
|
if (process.env.USER_TYPE === "ant") {
|
|
408205
408412
|
const changelog = "";
|
|
408206
408413
|
if (changelog) {
|
|
@@ -408227,7 +408434,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.65.1")
|
|
|
408227
408434
|
releaseNotes
|
|
408228
408435
|
};
|
|
408229
408436
|
}
|
|
408230
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.65.
|
|
408437
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.65.3") {
|
|
408231
408438
|
if (process.env.USER_TYPE === "ant") {
|
|
408232
408439
|
const changelog = "";
|
|
408233
408440
|
if (changelog) {
|
|
@@ -411084,7 +411291,7 @@ function getRecentActivitySync() {
|
|
|
411084
411291
|
return cachedActivity;
|
|
411085
411292
|
}
|
|
411086
411293
|
function getLogoDisplayData() {
|
|
411087
|
-
const version2 = process.env.DEMO_VERSION ?? "1.65.
|
|
411294
|
+
const version2 = process.env.DEMO_VERSION ?? "1.65.3";
|
|
411088
411295
|
const serverUrl = getDirectConnectServerUrl();
|
|
411089
411296
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
411090
411297
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -411968,7 +412175,7 @@ function LogoV2() {
|
|
|
411968
412175
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
411969
412176
|
t2 = () => {
|
|
411970
412177
|
const currentConfig2 = getGlobalConfig();
|
|
411971
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.65.
|
|
412178
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.65.3") {
|
|
411972
412179
|
return;
|
|
411973
412180
|
}
|
|
411974
412181
|
saveGlobalConfig(_temp327);
|
|
@@ -412653,12 +412860,12 @@ function LogoV2() {
|
|
|
412653
412860
|
return t41;
|
|
412654
412861
|
}
|
|
412655
412862
|
function _temp327(current) {
|
|
412656
|
-
if (current.lastReleaseNotesSeen === "1.65.
|
|
412863
|
+
if (current.lastReleaseNotesSeen === "1.65.3") {
|
|
412657
412864
|
return current;
|
|
412658
412865
|
}
|
|
412659
412866
|
return {
|
|
412660
412867
|
...current,
|
|
412661
|
-
lastReleaseNotesSeen: "1.65.
|
|
412868
|
+
lastReleaseNotesSeen: "1.65.3"
|
|
412662
412869
|
};
|
|
412663
412870
|
}
|
|
412664
412871
|
function _temp241(s_0) {
|
|
@@ -425983,8 +426190,8 @@ var init_BackgroundTasksDialog = __esm(() => {
|
|
|
425983
426190
|
});
|
|
425984
426191
|
|
|
425985
426192
|
// src/commands/tasks/tasks.tsx
|
|
425986
|
-
var
|
|
425987
|
-
__export(
|
|
426193
|
+
var exports_tasks2 = {};
|
|
426194
|
+
__export(exports_tasks2, {
|
|
425988
426195
|
call: () => call41
|
|
425989
426196
|
});
|
|
425990
426197
|
async function call41(onDone, context6) {
|
|
@@ -426007,7 +426214,7 @@ var init_tasks4 = __esm(() => {
|
|
|
426007
426214
|
name: "tasks",
|
|
426008
426215
|
aliases: ["bashes"],
|
|
426009
426216
|
description: "List and manage background tasks",
|
|
426010
|
-
load: () => Promise.resolve().then(() => (init_tasks3(),
|
|
426217
|
+
load: () => Promise.resolve().then(() => (init_tasks3(), exports_tasks2))
|
|
426011
426218
|
};
|
|
426012
426219
|
tasks_default = tasks;
|
|
426013
426220
|
});
|
|
@@ -429456,7 +429663,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
429456
429663
|
if (spec.name !== specName) {
|
|
429457
429664
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
429458
429665
|
}
|
|
429459
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.65.
|
|
429666
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.65.3" : "1.65.3");
|
|
429460
429667
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
429461
429668
|
throw new Error("invalid ur-agent package version");
|
|
429462
429669
|
}
|
|
@@ -430449,7 +430656,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
430449
430656
|
path: ".github/workflows/ur.yml",
|
|
430450
430657
|
root: "project",
|
|
430451
430658
|
content: compileAgenticCiWorkflow("default", {
|
|
430452
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.65.
|
|
430659
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.65.3" : "1.65.3"
|
|
430453
430660
|
})
|
|
430454
430661
|
},
|
|
430455
430662
|
{
|
|
@@ -430512,7 +430719,7 @@ function value(tokens, flag) {
|
|
|
430512
430719
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
430513
430720
|
}
|
|
430514
430721
|
function cliVersion() {
|
|
430515
|
-
return typeof MACRO !== "undefined" ? "1.65.
|
|
430722
|
+
return typeof MACRO !== "undefined" ? "1.65.3" : "1.65.3";
|
|
430516
430723
|
}
|
|
430517
430724
|
function workflowPath(cwd2) {
|
|
430518
430725
|
return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -436368,7 +436575,7 @@ function createAcpStdioApp(deps) {
|
|
|
436368
436575
|
}
|
|
436369
436576
|
},
|
|
436370
436577
|
authMethods: [],
|
|
436371
|
-
agentInfo: { name: "UR-Nexus", version: "1.65.
|
|
436578
|
+
agentInfo: { name: "UR-Nexus", version: "1.65.3" }
|
|
436372
436579
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
436373
436580
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
436374
436581
|
await runtime2.announce({
|
|
@@ -436465,7 +436672,7 @@ function createAcpStdioAgent(deps) {
|
|
|
436465
436672
|
}
|
|
436466
436673
|
},
|
|
436467
436674
|
authMethods: [],
|
|
436468
|
-
agentInfo: { name: "UR-Nexus", version: "1.65.
|
|
436675
|
+
agentInfo: { name: "UR-Nexus", version: "1.65.3" }
|
|
436469
436676
|
});
|
|
436470
436677
|
return;
|
|
436471
436678
|
case "authenticate":
|
|
@@ -437463,9 +437670,9 @@ function automationsDir() {
|
|
|
437463
437670
|
return join162(getCwd(), ".ur", "automations");
|
|
437464
437671
|
}
|
|
437465
437672
|
function automationPath(name) {
|
|
437466
|
-
return join162(automationsDir(), `${
|
|
437673
|
+
return join162(automationsDir(), `${sanitizeName3(name)}.json`);
|
|
437467
437674
|
}
|
|
437468
|
-
function
|
|
437675
|
+
function sanitizeName3(name) {
|
|
437469
437676
|
return name.trim().replace(/[^a-zA-Z0-9_-]/g, "-");
|
|
437470
437677
|
}
|
|
437471
437678
|
function option6(tokens, name) {
|
|
@@ -437726,7 +437933,7 @@ Expected a 5-field cron expression with a next run in the next year.`
|
|
|
437726
437933
|
}
|
|
437727
437934
|
const spec = {
|
|
437728
437935
|
version: 1,
|
|
437729
|
-
name:
|
|
437936
|
+
name: sanitizeName3(name),
|
|
437730
437937
|
schedule,
|
|
437731
437938
|
prompt,
|
|
437732
437939
|
runner: {
|
|
@@ -437749,7 +437956,7 @@ Expected a 5-field cron expression with a next run in the next year.`
|
|
|
437749
437956
|
return { type: "text", value: usage7() };
|
|
437750
437957
|
const path22 = automationPath(name);
|
|
437751
437958
|
if (!existsSync46(path22)) {
|
|
437752
|
-
return { type: "text", value: `Automation not found: ${
|
|
437959
|
+
return { type: "text", value: `Automation not found: ${sanitizeName3(name)}` };
|
|
437753
437960
|
}
|
|
437754
437961
|
const raw = readFileSync47(path22, "utf-8");
|
|
437755
437962
|
const parsed = safeParseJSON(raw, false);
|
|
@@ -437767,7 +437974,7 @@ Expected a 5-field cron expression with a next run in the next year.`
|
|
|
437767
437974
|
return { type: "text", value: usage7() };
|
|
437768
437975
|
const path22 = automationPath(name);
|
|
437769
437976
|
if (!existsSync46(path22)) {
|
|
437770
|
-
return { type: "text", value: `Automation not found: ${
|
|
437977
|
+
return { type: "text", value: `Automation not found: ${sanitizeName3(name)}` };
|
|
437771
437978
|
}
|
|
437772
437979
|
const parsed = safeParseJSON(readFileSync47(path22, "utf-8"), false);
|
|
437773
437980
|
if (!parsed)
|
|
@@ -437784,9 +437991,9 @@ Expected a 5-field cron expression with a next run in the next year.`
|
|
|
437784
437991
|
const nowMs = toMs(option6(tokens, "--now")) ?? Date.now();
|
|
437785
437992
|
const dryRun = hasFlag2(tokens, "--dry-run");
|
|
437786
437993
|
const dueOnly = command5 === "run-due";
|
|
437787
|
-
const specs = command5 === "run" ? listSpecs().filter((spec) => spec.name ===
|
|
437994
|
+
const specs = command5 === "run" ? listSpecs().filter((spec) => spec.name === sanitizeName3(positional[1] ?? "")) : listSpecs();
|
|
437788
437995
|
if (command5 === "run" && specs.length === 0) {
|
|
437789
|
-
return { type: "text", value: `Automation not found: ${
|
|
437996
|
+
return { type: "text", value: `Automation not found: ${sanitizeName3(positional[1] ?? "")}` };
|
|
437790
437997
|
}
|
|
437791
437998
|
const results = await Promise.all(specs.map((spec) => runSpec(spec, { dryRun, dueOnly, nowMs })));
|
|
437792
437999
|
const runnable = results.filter((result) => !result.skipped);
|
|
@@ -437802,10 +438009,10 @@ Expected a 5-field cron expression with a next run in the next year.`
|
|
|
437802
438009
|
return { type: "text", value: usage7() };
|
|
437803
438010
|
const path22 = automationPath(name);
|
|
437804
438011
|
if (!existsSync46(path22)) {
|
|
437805
|
-
return { type: "text", value: `Automation not found: ${
|
|
438012
|
+
return { type: "text", value: `Automation not found: ${sanitizeName3(name)}` };
|
|
437806
438013
|
}
|
|
437807
438014
|
unlinkSync9(path22);
|
|
437808
|
-
return { type: "text", value: `Deleted automation ${
|
|
438015
|
+
return { type: "text", value: `Deleted automation ${sanitizeName3(name)}` };
|
|
437809
438016
|
}
|
|
437810
438017
|
return { type: "text", value: usage7() };
|
|
437811
438018
|
};
|
|
@@ -459129,7 +459336,7 @@ var init_code_index2 = __esm(() => {
|
|
|
459129
459336
|
|
|
459130
459337
|
// node_modules/typescript/lib/typescript.js
|
|
459131
459338
|
var require_typescript2 = __commonJS((exports, module) => {
|
|
459132
|
-
var __dirname = "/
|
|
459339
|
+
var __dirname = "/Users/maith/Desktop/ur3-dev/UR-1.65.0/node_modules/typescript/lib", __filename = "/Users/maith/Desktop/ur3-dev/UR-1.65.0/node_modules/typescript/lib/typescript.js";
|
|
459133
459340
|
/*! *****************************************************************************
|
|
459134
459341
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
459135
459342
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
@@ -644842,7 +645049,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
644842
645049
|
smapsRollup,
|
|
644843
645050
|
platform: process.platform,
|
|
644844
645051
|
nodeVersion: process.version,
|
|
644845
|
-
ccVersion: "1.65.
|
|
645052
|
+
ccVersion: "1.65.3"
|
|
644846
645053
|
};
|
|
644847
645054
|
}
|
|
644848
645055
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -645422,7 +645629,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
645422
645629
|
var call153 = async () => {
|
|
645423
645630
|
return {
|
|
645424
645631
|
type: "text",
|
|
645425
|
-
value: "1.65.
|
|
645632
|
+
value: "1.65.3"
|
|
645426
645633
|
};
|
|
645427
645634
|
}, version2, version_default;
|
|
645428
645635
|
var init_version = __esm(() => {
|
|
@@ -656493,7 +656700,7 @@ function generateHtmlReport(data, insights) {
|
|
|
656493
656700
|
</html>`;
|
|
656494
656701
|
}
|
|
656495
656702
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
656496
|
-
const version3 = typeof MACRO !== "undefined" ? "1.65.
|
|
656703
|
+
const version3 = typeof MACRO !== "undefined" ? "1.65.3" : "unknown";
|
|
656497
656704
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
656498
656705
|
const facets_summary = {
|
|
656499
656706
|
total: facets.size,
|
|
@@ -660804,7 +661011,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
660804
661011
|
init_settings2();
|
|
660805
661012
|
init_slowOperations();
|
|
660806
661013
|
init_uuid();
|
|
660807
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.65.
|
|
661014
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.65.3" : "unknown";
|
|
660808
661015
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
660809
661016
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
660810
661017
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -662019,7 +662226,7 @@ var init_filesystem = __esm(() => {
|
|
|
662019
662226
|
});
|
|
662020
662227
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
662021
662228
|
const nonce = randomBytes20(16).toString("hex");
|
|
662022
|
-
return join232(getURTempDir(), "bundled-skills", "1.65.
|
|
662229
|
+
return join232(getURTempDir(), "bundled-skills", "1.65.3", nonce);
|
|
662023
662230
|
});
|
|
662024
662231
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
662025
662232
|
});
|
|
@@ -668314,7 +668521,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
668314
668521
|
}
|
|
668315
668522
|
function computeFingerprintFromMessages(messages) {
|
|
668316
668523
|
const firstMessageText = extractFirstMessageText(messages);
|
|
668317
|
-
return computeFingerprint(firstMessageText, "1.65.
|
|
668524
|
+
return computeFingerprint(firstMessageText, "1.65.3");
|
|
668318
668525
|
}
|
|
668319
668526
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
668320
668527
|
var init_fingerprint = () => {};
|
|
@@ -670210,7 +670417,7 @@ async function sideQuery(opts) {
|
|
|
670210
670417
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
670211
670418
|
}
|
|
670212
670419
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
670213
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.65.
|
|
670420
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.65.3");
|
|
670214
670421
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
670215
670422
|
const systemBlocks = [
|
|
670216
670423
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -674981,7 +675188,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
674981
675188
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
674982
675189
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
674983
675190
|
betas: getSdkBetas(),
|
|
674984
|
-
ur_version: "1.65.
|
|
675191
|
+
ur_version: "1.65.3",
|
|
674985
675192
|
output_style: outputStyle2,
|
|
674986
675193
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
674987
675194
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -688841,7 +689048,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
688841
689048
|
function getSemverPart(version3) {
|
|
688842
689049
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
688843
689050
|
}
|
|
688844
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.65.
|
|
689051
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.65.3") {
|
|
688845
689052
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
|
|
688846
689053
|
if (!updatedVersion) {
|
|
688847
689054
|
return null;
|
|
@@ -688890,7 +689097,7 @@ function AutoUpdater({
|
|
|
688890
689097
|
return;
|
|
688891
689098
|
}
|
|
688892
689099
|
if (false) {}
|
|
688893
|
-
const currentVersion = "1.65.
|
|
689100
|
+
const currentVersion = "1.65.3";
|
|
688894
689101
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
688895
689102
|
let latestVersion = await getLatestVersion(channel);
|
|
688896
689103
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -689119,12 +689326,12 @@ function NativeAutoUpdater({
|
|
|
689119
689326
|
logEvent("tengu_native_auto_updater_start", {});
|
|
689120
689327
|
try {
|
|
689121
689328
|
const maxVersion = await getMaxVersion();
|
|
689122
|
-
if (maxVersion && gt("1.65.
|
|
689329
|
+
if (maxVersion && gt("1.65.3", maxVersion)) {
|
|
689123
689330
|
const msg = await getMaxVersionMessage();
|
|
689124
689331
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
689125
689332
|
}
|
|
689126
689333
|
const result = await installLatest(channel);
|
|
689127
|
-
const currentVersion = "1.65.
|
|
689334
|
+
const currentVersion = "1.65.3";
|
|
689128
689335
|
const latencyMs = Date.now() - startTime;
|
|
689129
689336
|
if (result.lockFailed) {
|
|
689130
689337
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -689261,17 +689468,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
689261
689468
|
const maxVersion = await getMaxVersion();
|
|
689262
689469
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
689263
689470
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
689264
|
-
if (gte("1.65.
|
|
689265
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.65.
|
|
689471
|
+
if (gte("1.65.3", maxVersion)) {
|
|
689472
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.65.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
689266
689473
|
setUpdateAvailable(false);
|
|
689267
689474
|
return;
|
|
689268
689475
|
}
|
|
689269
689476
|
latest = maxVersion;
|
|
689270
689477
|
}
|
|
689271
|
-
const hasUpdate = latest && !gte("1.65.
|
|
689478
|
+
const hasUpdate = latest && !gte("1.65.3", latest) && !shouldSkipVersion(latest);
|
|
689272
689479
|
setUpdateAvailable(!!hasUpdate);
|
|
689273
689480
|
if (hasUpdate) {
|
|
689274
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.65.
|
|
689481
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.65.3"} -> ${latest}`);
|
|
689275
689482
|
}
|
|
689276
689483
|
};
|
|
689277
689484
|
$2[0] = t1;
|
|
@@ -689305,7 +689512,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
689305
689512
|
wrap: "truncate",
|
|
689306
689513
|
children: [
|
|
689307
689514
|
"currentVersion: ",
|
|
689308
|
-
"1.65.
|
|
689515
|
+
"1.65.3"
|
|
689309
689516
|
]
|
|
689310
689517
|
}, undefined, true, undefined, this);
|
|
689311
689518
|
$2[3] = verbose;
|
|
@@ -700002,7 +700209,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
700002
700209
|
project_dir: getOriginalCwd(),
|
|
700003
700210
|
added_dirs: addedDirs
|
|
700004
700211
|
},
|
|
700005
|
-
version: "1.65.
|
|
700212
|
+
version: "1.65.3",
|
|
700006
700213
|
output_style: {
|
|
700007
700214
|
name: outputStyleName
|
|
700008
700215
|
},
|
|
@@ -700085,7 +700292,7 @@ function StatusLineInner({
|
|
|
700085
700292
|
const taskValues = Object.values(tasks2);
|
|
700086
700293
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
700087
700294
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
700088
|
-
version: "1.65.
|
|
700295
|
+
version: "1.65.3",
|
|
700089
700296
|
providerLabel: providerRuntime.providerLabel,
|
|
700090
700297
|
authMode: providerRuntime.authLabel,
|
|
700091
700298
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -712228,7 +712435,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
712228
712435
|
} catch {}
|
|
712229
712436
|
const data = {
|
|
712230
712437
|
trigger: trigger2,
|
|
712231
|
-
version: "1.65.
|
|
712438
|
+
version: "1.65.3",
|
|
712232
712439
|
platform: process.platform,
|
|
712233
712440
|
transcript,
|
|
712234
712441
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -714472,16 +714679,101 @@ var init_tipRegistry = __esm(() => {
|
|
|
714472
714679
|
},
|
|
714473
714680
|
{
|
|
714474
714681
|
id: "web-app",
|
|
714475
|
-
content: async () => "
|
|
714682
|
+
content: async () => '/cloud run "<task>" to run a task in an isolated worktree while you keep coding',
|
|
714476
714683
|
cooldownSessions: 15,
|
|
714477
714684
|
isRelevant: async () => true
|
|
714478
714685
|
},
|
|
714479
714686
|
{
|
|
714480
|
-
id: "
|
|
714481
|
-
content: async () => "
|
|
714687
|
+
id: "model-doctor-capabilities",
|
|
714688
|
+
content: async () => "ur model-doctor shows which local models can actually use tools and vision \u2014 a model without tools will describe work instead of doing it",
|
|
714689
|
+
cooldownSessions: 12,
|
|
714690
|
+
isRelevant: async () => true
|
|
714691
|
+
},
|
|
714692
|
+
{
|
|
714693
|
+
id: "selftest-drills",
|
|
714694
|
+
content: async () => "ur selftest run checks the shipped binary end to end after an upgrade, and prints the checks that need a live model",
|
|
714482
714695
|
cooldownSessions: 15,
|
|
714483
714696
|
isRelevant: async () => true
|
|
714484
714697
|
},
|
|
714698
|
+
{
|
|
714699
|
+
id: "sources-provenance",
|
|
714700
|
+
content: async () => '/sources lists every page and MCP result that entered this session \xB7 /sources --check "<claim>" says whether it came from one',
|
|
714701
|
+
cooldownSessions: 12,
|
|
714702
|
+
isRelevant: async () => true
|
|
714703
|
+
},
|
|
714704
|
+
{
|
|
714705
|
+
id: "agent-inspect-costs",
|
|
714706
|
+
content: async () => "ur agent-inspect --costs breaks a fan-out down per agent, labelled with what each one was doing",
|
|
714707
|
+
cooldownSessions: 15,
|
|
714708
|
+
isRelevant: async () => true
|
|
714709
|
+
},
|
|
714710
|
+
{
|
|
714711
|
+
id: "memory-integrity",
|
|
714712
|
+
content: async () => "ur memory-integrity record then verify detects memory files edited, deleted, or dropped in by something other than UR",
|
|
714713
|
+
cooldownSessions: 20,
|
|
714714
|
+
isRelevant: async () => true
|
|
714715
|
+
},
|
|
714716
|
+
{
|
|
714717
|
+
id: "grade-trajectory",
|
|
714718
|
+
content: async () => "ur grade-trajectory --file <transcript.jsonl> --min-score 70 grades how a run worked, not just what it concluded, and exits non-zero to gate CI",
|
|
714719
|
+
cooldownSessions: 20,
|
|
714720
|
+
isRelevant: async () => true
|
|
714721
|
+
},
|
|
714722
|
+
{
|
|
714723
|
+
id: "ci-loop-heal",
|
|
714724
|
+
content: async () => 'ur ci-loop --command "bun test" fixes failures and reruns until green',
|
|
714725
|
+
cooldownSessions: 12,
|
|
714726
|
+
isRelevant: async () => true
|
|
714727
|
+
},
|
|
714728
|
+
...[
|
|
714729
|
+
["spec-driven", "/spec init <name> \u2014 requirements \u2192 design \u2192 tasks, run with proof gates"],
|
|
714730
|
+
["repo-edit", "/repo-edit rename <sym> --to <new> \u2014 compiler-accurate rename with rollback"],
|
|
714731
|
+
["code-index", '/code-index search "<idea>" \u2014 semantic search over your code, local embeddings'],
|
|
714732
|
+
["knowledge", "/knowledge add <file> then /knowledge search \u2014 curated notes with provenance"],
|
|
714733
|
+
["context-pack", "/context-pack \u2014 scan architecture, record decisions and constraints under .ur/"],
|
|
714734
|
+
["semantic-memory", '/semantic-memory search "<topic>" \u2014 search past memory by meaning'],
|
|
714735
|
+
["remember", "/remember <fact> \u2014 store a durable preference \xB7 /forget to remove it"],
|
|
714736
|
+
["wiki", "/wiki generate \u2014 living repo wiki plus a prompt-injected repo map"],
|
|
714737
|
+
["crew", "/crew create <name> --workers 3 \u2014 lead splits a goal, workers claim tasks"],
|
|
714738
|
+
["arena", '/arena "<task>" --agents 3 \u2014 N attempts in isolated worktrees, judged'],
|
|
714739
|
+
["pattern", '/pattern run debate "<question>" \u2014 PEER, debate, handoff and parallel patterns'],
|
|
714740
|
+
["goal", '/goal add <name> --objective "<x>" \u2014 objectives that persist across sessions'],
|
|
714741
|
+
["bg", '/bg run "<task>" \u2014 detached local agent you can steer, log and kill'],
|
|
714742
|
+
["worktree", "/task start <name> --worktree \u2014 isolated branch per task, PR handoff"],
|
|
714743
|
+
["eval", "/eval run <suite> --repeat 3 \u2014 replayable graded cases with CI gates"],
|
|
714744
|
+
["test-first", "/test-first run \u2014 detect the stack, then compile/test/lint loops"],
|
|
714745
|
+
["guardrails", '/guardrails check "<text>" \u2014 regex, PII and LLM rules with tripwires'],
|
|
714746
|
+
["audit", "/audit export --format csv \u2014 hash-chained trail with tamper verification"],
|
|
714747
|
+
["security-suite", "/security scan \u2014 secrets, threat model, dependency vulnerabilities"],
|
|
714748
|
+
["sandbox", '/sandbox eval "<command>" \u2014 see what the OS sandbox would allow'],
|
|
714749
|
+
["permission-profile", "/permission-profile use <name> \u2014 switch a named permission set"],
|
|
714750
|
+
["escalate", '/escalate run "<task>" \u2014 fast model, escalating hard steps to an oracle'],
|
|
714751
|
+
["model-route", '/model-route "<task>" \u2014 pick the model that fits the work'],
|
|
714752
|
+
["advisor", "/advisor <model> \u2014 a second model critiques the main one"],
|
|
714753
|
+
["rewind", "/rewind \u2014 restore code and conversation to an earlier checkpoint"],
|
|
714754
|
+
["undo", "/undo \u2014 revert the last file edit, including a file it created"],
|
|
714755
|
+
["diff", "/diff \u2014 uncommitted changes and per-turn diffs"],
|
|
714756
|
+
["trace", "/trace \u2014 what the last turns actually called, with results"],
|
|
714757
|
+
["research", "/research, /paper, /cite, /graph \u2014 notes, papers and a claim graph"],
|
|
714758
|
+
["multimodal", "/image, /video, /youtube, /pdf \u2014 inspect media and documents"],
|
|
714759
|
+
["browser", '/browser "<url> <task>" \u2014 drive a real browser \xB7 /browser-qa to replay'],
|
|
714760
|
+
["mcp", "/mcp \u2014 connect MCP servers \xB7 /plugin for plugins and marketplaces"],
|
|
714761
|
+
["skills", "/skill run <name> \xB7 /create-skill <name> \u2014 reusable workflows"],
|
|
714762
|
+
["toolsmith", "/toolsmith <name> python \u2014 scaffold a local helper tool UR can run"],
|
|
714763
|
+
["workflow", "/workflow run <name> \u2014 declarative steps with dependencies"],
|
|
714764
|
+
["automation", '/automation create <name> --schedule "0 3 * * *" \u2014 project-local cron'],
|
|
714765
|
+
["devcontainer", "/devcontainer exec -- <cmd> \u2014 run in a reproducible container"],
|
|
714766
|
+
["ur-doctor", "/ur-doctor \u2014 full health check: tools, Ollama, .ur, MCP, Playwright"],
|
|
714767
|
+
["dna", "/dna \u2014 detect language, package manager, build, test and lint"],
|
|
714768
|
+
["statusline", "/statusline \u2014 put model, branch and context in your prompt"],
|
|
714769
|
+
["speak", "/speak <text> \u2014 read a line aloud with the system voice"],
|
|
714770
|
+
["computer", "/computer screenshot \u2014 desktop control; changes need --yes"]
|
|
714771
|
+
].map(([id, text]) => ({
|
|
714772
|
+
id: `cmd-${id}`,
|
|
714773
|
+
content: async () => text,
|
|
714774
|
+
cooldownSessions: 25,
|
|
714775
|
+
isRelevant: async () => true
|
|
714776
|
+
})),
|
|
714485
714777
|
{
|
|
714486
714778
|
id: "modelOplan-mode-reminder",
|
|
714487
714779
|
content: async () => `Your default model setting is plan mode. Press ${getShortcutDisplay("chat:cycleMode", "Chat", "shift+tab")} twice to activate Plan Mode.`,
|
|
@@ -724508,7 +724800,7 @@ function WelcomeV2() {
|
|
|
724508
724800
|
dimColor: true,
|
|
724509
724801
|
children: [
|
|
724510
724802
|
"v",
|
|
724511
|
-
"1.65.
|
|
724803
|
+
"1.65.3"
|
|
724512
724804
|
]
|
|
724513
724805
|
}, undefined, true, undefined, this)
|
|
724514
724806
|
]
|
|
@@ -725768,7 +726060,7 @@ function completeOnboarding() {
|
|
|
725768
726060
|
saveGlobalConfig((current) => ({
|
|
725769
726061
|
...current,
|
|
725770
726062
|
hasCompletedOnboarding: true,
|
|
725771
|
-
lastOnboardingVersion: "1.65.
|
|
726063
|
+
lastOnboardingVersion: "1.65.3"
|
|
725772
726064
|
}));
|
|
725773
726065
|
}
|
|
725774
726066
|
function showDialog(root2, renderer) {
|
|
@@ -730812,7 +731104,7 @@ function appendToLog(path24, message) {
|
|
|
730812
731104
|
cwd: getFsImplementation().cwd(),
|
|
730813
731105
|
userType: process.env.USER_TYPE,
|
|
730814
731106
|
sessionId: getSessionId(),
|
|
730815
|
-
version: "1.65.
|
|
731107
|
+
version: "1.65.3"
|
|
730816
731108
|
};
|
|
730817
731109
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
730818
731110
|
}
|
|
@@ -734971,8 +735263,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
734971
735263
|
}
|
|
734972
735264
|
async function checkEnvLessBridgeMinVersion() {
|
|
734973
735265
|
const cfg = await getEnvLessBridgeConfig();
|
|
734974
|
-
if (cfg.min_version && lt("1.65.
|
|
734975
|
-
return `Your version of UR (${"1.65.
|
|
735266
|
+
if (cfg.min_version && lt("1.65.3", cfg.min_version)) {
|
|
735267
|
+
return `Your version of UR (${"1.65.3"}) is too old for Remote Control.
|
|
734976
735268
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
734977
735269
|
}
|
|
734978
735270
|
return null;
|
|
@@ -735446,7 +735738,7 @@ async function initBridgeCore(params) {
|
|
|
735446
735738
|
const rawApi = createBridgeApiClient({
|
|
735447
735739
|
baseUrl,
|
|
735448
735740
|
getAccessToken,
|
|
735449
|
-
runnerVersion: "1.65.
|
|
735741
|
+
runnerVersion: "1.65.3",
|
|
735450
735742
|
onDebug: logForDebugging,
|
|
735451
735743
|
onAuth401,
|
|
735452
735744
|
getTrustedDeviceToken
|
|
@@ -744919,7 +745211,7 @@ function getAgUiCapabilities() {
|
|
|
744919
745211
|
name: "UR-Nexus",
|
|
744920
745212
|
type: "ur-nexus",
|
|
744921
745213
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
744922
|
-
version: "1.65.
|
|
745214
|
+
version: "1.65.3",
|
|
744923
745215
|
provider: "UR",
|
|
744924
745216
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
744925
745217
|
},
|
|
@@ -746059,7 +746351,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
746059
746351
|
};
|
|
746060
746352
|
const server2 = new Server({
|
|
746061
746353
|
name: "ur-nexus",
|
|
746062
|
-
version: "1.65.
|
|
746354
|
+
version: "1.65.3"
|
|
746063
746355
|
}, {
|
|
746064
746356
|
capabilities: {
|
|
746065
746357
|
tools: {}
|
|
@@ -747217,7 +747509,7 @@ function thrownResponse(error40) {
|
|
|
747217
747509
|
}
|
|
747218
747510
|
async function createUrMcp2026Runtime(options4) {
|
|
747219
747511
|
const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
|
|
747220
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.65.
|
|
747512
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.65.3" }, { capabilities: {} });
|
|
747221
747513
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
747222
747514
|
try {
|
|
747223
747515
|
await server2.connect(serverTransport);
|
|
@@ -747228,7 +747520,7 @@ async function createUrMcp2026Runtime(options4) {
|
|
|
747228
747520
|
}
|
|
747229
747521
|
const runtime2 = new Mcp2026Runtime({
|
|
747230
747522
|
cwd: options4.cwd,
|
|
747231
|
-
version: "1.65.
|
|
747523
|
+
version: "1.65.3",
|
|
747232
747524
|
backend: {
|
|
747233
747525
|
listTools: async () => {
|
|
747234
747526
|
const listed = await client2.listTools();
|
|
@@ -749361,7 +749653,7 @@ async function update() {
|
|
|
749361
749653
|
logEvent("tengu_update_check", {});
|
|
749362
749654
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
749363
749655
|
const result = await checkUpgradeStatus({
|
|
749364
|
-
currentVersion: "1.65.
|
|
749656
|
+
currentVersion: "1.65.3",
|
|
749365
749657
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
749366
749658
|
installationType: diagnostic2.installationType,
|
|
749367
749659
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -750677,7 +750969,7 @@ ${customInstructions}` : customInstructions;
|
|
|
750677
750969
|
}
|
|
750678
750970
|
}
|
|
750679
750971
|
logForDiagnosticsNoPII("info", "started", {
|
|
750680
|
-
version: "1.65.
|
|
750972
|
+
version: "1.65.3",
|
|
750681
750973
|
is_native_binary: isInBundledMode()
|
|
750682
750974
|
});
|
|
750683
750975
|
registerCleanup(async () => {
|
|
@@ -751463,7 +751755,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
751463
751755
|
pendingHookMessages
|
|
751464
751756
|
}, renderAndRun);
|
|
751465
751757
|
}
|
|
751466
|
-
}).version("1.65.
|
|
751758
|
+
}).version("1.65.3 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
751467
751759
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
751468
751760
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
751469
751761
|
if (canUserConfigureAdvisor()) {
|
|
@@ -752515,7 +752807,7 @@ if (false) {}
|
|
|
752515
752807
|
async function main2() {
|
|
752516
752808
|
const args = process.argv.slice(2);
|
|
752517
752809
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
752518
|
-
console.log(`${"1.65.
|
|
752810
|
+
console.log(`${"1.65.3"} (UR-Nexus)`);
|
|
752519
752811
|
return;
|
|
752520
752812
|
}
|
|
752521
752813
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|