ur-agent 1.76.6 → 1.76.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,30 +1,8 @@
1
1
  # Changelog
2
2
 
3
- ## 1.76.6
4
-
5
- - Fixed malformed `Write` tool input handling so missing required `content` now stays
6
- as plain text during normalization and surfaces clear validation when repair is
7
- impossible.
8
- - Hardened `AskUserQuestion` transport and execution normalization to reject malformed
9
- question/option payloads before schema enforcement, reducing repeated
10
- `InputValidationError` loops for missing `question`/`options`.
11
- - Restored `Grep` schema compatibility checks and ensured provider schema generation
12
- keeps unsupported type regressions from reaching the provider.
13
- - Fixed task dependency validation for missing task IDs and cyclic/self-edge
14
- requests so callers receive actionable diagnostics instead of opaque task graph
15
- errors.
16
-
17
- ## 1.76.5
18
-
19
- - Hardened Kimi tool-call parsing for `Write` and `AskUserQuestion` so malformed
20
- payloads fail normalisation and remain plain text instead of throwing input
21
- validation at render time; valid payloads still parse correctly.
22
- - Fixed `AskUserQuestion` question-schema validation to reject one-question/open-ended
23
- malformed shapes with distinct-label enforcement before tool execution, preventing
24
- `InputValidationError` loops for missing `question`/`options`.
25
- - Fixed Grep tool-schema regression coverage and restored the task dependency
26
- validation path to ignore self-edges before reporting missing-task errors.
27
- - Version bump and release metadata were synchronized after parser fixes.
3
+ ## 1.76.7
4
+
5
+ - Reverted to the 1.76.4 behavior and removed the intermediate version surface transitions.
28
6
 
29
7
  ## 1.76.4
30
8
 
package/dist/cli.js CHANGED
@@ -87761,15 +87761,6 @@ function normalizeQuestionInput(value, index2) {
87761
87761
  };
87762
87762
  }
87763
87763
  function normalizeAskUserQuestionInput(value) {
87764
- if (Array.isArray(value)) {
87765
- const normalized = value.map((entry, index2) => normalizeQuestionInput(entry, index2)).filter((entry) => entry !== null && typeof entry === "object");
87766
- if (normalized.length > 0) {
87767
- return {
87768
- questions: dedupeQuestions(normalized)
87769
- };
87770
- }
87771
- return null;
87772
- }
87773
87764
  const input = objectValue(value);
87774
87765
  if (!input)
87775
87766
  return value;
@@ -88200,9 +88191,6 @@ function normalizeKimiAskUserQuestionInput(input) {
88200
88191
  if (!Array.isArray(questions) || questions.length === 0) {
88201
88192
  return null;
88202
88193
  }
88203
- if (describeQuestionPayloadProblems(normalized).length > 0) {
88204
- return null;
88205
- }
88206
88194
  return {
88207
88195
  ...normalized,
88208
88196
  questions: questions.slice(0, 4)
@@ -88210,10 +88198,10 @@ function normalizeKimiAskUserQuestionInput(input) {
88210
88198
  }
88211
88199
  function normalizeInlineToolInput(name, input) {
88212
88200
  if (name === "Write") {
88213
- return normalizeKimiWriteInput(input);
88201
+ return normalizeKimiWriteInput(input) ?? input;
88214
88202
  }
88215
88203
  if (name === "AskUserQuestion") {
88216
- return normalizeKimiAskUserQuestionInput(input);
88204
+ return normalizeKimiAskUserQuestionInput(input) ?? input;
88217
88205
  }
88218
88206
  return input;
88219
88207
  }
@@ -88231,25 +88219,19 @@ function parseKimiToolCalls(text) {
88231
88219
  throw new KimiToolCallParseError("Kimi tool call markup is incomplete or malformed");
88232
88220
  }
88233
88221
  CALL_RE.lastIndex = 0;
88234
- let matchedCalls = 0;
88235
88222
  let cleaned = text.replace(CALL_RE, (_full, rawName, rawArgs) => {
88236
88223
  const name = (rawName ?? "").trim().replace(/^functions\./, "").replace(/[:.]\d+\s*$/, "").trim();
88237
88224
  if (!name) {
88238
88225
  throw new KimiToolCallParseError("Kimi tool call is missing a function name");
88239
88226
  }
88240
- matchedCalls += 1;
88241
- const normalizedInput = normalizeInlineToolInput(name, parseArgs(rawArgs ?? ""));
88242
- if (normalizedInput === null) {
88243
- return rawArgs ?? "";
88244
- }
88245
88227
  toolCalls.push({
88246
88228
  id: parsedToolCallId("kimi", i2++),
88247
88229
  name,
88248
- input: normalizedInput
88230
+ input: normalizeInlineToolInput(name, parseArgs(rawArgs ?? ""))
88249
88231
  });
88250
88232
  return "";
88251
88233
  });
88252
- if (matchedCalls !== callBegins) {
88234
+ if (toolCalls.length !== callBegins) {
88253
88235
  throw new KimiToolCallParseError("Kimi tool call markup is incomplete or malformed");
88254
88236
  }
88255
88237
  cleaned = cleaned.replace(SECTION_RE, "").replace(STRAY_RE, "").replace(/\n{3,}/g, `
@@ -88517,8 +88499,6 @@ function maybeBareJsonToolCall(text, availableToolNames, index2) {
88517
88499
  return null;
88518
88500
  }
88519
88501
  const normalizedInput = name === "Write" || name === "AskUserQuestion" ? normalizeInlineToolInput(name, input.input) : input.input;
88520
- if (normalizedInput === null)
88521
- return null;
88522
88502
  return {
88523
88503
  id: parsedToolCallId("bare", index2),
88524
88504
  name,
@@ -88534,13 +88514,11 @@ function maybeBareJsonToolCall(text, availableToolNames, index2) {
88534
88514
  }
88535
88515
  if (hasTool(availableToolNames, "Write") && normalizeKimiWriteInput(input) !== null) {
88536
88516
  const normalized = normalizeKimiWriteInput(input);
88537
- if (normalized !== null) {
88538
- return {
88539
- id: parsedToolCallId("bare", index2),
88540
- name: "Write",
88541
- input: normalized
88542
- };
88543
- }
88517
+ return {
88518
+ id: parsedToolCallId("bare", index2),
88519
+ name: "Write",
88520
+ input: normalized ?? input
88521
+ };
88544
88522
  }
88545
88523
  if (hasTool(availableToolNames, "Edit") && hasRequiredKeys(input, ["file_path", "old_string", "new_string"], ["replace_all"]) && typeof input.file_path === "string" && typeof input.old_string === "string" && typeof input.new_string === "string" && (input.replace_all === undefined || typeof input.replace_all === "boolean")) {
88546
88524
  return {
@@ -107487,7 +107465,7 @@ var init_auth = __esm(() => {
107487
107465
 
107488
107466
  // src/utils/userAgent.ts
107489
107467
  function getURCodeUserAgent() {
107490
- return `ur/${"1.76.6"}`;
107468
+ return `ur/${"1.76.7"}`;
107491
107469
  }
107492
107470
 
107493
107471
  // src/utils/workloadContext.ts
@@ -107509,7 +107487,7 @@ function getUserAgent() {
107509
107487
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
107510
107488
  const workload = getWorkload();
107511
107489
  const workloadSuffix = workload ? `, workload/${workload}` : "";
107512
- return `ur-cli/${"1.76.6"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
107490
+ return `ur-cli/${"1.76.7"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
107513
107491
  }
107514
107492
  function getMCPUserAgent() {
107515
107493
  const parts = [];
@@ -107523,7 +107501,7 @@ function getMCPUserAgent() {
107523
107501
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
107524
107502
  }
107525
107503
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
107526
- return `ur/${"1.76.6"}${suffix}`;
107504
+ return `ur/${"1.76.7"}${suffix}`;
107527
107505
  }
107528
107506
  function getWebFetchUserAgent() {
107529
107507
  return `UR-User (${getURCodeUserAgent()})`;
@@ -107661,7 +107639,7 @@ var init_user = __esm(() => {
107661
107639
  deviceId,
107662
107640
  sessionId: getSessionId(),
107663
107641
  email: getEmail(),
107664
- appVersion: "1.76.6",
107642
+ appVersion: "1.76.7",
107665
107643
  platform: getHostPlatformForAnalytics(),
107666
107644
  organizationUuid,
107667
107645
  accountUuid,
@@ -115548,7 +115526,7 @@ var init_metadata = __esm(() => {
115548
115526
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
115549
115527
  WHITESPACE_REGEX = /\s+/;
115550
115528
  getVersionBase = memoize_default(() => {
115551
- const match = "1.76.6".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
115529
+ const match = "1.76.7".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
115552
115530
  return match ? match[0] : undefined;
115553
115531
  });
115554
115532
  buildEnvContext = memoize_default(async () => {
@@ -115588,7 +115566,7 @@ var init_metadata = __esm(() => {
115588
115566
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
115589
115567
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
115590
115568
  isURAiAuth: isURAISubscriber(),
115591
- version: "1.76.6",
115569
+ version: "1.76.7",
115592
115570
  versionBase: getVersionBase(),
115593
115571
  buildTime: "",
115594
115572
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -116258,7 +116236,7 @@ function initialize1PEventLogging() {
116258
116236
  const platform2 = getPlatform();
116259
116237
  const attributes = {
116260
116238
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
116261
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.76.6"
116239
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.76.7"
116262
116240
  };
116263
116241
  if (platform2 === "wsl") {
116264
116242
  const wslVersion = getWslVersion();
@@ -116286,7 +116264,7 @@ function initialize1PEventLogging() {
116286
116264
  })
116287
116265
  ]
116288
116266
  });
116289
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.76.6");
116267
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.76.7");
116290
116268
  }
116291
116269
  async function reinitialize1PEventLoggingIfConfigChanged() {
116292
116270
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -126067,7 +126045,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
126067
126045
  function formatA2AAgentCard(options = {}, pretty = true) {
126068
126046
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
126069
126047
  }
126070
- var urVersion = "1.76.6", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
126048
+ var urVersion = "1.76.7", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
126071
126049
  var init_trends = __esm(() => {
126072
126050
  init_a2aCardSignature();
126073
126051
  coverage = [
@@ -128870,7 +128848,7 @@ function getAttributionHeader(fingerprint) {
128870
128848
  if (!isAttributionHeaderEnabled()) {
128871
128849
  return "";
128872
128850
  }
128873
- const version2 = `${"1.76.6"}.${fingerprint}`;
128851
+ const version2 = `${"1.76.7"}.${fingerprint}`;
128874
128852
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
128875
128853
  const cch = "";
128876
128854
  const workload = getWorkload();
@@ -156869,7 +156847,7 @@ var init_projectSafety = __esm(() => {
156869
156847
  function getInstruments() {
156870
156848
  if (instruments)
156871
156849
  return instruments;
156872
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.76.6");
156850
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.76.7");
156873
156851
  instruments = {
156874
156852
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
156875
156853
  description: "GenAI operation duration.",
@@ -156967,7 +156945,7 @@ function genAiAgentAttributes() {
156967
156945
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
156968
156946
  "gen_ai.provider.name": "ur",
156969
156947
  "gen_ai.agent.name": "UR-Nexus",
156970
- "gen_ai.agent.version": "1.76.6"
156948
+ "gen_ai.agent.version": "1.76.7"
156971
156949
  };
156972
156950
  }
156973
156951
  function genAiWorkflowAttributes(workflowName) {
@@ -156983,7 +156961,7 @@ function genAiWorkflowAttributes(workflowName) {
156983
156961
  function startGenAiWorkflowSpan(workflowName) {
156984
156962
  const attributes = genAiWorkflowAttributes(workflowName);
156985
156963
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
156986
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.76.6").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
156964
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.76.7").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
156987
156965
  }
156988
156966
  function endGenAiWorkflowSpan(span, options2 = {}) {
156989
156967
  try {
@@ -157021,7 +156999,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
157021
156999
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
157022
157000
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
157023
157001
  }
157024
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.76.6").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
157002
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.76.7").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
157025
157003
  }
157026
157004
  function endGenAiMemorySpan(span, options2 = {}) {
157027
157005
  try {
@@ -250669,7 +250647,7 @@ function getTelemetryAttributes() {
250669
250647
  attributes["session.id"] = sessionId;
250670
250648
  }
250671
250649
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
250672
- attributes["app.version"] = "1.76.6";
250650
+ attributes["app.version"] = "1.76.7";
250673
250651
  }
250674
250652
  const oauthAccount = getOauthAccountInfo();
250675
250653
  if (oauthAccount) {
@@ -297153,7 +297131,7 @@ function getInstallationEnv() {
297153
297131
  return;
297154
297132
  }
297155
297133
  function getURCodeVersion() {
297156
- return "1.76.6";
297134
+ return "1.76.7";
297157
297135
  }
297158
297136
  async function getInstalledVSCodeExtensionVersion(command) {
297159
297137
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -304484,7 +304462,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
304484
304462
  const client2 = new Client({
304485
304463
  name: "ur",
304486
304464
  title: "UR",
304487
- version: "1.76.6",
304465
+ version: "1.76.7",
304488
304466
  description: "UR-Nexus autonomous engineering workflow engine",
304489
304467
  websiteUrl: PRODUCT_URL
304490
304468
  }, {
@@ -304844,7 +304822,7 @@ var init_client5 = __esm(() => {
304844
304822
  const client2 = new Client({
304845
304823
  name: "ur",
304846
304824
  title: "UR",
304847
- version: "1.76.6",
304825
+ version: "1.76.7",
304848
304826
  description: "UR-Nexus autonomous engineering workflow engine",
304849
304827
  websiteUrl: PRODUCT_URL
304850
304828
  }, {
@@ -317397,7 +317375,7 @@ async function createRuntime() {
317397
317375
  bootstrapTelemetry();
317398
317376
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
317399
317377
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
317400
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.76.6"
317378
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.76.7"
317401
317379
  }));
317402
317380
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
317403
317381
  resource,
@@ -317430,11 +317408,11 @@ async function createRuntime() {
317430
317408
  setMeterProvider(meterProvider);
317431
317409
  setLoggerProvider(loggerProvider);
317432
317410
  if (meterProvider) {
317433
- const meter = meterProvider.getMeter("ur-agent", "1.76.6");
317411
+ const meter = meterProvider.getMeter("ur-agent", "1.76.7");
317434
317412
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
317435
317413
  }
317436
317414
  if (loggerProvider) {
317437
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.76.6"));
317415
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.76.7"));
317438
317416
  }
317439
317417
  if (!cleanupRegistered2) {
317440
317418
  cleanupRegistered2 = true;
@@ -318096,9 +318074,9 @@ async function assertMinVersion() {
318096
318074
  if (false) {}
318097
318075
  try {
318098
318076
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
318099
- if (versionConfig.minVersion && lt("1.76.6", versionConfig.minVersion)) {
318077
+ if (versionConfig.minVersion && lt("1.76.7", versionConfig.minVersion)) {
318100
318078
  console.error(`
318101
- It looks like your version of UR (${"1.76.6"}) needs an update.
318079
+ It looks like your version of UR (${"1.76.7"}) needs an update.
318102
318080
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
318103
318081
 
318104
318082
  To update, please run:
@@ -318314,7 +318292,7 @@ async function installGlobalPackage(specificVersion) {
318314
318292
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
318315
318293
  logEvent("tengu_auto_updater_lock_contention", {
318316
318294
  pid: process.pid,
318317
- currentVersion: "1.76.6"
318295
+ currentVersion: "1.76.7"
318318
318296
  });
318319
318297
  return "in_progress";
318320
318298
  }
@@ -318323,7 +318301,7 @@ async function installGlobalPackage(specificVersion) {
318323
318301
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
318324
318302
  logError2(new Error("Windows NPM detected in WSL environment"));
318325
318303
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
318326
- currentVersion: "1.76.6"
318304
+ currentVersion: "1.76.7"
318327
318305
  });
318328
318306
  console.error(`
318329
318307
  Error: Windows NPM detected in WSL
@@ -318858,7 +318836,7 @@ function detectLinuxGlobPatternWarnings() {
318858
318836
  }
318859
318837
  async function getDoctorDiagnostic() {
318860
318838
  const installationType = await getCurrentInstallationType();
318861
- const version2 = typeof MACRO !== "undefined" ? "1.76.6" : "unknown";
318839
+ const version2 = typeof MACRO !== "undefined" ? "1.76.7" : "unknown";
318862
318840
  const installationPath = await getInstallationPath();
318863
318841
  const invokedBinary = getInvokedBinary();
318864
318842
  const multipleInstallations = await detectMultipleInstallations();
@@ -319793,8 +319771,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
319793
319771
  const maxVersion = await getMaxVersion();
319794
319772
  if (maxVersion && gt(version2, maxVersion)) {
319795
319773
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
319796
- if (gte("1.76.6", maxVersion)) {
319797
- logForDebugging(`Native installer: current version ${"1.76.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
319774
+ if (gte("1.76.7", maxVersion)) {
319775
+ logForDebugging(`Native installer: current version ${"1.76.7"} is already at or above maxVersion ${maxVersion}, skipping update`);
319798
319776
  logEvent("tengu_native_update_skipped_max_version", {
319799
319777
  latency_ms: Date.now() - startTime,
319800
319778
  max_version: maxVersion,
@@ -319805,7 +319783,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
319805
319783
  version2 = maxVersion;
319806
319784
  }
319807
319785
  }
319808
- if (!forceReinstall && version2 === "1.76.6" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
319786
+ if (!forceReinstall && version2 === "1.76.7" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
319809
319787
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
319810
319788
  logEvent("tengu_native_update_complete", {
319811
319789
  latency_ms: Date.now() - startTime,
@@ -379219,9 +379197,6 @@ var init_prompt19 = __esm(() => {
379219
379197
  });
379220
379198
 
379221
379199
  // src/tools/TaskCreateTool/TaskCreateTool.ts
379222
- function normalizeTaskId(candidate) {
379223
- return candidate.trim().replace(/^#/gu, "");
379224
- }
379225
379200
  var inputSchema38, outputSchema33, TaskCreateTool;
379226
379201
  var init_TaskCreateTool = __esm(() => {
379227
379202
  init_v4();
@@ -379291,11 +379266,10 @@ var init_TaskCreateTool = __esm(() => {
379291
379266
  addBlockedBy,
379292
379267
  addToCurrentList
379293
379268
  }, context5) {
379294
- const normalize13 = (raw) => [...new Set(raw.map(normalizeTaskId).filter(Boolean))];
379295
- const initialBlocks = normalize13([...new Set([...blocks ?? [], ...addBlocks ?? []])]);
379296
- const initialBlockedBy = normalize13([
379269
+ const initialBlocks = [...new Set([...blocks ?? [], ...addBlocks ?? []])];
379270
+ const initialBlockedBy = [
379297
379271
  ...new Set([...blockedBy ?? [], ...addBlockedBy ?? []])
379298
- ]);
379272
+ ];
379299
379273
  const taskListId = getTaskListId();
379300
379274
  const run2 = getTaskListRunContext() ?? (context5.agentId ? undefined : getTaskListRunFromMessages(context5.messages ?? []));
379301
379275
  const taskData = {
@@ -379311,36 +379285,27 @@ var init_TaskCreateTool = __esm(() => {
379311
379285
  const taskId = run2 ? await createTaskForRun(taskListId, run2.generationId, taskData, {
379312
379286
  appendToCurrent: run2.appendToCurrent || addToCurrentList === true
379313
379287
  }) : await createTask(taskListId, taskData);
379314
- const candidateDependencies = [];
379315
- const seenEdges = new Set;
379316
- const addCandidate = (fromTaskId, toTaskId, field) => {
379317
- const from = normalizeTaskId(fromTaskId);
379318
- const to = normalizeTaskId(toTaskId);
379319
- if (!from || !to || from === to)
379320
- return;
379321
- const key = `${from}->${to}`;
379322
- if (seenEdges.has(key))
379323
- return;
379324
- seenEdges.add(key);
379325
- candidateDependencies.push({ fromTaskId: from, toTaskId: to, field });
379326
- };
379327
- for (const targetId of initialBlocks) {
379328
- addCandidate(taskId, targetId, "blocks");
379329
- }
379330
- for (const blockerId of initialBlockedBy) {
379331
- addCandidate(blockerId, taskId, "blockedBy");
379332
- }
379333
- if (candidateDependencies.length > 0) {
379334
- const dependencyResult = await updateTaskWithDependencies(taskListId, taskId, {}, candidateDependencies);
379335
- if (dependencyResult.success === false) {
379336
- const dependency = dependencyResult.dependency;
379337
- await deleteTask(taskListId, taskId);
379338
- if (dependency) {
379339
- const field = candidateDependencies.find((candidate) => candidate.fromTaskId === dependency.fromTaskId && candidate.toTaskId === dependency.toTaskId)?.field ?? "dependency";
379340
- throw new Error(`Invalid ${field} dependency ` + `#${dependency.fromTaskId} -> #${dependency.toTaskId}: ` + dependencyResult.reason);
379341
- }
379342
- throw new Error(`Failed to create task dependencies: ${dependencyResult.reason}`);
379288
+ const dependencies = [
379289
+ ...initialBlocks.map((targetId) => ({
379290
+ fromTaskId: taskId,
379291
+ toTaskId: targetId,
379292
+ field: "blocks"
379293
+ })),
379294
+ ...initialBlockedBy.map((blockerId) => ({
379295
+ fromTaskId: blockerId,
379296
+ toTaskId: taskId,
379297
+ field: "blockedBy"
379298
+ }))
379299
+ ];
379300
+ const dependencyResult = await updateTaskWithDependencies(taskListId, taskId, {}, dependencies);
379301
+ if (dependencyResult.success === false) {
379302
+ const dependency = dependencyResult.dependency;
379303
+ await deleteTask(taskListId, taskId);
379304
+ if (dependency) {
379305
+ const field = dependencies.find((candidate) => candidate.fromTaskId === dependency.fromTaskId && candidate.toTaskId === dependency.toTaskId)?.field ?? "dependency";
379306
+ throw new Error(`Invalid ${field} dependency ` + `#${dependency.fromTaskId} -> #${dependency.toTaskId}: ` + dependencyResult.reason);
379343
379307
  }
379308
+ throw new Error(`Failed to create task dependencies: ${dependencyResult.reason}`);
379344
379309
  }
379345
379310
  const blockingErrors = [];
379346
379311
  const generator = executeTaskCreatedHooks(taskId, subject, description, getAgentName(), getTeamName(), undefined, context5?.abortController?.signal, undefined, context5);
@@ -379590,9 +379555,6 @@ Set up task dependencies:
379590
379555
  `;
379591
379556
 
379592
379557
  // src/tools/TaskUpdateTool/TaskUpdateTool.ts
379593
- function normalizeTaskId2(candidate) {
379594
- return candidate.trim().replace(/^#/gu, "");
379595
- }
379596
379558
  var inputSchema40, outputSchema35, TaskUpdateTool;
379597
379559
  var init_TaskUpdateTool = __esm(() => {
379598
379560
  init_v4();
@@ -379694,16 +379656,13 @@ var init_TaskUpdateTool = __esm(() => {
379694
379656
  }
379695
379657
  };
379696
379658
  }
379697
- const normalize13 = (raw) => [...new Set(raw.map(normalizeTaskId2).filter(Boolean))];
379698
- const addBlockIds = normalize13(addBlocks ?? []);
379699
- const addBlockedByIds = normalize13(addBlockedBy ?? []);
379700
379659
  const requestedDependencies = [
379701
- ...addBlockIds.map((targetId) => ({
379660
+ ...(addBlocks ?? []).map((targetId) => ({
379702
379661
  fromTaskId: taskId,
379703
379662
  toTaskId: targetId,
379704
379663
  field: "addBlocks"
379705
379664
  })),
379706
- ...addBlockedByIds.map((blockerId) => ({
379665
+ ...(addBlockedBy ?? []).map((blockerId) => ({
379707
379666
  fromTaskId: blockerId,
379708
379667
  toTaskId: taskId,
379709
379668
  field: "addBlockedBy"
@@ -389399,7 +389358,7 @@ function isAnyTracingEnabled() {
389399
389358
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
389400
389359
  }
389401
389360
  function getTracer() {
389402
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.76.6");
389361
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.76.7");
389403
389362
  }
389404
389363
  function createSpanAttributes(spanType, customAttributes = {}) {
389405
389364
  const baseAttributes = getTelemetryAttributes();
@@ -391513,56 +391472,7 @@ function buildSchemaNotSentHint(tool, messages, tools) {
391513
391472
 
391514
391473
  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.`;
391515
391474
  }
391516
- function isObjectValue(value) {
391517
- return Boolean(value) && typeof value === "object" && !Array.isArray(value);
391518
- }
391519
- function normalizeExecutionToolInput(tool, input) {
391520
- if (tool.name === ASK_USER_QUESTION_TOOL_NAME) {
391521
- const normalized = normalizeAskUserQuestionInput(input);
391522
- if (!isObjectValue(normalized)) {
391523
- const problemsInput = Array.isArray(normalized) ? { questions: normalized } : isObjectValue(normalized) ? normalized : isObjectValue(input) ? input : undefined;
391524
- const problems2 = problemsInput ? describeQuestionPayloadProblems(problemsInput) : ["Input must be an object with a `questions` array."];
391525
- return {
391526
- input,
391527
- validationHint: `AskUserQuestion input cannot be rendered: ${problems2.join(" ")}`
391528
- };
391529
- }
391530
- const problems = describeQuestionPayloadProblems(normalized);
391531
- if (problems.length > 0) {
391532
- return {
391533
- input: normalized,
391534
- validationHint: `AskUserQuestion input cannot be rendered: ${problems.join(" ")}`
391535
- };
391536
- }
391537
- return { input: normalized };
391538
- }
391539
- if (tool.name === FILE_WRITE_TOOL_NAME && tool === FileWriteTool) {
391540
- const parsed = FileWriteTool.inputSchema.safeParse(input);
391541
- if (parsed.success) {
391542
- return { input: parsed.data };
391543
- }
391544
- return {
391545
- input,
391546
- validationHint: parsed.error.issues.map((issue2) => issue2.message).join(". ")
391547
- };
391548
- }
391549
- return { input };
391550
- }
391551
- function formatToolInputError(toolName, reason) {
391552
- if (toolName === ASK_USER_QUESTION_TOOL_NAME || toolName === FILE_WRITE_TOOL_NAME) {
391553
- return {
391554
- toolUseError: reason,
391555
- toolUseResult: reason
391556
- };
391557
- }
391558
- return {
391559
- toolUseError: `InputValidationError: ${reason}`,
391560
- toolUseResult: `InputValidationError: ${reason}`
391561
- };
391562
- }
391563
391475
  async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContext, canUseTool, assistantMessage, messageId, requestId, mcpServerType, mcpServerBaseUrl, onToolProgress) {
391564
- const normalized = normalizeExecutionToolInput(tool, input);
391565
- input = normalized.input;
391566
391476
  let parsedInput = tool.inputSchema.safeParse(input);
391567
391477
  if (!parsedInput.success && parsedInput.error.issues.length > 0 && parsedInput.error.issues.every((issue2) => issue2.code === "unrecognized_keys")) {
391568
391478
  const { input: cleaned, stripped } = stripUnrecognizedKeys(input, parsedInput.error.issues);
@@ -391604,17 +391514,9 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
391604
391514
  ];
391605
391515
  }
391606
391516
  if (!parsedInput.success) {
391607
- const normalizedHint = normalized.validationHint;
391608
391517
  recordCallFailure(callSig);
391609
- let errorContent = normalizedHint;
391610
- if (errorContent === undefined) {
391611
- const questionProblems = tool.name === ASK_USER_QUESTION_TOOL_NAME ? describeQuestionPayloadProblems(normalizeAskUserQuestionInput(input)) : [];
391612
- if (questionProblems.length > 0) {
391613
- errorContent = `${tool.name} input cannot be rendered: ${questionProblems.join(" ")}`;
391614
- } else {
391615
- errorContent = formatZodValidationError(tool.name, parsedInput.error);
391616
- }
391617
- }
391518
+ const questionProblems = tool.name === ASK_USER_QUESTION_TOOL_NAME ? describeQuestionPayloadProblems(normalizeAskUserQuestionInput(input)) : [];
391519
+ let errorContent = questionProblems.length > 0 ? `${tool.name} input cannot be rendered: ${questionProblems.join(" ")}` : formatZodValidationError(tool.name, parsedInput.error);
391618
391520
  const schemaHint = buildSchemaNotSentHint(tool, toolUseContext.messages, toolUseContext.options.tools);
391619
391521
  if (schemaHint) {
391620
391522
  logEvent("tengu_deferred_tool_schema_not_sent", {
@@ -391643,19 +391545,18 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
391643
391545
  },
391644
391546
  ...mcpToolDetailsForAnalytics(tool.name, mcpServerType, mcpServerBaseUrl)
391645
391547
  });
391646
- const { toolUseError, toolUseResult } = formatToolInputError(tool.name, errorContent);
391647
391548
  return [
391648
391549
  {
391649
391550
  message: createUserMessage({
391650
391551
  content: [
391651
391552
  {
391652
391553
  type: "tool_result",
391653
- content: `<tool_use_error>${toolUseError}</tool_use_error>`,
391554
+ content: `<tool_use_error>InputValidationError: ${errorContent}</tool_use_error>`,
391654
391555
  is_error: true,
391655
391556
  tool_use_id: toolUseID
391656
391557
  }
391657
391558
  ],
391658
- toolUseResult,
391559
+ toolUseResult: `InputValidationError: ${parsedInput.error.message}`,
391659
391560
  sourceToolAssistantUUID: assistantMessage.uuid
391660
391561
  })
391661
391562
  }
@@ -391966,8 +391867,6 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
391966
391867
  endToolSpan();
391967
391868
  toolUseContext.toolDecisions?.delete(toolUseID);
391968
391869
  };
391969
- const finalNormalized = normalizeExecutionToolInput(tool, callInput);
391970
- callInput = finalNormalized.input;
391971
391870
  const finalParsedInput = tool.inputSchema.safeParse(callInput);
391972
391871
  if (!finalParsedInput.success) {
391973
391872
  callSig = callSignature(tool.name, callInput, repeatedFailureScope(toolUseContext, messageId));
@@ -391996,21 +391895,18 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
391996
391895
  }
391997
391896
  recordCallFailure(callSig);
391998
391897
  const finalInputError = formatZodValidationError(tool.name, finalParsedInput.error);
391999
- const finalInputContent = finalNormalized.validationHint ?? finalInputError;
392000
391898
  finishPreExecutionRejection();
392001
- const finalInputContentWithContext = tool.name === ASK_USER_QUESTION_TOOL_NAME || tool.name === FILE_WRITE_TOOL_NAME ? finalInputContent : `InputValidationError after input update: ${finalInputContent}`;
392002
- const { toolUseError, toolUseResult } = formatToolInputError(tool.name, finalInputContentWithContext);
392003
391899
  resultingMessages.push({
392004
391900
  message: createUserMessage({
392005
391901
  content: [
392006
391902
  {
392007
391903
  type: "tool_result",
392008
- content: `<tool_use_error>${toolUseError}</tool_use_error>`,
391904
+ content: `<tool_use_error>InputValidationError after input update: ${finalInputError}</tool_use_error>`,
392009
391905
  is_error: true,
392010
391906
  tool_use_id: toolUseID
392011
391907
  }
392012
391908
  ],
392013
- toolUseResult,
391909
+ toolUseResult: `InputValidationError: ${finalParsedInput.error.message}`,
392014
391910
  sourceToolAssistantUUID: assistantMessage.uuid
392015
391911
  })
392016
391912
  });
@@ -392478,7 +392374,6 @@ var init_toolExecution = __esm(() => {
392478
392374
  init_bashPermissions();
392479
392375
  init_prompt3();
392480
392376
  init_prompt4();
392481
- init_FileWriteTool();
392482
392377
  init_gitOperationTracking();
392483
392378
  init_prompt8();
392484
392379
  init_tools2();
@@ -409562,40 +409457,6 @@ function joinTextAtSeam(a2, b) {
409562
409457
  }
409563
409458
  return [...a2, ...b];
409564
409459
  }
409565
- function safeJsonDebugValue(value) {
409566
- try {
409567
- return JSON.stringify(value, null, 2);
409568
- } catch {
409569
- return String(value);
409570
- }
409571
- }
409572
- function normalizeIncomingWriteInputForAPI(input) {
409573
- if (!isObject_default(input)) {
409574
- return null;
409575
- }
409576
- const parsed = FileWriteTool.inputSchema.safeParse(input);
409577
- if (!parsed.success) {
409578
- return null;
409579
- }
409580
- return parsed.data;
409581
- }
409582
- function normalizeIncomingAskUserQuestionInputForAPI(input) {
409583
- const normalized = normalizeAskUserQuestionInput(input);
409584
- if (!isObject_default(normalized)) {
409585
- return null;
409586
- }
409587
- if (describeQuestionPayloadProblems(normalized).length > 0) {
409588
- return null;
409589
- }
409590
- return normalized;
409591
- }
409592
- function toolUseFallbackText(toolName, reason, input) {
409593
- const safeInput = safeJsonDebugValue(input).slice(0, MAX_TOOL_USE_REPAIR_TEXT_CHARS);
409594
- return {
409595
- type: "text",
409596
- text: `Tool ${toolName} call was not renderable (${reason}). Raw input: ${safeInput}`
409597
- };
409598
- }
409599
409460
  function smooshIntoToolResult(tr, blocks) {
409600
409461
  if (blocks.length === 0)
409601
409462
  return tr;
@@ -409703,20 +409564,6 @@ function normalizeContentFromAPI(contentBlocks, tools, agentId) {
409703
409564
  if (typeof normalizedInput !== "object" || normalizedInput === null || Array.isArray(normalizedInput)) {
409704
409565
  throw new Error(`Tool use input for ${String(contentBlock.name)} must be a JSON object`);
409705
409566
  }
409706
- if (contentBlock.name === FILE_WRITE_TOOL_NAME) {
409707
- const repaired = normalizeIncomingWriteInputForAPI(normalizedInput);
409708
- if (repaired === null) {
409709
- return toolUseFallbackText(String(contentBlock.name ?? FILE_WRITE_TOOL_NAME), "invalid Write arguments", contentBlock.input);
409710
- }
409711
- normalizedInput = repaired;
409712
- }
409713
- if (contentBlock.name === ASK_USER_QUESTION_TOOL_NAME) {
409714
- const repaired = normalizeIncomingAskUserQuestionInputForAPI(normalizedInput);
409715
- if (repaired === null) {
409716
- return toolUseFallbackText(String(contentBlock.name ?? ASK_USER_QUESTION_TOOL_NAME), "invalid AskUserQuestion arguments", contentBlock.input);
409717
- }
409718
- normalizedInput = repaired;
409719
- }
409720
409567
  const sanitized = stripEmptyParameterNames(normalizedInput);
409721
409568
  if (sanitized.stripped) {
409722
409569
  normalizedInput = sanitized.input;
@@ -411569,7 +411416,7 @@ Note: The user's next message may contain a correction or preference. Pay close
411569
411416
  `, PLAN_REJECTION_PREFIX = `The agent proposed a plan that was rejected by the user. The user chose to stay in plan mode rather than proceed with implementation.
411570
411417
 
411571
411418
  Rejected plan:
411572
- `, DENIAL_WORKAROUND_GUIDANCE, NO_RESPONSE_REQUESTED = "No response requested.", SYNTHETIC_TOOL_RESULT_PLACEHOLDER = "[Tool result missing due to internal error]", SYNTHETIC_MODEL = "<synthetic>", SYNTHETIC_MESSAGES, EMPTY_LOOKUPS, EMPTY_STRING_SET, MAX_TOOL_USE_REPAIR_TEXT_CHARS = 1200, STRIPPED_TAGS_RE, PLAN_PHASE4_CONTROL = `### Phase 4: Final Plan
411419
+ `, DENIAL_WORKAROUND_GUIDANCE, NO_RESPONSE_REQUESTED = "No response requested.", SYNTHETIC_TOOL_RESULT_PLACEHOLDER = "[Tool result missing due to internal error]", SYNTHETIC_MODEL = "<synthetic>", SYNTHETIC_MESSAGES, EMPTY_LOOKUPS, EMPTY_STRING_SET, STRIPPED_TAGS_RE, PLAN_PHASE4_CONTROL = `### Phase 4: Final Plan
411573
411420
  Goal: Write your final plan to the plan file (the only file you can edit).
411574
411421
  - Begin with a **Context** section: explain why this change is being made \u2014 the problem or need it addresses, what prompted it, and the intended outcome
411575
411422
  - Include only your recommended approach, not all alternatives
@@ -411622,7 +411469,6 @@ var init_messages = __esm(() => {
411622
411469
  init_ExitPlanModeV2Tool();
411623
411470
  init_FileEditTool();
411624
411471
  init_prompt3();
411625
- init_prompt4();
411626
411472
  init_FileWriteTool();
411627
411473
  init_prompt2();
411628
411474
  init_state();
@@ -411635,7 +411481,6 @@ var init_messages = __esm(() => {
411635
411481
  init_debug();
411636
411482
  init_displayTags();
411637
411483
  init_embeddedTools();
411638
- init_AskUserQuestionTool();
411639
411484
  init_format2();
411640
411485
  init_imageValidation();
411641
411486
  init_json();
@@ -419682,7 +419527,7 @@ function Feedback({
419682
419527
  platform: env2.platform,
419683
419528
  gitRepo: envInfo.isGit,
419684
419529
  terminal: env2.terminal,
419685
- version: "1.76.6",
419530
+ version: "1.76.7",
419686
419531
  transcript: normalizeMessagesForAPI(messages),
419687
419532
  errors: sanitizedErrors,
419688
419533
  lastApiRequest: getLastAPIRequest(),
@@ -419874,7 +419719,7 @@ function Feedback({
419874
419719
  ", ",
419875
419720
  env2.terminal,
419876
419721
  ", v",
419877
- "1.76.6"
419722
+ "1.76.7"
419878
419723
  ]
419879
419724
  }, undefined, true, undefined, this)
419880
419725
  ]
@@ -419980,7 +419825,7 @@ ${sanitizedDescription}
419980
419825
  ` + `**Environment Info**
419981
419826
  ` + `- Platform: ${env2.platform}
419982
419827
  ` + `- Terminal: ${env2.terminal}
419983
- ` + `- Version: ${"1.76.6"}
419828
+ ` + `- Version: ${"1.76.7"}
419984
419829
  ` + `- Feedback ID: ${feedbackId}
419985
419830
  ` + `
419986
419831
  **Errors**
@@ -423090,7 +422935,7 @@ function buildPrimarySection() {
423090
422935
  }, undefined, false, undefined, this);
423091
422936
  return [{
423092
422937
  label: "Version",
423093
- value: "1.76.6"
422938
+ value: "1.76.7"
423094
422939
  }, {
423095
422940
  label: "Session name",
423096
422941
  value: nameValue
@@ -426472,7 +426317,7 @@ function Config({
426472
426317
  }
426473
426318
  }, undefined, false, undefined, this)
426474
426319
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
426475
- currentVersion: "1.76.6",
426320
+ currentVersion: "1.76.7",
426476
426321
  onChoice: (choice) => {
426477
426322
  setShowSubmenu(null);
426478
426323
  setTabsHidden(false);
@@ -426484,7 +426329,7 @@ function Config({
426484
426329
  autoUpdatesChannel: "stable"
426485
426330
  };
426486
426331
  if (choice === "stay") {
426487
- newSettings.minimumVersion = "1.76.6";
426332
+ newSettings.minimumVersion = "1.76.7";
426488
426333
  }
426489
426334
  updateSettingsForSource("userSettings", newSettings);
426490
426335
  setSettingsData((prev_27) => ({
@@ -434548,7 +434393,7 @@ function HelpV2(t0) {
434548
434393
  let t6;
434549
434394
  if ($2[31] !== tabs) {
434550
434395
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
434551
- title: `UR v${"1.76.6"}`,
434396
+ title: `UR v${"1.76.7"}`,
434552
434397
  color: "professionalBlue",
434553
434398
  defaultTab: "general",
434554
434399
  children: tabs
@@ -435481,7 +435326,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
435481
435326
  async function handleInitialize(options2) {
435482
435327
  return {
435483
435328
  name: "UR",
435484
- version: "1.76.6",
435329
+ version: "1.76.7",
435485
435330
  protocolVersion: "0.1.0",
435486
435331
  workspaceRoot: options2.cwd,
435487
435332
  capabilities: {
@@ -452589,7 +452434,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
452589
452434
  return [];
452590
452435
  }
452591
452436
  }
452592
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.76.6") {
452437
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.76.7") {
452593
452438
  if (process.env.USER_TYPE === "ant") {
452594
452439
  const changelog = "";
452595
452440
  if (changelog) {
@@ -452616,7 +452461,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.76.6")
452616
452461
  releaseNotes
452617
452462
  };
452618
452463
  }
452619
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.76.6") {
452464
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.76.7") {
452620
452465
  if (process.env.USER_TYPE === "ant") {
452621
452466
  const changelog = "";
452622
452467
  if (changelog) {
@@ -455482,7 +455327,7 @@ function getRecentActivitySync() {
455482
455327
  return cachedActivity;
455483
455328
  }
455484
455329
  function getLogoDisplayData() {
455485
- const version2 = process.env.DEMO_VERSION ?? "1.76.6";
455330
+ const version2 = process.env.DEMO_VERSION ?? "1.76.7";
455486
455331
  const serverUrl = getDirectConnectServerUrl();
455487
455332
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
455488
455333
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -456349,7 +456194,7 @@ function LogoV2() {
456349
456194
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
456350
456195
  t2 = () => {
456351
456196
  const currentConfig2 = getGlobalConfig();
456352
- if (currentConfig2.lastReleaseNotesSeen === "1.76.6") {
456197
+ if (currentConfig2.lastReleaseNotesSeen === "1.76.7") {
456353
456198
  return;
456354
456199
  }
456355
456200
  saveGlobalConfig(_temp325);
@@ -457034,12 +456879,12 @@ function LogoV2() {
457034
456879
  return t41;
457035
456880
  }
457036
456881
  function _temp325(current) {
457037
- if (current.lastReleaseNotesSeen === "1.76.6") {
456882
+ if (current.lastReleaseNotesSeen === "1.76.7") {
457038
456883
  return current;
457039
456884
  }
457040
456885
  return {
457041
456886
  ...current,
457042
- lastReleaseNotesSeen: "1.76.6"
456887
+ lastReleaseNotesSeen: "1.76.7"
457043
456888
  };
457044
456889
  }
457045
456890
  function _temp241(s_0) {
@@ -473853,7 +473698,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
473853
473698
  if (spec.name !== specName) {
473854
473699
  throw new Error("Agentic CI workflow spec name does not match");
473855
473700
  }
473856
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.76.6" : "1.76.6");
473701
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.76.7" : "1.76.7");
473857
473702
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
473858
473703
  throw new Error("invalid ur-agent package version");
473859
473704
  }
@@ -474846,7 +474691,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
474846
474691
  path: ".github/workflows/ur.yml",
474847
474692
  root: "project",
474848
474693
  content: compileAgenticCiWorkflow("default", {
474849
- packageVersion: typeof MACRO !== "undefined" ? "1.76.6" : "1.76.6"
474694
+ packageVersion: typeof MACRO !== "undefined" ? "1.76.7" : "1.76.7"
474850
474695
  })
474851
474696
  },
474852
474697
  {
@@ -474909,7 +474754,7 @@ function value(tokens, flag) {
474909
474754
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
474910
474755
  }
474911
474756
  function cliVersion() {
474912
- return typeof MACRO !== "undefined" ? "1.76.6" : "1.76.6";
474757
+ return typeof MACRO !== "undefined" ? "1.76.7" : "1.76.7";
474913
474758
  }
474914
474759
  function workflowPath(cwd2) {
474915
474760
  return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -480765,7 +480610,7 @@ function createAcpStdioApp(deps) {
480765
480610
  }
480766
480611
  },
480767
480612
  authMethods: [],
480768
- agentInfo: { name: "UR-Nexus", version: "1.76.6" }
480613
+ agentInfo: { name: "UR-Nexus", version: "1.76.7" }
480769
480614
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
480770
480615
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
480771
480616
  await runtime2.announce({
@@ -480862,7 +480707,7 @@ function createAcpStdioAgent(deps) {
480862
480707
  }
480863
480708
  },
480864
480709
  authMethods: [],
480865
- agentInfo: { name: "UR-Nexus", version: "1.76.6" }
480710
+ agentInfo: { name: "UR-Nexus", version: "1.76.7" }
480866
480711
  });
480867
480712
  return;
480868
480713
  case "authenticate":
@@ -690314,7 +690159,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
690314
690159
  smapsRollup,
690315
690160
  platform: process.platform,
690316
690161
  nodeVersion: process.version,
690317
- ccVersion: "1.76.6"
690162
+ ccVersion: "1.76.7"
690318
690163
  };
690319
690164
  }
690320
690165
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -690894,7 +690739,7 @@ var init_bridge_kick = __esm(() => {
690894
690739
  var call154 = async () => {
690895
690740
  return {
690896
690741
  type: "text",
690897
- value: "1.76.6"
690742
+ value: "1.76.7"
690898
690743
  };
690899
690744
  }, version2, version_default;
690900
690745
  var init_version = __esm(() => {
@@ -702161,7 +702006,7 @@ function generateHtmlReport(data, insights) {
702161
702006
  </html>`;
702162
702007
  }
702163
702008
  function buildExportData(data, insights, facets, remoteStats) {
702164
- const version3 = typeof MACRO !== "undefined" ? "1.76.6" : "unknown";
702009
+ const version3 = typeof MACRO !== "undefined" ? "1.76.7" : "unknown";
702165
702010
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
702166
702011
  const facets_summary = {
702167
702012
  total: facets.size,
@@ -706475,7 +706320,7 @@ var init_sessionStorage = __esm(() => {
706475
706320
  init_settings2();
706476
706321
  init_slowOperations();
706477
706322
  init_uuid();
706478
- VERSION7 = typeof MACRO !== "undefined" ? "1.76.6" : "unknown";
706323
+ VERSION7 = typeof MACRO !== "undefined" ? "1.76.7" : "unknown";
706479
706324
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
706480
706325
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
706481
706326
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -707690,7 +707535,7 @@ var init_filesystem = __esm(() => {
707690
707535
  });
707691
707536
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
707692
707537
  const nonce = randomBytes20(16).toString("hex");
707693
- return join232(getURTempDir(), "bundled-skills", "1.76.6", nonce);
707538
+ return join232(getURTempDir(), "bundled-skills", "1.76.7", nonce);
707694
707539
  });
707695
707540
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
707696
707541
  });
@@ -714039,7 +713884,7 @@ function computeFingerprint(messageText2, version3) {
714039
713884
  }
714040
713885
  function computeFingerprintFromMessages(messages) {
714041
713886
  const firstMessageText = extractFirstMessageText(messages);
714042
- return computeFingerprint(firstMessageText, "1.76.6");
713887
+ return computeFingerprint(firstMessageText, "1.76.7");
714043
713888
  }
714044
713889
  var FINGERPRINT_SALT = "59cf53e54c78";
714045
713890
  var init_fingerprint = () => {};
@@ -715958,7 +715803,7 @@ async function sideQuery(opts) {
715958
715803
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
715959
715804
  }
715960
715805
  const messageText2 = extractFirstUserMessageText(messages);
715961
- const fingerprint2 = computeFingerprint(messageText2, "1.76.6");
715806
+ const fingerprint2 = computeFingerprint(messageText2, "1.76.7");
715962
715807
  const attributionHeader = getAttributionHeader(fingerprint2);
715963
715808
  const systemBlocks = [
715964
715809
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -720795,7 +720640,7 @@ function buildSystemInitMessage(inputs) {
720795
720640
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
720796
720641
  apiKeySource: getURHQApiKeyWithSource().source,
720797
720642
  betas: getSdkBetas(),
720798
- ur_version: "1.76.6",
720643
+ ur_version: "1.76.7",
720799
720644
  output_style: outputStyle2,
720800
720645
  agents: inputs.agents.map((agent2) => agent2.agentType),
720801
720646
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -734667,7 +734512,7 @@ var init_useVoiceEnabled = __esm(() => {
734667
734512
  function getSemverPart(version3) {
734668
734513
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
734669
734514
  }
734670
- function useUpdateNotification(updatedVersion, initialVersion = "1.76.6") {
734515
+ function useUpdateNotification(updatedVersion, initialVersion = "1.76.7") {
734671
734516
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react223.useState(() => getSemverPart(initialVersion));
734672
734517
  if (!updatedVersion) {
734673
734518
  return null;
@@ -734716,7 +734561,7 @@ function AutoUpdater({
734716
734561
  return;
734717
734562
  }
734718
734563
  if (false) {}
734719
- const currentVersion = "1.76.6";
734564
+ const currentVersion = "1.76.7";
734720
734565
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
734721
734566
  let latestVersion = await getLatestVersion(channel);
734722
734567
  const isDisabled = isAutoUpdaterDisabled();
@@ -734945,12 +734790,12 @@ function NativeAutoUpdater({
734945
734790
  logEvent("tengu_native_auto_updater_start", {});
734946
734791
  try {
734947
734792
  const maxVersion = await getMaxVersion();
734948
- if (maxVersion && gt("1.76.6", maxVersion)) {
734793
+ if (maxVersion && gt("1.76.7", maxVersion)) {
734949
734794
  const msg = await getMaxVersionMessage();
734950
734795
  setMaxVersionIssue(msg ?? "affects your version");
734951
734796
  }
734952
734797
  const result = await installLatest(channel);
734953
- const currentVersion = "1.76.6";
734798
+ const currentVersion = "1.76.7";
734954
734799
  const latencyMs = Date.now() - startTime;
734955
734800
  if (result.lockFailed) {
734956
734801
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -735087,17 +734932,17 @@ function PackageManagerAutoUpdater(t0) {
735087
734932
  const maxVersion = await getMaxVersion();
735088
734933
  if (maxVersion && latest && gt(latest, maxVersion)) {
735089
734934
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
735090
- if (gte("1.76.6", maxVersion)) {
735091
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.76.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
734935
+ if (gte("1.76.7", maxVersion)) {
734936
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.76.7"} is already at or above maxVersion ${maxVersion}, skipping update`);
735092
734937
  setUpdateAvailable(false);
735093
734938
  return;
735094
734939
  }
735095
734940
  latest = maxVersion;
735096
734941
  }
735097
- const hasUpdate = latest && !gte("1.76.6", latest) && !shouldSkipVersion(latest);
734942
+ const hasUpdate = latest && !gte("1.76.7", latest) && !shouldSkipVersion(latest);
735098
734943
  setUpdateAvailable(!!hasUpdate);
735099
734944
  if (hasUpdate) {
735100
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.76.6"} -> ${latest}`);
734945
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.76.7"} -> ${latest}`);
735101
734946
  }
735102
734947
  };
735103
734948
  $2[0] = t1;
@@ -735131,7 +734976,7 @@ function PackageManagerAutoUpdater(t0) {
735131
734976
  wrap: "truncate",
735132
734977
  children: [
735133
734978
  "currentVersion: ",
735134
- "1.76.6"
734979
+ "1.76.7"
735135
734980
  ]
735136
734981
  }, undefined, true, undefined, this);
735137
734982
  $2[3] = verbose;
@@ -745931,7 +745776,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
745931
745776
  project_dir: getOriginalCwd(),
745932
745777
  added_dirs: addedDirs
745933
745778
  },
745934
- version: "1.76.6",
745779
+ version: "1.76.7",
745935
745780
  output_style: {
745936
745781
  name: outputStyleName
745937
745782
  },
@@ -746066,7 +745911,7 @@ function StatusLineInner({
746066
745911
  const attention = customStatusError ?? taskAttention;
746067
745912
  const terminalSize = React132.useContext(TerminalSizeContext);
746068
745913
  const defaultStatusLineText = buildDefaultStatusBar({
746069
- version: "1.76.6",
745914
+ version: "1.76.7",
746070
745915
  providerLabel: providerRuntime.providerLabel,
746071
745916
  authMode: providerRuntime.authLabel,
746072
745917
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -758351,7 +758196,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
758351
758196
  } catch {}
758352
758197
  const data = {
758353
758198
  trigger: trigger2,
758354
- version: "1.76.6",
758199
+ version: "1.76.7",
758355
758200
  platform: process.platform,
758356
758201
  transcript,
758357
758202
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -770725,7 +770570,7 @@ function WelcomeV2() {
770725
770570
  dimColor: true,
770726
770571
  children: [
770727
770572
  "v",
770728
- "1.76.6"
770573
+ "1.76.7"
770729
770574
  ]
770730
770575
  }, undefined, true, undefined, this)
770731
770576
  ]
@@ -771985,7 +771830,7 @@ function completeOnboarding() {
771985
771830
  saveGlobalConfig((current) => ({
771986
771831
  ...current,
771987
771832
  hasCompletedOnboarding: true,
771988
- lastOnboardingVersion: "1.76.6"
771833
+ lastOnboardingVersion: "1.76.7"
771989
771834
  }));
771990
771835
  }
771991
771836
  function showDialog(root2, renderer) {
@@ -777029,7 +776874,7 @@ function appendToLog(path24, message) {
777029
776874
  cwd: getFsImplementation().cwd(),
777030
776875
  userType: process.env.USER_TYPE,
777031
776876
  sessionId: getSessionId(),
777032
- version: "1.76.6"
776877
+ version: "1.76.7"
777033
776878
  };
777034
776879
  getLogWriter(path24).write(messageWithTimestamp);
777035
776880
  }
@@ -781188,8 +781033,8 @@ async function getEnvLessBridgeConfig() {
781188
781033
  }
781189
781034
  async function checkEnvLessBridgeMinVersion() {
781190
781035
  const cfg = await getEnvLessBridgeConfig();
781191
- if (cfg.min_version && lt("1.76.6", cfg.min_version)) {
781192
- return `Your version of UR (${"1.76.6"}) is too old for Remote Control.
781036
+ if (cfg.min_version && lt("1.76.7", cfg.min_version)) {
781037
+ return `Your version of UR (${"1.76.7"}) is too old for Remote Control.
781193
781038
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
781194
781039
  }
781195
781040
  return null;
@@ -781663,7 +781508,7 @@ async function initBridgeCore(params) {
781663
781508
  const rawApi = createBridgeApiClient({
781664
781509
  baseUrl,
781665
781510
  getAccessToken,
781666
- runnerVersion: "1.76.6",
781511
+ runnerVersion: "1.76.7",
781667
781512
  onDebug: logForDebugging,
781668
781513
  onAuth401,
781669
781514
  getTrustedDeviceToken
@@ -791136,7 +790981,7 @@ function getAgUiCapabilities() {
791136
790981
  name: "UR-Nexus",
791137
790982
  type: "ur-nexus",
791138
790983
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
791139
- version: "1.76.6",
790984
+ version: "1.76.7",
791140
790985
  provider: "UR",
791141
790986
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
791142
790987
  },
@@ -792276,7 +792121,7 @@ function createMCPServer(cwd4, debug2, verbose) {
792276
792121
  };
792277
792122
  const server2 = new Server({
792278
792123
  name: "ur-nexus",
792279
- version: "1.76.6"
792124
+ version: "1.76.7"
792280
792125
  }, {
792281
792126
  capabilities: {
792282
792127
  tools: {}
@@ -793434,7 +793279,7 @@ function thrownResponse(error40) {
793434
793279
  }
793435
793280
  async function createUrMcp2026Runtime(options4) {
793436
793281
  const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
793437
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.76.6" }, { capabilities: {} });
793282
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.76.7" }, { capabilities: {} });
793438
793283
  const [clientTransport, serverTransport] = createLinkedTransportPair();
793439
793284
  try {
793440
793285
  await server2.connect(serverTransport);
@@ -793445,7 +793290,7 @@ async function createUrMcp2026Runtime(options4) {
793445
793290
  }
793446
793291
  const runtime2 = new Mcp2026Runtime({
793447
793292
  cwd: options4.cwd,
793448
- version: "1.76.6",
793293
+ version: "1.76.7",
793449
793294
  backend: {
793450
793295
  listTools: async () => {
793451
793296
  const listed = await client2.listTools();
@@ -795586,7 +795431,7 @@ async function update() {
795586
795431
  logEvent("tengu_update_check", {});
795587
795432
  const diagnostic2 = await getDoctorDiagnostic();
795588
795433
  const result = await checkUpgradeStatus({
795589
- currentVersion: "1.76.6",
795434
+ currentVersion: "1.76.7",
795590
795435
  packageName: UR_AGENT_PACKAGE_NAME,
795591
795436
  installationType: diagnostic2.installationType,
795592
795437
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -796902,7 +796747,7 @@ ${customInstructions}` : customInstructions;
796902
796747
  }
796903
796748
  }
796904
796749
  logForDiagnosticsNoPII("info", "started", {
796905
- version: "1.76.6",
796750
+ version: "1.76.7",
796906
796751
  is_native_binary: isInBundledMode()
796907
796752
  });
796908
796753
  registerCleanup(async () => {
@@ -797688,7 +797533,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
797688
797533
  pendingHookMessages
797689
797534
  }, renderAndRun);
797690
797535
  }
797691
- }).version("1.76.6 (UR-Nexus)", "-v, --version", "Output the version number");
797536
+ }).version("1.76.7 (UR-Nexus)", "-v, --version", "Output the version number");
797692
797537
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
797693
797538
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
797694
797539
  if (canUserConfigureAdvisor()) {
@@ -798740,7 +798585,7 @@ if (false) {}
798740
798585
  async function main2() {
798741
798586
  const args = process.argv.slice(2);
798742
798587
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
798743
- console.log(`${"1.76.6"} (UR-Nexus)`);
798588
+ console.log(`${"1.76.7"} (UR-Nexus)`);
798744
798589
  return;
798745
798590
  }
798746
798591
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
@@ -19,7 +19,7 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.76.6 (UR-Nexus)"
22
+ # expected for this release: "1.76.7 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ## 0.1 First-workspace model selection (1.45.4)
@@ -45,7 +45,7 @@
45
45
  <main id="content" class="content">
46
46
  <header class="topbar">
47
47
  <div>
48
- <p class="eyebrow">Version 1.76.6</p>
48
+ <p class="eyebrow">Version 1.76.7</p>
49
49
  <h1>UR-Nexus Documentation</h1>
50
50
  <p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
51
51
  </div>
@@ -7,7 +7,7 @@ plugins {
7
7
  }
8
8
 
9
9
  group = "dev.urnexus"
10
- version = "1.76.6"
10
+ version = "1.76.7"
11
11
 
12
12
  repositories {
13
13
  mavenCentral()
@@ -2,7 +2,7 @@
2
2
  "name": "ur-inline-diffs",
3
3
  "displayName": "UR Inline Diffs",
4
4
  "description": "Review, apply, and reject UR inline diff bundles from .ur/ide/diffs inside VS Code.",
5
- "version": "1.76.6",
5
+ "version": "1.76.7",
6
6
  "publisher": "ur-nexus",
7
7
  "engines": {
8
8
  "vscode": "^1.92.0"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ur-agent",
3
- "version": "1.76.6",
3
+ "version": "1.76.7",
4
4
  "description": "UR-Nexus — autonomous engineering workflow engine (plan, execute, test, verify, document, benchmark, reproduce)",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.14",